indeo4: expand allowed quantiser range

Indeo 4 has quantiser range 0-31 instead of 0-23 for Indeo 5, and clipping
quantiser leads to incorrect quantisation and DC prediction on low-quality
videos.

This fixes bug 259.
pull/23/head
Kostya Shishkov 12 years ago
parent 60f09c04d8
commit 33f64fd5d5
  1. 6
      libavcodec/ivi_common.c

@ -418,7 +418,11 @@ static int ivi_decode_blocks(GetBitContext *gb, IVIBandDesc *band, IVITile *tile
cbp = mb->cbp; cbp = mb->cbp;
buf_offs = mb->buf_offs; buf_offs = mb->buf_offs;
quant = av_clip(band->glob_quant + mb->q_delta, 0, 23); quant = band->glob_quant + mb->q_delta;
if (avctx->codec_id == AV_CODEC_ID_INDEO4)
quant = av_clip(quant, 0, 31);
else
quant = av_clip(quant, 0, 23);
base_tab = is_intra ? band->intra_base : band->inter_base; base_tab = is_intra ? band->intra_base : band->inter_base;
scale_tab = is_intra ? band->intra_scale : band->inter_scale; scale_tab = is_intra ? band->intra_scale : band->inter_scale;

Loading…
Cancel
Save