ref: 95ee7f1131cf4a12f6dfbb8e3576e7637fe29fcf
parent: 0b184efbbfeed7d3dc96ded2dffe36629a4b926b
author: Yaowu Xu <yaowu@google.com>
date: Fri Aug 24 05:59:49 EDT 2012
change to properly account for coef scaling in unit tests The transform functions in experimental branch absorbed a scaling factor of 4 to allow quantization steps closer to unit quantizer. This commit added scaling code in between forward and inverse transform to properly account for the scaling factor. Change-Id: I9a573ddc1ffa74973b34800a5da1a56dbabe0949
--- a/test/fdct4x4_test.cc
+++ b/test/fdct4x4_test.cc
@@ -107,6 +107,19 @@
// to test optimized versions of this function.
const int pitch = 8;
vp8_short_fdct4x4_c(test_input_block, test_temp_block, pitch);
+
+ for (int j = 0; j < 16; ++j) {
+ if(test_temp_block[j] > 0) {
+ test_temp_block[j] += 2;
+ test_temp_block[j] /= 4;
+ test_temp_block[j] *= 4;
+ } else {
+ test_temp_block[j] -= 2;
+ test_temp_block[j] /= 4;
+ test_temp_block[j] *= 4;
+ }
+ }
+
// Because the bitstream is not frozen yet, use the idct in the codebase.
vp8_short_idct4x4llm_c(test_temp_block, test_output_block, pitch);
@@ -118,7 +131,6 @@
total_error += error;
}
}
-
EXPECT_GE(1, max_error)
<< "Error: FDCT/IDCT has an individual roundtrip error > 1";
--- a/test/fdct8x8_test.cc
+++ b/test/fdct8x8_test.cc
@@ -101,6 +101,17 @@
const int pitch = 16;
vp8_short_fdct8x8_c(test_input_block, test_temp_block, pitch);
+ for (int j = 0; j < 64; ++j){
+ if(test_temp_block[j] > 0) {
+ test_temp_block[j] += 2;
+ test_temp_block[j] /= 4;
+ test_temp_block[j] *= 4;
+ } else {
+ test_temp_block[j] -= 2;
+ test_temp_block[j] /= 4;
+ test_temp_block[j] *= 4;
+ }
+ }
vp8_short_idct8x8_c(test_temp_block, test_output_block, pitch);
for (int j = 0; j < 64; ++j) {