Commit 5b99a7d2 authored by maxim's avatar maxim

Move indeo5-specific quant table selection to decode_gop_hdr.


git-svn-id: file:///var/local/repositories/ffmpeg/trunk@23581 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b
parent 8958fa62
...@@ -90,7 +90,8 @@ typedef struct { ...@@ -90,7 +90,8 @@ typedef struct {
*/ */
static int decode_gop_header(IVI5DecContext *ctx, AVCodecContext *avctx) 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; IVIBandDesc *band, *band1, *band2;
IVIPicConfig pic_conf; IVIPicConfig pic_conf;
...@@ -212,9 +213,21 @@ static int decode_gop_header(IVI5DecContext *ctx, AVCodecContext *avctx) ...@@ -212,9 +213,21 @@ static int decode_gop_header(IVI5DecContext *ctx, AVCodecContext *avctx)
/* select dequant matrix according to plane and band number */ /* select dequant matrix according to plane and band number */
if (!p) { if (!p) {
band->quant_mat = (pic_conf.luma_bands > 1) ? i+1 : 0; quant_mat = (pic_conf.luma_bands > 1) ? i+1 : 0;
} else { } 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)) { if (get_bits(&ctx->gb, 2)) {
...@@ -234,7 +247,10 @@ static int decode_gop_header(IVI5DecContext *ctx, AVCodecContext *avctx) ...@@ -234,7 +247,10 @@ static int decode_gop_header(IVI5DecContext *ctx, AVCodecContext *avctx)
band2->mb_size = band1->mb_size; band2->mb_size = band1->mb_size;
band2->blk_size = band1->blk_size; band2->blk_size = band1->blk_size;
band2->is_halfpel = band1->is_halfpel; 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->scan = band1->scan;
band2->inv_transform = band1->inv_transform; band2->inv_transform = band1->inv_transform;
band2->dc_transform = band1->dc_transform; band2->dc_transform = band1->dc_transform;
...@@ -570,18 +586,6 @@ static int decode_band(IVI5DecContext *ctx, int plane_num, ...@@ -570,18 +586,6 @@ static int decode_band(IVI5DecContext *ctx, int plane_num,
return -1; 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]; band->rv_map = &ctx->rvmap_tabs[band->rvmap_sel];
/* apply corrections to the selected rvmap table if present */ /* apply corrections to the selected rvmap table if present */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment