]> granicus.if.org Git - libvpx/commitdiff
make debug match release build on win32 with 8x8 transform enabled
authorYaowu Xu <yaowu@google.com>
Wed, 9 Nov 2011 04:05:17 +0000 (20:05 -0800)
committerYaowu Xu <yaowu@google.com>
Wed, 9 Nov 2011 04:36:54 +0000 (20:36 -0800)
The 8x8 forward transform makes use of floating operations, therefore
requires emms call to reset mmx registers to correct state. Without
the resets, the 8x8 forward transform results are indefinite on win32
platform.

Change-Id: Ib5b71c3213e10b8a04fe776adf885f3714e7deb1

vp8/encoder/encodemb.c

index dcfe24f00472e3e8ad6c2d8d5c6bf5a9fbb600ff..8818156d49a4a36809f634557405e1312b86433d 100644 (file)
@@ -20,6 +20,7 @@
 #include "dct.h"
 #include "vpx_mem/vpx_mem.h"
 #include "rdopt.h"
+#include "vp8/common/systemdependent.h"
 
 #if CONFIG_RUNTIME_CPU_DETECT
 #define IF_RTCD(x) (x)
@@ -241,6 +242,8 @@ void vp8_transform_mbuv_8x8(MACROBLOCK *x)
 {
     int i;
 
+    vp8_clear_system_state();
+
     for (i = 16; i < 24; i += 4)
     {
         x->vp8_short_fdct8x8(&x->block[i].src_diff[0],
@@ -253,6 +256,8 @@ void vp8_transform_intra_mby_8x8(MACROBLOCK *x)//changed
 {
     int i;
 
+    vp8_clear_system_state();
+
     for (i = 0; i < 9; i += 8)
     {
         x->vp8_short_fdct8x8(&x->block[i].src_diff[0],
@@ -278,6 +283,8 @@ void vp8_transform_mb_8x8(MACROBLOCK *x)
 {
     int i;
 
+    vp8_clear_system_state();
+
     for (i = 0; i < 9; i += 8)
     {
         x->vp8_short_fdct8x8(&x->block[i].src_diff[0],
@@ -309,6 +316,8 @@ void vp8_transform_mby_8x8(MACROBLOCK *x)
 {
     int i;
 
+    vp8_clear_system_state();
+
     for (i = 0; i < 9; i += 8)
     {
         x->vp8_short_fdct8x8(&x->block[i].src_diff[0],