changeset 11386:0262869c11a9 libavcodec

Band quant tables should not be assigned inside band tile loop, one time is enough. Patch by Maxim (max_pole, gmx de)
author kostya
date Sun, 07 Mar 2010 12:12:42 +0000
parents 351d1c11195b
children c7ed26e2011f
files indeo5.c
diffstat 1 files changed, 12 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/indeo5.c	Sun Mar 07 09:25:57 2010 +0000
+++ b/indeo5.c	Sun Mar 07 12:12:42 2010 +0000
@@ -568,6 +568,18 @@
         return -1;
     }
 
+    if (band->blk_size == 8) {
+        band->intra_base  = &ivi5_base_quant_8x8_intra[band->quant_mat][0];
+        band->inter_base  = &ivi5_base_quant_8x8_inter[band->quant_mat][0];
+        band->intra_scale = &ivi5_scale_quant_8x8_intra[band->quant_mat][0];
+        band->inter_scale = &ivi5_scale_quant_8x8_inter[band->quant_mat][0];
+    } else {
+        band->intra_base  = ivi5_base_quant_4x4_intra;
+        band->inter_base  = ivi5_base_quant_4x4_inter;
+        band->intra_scale = ivi5_scale_quant_4x4_intra;
+        band->inter_scale = ivi5_scale_quant_4x4_inter;
+    }
+
     band->rv_map = &ctx->rvmap_tabs[band->rvmap_sel];
 
     /* apply corrections to the selected rvmap table if present */
@@ -593,18 +605,6 @@
             if (result < 0)
                 break;
 
-            if (band->blk_size == 8) {
-                band->intra_base  = &ivi5_base_quant_8x8_intra[band->quant_mat][0];
-                band->inter_base  = &ivi5_base_quant_8x8_inter[band->quant_mat][0];
-                band->intra_scale = &ivi5_scale_quant_8x8_intra[band->quant_mat][0];
-                band->inter_scale = &ivi5_scale_quant_8x8_inter[band->quant_mat][0];
-            } else {
-                band->intra_base  = ivi5_base_quant_4x4_intra;
-                band->inter_base  = ivi5_base_quant_4x4_inter;
-                band->intra_scale = ivi5_scale_quant_4x4_intra;
-                band->inter_scale = ivi5_scale_quant_4x4_inter;
-            }
-
             result = ff_ivi_decode_blocks(&ctx->gb, band, tile);
             if (result < 0) {
                 av_log(avctx, AV_LOG_ERROR, "Corrupted blocks data encountered!\n");