diff options
author | Jingning Han <jingning@google.com> | 2015-07-20 20:19:02 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2015-07-20 20:19:03 +0000 |
commit | f987e64476736160c42ae8dcba160aeb768dcd78 (patch) | |
tree | 4996fb7b227f8df0b29d20485838e6deba7ed1fd /vp9/encoder | |
parent | 9e23c6d534f2ffecea77db7dc063deaee749cf13 (diff) | |
parent | e253eaa0361fd9cc8e8feca1d344acbf24ea1e21 (diff) | |
download | libvpx-f987e64476736160c42ae8dcba160aeb768dcd78.tar libvpx-f987e64476736160c42ae8dcba160aeb768dcd78.tar.gz libvpx-f987e64476736160c42ae8dcba160aeb768dcd78.tar.bz2 libvpx-f987e64476736160c42ae8dcba160aeb768dcd78.zip |
Merge "Unify the high bit-depth forward hybrid transforms"
Diffstat (limited to 'vp9/encoder')
-rw-r--r-- | vp9/encoder/x86/vp9_dct_sse2.c | 102 |
1 files changed, 0 insertions, 102 deletions
diff --git a/vp9/encoder/x86/vp9_dct_sse2.c b/vp9/encoder/x86/vp9_dct_sse2.c index cff4fcbdc..9e13a683e 100644 --- a/vp9/encoder/x86/vp9_dct_sse2.c +++ b/vp9/encoder/x86/vp9_dct_sse2.c @@ -2266,108 +2266,6 @@ void vp9_fdct32x32_1_sse2(const int16_t *input, tran_low_t *output, store_output(&in1, output); } -#if CONFIG_VP9_HIGHBITDEPTH -/* These SSE2 versions of the FHT functions only actually use SSE2 in the - * DCT_DCT case in all other cases, they revert to C code which is identical - * to that used by the C versions of them. - */ - -void vp9_highbd_fht4x4_sse2(const int16_t *input, tran_low_t *output, - int stride, int tx_type) { - if (tx_type == DCT_DCT) { - vp9_highbd_fdct4x4_sse2(input, output, stride); - } else { - tran_low_t out[4 * 4]; - tran_low_t *outptr = &out[0]; - int i, j; - tran_low_t temp_in[4], temp_out[4]; - const transform_2d ht = FHT_4[tx_type]; - - // Columns - for (i = 0; i < 4; ++i) { - for (j = 0; j < 4; ++j) - temp_in[j] = input[j * stride + i] * 16; - if (i == 0 && temp_in[0]) - temp_in[0] += 1; - ht.cols(temp_in, temp_out); - for (j = 0; j < 4; ++j) - outptr[j * 4 + i] = temp_out[j]; - } - - // Rows - for (i = 0; i < 4; ++i) { - for (j = 0; j < 4; ++j) - temp_in[j] = out[j + i * 4]; - ht.rows(temp_in, temp_out); - for (j = 0; j < 4; ++j) - output[j + i * 4] = (temp_out[j] + 1) >> 2; - } - } -} - -void vp9_highbd_fht8x8_sse2(const int16_t *input, tran_low_t *output, - int stride, int tx_type) { - if (tx_type == DCT_DCT) { - vp9_highbd_fdct8x8_sse2(input, output, stride); - } else { - tran_low_t out[64]; - tran_low_t *outptr = &out[0]; - int i, j; - tran_low_t temp_in[8], temp_out[8]; - const transform_2d ht = FHT_8[tx_type]; - - // Columns - for (i = 0; i < 8; ++i) { - for (j = 0; j < 8; ++j) - temp_in[j] = input[j * stride + i] * 4; - ht.cols(temp_in, temp_out); - for (j = 0; j < 8; ++j) - outptr[j * 8 + i] = temp_out[j]; - } - - // Rows - for (i = 0; i < 8; ++i) { - for (j = 0; j < 8; ++j) - temp_in[j] = out[j + i * 8]; - ht.rows(temp_in, temp_out); - for (j = 0; j < 8; ++j) - output[j + i * 8] = (temp_out[j] + (temp_out[j] < 0)) >> 1; - } - } -} - -void vp9_highbd_fht16x16_sse2(const int16_t *input, tran_low_t *output, - int stride, int tx_type) { - if (tx_type == DCT_DCT) { - vp9_highbd_fdct16x16_sse2(input, output, stride); - } else { - tran_low_t out[256]; - tran_low_t *outptr = &out[0]; - int i, j; - tran_low_t temp_in[16], temp_out[16]; - const transform_2d ht = FHT_16[tx_type]; - - // Columns - for (i = 0; i < 16; ++i) { - for (j = 0; j < 16; ++j) - temp_in[j] = input[j * stride + i] * 4; - ht.cols(temp_in, temp_out); - for (j = 0; j < 16; ++j) - outptr[j * 16 + i] = (temp_out[j] + 1 + (temp_out[j] < 0)) >> 2; - } - - // Rows - for (i = 0; i < 16; ++i) { - for (j = 0; j < 16; ++j) - temp_in[j] = out[j + i * 16]; - ht.rows(temp_in, temp_out); - for (j = 0; j < 16; ++j) - output[j + i * 16] = temp_out[j]; - } - } -} -#endif // CONFIG_VP9_HIGHBITDEPTH - /* * The DCTnxn functions are defined using the macros below. The main code for * them is in separate files (vp9/encoder/x86/vp9_dct_sse2_impl.h & |