Mercurial > libavcodec.hg
diff indeo5.c @ 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 | d617766bf19b |
children | 128f82b41fc1 |
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");