Index: patched-ffmpeg-mt/libavcodec/mpeg4videodec.c |
=================================================================== |
--- patched-ffmpeg-mt/libavcodec/mpeg4videodec.c (revision 41250) |
+++ patched-ffmpeg-mt/libavcodec/mpeg4videodec.c (working copy) |
@@ -2094,7 +2094,7 @@ |
} |
/* detect buggy encoders which don't set the low_delay flag (divx4/xvid/opendivx)*/ |
// note we cannot detect divx5 without b-frames easily (although it's buggy too) |
- if(s->vo_type==0 && s->vol_control_parameters==0 && s->divx_version==0 && s->picture_number==0){ |
+ if(s->vo_type==0 && s->vol_control_parameters==0 && s->divx_version==-1 && s->picture_number==0){ |
av_log(s->avctx, AV_LOG_ERROR, "looks like this file was encoded with (divx4/(old)xvid/opendivx) -> forcing low_delay flag\n"); |
s->low_delay=1; |
} |
@@ -2133,7 +2133,7 @@ |
startcode = 0xff; |
for(;;) { |
if(get_bits_count(gb) >= gb->size_in_bits){ |
- if(gb->size_in_bits==8 && (s->divx_version || s->xvid_build)){ |
+ if(gb->size_in_bits==8 && (s->divx_version>=0 || s->xvid_build>=0)){ |
av_log(s->avctx, AV_LOG_ERROR, "frame skip %d\n", gb->size_in_bits); |
return FRAME_SKIPPED; //divx bug |
}else |
@@ -2209,6 +2209,11 @@ |
int ret; |
static int done = 0; |
+ s->divx_version= |
+ s->divx_build= |
+ s->xvid_build= |
+ s->lavc_build= -1; |
+ |
if((ret=ff_h263_decode_init(avctx)) < 0) |
return ret; |