From c0fda017d1087903ade3b574bd57d02b63bfe2cc Mon Sep 17 00:00:00 2001 From: David Conrad Date: Fri, 28 May 2010 07:22:04 +0000 Subject: [PATCH] vp3: 10l Fix DC-only IDCT for C and ARM too Originally committed as revision 23359 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/arm/vp3dsp_neon.S | 6 ++---- libavcodec/vp3dsp.c | 4 +--- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/libavcodec/arm/vp3dsp_neon.S b/libavcodec/arm/vp3dsp_neon.S index ade19984c2..d97ed3d21d 100644 --- a/libavcodec/arm/vp3dsp_neon.S +++ b/libavcodec/arm/vp3dsp_neon.S @@ -377,12 +377,10 @@ endfunc function ff_vp3_idct_dc_add_neon, export=1 ldrsh r2, [r2] - movw r3, #46341 - mul r2, r3, r2 - smulwt r2, r3, r2 mov r3, r0 + add r2, r2, #15 vdup.16 q15, r2 - vrshr.s16 q15, q15, #4 + vshr.s16 q15, q15, #5 vld1.8 {d0}, [r0,:64], r1 vld1.8 {d1}, [r0,:64], r1 diff --git a/libavcodec/vp3dsp.c b/libavcodec/vp3dsp.c index 058eb562c4..b7cff788ea 100644 --- a/libavcodec/vp3dsp.c +++ b/libavcodec/vp3dsp.c @@ -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*/){ 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++){ dest[0] = cm[dest[0]+dc];