ref: 7ca651a38391a3e8ec42f8de56fe7264dc3a6d2f
parent: c971855697b7e6de5992c5f4d9e581e13c33f96f
parent: 042e70e45e74ad5105d1c9f35375350000b56b39
author: Yaowu Xu <yaowu@google.com>
date: Thu May 30 17:53:12 EDT 2013
Merge "Changed to use a new variant of WHT" into experimental
--- a/vp9/common/vp9_idct.c
+++ b/vp9/common/vp9_idct.c
@@ -32,20 +32,17 @@
c1 = ip[1] >> WHT_UPSCALE_FACTOR;
d1 = ip[2] >> WHT_UPSCALE_FACTOR;
b1 = ip[3] >> WHT_UPSCALE_FACTOR;
-
- c1 = a1 - c1;
- b1 += d1;
- e1 = (c1 - b1) >> 1;
- a1 -= e1;
- d1 += e1;
- b1 = a1 - b1;
- c1 -= d1;
-
+ a1 += c1;
+ d1 -= b1;
+ e1 = (a1 - d1) >> 1;
+ b1 = e1 - b1;
+ c1 = e1 - c1;
+ a1 -= b1;
+ d1 += c1;
op[0] = a1;
op[1] = b1;
op[2] = c1;
op[3] = d1;
-
ip += 4;
op += 4;
}
@@ -56,15 +53,13 @@
c1 = ip[4 * 1];
d1 = ip[4 * 2];
b1 = ip[4 * 3];
-
- c1 = a1 - c1;
- b1 += d1;
- e1 = (c1 - b1) >> 1;
- a1 -= e1;
- d1 += e1;
- b1 = a1 - b1;
- c1 -= d1;
-
+ a1 += c1;
+ d1 -= b1;
+ e1 = (a1 - d1) >> 1;
+ b1 = e1 - b1;
+ c1 = e1 - c1;
+ a1 -= b1;
+ d1 += c1;
dest[dest_stride * 0] = clip_pixel(dest[dest_stride * 0] + a1);
dest[dest_stride * 1] = clip_pixel(dest[dest_stride * 1] + b1);
dest[dest_stride * 2] = clip_pixel(dest[dest_stride * 2] + c1);
@@ -84,8 +79,9 @@
a1 = ip[0] >> WHT_UPSCALE_FACTOR;
e1 = a1 >> 1;
- op[0] = op[1] = op[2] = a1 - e1;
- op[3] = e1;
+ a1 -= e1;
+ op[0] = a1;
+ op[1] = op[2] = op[3] = e1;
ip = tmp;
for (i = 0; i < 4; i++) {
@@ -92,8 +88,8 @@
e1 = ip[0] >> 1;
a1 = ip[0] - e1;
dest[dest_stride * 0] = clip_pixel(dest[dest_stride * 0] + a1);
- dest[dest_stride * 1] = clip_pixel(dest[dest_stride * 1] + a1);
- dest[dest_stride * 2] = clip_pixel(dest[dest_stride * 2] + a1);
+ dest[dest_stride * 1] = clip_pixel(dest[dest_stride * 1] + e1);
+ dest[dest_stride * 2] = clip_pixel(dest[dest_stride * 2] + e1);
dest[dest_stride * 3] = clip_pixel(dest[dest_stride * 3] + e1);
ip++;
dest++;
--- a/vp9/common/vp9_idct.h
+++ b/vp9/common/vp9_idct.h
@@ -17,6 +17,7 @@
#include "vpx/vpx_integer.h"
#include "vp9/common/vp9_common.h"
+
// Constants and Macros used by all idct/dct functions
#define DCT_CONST_BITS 14
#define DCT_CONST_ROUNDING (1 << (DCT_CONST_BITS - 1))
--- a/vp9/encoder/vp9_dct.c
+++ b/vp9/encoder/vp9_dct.c
@@ -606,14 +606,13 @@
c1 = ip[2 * pitch_short];
d1 = ip[3 * pitch_short];
- b1 = a1 - b1;
- c1 += d1;
- e1 = (c1 - b1) >> 1;
- a1 += e1;
- d1 -= e1;
- c1 = a1 - c1;
- b1 -= d1;
-
+ a1 += b1;
+ d1 = d1 - c1;
+ e1 = (a1 - d1) >> 1;
+ b1 = e1 - b1;
+ c1 = e1 - c1;
+ a1 -= c1;
+ d1 += b1;
op[0] = a1;
op[4] = c1;
op[8] = d1;
@@ -631,14 +630,13 @@
c1 = ip[2];
d1 = ip[3];
- b1 = a1 - b1;
- c1 += d1;
- e1 = (c1 - b1) >> 1;
- a1 += e1;
- d1 -= e1;
- c1 = a1 - c1;
- b1 -= d1;
-
+ a1 += b1;
+ d1 -= c1;
+ e1 = (a1 - d1) >> 1;
+ b1 = e1 - b1;
+ c1 = e1 - c1;
+ a1 -= c1;
+ d1 += b1;
op[0] = a1 << WHT_UPSCALE_FACTOR;
op[1] = c1 << WHT_UPSCALE_FACTOR;
op[2] = d1 << WHT_UPSCALE_FACTOR;
--
⑨