summaryrefslogtreecommitdiffstats
path: root/src/plugins/opensles
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/opensles
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/opensles')
-rw-r--r--src/plugins/opensles/qopenslesengine.cpp6
-rw-r--r--src/plugins/opensles/qopenslesengine.h1
-rw-r--r--src/plugins/opensles/qopenslesplugin.cpp5
-rw-r--r--src/plugins/opensles/qopenslesplugin.h7
4 files changed, 17 insertions, 2 deletions
diff --git a/src/plugins/opensles/qopenslesengine.cpp b/src/plugins/opensles/qopenslesengine.cpp
index 0cbd10887..1a16cc2a3 100644
--- a/src/plugins/opensles/qopenslesengine.cpp
+++ b/src/plugins/opensles/qopenslesengine.cpp
@@ -101,6 +101,12 @@ SLDataFormat_PCM QOpenSLESEngine::audioFormatToSLFormatPCM(const QAudioFormat &f
}
+QByteArray QOpenSLESEngine::defaultDevice(QAudio::Mode mode) const
+{
+ const auto &devices = availableDevices(mode);
+ return !devices.isEmpty() ? devices.first() : QByteArray();
+}
+
QList<QByteArray> QOpenSLESEngine::availableDevices(QAudio::Mode mode) const
{
QList<QByteArray> devices;
diff --git a/src/plugins/opensles/qopenslesengine.h b/src/plugins/opensles/qopenslesengine.h
index 364b3ef60..c36b21488 100644
--- a/src/plugins/opensles/qopenslesengine.h
+++ b/src/plugins/opensles/qopenslesengine.h
@@ -62,6 +62,7 @@ public:
static SLDataFormat_PCM audioFormatToSLFormatPCM(const QAudioFormat &format);
+ QByteArray defaultDevice(QAudio::Mode mode) const;
QList<QByteArray> availableDevices(QAudio::Mode mode) const;
QList<int> supportedChannelCounts(QAudio::Mode mode) const;
QList<int> supportedSampleRates(QAudio::Mode mode) const;
diff --git a/src/plugins/opensles/qopenslesplugin.cpp b/src/plugins/opensles/qopenslesplugin.cpp
index 8f89d044d..9a2fbbf79 100644
--- a/src/plugins/opensles/qopenslesplugin.cpp
+++ b/src/plugins/opensles/qopenslesplugin.cpp
@@ -52,6 +52,11 @@ QOpenSLESPlugin::QOpenSLESPlugin(QObject *parent)
{
}
+QByteArray QOpenSLESPlugin::defaultDevice(QAudio::Mode mode) const
+{
+ return m_engine->defaultDevice(mode);
+}
+
QList<QByteArray> QOpenSLESPlugin::availableDevices(QAudio::Mode mode) const
{
return m_engine->availableDevices(mode);
diff --git a/src/plugins/opensles/qopenslesplugin.h b/src/plugins/opensles/qopenslesplugin.h
index 2a967b27e..d45a47923 100644
--- a/src/plugins/opensles/qopenslesplugin.h
+++ b/src/plugins/opensles/qopenslesplugin.h
@@ -40,22 +40,25 @@
#ifndef QOPENSLESPLUGIN_H
#define QOPENSLESPLUGIN_H
-#include <qaudiosystemplugin.h>
+#include <QtMultimedia/qaudiosystemplugin.h>
+#include <QtMultimedia/private/qaudiosystempluginext_p.h>
QT_BEGIN_NAMESPACE
class QOpenSLESEngine;
-class QOpenSLESPlugin : public QAudioSystemPlugin
+class QOpenSLESPlugin : public QAudioSystemPlugin, public QAudioSystemPluginExtension
{
Q_OBJECT
Q_PLUGIN_METADATA(IID "org.qt-project.qt.audiosystemfactory/5.0" FILE "opensles.json")
+ Q_INTERFACES(QAudioSystemPluginExtension)
public:
QOpenSLESPlugin(QObject *parent = 0);
~QOpenSLESPlugin() {}
+ QByteArray defaultDevice(QAudio::Mode mode) const;
QList<QByteArray> availableDevices(QAudio::Mode mode) const;
QAbstractAudioInput *createInput(const QByteArray &device);
QAbstractAudioOutput *createOutput(const QByteArray &device);