aboutsummaryrefslogtreecommitdiff
path: root/common/quicktime.cpp
diff options
context:
space:
mode:
authorMatthew Hoops2012-04-02 10:07:45 -0400
committerMatthew Hoops2012-04-02 10:07:45 -0400
commitb6374a3103787415eaad1eb2ea29559bd4c7d372 (patch)
tree05defd71f9cd141917e2c36b7fab215718763063 /common/quicktime.cpp
parent47ae65e49577b1f881c2f5956ad8550f0089a4fe (diff)
parentd50e34c1bd1152170737bea6bd85c08566426eb6 (diff)
downloadscummvm-rg350-b6374a3103787415eaad1eb2ea29559bd4c7d372.tar.gz
scummvm-rg350-b6374a3103787415eaad1eb2ea29559bd4c7d372.tar.bz2
scummvm-rg350-b6374a3103787415eaad1eb2ea29559bd4c7d372.zip
Merge remote branch 'upstream/master' into pegasus
Diffstat (limited to 'common/quicktime.cpp')
-rw-r--r--common/quicktime.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/common/quicktime.cpp b/common/quicktime.cpp
index fb01e8de28..5176f83a35 100644
--- a/common/quicktime.cpp
+++ b/common/quicktime.cpp
@@ -164,6 +164,7 @@ void QuickTimeParser::initParseTable() {
{ &QuickTimeParser::readCMOV, MKTAG('c', 'm', 'o', 'v') },
{ &QuickTimeParser::readWAVE, MKTAG('w', 'a', 'v', 'e') },
{ &QuickTimeParser::readESDS, MKTAG('e', 's', 'd', 's') },
+ { &QuickTimeParser::readSMI, MKTAG('S', 'M', 'I', ' ') },
{ 0, 0 }
};
@@ -687,7 +688,7 @@ int QuickTimeParser::readWAVE(Atom atom) {
return -1;
if (track->sampleDescs[0]->getCodecTag() == MKTAG('Q', 'D', 'M', '2')) // Read extra data for QDM2
- track->extraData = _fd->readStream(atom.size - 8);
+ track->extraData = _fd->readStream(atom.size);
else if (atom.size > 8)
return readDefault(atom);
else
@@ -761,6 +762,18 @@ int QuickTimeParser::readESDS(Atom atom) {
return 0;
}
+int QuickTimeParser::readSMI(Atom atom) {
+ if (_tracks.empty())
+ return 0;
+
+ Track *track = _tracks.back();
+
+ // This atom just contains SVQ3 extra data
+ track->extraData = _fd->readStream(atom.size);
+
+ return 0;
+}
+
void QuickTimeParser::close() {
for (uint32 i = 0; i < _tracks.size(); i++)
delete _tracks[i];