diff options
author | Måns Rullgård <mans@mansr.com> | 2010-06-22 23:12:48 +0000 |
---|---|---|
committer | Måns Rullgård <mans@mansr.com> | 2010-06-22 23:12:48 +0000 |
commit | 8fbd4f51a8bf8ae56303d1c7a18bf357b606df61 (patch) | |
tree | 610d916dda31bc04e497492cceaabf7248813257 | |
parent | 25d3445811bd75df1de726973de00d1ebfaf9ed4 (diff) | |
download | ffmpeg-8fbd4f51a8bf8ae56303d1c7a18bf357b606df61.tar.gz |
Improve some uses of ff_cropTbl with constant offset
Originally committed as revision 23728 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r-- | libavcodec/bfin/vp3_bfin.c | 4 | ||||
-rw-r--r-- | libavcodec/h264idct.c | 8 | ||||
-rw-r--r-- | libavcodec/vc1dsp.c | 60 | ||||
-rw-r--r-- | libavcodec/vp3dsp.c | 18 |
4 files changed, 47 insertions, 43 deletions
diff --git a/libavcodec/bfin/vp3_bfin.c b/libavcodec/bfin/vp3_bfin.c index b0101785c9..dfe34c5b3e 100644 --- a/libavcodec/bfin/vp3_bfin.c +++ b/libavcodec/bfin/vp3_bfin.c @@ -25,14 +25,14 @@ /* Intra iDCT offset 128 */ void ff_bfin_vp3_idct_put (uint8_t *dest, int line_size, DCTELEM *block) { - uint8_t *cm = ff_cropTbl + MAX_NEG_CROP; + uint8_t *cm = ff_cropTbl + MAX_NEG_CROP + 128; int i,j; ff_bfin_vp3_idct (block); for (i=0;i<8;i++) for (j=0;j<8;j++) - dest[line_size*i+j]=cm[128+block[i*8+j]]; + dest[line_size*i+j]=cm[block[i*8+j]]; } /* Inter iDCT */ diff --git a/libavcodec/h264idct.c b/libavcodec/h264idct.c index da5c6a5182..31e072f984 100644 --- a/libavcodec/h264idct.c +++ b/libavcodec/h264idct.c @@ -143,24 +143,24 @@ void ff_h264_idct8_add_c(uint8_t *dst, DCTELEM *block, int stride){ // assumes all AC coefs are 0 void ff_h264_idct_dc_add_c(uint8_t *dst, DCTELEM *block, int stride){ int i, j; - uint8_t *cm = ff_cropTbl + MAX_NEG_CROP; int dc = (block[0] + 32) >> 6; + uint8_t *cm = ff_cropTbl + MAX_NEG_CROP + dc; for( j = 0; j < 4; j++ ) { for( i = 0; i < 4; i++ ) - dst[i] = cm[ dst[i] + dc ]; + dst[i] = cm[ dst[i] ]; dst += stride; } } void ff_h264_idct8_dc_add_c(uint8_t *dst, DCTELEM *block, int stride){ int i, j; - uint8_t *cm = ff_cropTbl + MAX_NEG_CROP; int dc = (block[0] + 32) >> 6; + uint8_t *cm = ff_cropTbl + MAX_NEG_CROP + dc; for( j = 0; j < 8; j++ ) { for( i = 0; i < 8; i++ ) - dst[i] = cm[ dst[i] + dc ]; + dst[i] = cm[ dst[i] ]; dst += stride; } } diff --git a/libavcodec/vc1dsp.c b/libavcodec/vc1dsp.c index 47b69c8214..8634bef69b 100644 --- a/libavcodec/vc1dsp.c +++ b/libavcodec/vc1dsp.c @@ -182,18 +182,19 @@ static void vc1_inv_trans_8x8_dc_c(uint8_t *dest, int linesize, DCTELEM *block) { int i; int dc = block[0]; - const uint8_t *cm = ff_cropTbl + MAX_NEG_CROP; + const uint8_t *cm; dc = (3 * dc + 1) >> 1; dc = (3 * dc + 16) >> 5; + cm = ff_cropTbl + MAX_NEG_CROP + dc; for(i = 0; i < 8; i++){ - dest[0] = cm[dest[0]+dc]; - dest[1] = cm[dest[1]+dc]; - dest[2] = cm[dest[2]+dc]; - dest[3] = cm[dest[3]+dc]; - dest[4] = cm[dest[4]+dc]; - dest[5] = cm[dest[5]+dc]; - dest[6] = cm[dest[6]+dc]; - dest[7] = cm[dest[7]+dc]; + dest[0] = cm[dest[0]]; + dest[1] = cm[dest[1]]; + dest[2] = cm[dest[2]]; + dest[3] = cm[dest[3]]; + dest[4] = cm[dest[4]]; + dest[5] = cm[dest[5]]; + dest[6] = cm[dest[6]]; + dest[7] = cm[dest[7]]; dest += linesize; } } @@ -273,18 +274,19 @@ static void vc1_inv_trans_8x4_dc_c(uint8_t *dest, int linesize, DCTELEM *block) { int i; int dc = block[0]; - const uint8_t *cm = ff_cropTbl + MAX_NEG_CROP; + const uint8_t *cm; dc = ( 3 * dc + 1) >> 1; dc = (17 * dc + 64) >> 7; + cm = ff_cropTbl + MAX_NEG_CROP + dc; for(i = 0; i < 4; i++){ - dest[0] = cm[dest[0]+dc]; - dest[1] = cm[dest[1]+dc]; - dest[2] = cm[dest[2]+dc]; - dest[3] = cm[dest[3]+dc]; - dest[4] = cm[dest[4]+dc]; - dest[5] = cm[dest[5]+dc]; - dest[6] = cm[dest[6]+dc]; - dest[7] = cm[dest[7]+dc]; + dest[0] = cm[dest[0]]; + dest[1] = cm[dest[1]]; + dest[2] = cm[dest[2]]; + dest[3] = cm[dest[3]]; + dest[4] = cm[dest[4]]; + dest[5] = cm[dest[5]]; + dest[6] = cm[dest[6]]; + dest[7] = cm[dest[7]]; dest += linesize; } } @@ -350,14 +352,15 @@ static void vc1_inv_trans_4x8_dc_c(uint8_t *dest, int linesize, DCTELEM *block) { int i; int dc = block[0]; - const uint8_t *cm = ff_cropTbl + MAX_NEG_CROP; + const uint8_t *cm; dc = (17 * dc + 4) >> 3; dc = (12 * dc + 64) >> 7; + cm = ff_cropTbl + MAX_NEG_CROP + dc; for(i = 0; i < 8; i++){ - dest[0] = cm[dest[0]+dc]; - dest[1] = cm[dest[1]+dc]; - dest[2] = cm[dest[2]+dc]; - dest[3] = cm[dest[3]+dc]; + dest[0] = cm[dest[0]]; + dest[1] = cm[dest[1]]; + dest[2] = cm[dest[2]]; + dest[3] = cm[dest[3]]; dest += linesize; } } @@ -423,14 +426,15 @@ static void vc1_inv_trans_4x4_dc_c(uint8_t *dest, int linesize, DCTELEM *block) { int i; int dc = block[0]; - const uint8_t *cm = ff_cropTbl + MAX_NEG_CROP; + const uint8_t *cm; dc = (17 * dc + 4) >> 3; dc = (17 * dc + 64) >> 7; + cm = ff_cropTbl + MAX_NEG_CROP + dc; for(i = 0; i < 4; i++){ - dest[0] = cm[dest[0]+dc]; - dest[1] = cm[dest[1]+dc]; - dest[2] = cm[dest[2]+dc]; - dest[3] = cm[dest[3]+dc]; + dest[0] = cm[dest[0]]; + dest[1] = cm[dest[1]]; + dest[2] = cm[dest[2]]; + dest[3] = cm[dest[3]]; dest += linesize; } } diff --git a/libavcodec/vp3dsp.c b/libavcodec/vp3dsp.c index b7cff788ea..94efa3b1d2 100644 --- a/libavcodec/vp3dsp.c +++ b/libavcodec/vp3dsp.c @@ -224,18 +224,18 @@ void ff_vp3_idct_add_c(uint8_t *dest/*align 8*/, int line_size, DCTELEM *block/* } void ff_vp3_idct_dc_add_c(uint8_t *dest/*align 8*/, int line_size, const DCTELEM *block/*align 16*/){ - const uint8_t *cm = ff_cropTbl + MAX_NEG_CROP; int i, dc = (block[0] + 15) >> 5; + const uint8_t *cm = ff_cropTbl + MAX_NEG_CROP + dc; for(i = 0; i < 8; i++){ - dest[0] = cm[dest[0]+dc]; - dest[1] = cm[dest[1]+dc]; - dest[2] = cm[dest[2]+dc]; - dest[3] = cm[dest[3]+dc]; - dest[4] = cm[dest[4]+dc]; - dest[5] = cm[dest[5]+dc]; - dest[6] = cm[dest[6]+dc]; - dest[7] = cm[dest[7]+dc]; + dest[0] = cm[dest[0]]; + dest[1] = cm[dest[1]]; + dest[2] = cm[dest[2]]; + dest[3] = cm[dest[3]]; + dest[4] = cm[dest[4]]; + dest[5] = cm[dest[5]]; + dest[6] = cm[dest[6]]; + dest[7] = cm[dest[7]]; dest += line_size; } } |