Commit 95ee7f11 authored by Yaowu Xu's avatar Yaowu Xu
Browse files

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
parent 0b184efb
...@@ -107,6 +107,19 @@ TEST(Vp8FdctTest, RoundTripErrorCheck) { ...@@ -107,6 +107,19 @@ TEST(Vp8FdctTest, RoundTripErrorCheck) {
// to test optimized versions of this function. // to test optimized versions of this function.
const int pitch = 8; const int pitch = 8;
vp8_short_fdct4x4_c(test_input_block, test_temp_block, pitch); 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. // Because the bitstream is not frozen yet, use the idct in the codebase.
vp8_short_idct4x4llm_c(test_temp_block, test_output_block, pitch); vp8_short_idct4x4llm_c(test_temp_block, test_output_block, pitch);
...@@ -118,7 +131,6 @@ TEST(Vp8FdctTest, RoundTripErrorCheck) { ...@@ -118,7 +131,6 @@ TEST(Vp8FdctTest, RoundTripErrorCheck) {
total_error += error; total_error += error;
} }
} }
EXPECT_GE(1, max_error) EXPECT_GE(1, max_error)
<< "Error: FDCT/IDCT has an individual roundtrip error > 1"; << "Error: FDCT/IDCT has an individual roundtrip error > 1";
......
...@@ -101,6 +101,17 @@ TEST(VP8Fdct8x8Test, RoundTripErrorCheck) { ...@@ -101,6 +101,17 @@ TEST(VP8Fdct8x8Test, RoundTripErrorCheck) {
const int pitch = 16; const int pitch = 16;
vp8_short_fdct8x8_c(test_input_block, test_temp_block, pitch); 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); vp8_short_idct8x8_c(test_temp_block, test_output_block, pitch);
for (int j = 0; j < 64; ++j) { for (int j = 0; j < 64; ++j) {
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment