summaryrefslogtreecommitdiffstats
path: root/src/plugins/opensles
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/opensles')
-rw-r--r--src/plugins/opensles/qopenslesaudiooutput.cpp6
-rw-r--r--src/plugins/opensles/qopenslesengine.cpp13
2 files changed, 13 insertions, 6 deletions
diff --git a/src/plugins/opensles/qopenslesaudiooutput.cpp b/src/plugins/opensles/qopenslesaudiooutput.cpp
index 0b1f444bd..381ce0ec2 100644
--- a/src/plugins/opensles/qopenslesaudiooutput.cpp
+++ b/src/plugins/opensles/qopenslesaudiooutput.cpp
@@ -569,6 +569,12 @@ bool QOpenSLESAudioOutput::preparePlayer()
const int lowLatencyBufferSize = QOpenSLESEngine::getLowLatencyBufferSize(m_format);
const int defaultBufferSize = QOpenSLESEngine::getDefaultBufferSize(m_format);
+ if (defaultBufferSize <= 0) {
+ qWarning() << "Unable to get minimum buffer size, returned" << defaultBufferSize;
+ setError(QAudio::FatalError);
+ return false;
+ }
+
// Buffer size
if (m_bufferSize <= 0) {
m_bufferSize = defaultBufferSize;
diff --git a/src/plugins/opensles/qopenslesengine.cpp b/src/plugins/opensles/qopenslesengine.cpp
index 1a16cc2a3..43cdcb276 100644
--- a/src/plugins/opensles/qopenslesengine.cpp
+++ b/src/plugins/opensles/qopenslesengine.cpp
@@ -239,12 +239,13 @@ int QOpenSLESEngine::getDefaultBufferSize(const QAudioFormat &format)
}();
const int sampleRate = format.sampleRate();
- return QJNIObjectPrivate::callStaticMethod<jint>("android/media/AudioTrack",
- "getMinBufferSize",
- "(III)I",
- sampleRate,
- channelConfig,
- audioFormat);
+ const int minBufferSize = QJNIObjectPrivate::callStaticMethod<jint>("android/media/AudioTrack",
+ "getMinBufferSize",
+ "(III)I",
+ sampleRate,
+ channelConfig,
+ audioFormat);
+ return minBufferSize > 0 ? minBufferSize : format.bytesForDuration(DEFAULT_PERIOD_TIME_MS);
#else
return format.bytesForDuration(DEFAULT_PERIOD_TIME_MS);
#endif // Q_OS_ANDROID