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 141b362b15af34006e6a11974088a46d42b903418eJohannvoid vp8_idct_dequant_0_2x_sse2 151b362b15af34006e6a11974088a46d42b903418eJohann (short *q, short *dq , 161b362b15af34006e6a11974088a46d42b903418eJohann unsigned char *dst, int dst_stride); 171b362b15af34006e6a11974088a46d42b903418eJohannvoid vp8_idct_dequant_full_2x_sse2 181b362b15af34006e6a11974088a46d42b903418eJohann (short *q, short *dq , 191b362b15af34006e6a11974088a46d42b903418eJohann unsigned char *dst, int dst_stride); 201b362b15af34006e6a11974088a46d42b903418eJohann 211b362b15af34006e6a11974088a46d42b903418eJohannvoid vp8_dequant_idct_add_y_block_sse2 221b362b15af34006e6a11974088a46d42b903418eJohann (short *q, short *dq, 231b362b15af34006e6a11974088a46d42b903418eJohann unsigned char *dst, int stride, char *eobs) 241b362b15af34006e6a11974088a46d42b903418eJohann{ 251b362b15af34006e6a11974088a46d42b903418eJohann int i; 261b362b15af34006e6a11974088a46d42b903418eJohann 271b362b15af34006e6a11974088a46d42b903418eJohann for (i = 0; i < 4; i++) 281b362b15af34006e6a11974088a46d42b903418eJohann { 291b362b15af34006e6a11974088a46d42b903418eJohann if (((short *)(eobs))[0]) 301b362b15af34006e6a11974088a46d42b903418eJohann { 311b362b15af34006e6a11974088a46d42b903418eJohann if (((short *)(eobs))[0] & 0xfefe) 321b362b15af34006e6a11974088a46d42b903418eJohann vp8_idct_dequant_full_2x_sse2 (q, dq, dst, stride); 331b362b15af34006e6a11974088a46d42b903418eJohann else 341b362b15af34006e6a11974088a46d42b903418eJohann vp8_idct_dequant_0_2x_sse2 (q, dq, dst, stride); 351b362b15af34006e6a11974088a46d42b903418eJohann } 361b362b15af34006e6a11974088a46d42b903418eJohann if (((short *)(eobs))[1]) 371b362b15af34006e6a11974088a46d42b903418eJohann { 381b362b15af34006e6a11974088a46d42b903418eJohann if (((short *)(eobs))[1] & 0xfefe) 391b362b15af34006e6a11974088a46d42b903418eJohann vp8_idct_dequant_full_2x_sse2 (q+32, dq, dst+8, stride); 401b362b15af34006e6a11974088a46d42b903418eJohann else 411b362b15af34006e6a11974088a46d42b903418eJohann vp8_idct_dequant_0_2x_sse2 (q+32, dq, dst+8, stride); 421b362b15af34006e6a11974088a46d42b903418eJohann } 431b362b15af34006e6a11974088a46d42b903418eJohann q += 64; 441b362b15af34006e6a11974088a46d42b903418eJohann dst += stride*4; 451b362b15af34006e6a11974088a46d42b903418eJohann eobs += 4; 461b362b15af34006e6a11974088a46d42b903418eJohann } 471b362b15af34006e6a11974088a46d42b903418eJohann} 481b362b15af34006e6a11974088a46d42b903418eJohann 491b362b15af34006e6a11974088a46d42b903418eJohannvoid vp8_dequant_idct_add_uv_block_sse2 501b362b15af34006e6a11974088a46d42b903418eJohann (short *q, short *dq, 511b362b15af34006e6a11974088a46d42b903418eJohann unsigned char *dstu, unsigned char *dstv, int stride, char *eobs) 521b362b15af34006e6a11974088a46d42b903418eJohann{ 531b362b15af34006e6a11974088a46d42b903418eJohann if (((short *)(eobs))[0]) 541b362b15af34006e6a11974088a46d42b903418eJohann { 551b362b15af34006e6a11974088a46d42b903418eJohann if (((short *)(eobs))[0] & 0xfefe) 561b362b15af34006e6a11974088a46d42b903418eJohann vp8_idct_dequant_full_2x_sse2 (q, dq, dstu, stride); 571b362b15af34006e6a11974088a46d42b903418eJohann else 581b362b15af34006e6a11974088a46d42b903418eJohann vp8_idct_dequant_0_2x_sse2 (q, dq, dstu, stride); 591b362b15af34006e6a11974088a46d42b903418eJohann } 601b362b15af34006e6a11974088a46d42b903418eJohann q += 32; 611b362b15af34006e6a11974088a46d42b903418eJohann dstu += stride*4; 621b362b15af34006e6a11974088a46d42b903418eJohann 631b362b15af34006e6a11974088a46d42b903418eJohann if (((short *)(eobs))[1]) 641b362b15af34006e6a11974088a46d42b903418eJohann { 651b362b15af34006e6a11974088a46d42b903418eJohann if (((short *)(eobs))[1] & 0xfefe) 661b362b15af34006e6a11974088a46d42b903418eJohann vp8_idct_dequant_full_2x_sse2 (q, dq, dstu, stride); 671b362b15af34006e6a11974088a46d42b903418eJohann else 681b362b15af34006e6a11974088a46d42b903418eJohann vp8_idct_dequant_0_2x_sse2 (q, dq, dstu, stride); 691b362b15af34006e6a11974088a46d42b903418eJohann } 701b362b15af34006e6a11974088a46d42b903418eJohann q += 32; 711b362b15af34006e6a11974088a46d42b903418eJohann 721b362b15af34006e6a11974088a46d42b903418eJohann if (((short *)(eobs))[2]) 731b362b15af34006e6a11974088a46d42b903418eJohann { 741b362b15af34006e6a11974088a46d42b903418eJohann if (((short *)(eobs))[2] & 0xfefe) 751b362b15af34006e6a11974088a46d42b903418eJohann vp8_idct_dequant_full_2x_sse2 (q, dq, dstv, stride); 761b362b15af34006e6a11974088a46d42b903418eJohann else 771b362b15af34006e6a11974088a46d42b903418eJohann vp8_idct_dequant_0_2x_sse2 (q, dq, dstv, stride); 781b362b15af34006e6a11974088a46d42b903418eJohann } 791b362b15af34006e6a11974088a46d42b903418eJohann q += 32; 801b362b15af34006e6a11974088a46d42b903418eJohann dstv += stride*4; 811b362b15af34006e6a11974088a46d42b903418eJohann 821b362b15af34006e6a11974088a46d42b903418eJohann if (((short *)(eobs))[3]) 831b362b15af34006e6a11974088a46d42b903418eJohann { 841b362b15af34006e6a11974088a46d42b903418eJohann if (((short *)(eobs))[3] & 0xfefe) 851b362b15af34006e6a11974088a46d42b903418eJohann vp8_idct_dequant_full_2x_sse2 (q, dq, dstv, stride); 861b362b15af34006e6a11974088a46d42b903418eJohann else 871b362b15af34006e6a11974088a46d42b903418eJohann vp8_idct_dequant_0_2x_sse2 (q, dq, dstv, stride); 881b362b15af34006e6a11974088a46d42b903418eJohann } 891b362b15af34006e6a11974088a46d42b903418eJohann} 90