summaryrefslogtreecommitdiff
path: root/vpx_dsp/inv_txfm.c
diff options
context:
space:
mode:
authorScott LaVarnway <slavarnway@google.com>2015-12-02 04:50:46 -0800
committerScott LaVarnway <slavarnway@google.com>2015-12-02 04:50:46 -0800
commitf0b0b1fe627e760d27d9917af7c217f11c57c3ad (patch)
tree6013f6de2b1cee54b088f0c1cb0a1984b4182495 /vpx_dsp/inv_txfm.c
parent2669e0594985122a9baacf02691083e1f8d54261 (diff)
downloadlibvpx-f0b0b1fe627e760d27d9917af7c217f11c57c3ad.tar
libvpx-f0b0b1fe627e760d27d9917af7c217f11c57c3ad.tar.gz
libvpx-f0b0b1fe627e760d27d9917af7c217f11c57c3ad.tar.bz2
libvpx-f0b0b1fe627e760d27d9917af7c217f11c57c3ad.zip
VP9: Add ssse3 version of vpx_idct32x32_135_add()
Change-Id: I9a780131efaad28cf1ad233ae64c5c319a329727
Diffstat (limited to 'vpx_dsp/inv_txfm.c')
-rw-r--r--vpx_dsp/inv_txfm.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/vpx_dsp/inv_txfm.c b/vpx_dsp/inv_txfm.c
index 5f3cfddbd..a0f59bf75 100644
--- a/vpx_dsp/inv_txfm.c
+++ b/vpx_dsp/inv_txfm.c
@@ -1194,6 +1194,33 @@ void vpx_idct32x32_1024_add_c(const tran_low_t *input, uint8_t *dest,
}
}
+void vpx_idct32x32_135_add_c(const tran_low_t *input, uint8_t *dest,
+ int stride) {
+ tran_low_t out[32 * 32] = {0};
+ tran_low_t *outptr = out;
+ int i, j;
+ tran_low_t temp_in[32], temp_out[32];
+
+ // Rows
+ // only upper-left 16x16 has non-zero coeff
+ for (i = 0; i < 16; ++i) {
+ idct32_c(input, outptr);
+ input += 32;
+ outptr += 32;
+ }
+
+ // Columns
+ for (i = 0; i < 32; ++i) {
+ for (j = 0; j < 32; ++j)
+ temp_in[j] = out[j * 32 + i];
+ idct32_c(temp_in, temp_out);
+ for (j = 0; j < 32; ++j) {
+ dest[j * stride + i] = clip_pixel_add(dest[j * stride + i],
+ ROUND_POWER_OF_TWO(temp_out[j], 6));
+ }
+ }
+}
+
void vpx_idct32x32_34_add_c(const tran_low_t *input, uint8_t *dest,
int stride) {
tran_low_t out[32 * 32] = {0};