diff options
author | Yoann Lopes <yoann.lopes@digia.com> | 2014-06-12 18:57:54 +0200 |
---|---|---|
committer | Yoann Lopes <yoann.lopes@digia.com> | 2014-07-08 13:49:56 +0200 |
commit | 382d4c873a53e02f7b7c1b30218aef5c9b6175cb (patch) | |
tree | 5003f53d120f3abe81a7d231ea177c3be4440ece /examples | |
parent | a63da4b5935bcb1e1fbba6f3156e7dfa60c90782 (diff) | |
download | qtmultimedia-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>
Diffstat (limited to 'examples')
-rw-r--r-- | examples/multimedia/audiooutput/audiooutput.cpp | 15 |
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; } |