The QAudioSystemPlugin class provides an abstract base for audio plugins. 更多...
头: | #include <QAudioSystemPlugin> |
qmake: | QT += multimedia |
继承: | QObject and QAudioSystemFactoryInterface |
QAudioSystemPlugin (QObject * parent = nullptr) | |
virtual | ~QAudioSystemPlugin () |
virtual QList<QByteArray> | availableDevices (QAudio::Mode mode ) const override = 0 |
virtual QAbstractAudioDeviceInfo * | createDeviceInfo (const QByteArray & device , QAudio::Mode mode ) override = 0 |
virtual QAbstractAudioInput * | createInput (const QByteArray & device ) override = 0 |
virtual QAbstractAudioOutput * | createOutput (const QByteArray & device ) override = 0 |
Writing a audio plugin is achieved by subclassing this base class, reimplementing the pure virtual functions availableDevices (), createInput (), createOutput () 和 createDeviceInfo () then exporting the class with the Q_PLUGIN_METADATA () 宏。
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.
{ "Keys": [ "default" ] }
Unit tests are available to help in debugging new plugins.
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)
另请参阅 QAbstractAudioDeviceInfo , QAbstractAudioOutput ,和 QAbstractAudioInput .
Constructs a new audio plugin with parent . This is invoked automatically by the Q_PLUGIN_METADATA () 宏。
[虚拟]
QAudioSystemPlugin::
~QAudioSystemPlugin
()
Destroys the audio plugin. You never have to call this explicitly. Qt destroys a plugin automatically when it is no longer used.
[override pure virtual]
QList
<
QByteArray
> QAudioSystemPlugin::
availableDevices
(
QAudio::Mode
mode
) const
Returns a list of available audio devices for mode
[override pure virtual]
QAbstractAudioDeviceInfo
*QAudioSystemPlugin::
createDeviceInfo
(const
QByteArray
&
device
,
QAudio::Mode
mode
)
返回指针指向 QAbstractAudioDeviceInfo created using device and mode
[override pure virtual]
QAbstractAudioInput
*QAudioSystemPlugin::
createInput
(const
QByteArray
&
device
)
返回指针指向 QAbstractAudioInput created using device 标识符
[override pure virtual]
QAbstractAudioOutput
*QAudioSystemPlugin::
createOutput
(const
QByteArray
&
device
)
返回指针指向 QAbstractAudioOutput created using device 标识符