Mercurial > libavcodec.hg
comparison vp8dsp.c @ 12235:e08d65897115 libavcodec
VP8: clear DCT blocks in iDCT instead of using clear_blocks.
~0.3% faster overall.
author | darkshikari |
---|---|
date | Fri, 23 Jul 2010 00:07:16 +0000 |
parents | 80b142c2e9f7 |
children | 1a7903913e9b |
comparison
equal
deleted
inserted
replaced
12234:bba849c2a113 | 12235:e08d65897115 |
---|---|
67 for (i = 0; i < 4; i++) { | 67 for (i = 0; i < 4; i++) { |
68 t0 = block[0*4+i] + block[2*4+i]; | 68 t0 = block[0*4+i] + block[2*4+i]; |
69 t1 = block[0*4+i] - block[2*4+i]; | 69 t1 = block[0*4+i] - block[2*4+i]; |
70 t2 = MUL_35468(block[1*4+i]) - MUL_20091(block[3*4+i]); | 70 t2 = MUL_35468(block[1*4+i]) - MUL_20091(block[3*4+i]); |
71 t3 = MUL_20091(block[1*4+i]) + MUL_35468(block[3*4+i]); | 71 t3 = MUL_20091(block[1*4+i]) + MUL_35468(block[3*4+i]); |
72 block[0*4+i] = 0; | |
73 block[1*4+i] = 0; | |
74 block[2*4+i] = 0; | |
75 block[3*4+i] = 0; | |
72 | 76 |
73 tmp[i*4+0] = t0 + t3; | 77 tmp[i*4+0] = t0 + t3; |
74 tmp[i*4+1] = t1 + t2; | 78 tmp[i*4+1] = t1 + t2; |
75 tmp[i*4+2] = t1 - t2; | 79 tmp[i*4+2] = t1 - t2; |
76 tmp[i*4+3] = t0 - t3; | 80 tmp[i*4+3] = t0 - t3; |
92 | 96 |
93 static void vp8_idct_dc_add_c(uint8_t *dst, DCTELEM block[16], int stride) | 97 static void vp8_idct_dc_add_c(uint8_t *dst, DCTELEM block[16], int stride) |
94 { | 98 { |
95 int i, dc = (block[0] + 4) >> 3; | 99 int i, dc = (block[0] + 4) >> 3; |
96 uint8_t *cm = ff_cropTbl + MAX_NEG_CROP + dc; | 100 uint8_t *cm = ff_cropTbl + MAX_NEG_CROP + dc; |
101 block[0] = 0; | |
97 | 102 |
98 for (i = 0; i < 4; i++) { | 103 for (i = 0; i < 4; i++) { |
99 dst[0] = cm[dst[0]]; | 104 dst[0] = cm[dst[0]]; |
100 dst[1] = cm[dst[1]]; | 105 dst[1] = cm[dst[1]]; |
101 dst[2] = cm[dst[2]]; | 106 dst[2] = cm[dst[2]]; |