summaryrefslogtreecommitdiff
path: root/vp9/decoder/vp9_idct_blk.c
diff options
context:
space:
mode:
authorJingning Han <jingning@google.com>2013-07-26 17:01:51 -0700
committerJingning Han <jingning@google.com>2013-07-26 17:19:14 -0700
commit38fa4871647667b5c36c2482993887ad479f7c6d (patch)
tree0b67c7ac5f63522b59222ec798a875fb4692aa70 /vp9/decoder/vp9_idct_blk.c
parent325e0aa6505eb480f5a55e072e195cbc3db0aacf (diff)
downloadlibvpx-38fa4871647667b5c36c2482993887ad479f7c6d.tar
libvpx-38fa4871647667b5c36c2482993887ad479f7c6d.tar.gz
libvpx-38fa4871647667b5c36c2482993887ad479f7c6d.tar.bz2
libvpx-38fa4871647667b5c36c2482993887ad479f7c6d.zip
Shortcut 8x8/16x16 inverse 2D-DCT
This commit brought back the shortcut implementation of 8x8/16x16 inverse 2D-DCT. When the eob <= 10, it skips the inverse transform operations on row 4:7/4:15 in the first round. For bus_cif at 1000 kbps, this provides about 2% speed-up at speed 0. Change-Id: I453e2d72956467d75be4ad8c04b4482ab889d572
Diffstat (limited to 'vp9/decoder/vp9_idct_blk.c')
-rw-r--r--vp9/decoder/vp9_idct_blk.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/vp9/decoder/vp9_idct_blk.c b/vp9/decoder/vp9_idct_blk.c
index 70eb77f8a..42b805f8e 100644
--- a/vp9/decoder/vp9_idct_blk.c
+++ b/vp9/decoder/vp9_idct_blk.c
@@ -95,6 +95,9 @@ void vp9_idct_add_8x8_c(int16_t *input, uint8_t *dest, int stride, int eob) {
// DC only DCT coefficient
vp9_short_idct8x8_1_add(input, dest, stride);
input[0] = 0;
+ } else if (eob <= 10) {
+ vp9_short_idct10_8x8_add(input, dest, stride);
+ vpx_memset(input, 0, 128);
} else {
vp9_short_idct8x8_add(input, dest, stride);
vpx_memset(input, 0, 128);
@@ -128,6 +131,9 @@ void vp9_idct_add_16x16_c(int16_t *input, uint8_t *dest, int stride, int eob) {
input[0] = 0;
vp9_add_constant_residual_16x16(out, dest, stride);
+ } else if (eob <= 10) {
+ vp9_short_idct10_16x16_add(input, dest, stride);
+ vpx_memset(input, 0, 512);
} else {
vp9_short_idct16x16_add(input, dest, stride);
vpx_memset(input, 0, 512);