aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Hoops2013-08-16 21:17:11 -0400
committerMatthew Hoops2013-08-16 21:17:51 -0400
commit0d6f6119638ae40a6e849a740452c67919eeb559 (patch)
tree315f329f3e543dc6dc7fd4de36971a5a731b2aed
parente2856ed85b08b4ab96e5a05cef793052e3232838 (diff)
downloadscummvm-rg350-0d6f6119638ae40a6e849a740452c67919eeb559.tar.gz
scummvm-rg350-0d6f6119638ae40a6e849a740452c67919eeb559.tar.bz2
scummvm-rg350-0d6f6119638ae40a6e849a740452c67919eeb559.zip
VIDEO: Ignore some AVI lists with metadata
-rw-r--r--video/avi_decoder.cpp19
1 files changed, 15 insertions, 4 deletions
diff --git a/video/avi_decoder.cpp b/video/avi_decoder.cpp
index 92a60fcccf..34bc8c4a7a 100644
--- a/video/avi_decoder.cpp
+++ b/video/avi_decoder.cpp
@@ -65,9 +65,10 @@ namespace Video {
#define ID_VEDT MKTAG('v','e','d','t')
#define ID_IDX1 MKTAG('i','d','x','1')
#define ID_STRD MKTAG('s','t','r','d')
-//#define ID_INFO MKTAG('I','N','F','O')
+#define ID_INFO MKTAG('I','N','F','O')
#define ID_ISFT MKTAG('I','S','F','T')
#define ID_DISP MKTAG('D','I','S','P')
+#define ID_PRMI MKTAG('P','R','M','I')
// Codec tags
#define ID_RLE MKTAG('R','L','E',' ')
@@ -170,15 +171,25 @@ void AVIDecoder::handleList(uint32 listSize) {
debug(0, "Found LIST of type %s", tag2str(listType));
- if (listType == ID_MOVI) {
- // If we found the movie block
+ switch (listType) {
+ case ID_MOVI: // Movie List
+ // We found the movie block
_foundMovieList = true;
_movieListStart = curPos;
_fileStream->skip(listSize);
return;
- } else if (listType == ID_HDRL) {
+ case ID_HDRL: // Header List
// Mark the header as decoded
_decodedHeader = true;
+ break;
+ case ID_INFO: // Metadata
+ case ID_PRMI: // Unknown metadata, should be safe to ignore
+ // Ignore metadata
+ _fileStream->skip(listSize);
+ return;
+ case ID_STRL: // Stream list
+ default: // (Just hope we can parse it!)
+ break;
}
while ((_fileStream->pos() - curPos) < listSize)