fix chroma mc2 bug, this is based on a patch by (Oleg Metelitsa oleg hitron co kr)
authorMichael Niedermayer <michaelni@gmx.at>
Fri, 23 Feb 2007 14:29:13 +0000 (14:29 +0000)
committerMichael Niedermayer <michaelni@gmx.at>
Fri, 23 Feb 2007 14:29:13 +0000 (14:29 +0000)
and does slow the mc2 chroma put down, avg interrestingly seems unaffected speedwise on duron
this of course should be rather done in a way which doesnt slow it down but its better a few %
slower but correct then incorrect

Originally committed as revision 8093 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/i386/dsputil_h264_template_mmx.c

index 8fa9eac09e2d01d46cb8d11577240bab128d9579..48cb4802288693bc0f6906e7ae1919167a424588 100644 (file)
@@ -293,11 +293,14 @@ static void H264_CHROMA_MC2_TMPL(uint8_t *dst/*align 2*/, uint8_t *src/*align 1*
         /* writes garbage to the right of dst.
             * ok because partitions are processed from left to right. */
         H264_CHROMA_OP4((%0), %%mm1, %%mm3)
-        "movd %%mm1, (%0)\n\t"
+        "movd %%mm1, %%esi\n\t"
+        "movw %%si, (%0)\n\t"
         "add %4, %0\n\t"
         "sub $1, %2\n\t"
         "jnz 1b\n\t"
-        : "+r" (dst), "+r"(src), "+r"(h) : "m" (ff_pw_32), "r"(stride));
+        : "+r" (dst), "+r"(src), "+r"(h)
+        : "m" (ff_pw_32), "r"(stride)
+        : "%esi");
 
 }
 #endif