# HG changeset patch # User conrad # Date 1275031324 0 # Node ID 2064f8a1691ee188004037c601324d2c204f74e6 # Parent b2c0b7034aabc717aa8c4c7a19e3ab7722f4ca0b vp3: 10l Fix DC-only IDCT for C and ARM too diff -r b2c0b7034aab -r 2064f8a1691e arm/vp3dsp_neon.S --- a/arm/vp3dsp_neon.S Fri May 28 07:01:34 2010 +0000 +++ b/arm/vp3dsp_neon.S Fri May 28 07:22:04 2010 +0000 @@ -377,12 +377,10 @@ 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 -r b2c0b7034aab -r 2064f8a1691e vp3dsp.c --- a/vp3dsp.c Fri May 28 07:01:34 2010 +0000 +++ b/vp3dsp.c Fri May 28 07:22:04 2010 +0000 @@ -225,9 +225,7 @@ 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];