void vp8_dequant_idct_c(short *input, short *dq, short *output, int pitch) { int i; for (i = 0; i < 16; i++) { input[i] = dq[i] * input[i]; } vp8_short_idct4x4llm_c(input, output, pitch); vpx_memset(input, 0, 32); }
void vp8_dequant_idct_add_c(short *input, short *dq, unsigned char *dest, int stride) { int i; for (i = 0; i < 16; i++) { input[i] = dq[i] * input[i]; } vp8_short_idct4x4llm_c(input, dest, stride, dest, stride); vpx_memset(input, 0, 32); }
void vp8_dequant_dc_idct_add_c(short *input, short *dq, unsigned char *pred, unsigned char *dest, int pitch, int stride, int Dc) { int i; short output[16]; short *diff_ptr = output; int r, c; input[0] = (short)Dc; for (i = 1; i < 16; i++) { input[i] = dq[i] * input[i]; } // the idct halves ( >> 1) the pitch vp8_short_idct4x4llm_c(input, output, 4 << 1); vpx_memset(input, 0, 32); for (r = 0; r < 4; r++) { for (c = 0; c < 4; c++) { int a = diff_ptr[c] + pred[c]; if (a < 0) a = 0; if (a > 255) a = 255; dest[c] = (unsigned char) a; } dest += stride; diff_ptr += 4; pred += pitch; } }