From 5883246d0105e0a616a80c4c841487563b2ab6bc Mon Sep 17 00:00:00 2001 From: Yaowu Xu Date: Tue, 8 Nov 2011 20:05:17 -0800 Subject: [PATCH] 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 --- vp8/encoder/encodemb.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/vp8/encoder/encodemb.c b/vp8/encoder/encodemb.c index dcfe24f00..8818156d4 100644 --- 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 @@ 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],