Commit b317567c authored by Michael Niedermayer's avatar Michael Niedermayer

Change xvid/divx/lavc build variables to be consistent to x264_build.

Originally committed as revision 21682 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent 055a6aa7
...@@ -287,7 +287,7 @@ static int decode_slice(MpegEncContext *s){ ...@@ -287,7 +287,7 @@ static int decode_slice(MpegEncContext *s){
} }
if(s->workaround_bugs&FF_BUG_AUTODETECT){ if(s->workaround_bugs&FF_BUG_AUTODETECT){
if(s->padding_bug_score > -2 && !s->data_partitioning /*&& (s->divx_version || !s->resync_marker)*/) if(s->padding_bug_score > -2 && !s->data_partitioning /*&& (s->divx_version>=0 || !s->resync_marker)*/)
s->workaround_bugs |= FF_BUG_NO_PADDING; s->workaround_bugs |= FF_BUG_NO_PADDING;
else else
s->workaround_bugs &= ~FF_BUG_NO_PADDING; s->workaround_bugs &= ~FF_BUG_NO_PADDING;
...@@ -425,26 +425,26 @@ retry: ...@@ -425,26 +425,26 @@ retry:
avctx->has_b_frames= !s->low_delay; avctx->has_b_frames= !s->low_delay;
if(s->xvid_build==0 && s->divx_version==0 && s->lavc_build==0){ if(s->xvid_build==-1 && s->divx_version==-1 && s->lavc_build==-1){
if(s->stream_codec_tag == AV_RL32("XVID") || if(s->stream_codec_tag == AV_RL32("XVID") ||
s->codec_tag == AV_RL32("XVID") || s->codec_tag == AV_RL32("XVIX") || s->codec_tag == AV_RL32("XVID") || s->codec_tag == AV_RL32("XVIX") ||
s->codec_tag == AV_RL32("RMP4")) s->codec_tag == AV_RL32("RMP4"))
s->xvid_build= -1; s->xvid_build= 0;
#if 0 #if 0
if(s->codec_tag == AV_RL32("DIVX") && s->vo_type==0 && s->vol_control_parameters==1 if(s->codec_tag == AV_RL32("DIVX") && s->vo_type==0 && s->vol_control_parameters==1
&& s->padding_bug_score > 0 && s->low_delay) // XVID with modified fourcc && s->padding_bug_score > 0 && s->low_delay) // XVID with modified fourcc
s->xvid_build= -1; s->xvid_build= 0;
#endif #endif
} }
if(s->xvid_build==0 && s->divx_version==0 && s->lavc_build==0){ if(s->xvid_build==-1 && s->divx_version==-1 && s->lavc_build==-1){
if(s->codec_tag == AV_RL32("DIVX") && s->vo_type==0 && s->vol_control_parameters==0) if(s->codec_tag == AV_RL32("DIVX") && s->vo_type==0 && s->vol_control_parameters==0)
s->divx_version= 400; //divx 4 s->divx_version= 400; //divx 4
} }
if(s->xvid_build && s->divx_version){ if(s->xvid_build>=0 && s->divx_version>=0){
s->divx_version= s->divx_version=
s->divx_build= 0; s->divx_build= -1;
} }
if(s->workaround_bugs&FF_BUG_AUTODETECT){ if(s->workaround_bugs&FF_BUG_AUTODETECT){
...@@ -463,16 +463,16 @@ retry: ...@@ -463,16 +463,16 @@ retry:
s->workaround_bugs|= FF_BUG_QPEL_CHROMA2; s->workaround_bugs|= FF_BUG_QPEL_CHROMA2;
} }
if(s->xvid_build && s->xvid_build<=3) if(s->xvid_build<=3U)
s->padding_bug_score= 256*256*256*64; s->padding_bug_score= 256*256*256*64;
if(s->xvid_build && s->xvid_build<=1) if(s->xvid_build<=1U)
s->workaround_bugs|= FF_BUG_QPEL_CHROMA; s->workaround_bugs|= FF_BUG_QPEL_CHROMA;
if(s->xvid_build && s->xvid_build<=12) if(s->xvid_build<=12U)
s->workaround_bugs|= FF_BUG_EDGE; s->workaround_bugs|= FF_BUG_EDGE;
if(s->xvid_build && s->xvid_build<=32) if(s->xvid_build<=32U)
s->workaround_bugs|= FF_BUG_DC_CLIP; s->workaround_bugs|= FF_BUG_DC_CLIP;
#define SET_QPEL_FUNC(postfix1, postfix2) \ #define SET_QPEL_FUNC(postfix1, postfix2) \
...@@ -480,30 +480,30 @@ retry: ...@@ -480,30 +480,30 @@ retry:
s->dsp.put_no_rnd_ ## postfix1 = ff_put_no_rnd_ ## postfix2;\ s->dsp.put_no_rnd_ ## postfix1 = ff_put_no_rnd_ ## postfix2;\
s->dsp.avg_ ## postfix1 = ff_avg_ ## postfix2; s->dsp.avg_ ## postfix1 = ff_avg_ ## postfix2;
if(s->lavc_build && s->lavc_build<4653) if(s->lavc_build<4653U)
s->workaround_bugs|= FF_BUG_STD_QPEL; s->workaround_bugs|= FF_BUG_STD_QPEL;
if(s->lavc_build && s->lavc_build<4655) if(s->lavc_build<4655U)
s->workaround_bugs|= FF_BUG_DIRECT_BLOCKSIZE; s->workaround_bugs|= FF_BUG_DIRECT_BLOCKSIZE;
if(s->lavc_build && s->lavc_build<4670){ if(s->lavc_build<4670U){
s->workaround_bugs|= FF_BUG_EDGE; s->workaround_bugs|= FF_BUG_EDGE;
} }
if(s->lavc_build && s->lavc_build<=4712) if(s->lavc_build<=4712U)
s->workaround_bugs|= FF_BUG_DC_CLIP; s->workaround_bugs|= FF_BUG_DC_CLIP;
if(s->divx_version) if(s->divx_version>=0)
s->workaround_bugs|= FF_BUG_DIRECT_BLOCKSIZE; s->workaround_bugs|= FF_BUG_DIRECT_BLOCKSIZE;
//printf("padding_bug_score: %d\n", s->padding_bug_score); //printf("padding_bug_score: %d\n", s->padding_bug_score);
if(s->divx_version==501 && s->divx_build==20020416) if(s->divx_version==501 && s->divx_build==20020416)
s->padding_bug_score= 256*256*256*64; s->padding_bug_score= 256*256*256*64;
if(s->divx_version && s->divx_version<500){ if(s->divx_version<500U){
s->workaround_bugs|= FF_BUG_EDGE; s->workaround_bugs|= FF_BUG_EDGE;
} }
if(s->divx_version) if(s->divx_version>=0)
s->workaround_bugs|= FF_BUG_HPEL_CHROMA; s->workaround_bugs|= FF_BUG_HPEL_CHROMA;
#if 0 #if 0
if(s->divx_version==500) if(s->divx_version==500)
...@@ -512,11 +512,11 @@ retry: ...@@ -512,11 +512,11 @@ retry:
/* very ugly XVID padding bug detection FIXME/XXX solve this differently /* very ugly XVID padding bug detection FIXME/XXX solve this differently
* Let us hope this at least works. * Let us hope this at least works.
*/ */
if( s->resync_marker==0 && s->data_partitioning==0 && s->divx_version==0 if( s->resync_marker==0 && s->data_partitioning==0 && s->divx_version==-1
&& s->codec_id==CODEC_ID_MPEG4 && s->vo_type==0) && s->codec_id==CODEC_ID_MPEG4 && s->vo_type==0)
s->workaround_bugs|= FF_BUG_NO_PADDING; s->workaround_bugs|= FF_BUG_NO_PADDING;
if(s->lavc_build && s->lavc_build<4609) //FIXME not sure about the version num but a 4609 file seems ok if(s->lavc_build<4609U) //FIXME not sure about the version num but a 4609 file seems ok
s->workaround_bugs|= FF_BUG_NO_PADDING; s->workaround_bugs|= FF_BUG_NO_PADDING;
#endif #endif
} }
...@@ -551,7 +551,7 @@ retry: ...@@ -551,7 +551,7 @@ retry:
#endif #endif
#if HAVE_MMX #if HAVE_MMX
if(s->codec_id == CODEC_ID_MPEG4 && s->xvid_build && avctx->idct_algo == FF_IDCT_AUTO && (mm_flags & FF_MM_MMX)){ if(s->codec_id == CODEC_ID_MPEG4 && s->xvid_build>=0 && avctx->idct_algo == FF_IDCT_AUTO && (mm_flags & FF_MM_MMX)){
avctx->idct_algo= FF_IDCT_XVIDMMX; avctx->idct_algo= FF_IDCT_XVIDMMX;
avctx->coded_width= 0; // force reinit avctx->coded_width= 0; // force reinit
// dsputil_init(&s->dsp, avctx); // dsputil_init(&s->dsp, avctx);
...@@ -677,7 +677,7 @@ retry: ...@@ -677,7 +677,7 @@ retry:
} }
} }
} }
if(s->gb.buffer == s->bitstream_buffer && buf_size>7 && s->xvid_build){ //xvid style if(s->gb.buffer == s->bitstream_buffer && buf_size>7 && s->xvid_build>=0){ //xvid style
startcode_found=1; startcode_found=1;
current_pos=0; current_pos=0;
} }
......
...@@ -2079,7 +2079,7 @@ static int decode_vop_header(MpegEncContext *s, GetBitContext *gb){ ...@@ -2079,7 +2079,7 @@ static int decode_vop_header(MpegEncContext *s, GetBitContext *gb){
} }
/* detect buggy encoders which don't set the low_delay flag (divx4/xvid/opendivx)*/ /* 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) // 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"); 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; s->low_delay=1;
} }
...@@ -2118,7 +2118,7 @@ int ff_mpeg4_decode_picture_header(MpegEncContext * s, GetBitContext *gb) ...@@ -2118,7 +2118,7 @@ int ff_mpeg4_decode_picture_header(MpegEncContext * s, GetBitContext *gb)
startcode = 0xff; startcode = 0xff;
for(;;) { for(;;) {
if(get_bits_count(gb) >= gb->size_in_bits){ 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); av_log(s->avctx, AV_LOG_ERROR, "frame skip %d\n", gb->size_in_bits);
return FRAME_SKIPPED; //divx bug return FRAME_SKIPPED; //divx bug
}else }else
...@@ -2194,6 +2194,11 @@ static av_cold int decode_init(AVCodecContext *avctx) ...@@ -2194,6 +2194,11 @@ static av_cold int decode_init(AVCodecContext *avctx)
int ret; int ret;
static int done = 0; 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) if((ret=ff_h263_decode_init(avctx)) < 0)
return ret; return ret;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment