summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/multimedia/audio/qaudiobuffer.cpp12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/multimedia/audio/qaudiobuffer.cpp b/src/multimedia/audio/qaudiobuffer.cpp
index 7fa37f81b..fffa66c4a 100644
--- a/src/multimedia/audio/qaudiobuffer.cpp
+++ b/src/multimedia/audio/qaudiobuffer.cpp
@@ -111,7 +111,7 @@ public:
, mSampleCount(sampleCount)
, mFormat(format)
{
- int numBytes = (sampleCount * format.channelCount() * format.sampleSize()) / 8;
+ int numBytes = (sampleCount * format.sampleSize()) / 8;
if (numBytes > 0) {
mBuffer = malloc(numBytes);
if (!mBuffer) {
@@ -245,9 +245,11 @@ QAudioBuffer::QAudioBuffer(const QAudioBuffer &other)
*/
QAudioBuffer::QAudioBuffer(const QByteArray &data, const QAudioFormat &format)
{
- int sampleSize = (format.sampleSize() * format.channelCount()) / 8;
- int sampleCount = data.size() / sampleSize; // truncate
- d = new QAudioBufferPrivate(new QMemoryAudioBufferProvider(data.constData(), sampleCount, format, -1));
+ if (format.isValid()) {
+ int sampleCount = (data.size() * 8) / format.sampleSize(); // truncate
+ d = new QAudioBufferPrivate(new QMemoryAudioBufferProvider(data.constData(), sampleCount, format, -1));
+ } else
+ d = 0;
}
/*!
@@ -327,7 +329,7 @@ int QAudioBuffer::sampleCount() const
int QAudioBuffer::byteCount() const
{
const QAudioFormat f(format());
- return (f.channelCount() * f.sampleSize() * sampleCount()) / 8; // sampleSize is in bits
+ return (f.sampleSize() * sampleCount()) / 8; // sampleSize is in bits
}
/*!