summaryrefslogtreecommitdiffstats
path: root/src/multimedia
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@digia.com>2014-04-11 14:21:32 +0200
committerFrederik Gladhorn <frederik.gladhorn@digia.com>2014-04-11 14:22:22 +0200
commit00c072bf0eb25104086eb43e860e038af5f5d340 (patch)
treeead5b949d0a8314bdfd62dfe6fe900e27025c685 /src/multimedia
parenta2303617ea8d2cb118d0edc5e4b743d7c4dc8dfc (diff)
parent8a047ef087cebba5953ad3ed7b2d99df7966b695 (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.cpp20
-rw-r--r--src/multimedia/audio/qwavedecoder_p.h2
-rw-r--r--src/multimedia/doc/qtmultimedia.qdocconf2
-rw-r--r--src/multimedia/multimedia.pro11
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