av1_txfm_test.cc: factorize 'dct_matrix' Make it explicit that: - forward tx is using the matrix - inverse tx is using the transposed matrix Change-Id: Ia9507f4f68397b07b6fd1868bb421bb9d5dd817d
diff --git a/test/av1_txfm_test.cc b/test/av1_txfm_test.cc index a525cde..4545de1 100644 --- a/test/av1_txfm_test.cc +++ b/test/av1_txfm_test.cc
@@ -66,24 +66,28 @@ double invSqrt2 = 1 / pow(2, 0.5); +double dct_matrix(double n, double k, int size) { + return cos(M_PI * (2 * n + 1) * k / (2 * size)); +} + void reference_dct_1d(const double *in, double *out, int size) { for (int k = 0; k < size; ++k) { out[k] = 0; for (int n = 0; n < size; ++n) { - out[k] += in[n] * cos(M_PI * (2 * n + 1) * k / (2 * size)); + out[k] += in[n] * dct_matrix(n, k, size); } if (k == 0) out[k] = out[k] * invSqrt2; } } void reference_idct_1d(const double *in, double *out, int size) { - for (int n = 0; n < size; ++n) { - out[n] = 0; - for (int k = 0; k < size; ++k) { - if (k == 0) - out[n] += invSqrt2 * in[k] * cos(M_PI * (2 * n + 1) * k / (2 * size)); + for (int k = 0; k < size; ++k) { + out[k] = 0; + for (int n = 0; n < size; ++n) { + if (n == 0) + out[k] += invSqrt2 * in[n] * dct_matrix(k, n, size); else - out[n] += in[k] * cos(M_PI * (2 * n + 1) * k / (2 * size)); + out[k] += in[n] * dct_matrix(k, n, size); } } }