11b362b15af34006e6a11974088a46d42b903418eJohann/* 21b362b15af34006e6a11974088a46d42b903418eJohann * Copyright (c) 2010 The WebM project authors. All Rights Reserved. 31b362b15af34006e6a11974088a46d42b903418eJohann * 41b362b15af34006e6a11974088a46d42b903418eJohann * Use of this source code is governed by a BSD-style license 51b362b15af34006e6a11974088a46d42b903418eJohann * that can be found in the LICENSE file in the root of the source 61b362b15af34006e6a11974088a46d42b903418eJohann * tree. An additional intellectual property rights grant can be found 71b362b15af34006e6a11974088a46d42b903418eJohann * in the file PATENTS. All contributing project authors may 81b362b15af34006e6a11974088a46d42b903418eJohann * be found in the AUTHORS file in the root of the source tree. 91b362b15af34006e6a11974088a46d42b903418eJohann */ 101b362b15af34006e6a11974088a46d42b903418eJohann 111b362b15af34006e6a11974088a46d42b903418eJohann#include "vpx_config.h" 12ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang#include "vp8_rtcd.h" 131b362b15af34006e6a11974088a46d42b903418eJohann 141b362b15af34006e6a11974088a46d42b903418eJohann/* place these declarations here because we don't want to maintain them 151b362b15af34006e6a11974088a46d42b903418eJohann * outside of this scope 161b362b15af34006e6a11974088a46d42b903418eJohann */ 171b362b15af34006e6a11974088a46d42b903418eJohannvoid idct_dequant_full_2x_neon(short *q, short *dq, 181b362b15af34006e6a11974088a46d42b903418eJohann unsigned char *dst, int stride); 191b362b15af34006e6a11974088a46d42b903418eJohannvoid idct_dequant_0_2x_neon(short *q, short dq, 201b362b15af34006e6a11974088a46d42b903418eJohann unsigned char *dst, int stride); 211b362b15af34006e6a11974088a46d42b903418eJohann 221b362b15af34006e6a11974088a46d42b903418eJohann 231b362b15af34006e6a11974088a46d42b903418eJohannvoid vp8_dequant_idct_add_y_block_neon(short *q, short *dq, 241b362b15af34006e6a11974088a46d42b903418eJohann unsigned char *dst, 251b362b15af34006e6a11974088a46d42b903418eJohann int stride, char *eobs) 261b362b15af34006e6a11974088a46d42b903418eJohann{ 271b362b15af34006e6a11974088a46d42b903418eJohann int i; 281b362b15af34006e6a11974088a46d42b903418eJohann 291b362b15af34006e6a11974088a46d42b903418eJohann for (i = 0; i < 4; i++) 301b362b15af34006e6a11974088a46d42b903418eJohann { 311b362b15af34006e6a11974088a46d42b903418eJohann if (((short *)(eobs))[0]) 321b362b15af34006e6a11974088a46d42b903418eJohann { 331b362b15af34006e6a11974088a46d42b903418eJohann if (((short *)eobs)[0] & 0xfefe) 341b362b15af34006e6a11974088a46d42b903418eJohann idct_dequant_full_2x_neon (q, dq, dst, stride); 351b362b15af34006e6a11974088a46d42b903418eJohann else 361b362b15af34006e6a11974088a46d42b903418eJohann idct_dequant_0_2x_neon (q, dq[0], dst, stride); 371b362b15af34006e6a11974088a46d42b903418eJohann } 381b362b15af34006e6a11974088a46d42b903418eJohann 391b362b15af34006e6a11974088a46d42b903418eJohann if (((short *)(eobs))[1]) 401b362b15af34006e6a11974088a46d42b903418eJohann { 411b362b15af34006e6a11974088a46d42b903418eJohann if (((short *)eobs)[1] & 0xfefe) 421b362b15af34006e6a11974088a46d42b903418eJohann idct_dequant_full_2x_neon (q+32, dq, dst+8, stride); 431b362b15af34006e6a11974088a46d42b903418eJohann else 441b362b15af34006e6a11974088a46d42b903418eJohann idct_dequant_0_2x_neon (q+32, dq[0], dst+8, stride); 451b362b15af34006e6a11974088a46d42b903418eJohann } 461b362b15af34006e6a11974088a46d42b903418eJohann q += 64; 471b362b15af34006e6a11974088a46d42b903418eJohann dst += 4*stride; 481b362b15af34006e6a11974088a46d42b903418eJohann eobs += 4; 491b362b15af34006e6a11974088a46d42b903418eJohann } 501b362b15af34006e6a11974088a46d42b903418eJohann} 511b362b15af34006e6a11974088a46d42b903418eJohann 521b362b15af34006e6a11974088a46d42b903418eJohannvoid vp8_dequant_idct_add_uv_block_neon(short *q, short *dq, 531b362b15af34006e6a11974088a46d42b903418eJohann unsigned char *dstu, 541b362b15af34006e6a11974088a46d42b903418eJohann unsigned char *dstv, 551b362b15af34006e6a11974088a46d42b903418eJohann int stride, char *eobs) 561b362b15af34006e6a11974088a46d42b903418eJohann{ 571b362b15af34006e6a11974088a46d42b903418eJohann if (((short *)(eobs))[0]) 581b362b15af34006e6a11974088a46d42b903418eJohann { 591b362b15af34006e6a11974088a46d42b903418eJohann if (((short *)eobs)[0] & 0xfefe) 601b362b15af34006e6a11974088a46d42b903418eJohann idct_dequant_full_2x_neon (q, dq, dstu, stride); 611b362b15af34006e6a11974088a46d42b903418eJohann else 621b362b15af34006e6a11974088a46d42b903418eJohann idct_dequant_0_2x_neon (q, dq[0], dstu, stride); 631b362b15af34006e6a11974088a46d42b903418eJohann } 641b362b15af34006e6a11974088a46d42b903418eJohann 651b362b15af34006e6a11974088a46d42b903418eJohann q += 32; 661b362b15af34006e6a11974088a46d42b903418eJohann dstu += 4*stride; 671b362b15af34006e6a11974088a46d42b903418eJohann 681b362b15af34006e6a11974088a46d42b903418eJohann if (((short *)(eobs))[1]) 691b362b15af34006e6a11974088a46d42b903418eJohann { 701b362b15af34006e6a11974088a46d42b903418eJohann if (((short *)eobs)[1] & 0xfefe) 711b362b15af34006e6a11974088a46d42b903418eJohann idct_dequant_full_2x_neon (q, dq, dstu, stride); 721b362b15af34006e6a11974088a46d42b903418eJohann else 731b362b15af34006e6a11974088a46d42b903418eJohann idct_dequant_0_2x_neon (q, dq[0], dstu, stride); 741b362b15af34006e6a11974088a46d42b903418eJohann } 751b362b15af34006e6a11974088a46d42b903418eJohann 761b362b15af34006e6a11974088a46d42b903418eJohann q += 32; 771b362b15af34006e6a11974088a46d42b903418eJohann 781b362b15af34006e6a11974088a46d42b903418eJohann if (((short *)(eobs))[2]) 791b362b15af34006e6a11974088a46d42b903418eJohann { 801b362b15af34006e6a11974088a46d42b903418eJohann if (((short *)eobs)[2] & 0xfefe) 811b362b15af34006e6a11974088a46d42b903418eJohann idct_dequant_full_2x_neon (q, dq, dstv, stride); 821b362b15af34006e6a11974088a46d42b903418eJohann else 831b362b15af34006e6a11974088a46d42b903418eJohann idct_dequant_0_2x_neon (q, dq[0], dstv, stride); 841b362b15af34006e6a11974088a46d42b903418eJohann } 851b362b15af34006e6a11974088a46d42b903418eJohann 861b362b15af34006e6a11974088a46d42b903418eJohann q += 32; 871b362b15af34006e6a11974088a46d42b903418eJohann dstv += 4*stride; 881b362b15af34006e6a11974088a46d42b903418eJohann 891b362b15af34006e6a11974088a46d42b903418eJohann if (((short *)(eobs))[3]) 901b362b15af34006e6a11974088a46d42b903418eJohann { 911b362b15af34006e6a11974088a46d42b903418eJohann if (((short *)eobs)[3] & 0xfefe) 921b362b15af34006e6a11974088a46d42b903418eJohann idct_dequant_full_2x_neon (q, dq, dstv, stride); 931b362b15af34006e6a11974088a46d42b903418eJohann else 941b362b15af34006e6a11974088a46d42b903418eJohann idct_dequant_0_2x_neon (q, dq[0], dstv, stride); 951b362b15af34006e6a11974088a46d42b903418eJohann } 961b362b15af34006e6a11974088a46d42b903418eJohann} 97