summaryrefslogtreecommitdiffstats
path: root/libvpx/vp9/decoder/vp9_idct_blk.c
diff options
context:
space:
mode:
authorhkuang <hkuang@google.com>2013-08-06 11:07:19 -0700
committerHangyu Kuang <hkuang@google.com>2013-08-06 18:31:37 +0000
commitf3bed9137f66ef693bd406e43b17e9a1114f1e14 (patch)
treecd1bea0cd923c6d125cb5b3e7b3404d7c2f70208 /libvpx/vp9/decoder/vp9_idct_blk.c
parenta8b927ab4f06e2fc0d16d9606b57672df9899ac1 (diff)
downloadandroid_external_libvpx-f3bed9137f66ef693bd406e43b17e9a1114f1e14.tar.gz
android_external_libvpx-f3bed9137f66ef693bd406e43b17e9a1114f1e14.tar.bz2
android_external_libvpx-f3bed9137f66ef693bd406e43b17e9a1114f1e14.zip
Roll latest libvpx into Android.
The latest libvpx just added initial multithread vp9 decoding support and more neon optimization. Checkout is from master branch(hash:33afddadb9af6569bd8296ef1d48d0511b651e9d). Change-Id: I54be2f48bc033c00876b6b1d0a3ff1eccb92a2fa
Diffstat (limited to 'libvpx/vp9/decoder/vp9_idct_blk.c')
-rw-r--r--libvpx/vp9/decoder/vp9_idct_blk.c23
1 files changed, 8 insertions, 15 deletions
diff --git a/libvpx/vp9/decoder/vp9_idct_blk.c b/libvpx/vp9/decoder/vp9_idct_blk.c
index 0217919..395e636 100644
--- a/libvpx/vp9/decoder/vp9_idct_blk.c
+++ b/libvpx/vp9/decoder/vp9_idct_blk.c
@@ -93,15 +93,11 @@ void vp9_idct_add_8x8_c(int16_t *input, uint8_t *dest, int stride, int eob) {
if (eob) {
if (eob == 1) {
// DC only DCT coefficient
- int16_t in = input[0];
- int16_t out;
-
- // Note: the idct1 will need to be modified accordingly whenever
- // vp9_short_idct8x8_c() is modified.
- vp9_short_idct1_8x8_c(&in, &out);
+ vp9_short_idct8x8_1_add(input, dest, stride);
input[0] = 0;
-
- vp9_add_constant_residual_8x8(out, dest, stride);
+ } 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);
@@ -127,14 +123,11 @@ void vp9_idct_add_16x16_c(int16_t *input, uint8_t *dest, int stride, int eob) {
if (eob) {
if (eob == 1) {
/* DC only DCT coefficient. */
- int16_t in = input[0];
- int16_t out;
- /* Note: the idct1 will need to be modified accordingly whenever
- * vp9_short_idct16x16() is modified. */
- vp9_short_idct1_16x16_c(&in, &out);
+ vp9_short_idct16x16_1_add(input, dest, stride);
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);