changeset 11789:2064f8a1691e libavcodec

vp3: 10l Fix DC-only IDCT for C and ARM too
author conrad
date Fri, 28 May 2010 07:22:04 +0000
parents b2c0b7034aab
children f918fb753b31
files arm/vp3dsp_neon.S vp3dsp.c
diffstat 2 files changed, 3 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- 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
--- 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];