avformat/wtvdec: ignore mpeg2 extradata
authorPeter Ross <pross@xvid.org>
Thu, 1 May 2014 12:22:09 +0000 (22:22 +1000)
committerMichael Niedermayer <michaelni@gmx.at>
Thu, 1 May 2014 16:36:27 +0000 (18:36 +0200)
Files produced by windows media center contain meaningless mpeg1 sequence
header. The mpeg2 decoder detects the presence mpeg1 sequence header start
codes and attempts to decode the stream as mpeg1. (This problem introduced
in 73a2d16b.)

Fixes ticket #3601.

Signed-off-by: Peter Ross <pross@xvid.org>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavformat/wtvdec.c

index 597a11fbd4b323a8385b08ea1123c4e03e8fc3e7..cfdc55523a806ac10ea73ccd0592a3ca28e6ab0c 100644 (file)
@@ -694,19 +694,7 @@ static AVStream * parse_media_type(AVFormatContext *s, AVStream *st, int sid,
             avio_skip(pb, FFMAX(size - consumed, 0));
         } else if (!ff_guidcmp(formattype, ff_format_mpeg2_video)) {
             uint64_t consumed = parse_videoinfoheader2(s, st);
-            if (size - consumed >= 20) {
-                uint32_t count;
-                consumed += 20;
-                avio_skip(pb, 4);
-                count = avio_rl32(pb);
-                count = FFMIN(count, size - consumed);
-                avio_skip(pb, 12);
-                if (count && ff_get_extradata(st->codec, pb, count) < 0) {
-                   ff_free_stream(s, st);
-                   return NULL;
-                }
-                consumed += count;
-            }
+            /* ignore extradata; files produced by windows media center contain meaningless mpeg1 sequence header */
             avio_skip(pb, FFMAX(size - consumed, 0));
         } else {
             if (ff_guidcmp(formattype, ff_format_none))