summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYoann Lopes <yoann.lopes@digia.com>2014-06-12 18:57:54 +0200
committerYoann Lopes <yoann.lopes@digia.com>2014-07-08 13:49:56 +0200
commit382d4c873a53e02f7b7c1b30218aef5c9b6175cb (patch)
tree5003f53d120f3abe81a7d231ea177c3be4440ece
parenta63da4b5935bcb1e1fbba6f3156e7dfa60c90782 (diff)
downloadqtmultimedia-382d4c873a53e02f7b7c1b30218aef5c9b6175cb.tar.gz
Fix AudioOutput example when no audio devices are available.
Don't try to generate audio data with an invalid QAudioFormat, which can happen when no audio devices are available. Change-Id: I4de82dbf64def55fee21cf63ef99888a8084bd95 Reviewed-by: Christian Stromme <christian.stromme@digia.com>
-rw-r--r--examples/multimedia/audiooutput/audiooutput.cpp15
1 files changed, 9 insertions, 6 deletions
diff --git a/examples/multimedia/audiooutput/audiooutput.cpp b/examples/multimedia/audiooutput/audiooutput.cpp
index fdb640dc2..daa7bfdf6 100644
--- a/examples/multimedia/audiooutput/audiooutput.cpp
+++ b/examples/multimedia/audiooutput/audiooutput.cpp
@@ -66,7 +66,8 @@ Generator::Generator(const QAudioFormat &format,
: QIODevice(parent)
, m_pos(0)
{
- generateData(format, durationUs, sampleRate);
+ if (format.isValid())
+ generateData(format, durationUs, sampleRate);
}
Generator::~Generator()
@@ -133,11 +134,13 @@ void Generator::generateData(const QAudioFormat &format, qint64 durationUs, int
qint64 Generator::readData(char *data, qint64 len)
{
qint64 total = 0;
- while (len - total > 0) {
- const qint64 chunk = qMin((m_buffer.size() - m_pos), len - total);
- memcpy(data + total, m_buffer.constData() + m_pos, chunk);
- m_pos = (m_pos + chunk) % m_buffer.size();
- total += chunk;
+ if (!m_buffer.isEmpty()) {
+ while (len - total > 0) {
+ const qint64 chunk = qMin((m_buffer.size() - m_pos), len - total);
+ memcpy(data + total, m_buffer.constData() + m_pos, chunk);
+ m_pos = (m_pos + chunk) % m_buffer.size();
+ total += chunk;
+ }
}
return total;
}