ref: bbf4c91f79132a050f104566f91620049af7fbf2
parent: 9fdeeaf41106894ea1a3564cb081207c3a9a5938
author: Linfeng Zhang <linfengz@google.com>
date: Wed Aug 3 07:02:15 EDT 2016
Update Loop8Test{6,9}Param to test filter8() in mb_lpf_vertical_edge_w() One branch of filter8() in mb_lpf_vertical_edge_w() was not tested. Change-Id: I194202d771d9acd6b4e5e600ee2bae89986b49f3
--- a/test/lpf_8_test.cc
+++ b/test/lpf_8_test.cc
@@ -95,7 +95,7 @@
ACMRandom rnd(ACMRandom::DeterministicSeed());
const int count_test_block = number_of_iterations;
#if CONFIG_VP9_HIGHBITDEPTH
- int32_t bd = bit_depth_;
+ const int32_t bd = bit_depth_;
DECLARE_ALIGNED(16, uint16_t, s[kNumCoeffs]);
DECLARE_ALIGNED(16, uint16_t, ref_s[kNumCoeffs]);
#else
@@ -119,7 +119,6 @@
thresh[16]) = { tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp,
tmp, tmp, tmp, tmp, tmp, tmp, tmp, tmp };
int32_t p = kNumCoeffs / 32;
-
uint16_t tmp_s[kNumCoeffs];
int j = 0;
while (j < kNumCoeffs) {
@@ -127,18 +126,33 @@
if (val & 0x80) { // 50% chance to choose a new value.
tmp_s[j] = rnd.Rand16();
j++;
- } else { // 50% chance to repeat previous value in row X times
+ } else if (val & 0x40) {
+ // 25% chance to repeat previous value in row X times.
int k = 0;
while (k++ < ((val & 0x1f) + 1) && j < kNumCoeffs) {
if (j < 1) {
tmp_s[j] = rnd.Rand16();
- } else if (val & 0x20) { // Increment by an value within the limit
- tmp_s[j] = (tmp_s[j - 1] + (*limit - 1));
- } else { // Decrement by an value within the limit
- tmp_s[j] = (tmp_s[j - 1] - (*limit - 1));
+ } else if (val & 0x20) { // Increment by a value within the limit.
+ tmp_s[j] = tmp_s[j - 1] + (*limit - 1);
+ } else { // Decrement by a value within the limit.
+ tmp_s[j] = tmp_s[j - 1] - (*limit - 1);
}
j++;
}
+ } else { // 25% chance to repeat previous value in column X times.
+ int k = 0;
+ while (k++ < ((val & 0x1f) + 1) && j < kNumCoeffs) {
+ if (j < 1) {
+ tmp_s[j] = rnd.Rand16();
+ } else if (val & 0x20) { // Increment by a value within the limit.
+ tmp_s[(j % 32) * 32 + j / 32] =
+ tmp_s[((j - 1) % 32) * 32 + (j - 1) / 32] + (*limit - 1);
+ } else { // Decrement by a value within the limit.
+ tmp_s[(j % 32) * 32 + j / 32] =
+ tmp_s[((j - 1) % 32) * 32 + (j - 1) / 32] - (*limit - 1);
+ }
+ j++;
+ }
}
}
for (j = 0; j < kNumCoeffs; j++) {
@@ -227,6 +241,7 @@
ASM_REGISTER_STATE_CHECK(
loopfilter_op_(s + 8 + p * 8, p, blimit, limit, thresh));
#endif // CONFIG_VP9_HIGHBITDEPTH
+
for (int j = 0; j < kNumCoeffs; ++j) {
err_count += ref_s[j] != s[j];
}
@@ -289,15 +304,30 @@
if (val & 0x80) { // 50% chance to choose a new value.
tmp_s[j] = rnd.Rand16();
j++;
- } else { // 50% chance to repeat previous value in row X times.
+ } else if (val & 0x40) {
+ // 25% chance to repeat previous value in row X times.
int k = 0;
while (k++ < ((val & 0x1f) + 1) && j < kNumCoeffs) {
if (j < 1) {
tmp_s[j] = rnd.Rand16();
} else if (val & 0x20) { // Increment by a value within the limit.
- tmp_s[j] = (tmp_s[j - 1] + (limit - 1));
- } else { // Decrement by an value within the limit.
- tmp_s[j] = (tmp_s[j - 1] - (limit - 1));
+ tmp_s[j] = tmp_s[j - 1] + (limit - 1);
+ } else { // Decrement by a value within the limit.
+ tmp_s[j] = tmp_s[j - 1] - (limit - 1);
+ }
+ j++;
+ }
+ } else { // 25% chance to repeat previous value in column X times.
+ int k = 0;
+ while (k++ < ((val & 0x1f) + 1) && j < kNumCoeffs) {
+ if (j < 1) {
+ tmp_s[j] = rnd.Rand16();
+ } else if (val & 0x20) { // Increment by a value within the limit.
+ tmp_s[(j % 32) * 32 + j / 32] =
+ tmp_s[((j - 1) % 32) * 32 + (j - 1) / 32] + (limit - 1);
+ } else { // Decrement by a value within the limit.
+ tmp_s[(j % 32) * 32 + j / 32] =
+ tmp_s[((j - 1) % 32) * 32 + (j - 1) / 32] - (limit - 1);
}
j++;
}