Browse Source

vp3: 10l Fix DC-only IDCT for C and ARM too

Originally committed as revision 23359 to svn://svn.ffmpeg.org/ffmpeg/trunk
tags/n0.8
David Conrad 15 years ago
parent
commit
c0fda017d1
2 changed files with 3 additions and 7 deletions
  1. +2
    -4
      libavcodec/arm/vp3dsp_neon.S
  2. +1
    -3
      libavcodec/vp3dsp.c

+ 2
- 4
libavcodec/arm/vp3dsp_neon.S View File

@@ -377,12 +377,10 @@ endfunc


function ff_vp3_idct_dc_add_neon, export=1 function ff_vp3_idct_dc_add_neon, export=1
ldrsh r2, [r2] ldrsh r2, [r2]
movw r3, #46341
mul r2, r3, r2
smulwt r2, r3, r2
mov r3, r0 mov r3, r0
add r2, r2, #15
vdup.16 q15, r2 vdup.16 q15, r2
vrshr.s16 q15, q15, #4
vshr.s16 q15, q15, #5


vld1.8 {d0}, [r0,:64], r1 vld1.8 {d0}, [r0,:64], r1
vld1.8 {d1}, [r0,:64], r1 vld1.8 {d1}, [r0,:64], r1


+ 1
- 3
libavcodec/vp3dsp.c View File

@@ -225,9 +225,7 @@ 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*/){ 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; const uint8_t *cm = ff_cropTbl + MAX_NEG_CROP;
int i, dc = block[0];
dc = (46341*dc)>>16;
dc = (46341*dc + (8<<16))>>20;
int i, dc = (block[0] + 15) >> 5;


for(i = 0; i < 8; i++){ for(i = 0; i < 8; i++){
dest[0] = cm[dest[0]+dc]; dest[0] = cm[dest[0]+dc];


Loading…
Cancel
Save