changeset 6240:8333d7ea7257 libavformat

Ignore extradata & w/h in asf/dvr. The w/h values are wrong and extradata contains a fake seq header that causes decoding to fail later, a valid seq header is in the stream itself. Partially fixes issue658
author michael
date Wed, 07 Jul 2010 10:39:05 +0000
parents d7ec9ef45438
children a7e674f70016
files asfdec.c
diffstat 1 files changed, 7 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/asfdec.c	Wed Jul 07 10:19:59 2010 +0000
+++ b/asfdec.c	Wed Jul 07 10:39:05 2010 +0000
@@ -396,8 +396,14 @@
 
                 st->codec->codec_tag = tag1;
                 st->codec->codec_id = ff_codec_get_id(ff_codec_bmp_tags, tag1);
-                if(tag1 == MKTAG('D', 'V', 'R', ' '))
+                if(tag1 == MKTAG('D', 'V', 'R', ' ')){
                     st->need_parsing = AVSTREAM_PARSE_FULL;
+                    // issue658 containse wrong w/h and MS even puts a fake seq header with wrong w/h in extradata while a correct one is in te stream. maximum lameness
+                    st->codec->width  =
+                    st->codec->height = 0;
+                    av_freep(&st->codec->extradata);
+                    st->codec->extradata_size=0;
+                }
                 if(st->codec->codec_id == CODEC_ID_H264)
                     st->need_parsing = AVSTREAM_PARSE_FULL_ONCE;
             }