# HG changeset patch # User maxim # Date 1276191072 0 # Node ID 7204cb7dd6018fc3bf18c90d52870c0936f1b29f # Parent a12d8bdd0cace7b55a1f1bb081418c6744ef6811 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. diff -r a12d8bdd0cac -r 7204cb7dd601 ivi_common.c --- a/ivi_common.c Thu Jun 10 16:59:56 2010 +0000 +++ b/ivi_common.c Thu Jun 10 17:31:12 2010 +0000 @@ -364,6 +364,8 @@ 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 @@ 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;