aboutsummaryrefslogtreecommitdiff
path: root/audio
diff options
context:
space:
mode:
authorMatthew Hoops2012-09-07 14:47:30 -0400
committerMatthew Hoops2012-09-07 14:47:30 -0400
commitc882ef9dabbb69e569bd5861712cf4117794a9ae (patch)
tree84f9efb70ec8ab2e04515c0f0e7e7dc077443d7e /audio
parent342cc027c4d360590753a129f0c622fc1757cc0e (diff)
downloadscummvm-rg350-c882ef9dabbb69e569bd5861712cf4117794a9ae.tar.gz
scummvm-rg350-c882ef9dabbb69e569bd5861712cf4117794a9ae.tar.bz2
scummvm-rg350-c882ef9dabbb69e569bd5861712cf4117794a9ae.zip
AUDIO: Make MidiParser_QT::loadMusic() detect the file type
Diffstat (limited to 'audio')
-rw-r--r--audio/midiparser_qt.cpp13
1 files changed, 11 insertions, 2 deletions
diff --git a/audio/midiparser_qt.cpp b/audio/midiparser_qt.cpp
index 5500c28e44..d6440508df 100644
--- a/audio/midiparser_qt.cpp
+++ b/audio/midiparser_qt.cpp
@@ -25,10 +25,19 @@
#include "common/memstream.h"
bool MidiParser_QT::loadMusic(byte *data, uint32 size) {
- // Assume that this is a Tune and not a QuickTime container
+ if (size < 8)
+ return false;
+
Common::SeekableReadStream *stream = new Common::MemoryReadStream(data, size, DisposeAfterUse::NO);
- if (!loadFromTune(stream)) {
+ // Attempt to detect what format we have
+ bool result;
+ if (READ_BE_UINT32(data + 4) == MKTAG('m', 'u', 's', 'i'))
+ result = loadFromTune(stream);
+ else
+ result = loadFromContainerStream(stream);
+
+ if (!result) {
delete stream;
return false;
}