[FFmpeg-cvslog] r23359 - in trunk/libavcodec: arm/vp3dsp_neon.S vp3dsp.c

conrad subversion
Fri May 28 09:22:04 CEST 2010


Author: conrad
Date: Fri May 28 09:22:04 2010
New Revision: 23359

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

Modified:
   trunk/libavcodec/arm/vp3dsp_neon.S
   trunk/libavcodec/vp3dsp.c

Modified: trunk/libavcodec/arm/vp3dsp_neon.S
==============================================================================
--- trunk/libavcodec/arm/vp3dsp_neon.S	Fri May 28 09:01:34 2010	(r23358)
+++ trunk/libavcodec/arm/vp3dsp_neon.S	Fri May 28 09:22:04 2010	(r23359)
@@ -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

Modified: trunk/libavcodec/vp3dsp.c
==============================================================================
--- trunk/libavcodec/vp3dsp.c	Fri May 28 09:01:34 2010	(r23358)
+++ trunk/libavcodec/vp3dsp.c	Fri May 28 09:22:04 2010	(r23359)
@@ -225,9 +225,7 @@ void ff_vp3_idct_add_c(uint8_t *dest/*al
 
 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];



More information about the ffmpeg-cvslog mailing list