Add testing for subsampling in warping function
Change-Id: Ia5b2c851d43e889b753933590f36dae61cf236d8
diff --git a/test/warp_filter_test.cc b/test/warp_filter_test.cc
index 9dfee61..73d9fcb 100644
--- a/test/warp_filter_test.cc
+++ b/test/warp_filter_test.cc
@@ -89,7 +89,7 @@
const int stride = w + 2 * border;
const int out_w = GET_PARAM(0), out_h = GET_PARAM(1);
const int num_iters = GET_PARAM(2);
- int i, j;
+ int i, j, sub_x, sub_y;
uint8_t *input_ = new uint8_t[h * stride];
uint8_t *input = input_ + border;
@@ -107,16 +107,21 @@
/* Try different sizes of prediction block */
for (i = 0; i < num_iters; ++i) {
- generate_model(mat, &alpha, &beta, &gamma, &delta);
- av1_warp_affine_c(mat, input, w, h, stride, output, 32, 32, out_w, out_h,
- out_w, 0, 0, 0, alpha, beta, gamma, delta);
- av1_warp_affine_sse2(mat, input, w, h, stride, output2, 32, 32, out_w,
- out_h, out_w, 0, 0, 0, alpha, beta, gamma, delta);
+ for (sub_x = 0; sub_x < 2; ++sub_x)
+ for (sub_y = 0; sub_y < 2; ++sub_y) {
+ generate_model(mat, &alpha, &beta, &gamma, &delta);
+ av1_warp_affine_c(mat, input, w, h, stride, output, 32, 32, out_w,
+ out_h, out_w, sub_x, sub_y, 0, alpha, beta, gamma,
+ delta);
+ av1_warp_affine_sse2(mat, input, w, h, stride, output2, 32, 32, out_w,
+ out_h, out_w, sub_x, sub_y, 0, alpha, beta,
+ gamma, delta);
- for (j = 0; j < out_w * out_h; ++j)
- ASSERT_EQ(output[j], output2[j])
- << "Pixel mismatch at index " << j << " = (" << (j % out_w) << ", "
- << (j / out_w) << ") on iteration " << i;
+ for (j = 0; j < out_w * out_h; ++j)
+ ASSERT_EQ(output[j], output2[j])
+ << "Pixel mismatch at index " << j << " = (" << (j % out_w)
+ << ", " << (j / out_w) << ") on iteration " << i;
+ }
}
delete[] input_;