int main( int argc , char * argv[] ) { int xx[8] = { 1,2,3,4,4,4,3,2 } ; int yy[8] ; float zz[8] ; int ii ; for( ii=0 ;ii < 8 ; ii++ ) zz[ii] = xx[ii] ; memcpy(yy,xx,sizeof(int)*8) ; printf("y = %d %d %d %d %d %d %d %d\n", yy[0],yy[1],yy[2],yy[3],yy[4],yy[5],yy[6],yy[7]) ; dct8_ref(yy) ; printf("dct8_ref = %d %d %d %d %d %d %d %d\n", yy[0],yy[1],yy[2],yy[3],yy[4],yy[5],yy[6],yy[7]) ; idct8_ref(yy) ; printf("idct8_ref = %d %d %d %d %d %d %d %d\n", yy[0],yy[1],yy[2],yy[3],yy[4],yy[5],yy[6],yy[7]) ; memcpy(yy,xx,sizeof(int)*8) ; dct8(yy) ; printf("dct8 = %d %d %d %d %d %d %d %d\n", yy[0],yy[1],yy[2],yy[3],yy[4],yy[5],yy[6],yy[7]) ; idct8(yy) ; printf("idct8 = %d %d %d %d %d %d %d %d\n", yy[0],yy[1],yy[2],yy[3],yy[4],yy[5],yy[6],yy[7]) ; fdct8(zz) ; printf("fdct8 = %g %g %g %g %g %g %g %g\n", zz[0],zz[1],zz[2],zz[3],zz[4],zz[5],zz[6],zz[7]) ; ifdct8(zz) ; printf("ifdct8 = %g %g %g %g %g %g %g %g\n", zz[0],zz[1],zz[2],zz[3],zz[4],zz[5],zz[6],zz[7]) ; exit(0) ; }
void vp9_idct8x8_64_add_c(const int16_t *input, uint8_t *dest, int stride) { int16_t out[8 * 8]; int16_t *outptr = out; int i, j; int16_t temp_in[8], temp_out[8]; // First transform rows for (i = 0; i < 8; ++i) { idct8(input, outptr); input += 8; outptr += 8; } // Then transform columns for (i = 0; i < 8; ++i) { for (j = 0; j < 8; ++j) temp_in[j] = out[j * 8 + i]; idct8(temp_in, temp_out); for (j = 0; j < 8; ++j) dest[j * stride + i] = clip_pixel(ROUND_POWER_OF_TWO(temp_out[j], 5) + dest[j * stride + i]); } }
static void idct8x8(double *x, int xstride, const double *y, int ystride) { double t[8*8]; int i; for (i = 0; i < 8; i++) idct8(t + i, 8, y + ystride*i); for (i = 0; i < 8; i++) idct8(x + i, xstride, t + 8*i); }