diff mpegvideo.c @ 1916:f2d134308a70 libavcodec

interlaced chroma MC divx-bug workaround
author michael
date Fri, 02 Apr 2004 19:54:33 +0000
parents 7ff22288289e
children ea20f38b8d57
line wrap: on
line diff
--- a/mpegvideo.c	Fri Apr 02 19:48:20 2004 +0000
+++ b/mpegvideo.c	Fri Apr 02 19:54:33 2004 +0000
@@ -2430,9 +2430,17 @@
     src_y = s->mb_y*(16>>field_based) + (motion_y >> 1);
 
     if (s->out_format == FMT_H263) {
-        uvdxy = dxy | (motion_y & 2) | ((motion_x & 2) >> 1);
-        uvsrc_x = src_x>>1;
-        uvsrc_y = src_y>>1;
+        if((s->workaround_bugs & FF_BUG_HPEL_CHROMA) && field_based){
+            mx = (motion_x>>1)|(motion_x&1);
+            my = motion_y >>1;
+            uvdxy = ((my & 1) << 1) | (mx & 1);
+            uvsrc_x = s->mb_x* 8               + (mx >> 1);
+            uvsrc_y = s->mb_y*(8>>field_based) + (my >> 1);
+        }else{
+            uvdxy = dxy | (motion_y & 2) | ((motion_x & 2) >> 1);
+            uvsrc_x = src_x>>1;
+            uvsrc_y = src_y>>1;
+        }
     } else {
         mx = motion_x / 2;
         my = motion_y / 2;