From 07ff7825b6025c529b194b5d54b9c0528b07c308 Mon Sep 17 00:00:00 2001 From: Maxim Poliakovski Date: Fri, 11 Jun 2010 09:49:06 +0000 Subject: Move indeo5-specific quant table selection to decode_gop_hdr. Originally committed as revision 23581 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/indeo5.c | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) (limited to 'libavcodec/indeo5.c') diff --git a/libavcodec/indeo5.c b/libavcodec/indeo5.c index db4933dfb8..f060448538 100644 --- a/libavcodec/indeo5.c +++ b/libavcodec/indeo5.c @@ -90,7 +90,8 @@ typedef struct { */ static int decode_gop_header(IVI5DecContext *ctx, AVCodecContext *avctx) { - int result, i, p, tile_size, pic_size_indx, mb_size, blk_size, blk_size_changed = 0; + int result, i, p, tile_size, pic_size_indx, mb_size, blk_size; + int quant_mat, blk_size_changed = 0; IVIBandDesc *band, *band1, *band2; IVIPicConfig pic_conf; @@ -212,9 +213,21 @@ static int decode_gop_header(IVI5DecContext *ctx, AVCodecContext *avctx) /* select dequant matrix according to plane and band number */ if (!p) { - band->quant_mat = (pic_conf.luma_bands > 1) ? i+1 : 0; + quant_mat = (pic_conf.luma_bands > 1) ? i+1 : 0; } else { - band->quant_mat = 5; + quant_mat = 5; + } + + if (band->blk_size == 8) { + band->intra_base = &ivi5_base_quant_8x8_intra[quant_mat][0]; + band->inter_base = &ivi5_base_quant_8x8_inter[quant_mat][0]; + band->intra_scale = &ivi5_scale_quant_8x8_intra[quant_mat][0]; + band->inter_scale = &ivi5_scale_quant_8x8_inter[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; } if (get_bits(&ctx->gb, 2)) { @@ -234,7 +247,10 @@ static int decode_gop_header(IVI5DecContext *ctx, AVCodecContext *avctx) band2->mb_size = band1->mb_size; band2->blk_size = band1->blk_size; band2->is_halfpel = band1->is_halfpel; - band2->quant_mat = band1->quant_mat; + band2->intra_base = band1->intra_base; + band2->inter_base = band1->inter_base; + band2->intra_scale = band1->intra_scale; + band2->inter_scale = band1->inter_scale; band2->scan = band1->scan; band2->inv_transform = band1->inv_transform; band2->dc_transform = band1->dc_transform; @@ -570,18 +586,6 @@ static int decode_band(IVI5DecContext *ctx, int plane_num, 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 */ -- cgit v1.2.3