[FFmpeg-cvslog] r23569 - trunk/libavcodec/ivi_common.c

maxim subversion
Thu Jun 10 19:31:12 CEST 2010


Author: maxim
Date: Thu Jun 10 19:31:12 2010
New Revision: 23569

Log:
Quant changes only once per MB so move the corresponding scale factor assignment
out of the block decoding loop. Indeo4 doesn't use any scale table but the quant
level itself as scale. Therefore access scale table only if its pointer != NULL.

Modified:
   trunk/libavcodec/ivi_common.c

Modified: trunk/libavcodec/ivi_common.c
==============================================================================
--- trunk/libavcodec/ivi_common.c	Thu Jun 10 19:23:45 2010	(r23568)
+++ trunk/libavcodec/ivi_common.c	Thu Jun 10 19:31:12 2010	(r23569)
@@ -364,6 +364,8 @@ int ff_ivi_decode_blocks(GetBitContext *
 
         base_tab  = is_intra ? band->intra_base  : band->inter_base;
         scale_tab = is_intra ? band->intra_scale : band->inter_scale;
+        if (scale_tab)
+            quant = scale_tab[quant];
 
         if (!is_intra) {
             mv_x = mb->mv_x;
@@ -415,7 +417,7 @@ int ff_ivi_decode_blocks(GetBitContext *
                     if (IVI_DEBUG && !val)
                         av_log(NULL, AV_LOG_ERROR, "Val = 0 encountered!\n");
 
-                    q = (base_tab[pos] * scale_tab[quant]) >> 9;
+                    q = (base_tab[pos] * quant) >> 9;
                     if (q > 1)
                         val = val * q + FFSIGN(val) * (((q ^ 1) - 1) >> 1);
                     trvec[pos] = val;



More information about the ffmpeg-cvslog mailing list