[FFmpeg-cvslog] r20719 - trunk/libavcodec/apedec.c

lorenm subversion
Thu Dec 3 18:44:08 CET 2009


Author: lorenm
Date: Thu Dec  3 18:44:08 2009
New Revision: 20719

Log:
inline to allow constant propogation
50% faster predictor_update_filter, 1-10% faster ape decoding

Modified:
   trunk/libavcodec/apedec.c

Modified: trunk/libavcodec/apedec.c
==============================================================================
--- trunk/libavcodec/apedec.c	Thu Dec  3 18:11:48 2009	(r20718)
+++ trunk/libavcodec/apedec.c	Thu Dec  3 18:44:08 2009	(r20719)
@@ -517,7 +517,7 @@ static inline int APESIGN(int32_t x) {
     return (x < 0) - (x > 0);
 }
 
-static int predictor_update_filter(APEPredictor *p, const int decoded, const int filter, const int delayA, const int delayB, const int adaptA, const int adaptB)
+static av_always_inline int predictor_update_filter(APEPredictor *p, const int decoded, const int filter, const int delayA, const int delayB, const int adaptA, const int adaptB)
 {
     int32_t predictionA, predictionB;
 
@@ -578,17 +578,16 @@ static int predictor_update_filter(APEPr
 
 static void predictor_decode_stereo(APEContext * ctx, int count)
 {
-    int32_t predictionA, predictionB;
     APEPredictor *p = &ctx->predictor;
     int32_t *decoded0 = ctx->decoded0;
     int32_t *decoded1 = ctx->decoded1;
 
     while (count--) {
         /* Predictor Y */
-        predictionA = predictor_update_filter(p, *decoded0, 0, YDELAYA, YDELAYB, YADAPTCOEFFSA, YADAPTCOEFFSB);
-        predictionB = predictor_update_filter(p, *decoded1, 1, XDELAYA, XDELAYB, XADAPTCOEFFSA, XADAPTCOEFFSB);
-        *(decoded0++) = predictionA;
-        *(decoded1++) = predictionB;
+        *decoded0 = predictor_update_filter(p, *decoded0, 0, YDELAYA, YDELAYB, YADAPTCOEFFSA, YADAPTCOEFFSB);
+        decoded0++;
+        *decoded1 = predictor_update_filter(p, *decoded1, 1, XDELAYA, XDELAYB, XADAPTCOEFFSA, XADAPTCOEFFSB);
+        decoded1++;
 
         /* Combined */
         p->buf++;



More information about the ffmpeg-cvslog mailing list