summaryrefslogtreecommitdiffstats
path: root/src/plugins/opensles
diff options
context:
space:
mode:
authorYoann Lopes <yoann.lopes@digia.com>2014-03-11 12:31:34 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-03-18 14:47:48 +0100
commita6e0dd525a90733519fe0121e75595419cbaff79 (patch)
tree629b19fee5c680d0594f42489551d6d40216f4dc /src/plugins/opensles
parentc24c3b171f61a673d4905aba4bc94c04a22adea3 (diff)
OpenSL ES: lazy initialization of QAudioInput's supported formats.
Change-Id: I51cdd35a944c990ce7df999bcb6063342e98c62d Reviewed-by: Christian Stromme <christian.stromme@digia.com>
Diffstat (limited to 'src/plugins/opensles')
-rw-r--r--src/plugins/opensles/qopenslesengine.cpp14
-rw-r--r--src/plugins/opensles/qopenslesengine.h1
2 files changed, 11 insertions, 4 deletions
diff --git a/src/plugins/opensles/qopenslesengine.cpp b/src/plugins/opensles/qopenslesengine.cpp
index 056b51e26..68c324f67 100644
--- a/src/plugins/opensles/qopenslesengine.cpp
+++ b/src/plugins/opensles/qopenslesengine.cpp
@@ -55,6 +55,7 @@ Q_GLOBAL_STATIC(QOpenSLESEngine, openslesEngine);
QOpenSLESEngine::QOpenSLESEngine()
: m_engineObject(0)
, m_engine(0)
+ , m_checkedInputFormats(false)
{
SLresult result;
@@ -66,8 +67,6 @@ QOpenSLESEngine::QOpenSLESEngine()
result = (*m_engineObject)->GetInterface(m_engineObject, SL_IID_ENGINE, &m_engine);
CheckError("Failed to get engine interface");
-
- checkSupportedInputFormats();
}
QOpenSLESEngine::~QOpenSLESEngine()
@@ -118,15 +117,20 @@ QList<QByteArray> QOpenSLESEngine::availableDevices(QAudio::Mode mode) const
QList<int> QOpenSLESEngine::supportedChannelCounts(QAudio::Mode mode) const
{
- if (mode == QAudio::AudioInput)
+ if (mode == QAudio::AudioInput) {
+ if (!m_checkedInputFormats)
+ const_cast<QOpenSLESEngine *>(this)->checkSupportedInputFormats();
return m_supportedInputChannelCounts;
- else
+ } else {
return QList<int>() << 1 << 2;
+ }
}
QList<int> QOpenSLESEngine::supportedSampleRates(QAudio::Mode mode) const
{
if (mode == QAudio::AudioInput) {
+ if (!m_checkedInputFormats)
+ const_cast<QOpenSLESEngine *>(this)->checkSupportedInputFormats();
return m_supportedInputSampleRates;
} else {
return QList<int>() << 8000 << 11025 << 12000 << 16000 << 22050
@@ -177,6 +181,8 @@ void QOpenSLESEngine::checkSupportedInputFormats()
if (inputFormatIsSupported(format))
m_supportedInputChannelCounts.append(2);
}
+
+ m_checkedInputFormats = true;
}
bool QOpenSLESEngine::inputFormatIsSupported(SLDataFormat_PCM format)
diff --git a/src/plugins/opensles/qopenslesengine.h b/src/plugins/opensles/qopenslesengine.h
index 9f12ac65d..81d1f665b 100644
--- a/src/plugins/opensles/qopenslesengine.h
+++ b/src/plugins/opensles/qopenslesengine.h
@@ -75,6 +75,7 @@ private:
QList<int> m_supportedInputChannelCounts;
QList<int> m_supportedInputSampleRates;
+ bool m_checkedInputFormats;
};
QT_END_NAMESPACE