diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2008-03-27 20:58:01 +0000 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2008-03-27 20:58:01 +0000 |
commit | 41757171e77feeb6e06a35e5bdeba09b44d90743 (patch) | |
tree | c4d8304faaa4ceb3e0ed3248bdf47a40230d88dc /libavformat/avidec.c | |
parent | 0d14ab27a805c23b804b6ef9bef6263e092cdfce (diff) | |
download | ffmpeg-streaming-41757171e77feeb6e06a35e5bdeba09b44d90743.zip ffmpeg-streaming-41757171e77feeb6e06a35e5bdeba09b44d90743.tar.gz |
Support wb00+dc00 chunk mix.
fixes issue402
Originally committed as revision 12609 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavformat/avidec.c')
-rw-r--r-- | libavformat/avidec.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/libavformat/avidec.c b/libavformat/avidec.c index e338ddb..b45641e 100644 --- a/libavformat/avidec.c +++ b/libavformat/avidec.c @@ -778,10 +778,29 @@ resync: //parse ##dc/##wb if(n < s->nb_streams){ AVStream *st; + AVStream *st1 = s->streams[1]; + AVIStream *ast1= st1->priv_data; AVIStream *ast; st = s->streams[n]; ast = st->priv_data; + + //workaround for broken small-file-bug402.avi + if( d[2] == 'w' && d[3] == 'b' + && n==0 + && s->nb_streams>=2 + && st ->codec->codec_type == CODEC_TYPE_VIDEO + && st1->codec->codec_type == CODEC_TYPE_AUDIO + && ast->prefix == 'd'*256+'c' + && (d[2]*256+d[3] == ast1->prefix || !ast1->prefix_count) + ){ + n=1; + st = st1; + ast = ast1; + av_log(s, AV_LOG_WARNING, "Invalid stream+prefix combination, assuming audio\n"); + } + + if( (st->discard >= AVDISCARD_DEFAULT && size==0) /*|| (st->discard >= AVDISCARD_NONKEY && !(pkt->flags & PKT_FLAG_KEY))*/ //FIXME needs a little reordering || st->discard >= AVDISCARD_ALL){ |