summaryrefslogtreecommitdiffstats
path: root/src/multimedia/audio/qaudiosystemplugin.cpp
blob: 05e02648344d0b56770960db150f3c6aaf6fe9b7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
/****************************************************************************
**
** Copyright (C) 2021 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:COMM$
**
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** $QT_END_LICENSE$
**
**
**
**
**
**
**
**
**
**
**
**
**
**
**
**
**
**
**
****************************************************************************/


#include "qaudiosystemplugin.h"
#include "qaudiosystempluginext_p.h"

QT_BEGIN_NAMESPACE

QAudioSystemFactoryInterface::~QAudioSystemFactoryInterface()
{
}

QAudioSystemPluginExtension::~QAudioSystemPluginExtension()
{
}

/*!
    \class QAudioSystemPlugin
    \brief The QAudioSystemPlugin class provides an abstract base for audio plugins.

    \ingroup multimedia
    \ingroup multimedia_audio
    \inmodule QtMultimedia

    Writing a audio plugin is achieved by subclassing this base class,
    reimplementing the pure virtual functions availableDevices(),
    createInput(), createOutput() and createDeviceInfo() then exporting
    the class with the Q_PLUGIN_METADATA() macro.

    The json file containing the meta data should contain a list of keys
    matching the plugin. Add "default" to your list of keys available
    to override the default audio device to be provided by your plugin.

    \code
    { "Keys": [ "default" ] }
    \endcode

    Unit tests are available to help in debugging new plugins.

    \sa QAbstractAudioDeviceInfo, QAbstractAudioOutput, QAbstractAudioInput

    Qt comes with plugins for Windows (WinMM and WASAPI), Linux (ALSA and PulseAudio), \macos / iOS
    (CoreAudio), Android (OpenSL ES) and QNX.

    If no audio plugins are available, a fallback dummy backend will be used.
    This should print out warnings if this is the case when you try and use QAudioInput
    or QAudioOutput. To fix this problem, make sure the dependencies for the Qt plugins are
    installed on the system and reconfigure Qt (e.g. alsa-devel package on Linux), or create your
    own plugin with a default key to always override the dummy fallback. The easiest way to
    determine if you have only a dummy backend is to get a list of available audio devices.

    QAudioDeviceInfo::availableDevices(QAudio::AudioOutput).size() = 0 (dummy backend)
*/

/*!
    \fn QAudioSystemPlugin::QAudioSystemPlugin(QObject* parent)

    Constructs a new audio plugin with \a parent.
    This is invoked automatically by the Q_PLUGIN_METADATA() macro.
*/

QAudioSystemPlugin::QAudioSystemPlugin(QObject* parent) :
    QObject(parent)
{}

/*!
    \fn QAudioSystemPlugin::~QAudioSystemPlugin()

    Destroys the audio plugin.
    You never have to call this explicitly. Qt destroys a plugin automatically when it is no longer used.
*/

QAudioSystemPlugin::~QAudioSystemPlugin()
{}

/*!
    \fn QList<QByteArray> QAudioSystemPlugin::availableDevices(QAudio::Mode mode) const
    Returns a list of available audio devices for \a mode
*/

/*!
    \fn QAbstractAudioInput* QAudioSystemPlugin::createInput(const QByteArray& device)
    Returns a pointer to a QAbstractAudioInput created using \a device identifier
*/

/*!
    \fn QAbstractAudioOutput* QAudioSystemPlugin::createOutput(const QByteArray& device)
    Returns a pointer to a QAbstractAudioOutput created using \a device identifier

*/

/*!
    \fn QAbstractAudioDeviceInfo* QAudioSystemPlugin::createDeviceInfo(const QByteArray& device, QAudio::Mode mode)
    Returns a pointer to a QAbstractAudioDeviceInfo created using \a device and \a mode

*/


QT_END_NAMESPACE

#include "moc_qaudiosystemplugin.cpp"