summaryrefslogtreecommitdiffstats
path: root/src/plugins/windowsaudio
diff options
context:
space:
mode:
authorChristian Stromme <christian.stromme@theqtcompany.com>2016-04-19 14:53:24 +0200
committerChristian Stromme <christian.stromme@qt.io>2016-05-20 10:54:32 +0000
commit3c5bbb0dac7bed3199ddddc88c0175d5a2ac1036 (patch)
tree51b9987225bf224637b87c3dd20558a3cca95811 /src/plugins/windowsaudio
parent49461f9cffa5439e536a844ec3a0134c252141e6 (diff)
Improve QAudioDeviceInfo::defaultDevice().
The previous implementation of QAudioDeviceInfo::defaultXDevice() would always report the first available device as the "default" one, making the order, in which devices were listed, a hidden requirement when implementing audio plugins. To make it easier and more reliable to retrieve the default device, all new plugins should implement the new QAudioSystemPluginExtension interface as well as the QAudioSystemPlugin. Devices will be chosen in the following order (first match wins): default plugin -> default device -> first available device plugins -> default device -> first available device Task-number: QTBUG-51292 Change-Id: I8ace78858976fe7c60a2c4a117ef15c4e1bb177f Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
Diffstat (limited to 'src/plugins/windowsaudio')
-rw-r--r--src/plugins/windowsaudio/qwindowsaudiodeviceinfo.cpp16
-rw-r--r--src/plugins/windowsaudio/qwindowsaudiodeviceinfo.h3
-rw-r--r--src/plugins/windowsaudio/qwindowsaudioplugin.cpp5
-rw-r--r--src/plugins/windowsaudio/qwindowsaudioplugin.h5
4 files changed, 14 insertions, 15 deletions
diff --git a/src/plugins/windowsaudio/qwindowsaudiodeviceinfo.cpp b/src/plugins/windowsaudio/qwindowsaudiodeviceinfo.cpp
index ca79ebbec..83e9ccfc8 100644
--- a/src/plugins/windowsaudio/qwindowsaudiodeviceinfo.cpp
+++ b/src/plugins/windowsaudio/qwindowsaudiodeviceinfo.cpp
@@ -457,22 +457,14 @@ QList<QByteArray> QWindowsAudioDeviceInfo::availableDevices(QAudio::Mode mode)
return devices;
}
-QByteArray QWindowsAudioDeviceInfo::defaultOutputDevice()
+QByteArray QWindowsAudioDeviceInfo::defaultDevice(QAudio::Mode mode)
{
+ const QString &name = (mode == QAudio::AudioOutput) ? QStringLiteral("Default Output Device")
+ : QStringLiteral("Default Input Device");
QByteArray defaultDevice;
QDataStream ds(&defaultDevice, QIODevice::WriteOnly);
ds << quint32(WAVE_MAPPER) // device ID for default device
- << QStringLiteral("Default Output Device");
-
- return defaultDevice;
-}
-
-QByteArray QWindowsAudioDeviceInfo::defaultInputDevice()
-{
- QByteArray defaultDevice;
- QDataStream ds(&defaultDevice, QIODevice::WriteOnly);
- ds << quint32(WAVE_MAPPER) // device ID for default device
- << QStringLiteral("Default Input Device");
+ << name;
return defaultDevice;
}
diff --git a/src/plugins/windowsaudio/qwindowsaudiodeviceinfo.h b/src/plugins/windowsaudio/qwindowsaudiodeviceinfo.h
index d4833d3fc..d84eb8acf 100644
--- a/src/plugins/windowsaudio/qwindowsaudiodeviceinfo.h
+++ b/src/plugins/windowsaudio/qwindowsaudiodeviceinfo.h
@@ -88,8 +88,7 @@ public:
QList<int> supportedSampleSizes();
QList<QAudioFormat::Endian> supportedByteOrders();
QList<QAudioFormat::SampleType> supportedSampleTypes();
- static QByteArray defaultInputDevice();
- static QByteArray defaultOutputDevice();
+ static QByteArray defaultDevice(QAudio::Mode mode);
static QList<QByteArray> availableDevices(QAudio::Mode);
private:
diff --git a/src/plugins/windowsaudio/qwindowsaudioplugin.cpp b/src/plugins/windowsaudio/qwindowsaudioplugin.cpp
index ba1dba4c2..8f532fa70 100644
--- a/src/plugins/windowsaudio/qwindowsaudioplugin.cpp
+++ b/src/plugins/windowsaudio/qwindowsaudioplugin.cpp
@@ -49,6 +49,11 @@ QWindowsAudioPlugin::QWindowsAudioPlugin(QObject *parent)
{
}
+QByteArray QWindowsAudioPlugin::defaultDevice(QAudio::Mode mode) const
+{
+ return QWindowsAudioDeviceInfo::defaultDevice(mode);
+}
+
QList<QByteArray> QWindowsAudioPlugin::availableDevices(QAudio::Mode mode) const
{
return QWindowsAudioDeviceInfo::availableDevices(mode);
diff --git a/src/plugins/windowsaudio/qwindowsaudioplugin.h b/src/plugins/windowsaudio/qwindowsaudioplugin.h
index fb4749e0d..7b500a39c 100644
--- a/src/plugins/windowsaudio/qwindowsaudioplugin.h
+++ b/src/plugins/windowsaudio/qwindowsaudioplugin.h
@@ -41,19 +41,22 @@
#define QWINDOWSAUDIOPLUGIN_H
#include <QtMultimedia/qaudiosystemplugin.h>
+#include <QtMultimedia/private/qaudiosystempluginext_p.h>
QT_BEGIN_NAMESPACE
-class QWindowsAudioPlugin : public QAudioSystemPlugin
+class QWindowsAudioPlugin : public QAudioSystemPlugin, public QAudioSystemPluginExtension
{
Q_OBJECT
Q_PLUGIN_METADATA(IID "org.qt-project.qt.audiosystemfactory/5.0" FILE "windowsaudio.json")
+ Q_INTERFACES(QAudioSystemPluginExtension)
public:
QWindowsAudioPlugin(QObject *parent = 0);
~QWindowsAudioPlugin() {}
+ QByteArray defaultDevice(QAudio::Mode mode) const Q_DECL_OVERRIDE;
QList<QByteArray> availableDevices(QAudio::Mode mode) const Q_DECL_OVERRIDE;
QAbstractAudioInput *createInput(const QByteArray &device) Q_DECL_OVERRIDE;
QAbstractAudioOutput *createOutput(const QByteArray &device) Q_DECL_OVERRIDE;