diff options
author | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2014-04-11 14:21:32 +0200 |
---|---|---|
committer | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2014-04-11 14:22:22 +0200 |
commit | 00c072bf0eb25104086eb43e860e038af5f5d340 (patch) | |
tree | ead5b949d0a8314bdfd62dfe6fe900e27025c685 /src/multimedia | |
parent | a2303617ea8d2cb118d0edc5e4b743d7c4dc8dfc (diff) | |
parent | 8a047ef087cebba5953ad3ed7b2d99df7966b695 (diff) |
Merge remote-tracking branch 'origin/stable' into dev
Conflicts:
tests/auto/unit/qaudioformat/tst_qaudioformat.cpp
Change-Id: I8499473569df9eac8c7069160e42ed477dacad4d
Diffstat (limited to 'src/multimedia')
-rw-r--r-- | src/multimedia/audio/qwavedecoder_p.cpp | 20 | ||||
-rw-r--r-- | src/multimedia/audio/qwavedecoder_p.h | 2 | ||||
-rw-r--r-- | src/multimedia/doc/qtmultimedia.qdocconf | 2 | ||||
-rw-r--r-- | src/multimedia/multimedia.pro | 11 |
4 files changed, 22 insertions, 13 deletions
diff --git a/src/multimedia/audio/qwavedecoder_p.cpp b/src/multimedia/audio/qwavedecoder_p.cpp index 497a146df..974a8f509 100644 --- a/src/multimedia/audio/qwavedecoder_p.cpp +++ b/src/multimedia/audio/qwavedecoder_p.cpp @@ -166,6 +166,8 @@ void QWaveDecoder::handleData() // Swizzle this if (bigEndian) { wave.audioFormat = qFromBigEndian<quint16>(wave.audioFormat); + } else { + wave.audioFormat = qFromLittleEndian<quint16>(wave.audioFormat); } if (wave.audioFormat != 0 && wave.audioFormat != 1) { @@ -207,6 +209,8 @@ void QWaveDecoder::handleData() source->read(reinterpret_cast<char *>(&descriptor), sizeof(chunk)); if (bigEndian) descriptor.size = qFromBigEndian<quint32>(descriptor.size); + else + descriptor.size = qFromLittleEndian<quint32>(descriptor.size); dataSize = descriptor.size; @@ -227,13 +231,15 @@ void QWaveDecoder::handleData() bool QWaveDecoder::enoughDataAvailable() { chunk descriptor; - if (!peekChunk(&descriptor)) + if (!peekChunk(&descriptor, false)) return false; // This is only called for the RIFF/RIFX header, before bigEndian is set, // so we have to manually swizzle if (qstrncmp(descriptor.id, "RIFX", 4) == 0) descriptor.size = qFromBigEndian<quint32>(descriptor.size); + if (qstrncmp(descriptor.id, "RIFF", 4) == 0) + descriptor.size = qFromLittleEndian<quint32>(descriptor.size); if (source->bytesAvailable() < qint64(sizeof(chunk) + descriptor.size)) return false; @@ -270,16 +276,18 @@ bool QWaveDecoder::findChunk(const char *chunkId) return false; } -// Handles endianness -bool QWaveDecoder::peekChunk(chunk *pChunk) +bool QWaveDecoder::peekChunk(chunk *pChunk, bool handleEndianness) { if (source->bytesAvailable() < qint64(sizeof(chunk))) return false; source->peek(reinterpret_cast<char *>(pChunk), sizeof(chunk)); - if (bigEndian) - pChunk->size = qFromBigEndian<quint32>(pChunk->size); - + if (handleEndianness) { + if (bigEndian) + pChunk->size = qFromBigEndian<quint32>(pChunk->size); + else + pChunk->size = qFromLittleEndian<quint32>(pChunk->size); + } return true; } diff --git a/src/multimedia/audio/qwavedecoder_p.h b/src/multimedia/audio/qwavedecoder_p.h index c21d8cb5b..24cdb7885 100644 --- a/src/multimedia/audio/qwavedecoder_p.h +++ b/src/multimedia/audio/qwavedecoder_p.h @@ -103,7 +103,7 @@ private: char id[4]; quint32 size; }; - bool peekChunk(chunk* pChunk); + bool peekChunk(chunk* pChunk, bool handleEndianness = true); struct RIFFHeader { diff --git a/src/multimedia/doc/qtmultimedia.qdocconf b/src/multimedia/doc/qtmultimedia.qdocconf index 83abf5b49..d6ff6822e 100644 --- a/src/multimedia/doc/qtmultimedia.qdocconf +++ b/src/multimedia/doc/qtmultimedia.qdocconf @@ -43,7 +43,7 @@ sourcedirs += ../.. excludedirs += ../../multimediawidgets -depends += qtcore qtdoc qtquick qtqml qtmultimediawidgets +depends += qtcore qtdoc qtgui qtquick qtqml qtmultimediawidgets qtwidgets navigation.landingpage = "Qt Multimedia" navigation.cppclassespage = "Qt Multimedia C++ Classes" diff --git a/src/multimedia/multimedia.pro b/src/multimedia/multimedia.pro index 5ed0cefc0..23cca2537 100644 --- a/src/multimedia/multimedia.pro +++ b/src/multimedia/multimedia.pro @@ -1,6 +1,12 @@ TARGET = QtMultimedia QT = core-private network gui-private +MODULE_PLUGIN_TYPES = \ + mediaservice \ + audio \ + video/videonode \ + playlistformats + QMAKE_DOCS = $$PWD/doc/qtmultimedia.qdocconf load(qt_module) @@ -67,11 +73,6 @@ ANDROID_FEATURES += \ android.hardware.camera \ android.hardware.camera.autofocus \ android.hardware.microphone -MODULE_PLUGIN_TYPES = \ - mediaservice \ - audio \ - video/videonode \ - playlistformats win32: LIBS_PRIVATE += -luuid |