diff options
author | Jingning Han <jingning@google.com> | 2013-07-26 17:01:51 -0700 |
---|---|---|
committer | Jingning Han <jingning@google.com> | 2013-07-26 17:19:14 -0700 |
commit | 38fa4871647667b5c36c2482993887ad479f7c6d (patch) | |
tree | 0b67c7ac5f63522b59222ec798a875fb4692aa70 /vp9/decoder/vp9_idct_blk.c | |
parent | 325e0aa6505eb480f5a55e072e195cbc3db0aacf (diff) | |
download | libvpx-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.c | 6 |
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); |