[FFmpeg-cvslog] indeo4: expand allowed quantiser range

Kostya Shishkov git at videolan.org
Sat Jun 1 10:32:30 CEST 2013


ffmpeg | branch: master | Kostya Shishkov <kostya.shishkov at gmail.com> | Fri May 31 21:09:27 2013 +0200| [33f64fd5d588a82b8bae1b1b5ea627c0c80b01d6] | committer: Kostya Shishkov

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.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=33f64fd5d588a82b8bae1b1b5ea627c0c80b01d6
---

 libavcodec/ivi_common.c |    6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/libavcodec/ivi_common.c b/libavcodec/ivi_common.c
index f11b729..f7e241b 100644
--- a/libavcodec/ivi_common.c
+++ b/libavcodec/ivi_common.c
@@ -418,7 +418,11 @@ static int ivi_decode_blocks(GetBitContext *gb, IVIBandDesc *band, IVITile *tile
         cbp      = mb->cbp;
         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;
         scale_tab = is_intra ? band->intra_scale : band->inter_scale;



More information about the ffmpeg-cvslog mailing list