Index: source/libvpx/vp9/encoder/vp9_dct.c |
=================================================================== |
--- source/libvpx/vp9/encoder/vp9_dct.c (revision 251189) |
+++ source/libvpx/vp9/encoder/vp9_dct.c (working copy) |
@@ -18,8 +18,6 @@ |
#include "vp9/common/vp9_idct.h" |
#include "vp9/common/vp9_systemdependent.h" |
-#include "vp9/encoder/vp9_dct.h" |
- |
static INLINE int fdct_round_shift(int input) { |
int rv = ROUND_POWER_OF_TWO(input, DCT_CONST_BITS); |
assert(INT16_MIN <= rv && rv <= INT16_MAX); |
@@ -157,32 +155,36 @@ |
{ fadst4, fadst4 } // ADST_ADST = 3 |
}; |
-void vp9_short_fht4x4_c(const int16_t *input, int16_t *output, |
- int stride, int tx_type) { |
- int16_t out[4 * 4]; |
- int16_t *outptr = &out[0]; |
- int i, j; |
- int16_t temp_in[4], temp_out[4]; |
- const transform_2d ht = FHT_4[tx_type]; |
+void vp9_fht4x4_c(const int16_t *input, int16_t *output, |
+ int stride, int tx_type) { |
+ if (tx_type == DCT_DCT) { |
+ vp9_fdct4x4_c(input, output, stride); |
+ } else { |
+ int16_t out[4 * 4]; |
+ int16_t *outptr = &out[0]; |
+ int i, j; |
+ int16_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]; |
- } |
+ // 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; |
+ // 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; |
+ } |
} |
} |
@@ -565,30 +567,34 @@ |
{ fadst8, fadst8 } // ADST_ADST = 3 |
}; |
-void vp9_short_fht8x8_c(const int16_t *input, int16_t *output, |
- int stride, int tx_type) { |
- int16_t out[64]; |
- int16_t *outptr = &out[0]; |
- int i, j; |
- int16_t temp_in[8], temp_out[8]; |
- const transform_2d ht = FHT_8[tx_type]; |
+void vp9_fht8x8_c(const int16_t *input, int16_t *output, |
+ int stride, int tx_type) { |
+ if (tx_type == DCT_DCT) { |
+ vp9_fdct8x8_c(input, output, stride); |
+ } else { |
+ int16_t out[64]; |
+ int16_t *outptr = &out[0]; |
+ int i, j; |
+ int16_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]; |
- } |
+ // 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; |
+ // 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; |
+ } |
} |
} |
@@ -958,31 +964,34 @@ |
{ fadst16, fadst16 } // ADST_ADST = 3 |
}; |
-void vp9_short_fht16x16_c(const int16_t *input, int16_t *output, |
- int stride, int tx_type) { |
- int16_t out[256]; |
- int16_t *outptr = &out[0]; |
- int i, j; |
- int16_t temp_in[16], temp_out[16]; |
- const transform_2d ht = FHT_16[tx_type]; |
+void vp9_fht16x16_c(const int16_t *input, int16_t *output, |
+ int stride, int tx_type) { |
+ if (tx_type == DCT_DCT) { |
+ vp9_fdct16x16_c(input, output, stride); |
+ } else { |
+ int16_t out[256]; |
+ int16_t *outptr = &out[0]; |
+ int i, j; |
+ int16_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; |
-// outptr[j * 16 + i] = (temp_out[j] + 1 + (temp_out[j] > 0)) >> 2; |
- } |
+ // 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]; |
+ // 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]; |
+ } |
} |
} |
@@ -1375,27 +1384,3 @@ |
out[j + i * 32] = temp_out[j]; |
} |
} |
- |
-void vp9_fht4x4(TX_TYPE tx_type, const int16_t *input, int16_t *output, |
- int stride) { |
- if (tx_type == DCT_DCT) |
- vp9_fdct4x4(input, output, stride); |
- else |
- vp9_short_fht4x4(input, output, stride, tx_type); |
-} |
- |
-void vp9_fht8x8(TX_TYPE tx_type, const int16_t *input, int16_t *output, |
- int stride) { |
- if (tx_type == DCT_DCT) |
- vp9_fdct8x8(input, output, stride); |
- else |
- vp9_short_fht8x8(input, output, stride, tx_type); |
-} |
- |
-void vp9_fht16x16(TX_TYPE tx_type, const int16_t *input, int16_t *output, |
- int stride) { |
- if (tx_type == DCT_DCT) |
- vp9_fdct16x16(input, output, stride); |
- else |
- vp9_short_fht16x16(input, output, stride, tx_type); |
-} |