diff options
| author | Matthew Hoops | 2012-04-02 10:07:45 -0400 |
|---|---|---|
| committer | Matthew Hoops | 2012-04-02 10:07:45 -0400 |
| commit | b6374a3103787415eaad1eb2ea29559bd4c7d372 (patch) | |
| tree | 05defd71f9cd141917e2c36b7fab215718763063 /common/quicktime.cpp | |
| parent | 47ae65e49577b1f881c2f5956ad8550f0089a4fe (diff) | |
| parent | d50e34c1bd1152170737bea6bd85c08566426eb6 (diff) | |
| download | scummvm-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.cpp | 15 |
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]; |
