| Index: patched-ffmpeg-mt/libavcodec/h263dec.c
|
| ===================================================================
|
| --- patched-ffmpeg-mt/libavcodec/h263dec.c (revision 41250)
|
| +++ patched-ffmpeg-mt/libavcodec/h263dec.c (working copy)
|
| @@ -290,7 +290,7 @@
|
| }
|
|
|
| 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;
|
| else
|
| s->workaround_bugs &= ~FF_BUG_NO_PADDING;
|
| @@ -428,26 +428,26 @@
|
|
|
| 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") ||
|
| s->codec_tag == AV_RL32("XVID") || s->codec_tag == AV_RL32("XVIX") ||
|
| s->codec_tag == AV_RL32("RMP4"))
|
| - s->xvid_build= -1;
|
| + s->xvid_build= 0;
|
| #if 0
|
| 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->xvid_build= -1;
|
| + s->xvid_build= 0;
|
| #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)
|
| 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_build= 0;
|
| + s->divx_build= -1;
|
| }
|
|
|
| if(s->workaround_bugs&FF_BUG_AUTODETECT){
|
| @@ -466,16 +466,16 @@
|
| 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;
|
|
|
| - if(s->xvid_build && s->xvid_build<=1)
|
| + if(s->xvid_build<=1U)
|
| 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;
|
|
|
| - if(s->xvid_build && s->xvid_build<=32)
|
| + if(s->xvid_build<=32U)
|
| s->workaround_bugs|= FF_BUG_DC_CLIP;
|
|
|
| #define SET_QPEL_FUNC(postfix1, postfix2) \
|
| @@ -483,30 +483,30 @@
|
| s->dsp.put_no_rnd_ ## postfix1 = ff_put_no_rnd_ ## 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;
|
|
|
| - if(s->lavc_build && s->lavc_build<4655)
|
| + if(s->lavc_build<4655U)
|
| 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;
|
| }
|
|
|
| - if(s->lavc_build && s->lavc_build<=4712)
|
| + if(s->lavc_build<=4712U)
|
| s->workaround_bugs|= FF_BUG_DC_CLIP;
|
|
|
| - if(s->divx_version)
|
| + if(s->divx_version>=0)
|
| s->workaround_bugs|= FF_BUG_DIRECT_BLOCKSIZE;
|
| //printf("padding_bug_score: %d\n", s->padding_bug_score);
|
| if(s->divx_version==501 && s->divx_build==20020416)
|
| 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;
|
| }
|
|
|
| - if(s->divx_version)
|
| + if(s->divx_version>=0)
|
| s->workaround_bugs|= FF_BUG_HPEL_CHROMA;
|
| #if 0
|
| if(s->divx_version==500)
|
| @@ -515,11 +515,11 @@
|
| /* very ugly XVID padding bug detection FIXME/XXX solve this differently
|
| * 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->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;
|
| #endif
|
| }
|
| @@ -554,7 +554,7 @@
|
| #endif
|
|
|
| #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->coded_width= 0; // force reinit
|
| // dsputil_init(&s->dsp, avctx);
|
| @@ -623,12 +623,12 @@
|
| if (!s->divx_packed) ff_thread_finish_setup(avctx);
|
|
|
| if (CONFIG_MPEG4_VDPAU_DECODER && (s->avctx->codec->capabilities & CODEC_CAP_HWACCEL_VDPAU)) {
|
| - ff_vdpau_mpeg4_decode_picture(s, buf, buf_size);
|
| + ff_vdpau_mpeg4_decode_picture(s, s->gb.buffer, s->gb.buffer_end - s->gb.buffer);
|
| goto frame_end;
|
| }
|
|
|
| if (avctx->hwaccel) {
|
| - if (avctx->hwaccel->start_frame(avctx, buf, buf_size) < 0)
|
| + if (avctx->hwaccel->start_frame(avctx, s->gb.buffer, s->gb.buffer_end - s->gb.buffer) < 0)
|
| return -1;
|
| }
|
|
|
| @@ -668,6 +668,7 @@
|
| }
|
|
|
| assert(s->bitstream_buffer_size==0);
|
| +frame_end:
|
| /* divx 5.01+ bistream reorder stuff */
|
| if(s->codec_id==CODEC_ID_MPEG4 && s->divx_packed){
|
| int current_pos= get_bits_count(&s->gb)>>3;
|
| @@ -682,7 +683,7 @@
|
| }
|
| }
|
| }
|
| - 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;
|
| current_pos=0;
|
| }
|
| @@ -702,7 +703,6 @@
|
| intrax8_decoded:
|
| ff_er_frame_end(s);
|
|
|
| -frame_end:
|
| if (avctx->hwaccel) {
|
| if (avctx->hwaccel->end_frame(avctx) < 0)
|
| return -1;
|
|
|