shithub: libvpx

Download patch

ref: 5883246d0105e0a616a80c4c841487563b2ab6bc
parent: 6e165e86a7fe5b2609194a82b816a56dd7305ec7
author: Yaowu Xu <yaowu@google.com>
date: Tue Nov 8 15:05:17 EST 2011

make debug match release build on win32 with 8x8 transform enabled

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

--- a/vp8/encoder/encodemb.c
+++ b/vp8/encoder/encodemb.c
@@ -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 @@
 {
     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 @@
 {
     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 @@
 {
     int i;
 
+    vp8_clear_system_state();
+
     for (i = 0; i < 9; i += 8)
     {
         x->vp8_short_fdct8x8(&x->block[i].src_diff[0],
@@ -308,6 +315,8 @@
 void vp8_transform_mby_8x8(MACROBLOCK *x)
 {
     int i;
+
+    vp8_clear_system_state();
 
     for (i = 0; i < 9; i += 8)
     {
--