aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2002-10-22 18:55:20 +0000
committerMichael Niedermayer <michaelni@gmx.at>2002-10-22 18:55:20 +0000
commit03e93d35b0167a7f163a0e480567e97260920d08 (patch)
treed2a981154aa4543ca5b7dba40df08d4ce5622b20
parent3b4b29dcd9c5da2ba40a34ce3d9eb3a7f659ba77 (diff)
downloadffmpeg-03e93d35b0167a7f163a0e480567e97260920d08.tar.gz
xvid qpel bug workaround
Originally committed as revision 1063 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r--libavcodec/avcodec.h1
-rw-r--r--libavcodec/h263dec.c4
-rw-r--r--libavcodec/mpegvideo.c2
3 files changed, 6 insertions, 1 deletions
diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
index 86d9b6f586..b84c905337 100644
--- a/libavcodec/avcodec.h
+++ b/libavcodec/avcodec.h
@@ -426,6 +426,7 @@ typedef struct AVCodecContext {
#define FF_BUG_UMP4 8
#define FF_BUG_NO_PADDING 16
#define FF_BUG_AC_VLC 32
+#define FF_BUG_QPEL_CHROMA 64
//#define FF_BUG_FAKE_SCALABILITY 16 //autodetection should work 100%
/**
diff --git a/libavcodec/h263dec.c b/libavcodec/h263dec.c
index b8ea14c34c..653a2a8708 100644
--- a/libavcodec/h263dec.c
+++ b/libavcodec/h263dec.c
@@ -372,6 +372,10 @@ uint64_t time= rdtsc();
s->workaround_bugs|= FF_BUG_UMP4;
s->workaround_bugs|= FF_BUG_AC_VLC;
}
+
+ if(s->divx_version){
+ s->workaround_bugs|= FF_BUG_QPEL_CHROMA;
+ }
//printf("padding_bug_score: %d\n", s->padding_bug_score);
#if 0
if(s->divx_version==500)
diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c
index dff8fffe75..7fadcc2a0f 100644
--- a/libavcodec/mpegvideo.c
+++ b/libavcodec/mpegvideo.c
@@ -1384,7 +1384,7 @@ static inline void qpel_motion(MpegEncContext *s,
if(field_based){
mx= motion_x/2;
my= motion_y>>1;
- }else if(s->divx_version){
+ }else if(s->workaround_bugs&FF_BUG_QPEL_CHROMA){
mx= (motion_x>>1)|(motion_x&1);
my= (motion_y>>1)|(motion_y&1);
}else{