On Sat, 25 May 2013, Kostya Shishkov wrote:

Currently if no custom block VLC is specified for band, a default block VLC
will be used, while the global block VLC stored in the context should be used
instead.

This fixes decoding of one sample I have.
---
FATE tests are left to the people who like it.
---
libavcodec/indeo4.c |    9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/libavcodec/indeo4.c b/libavcodec/indeo4.c
index eb34688..7571435 100644
--- a/libavcodec/indeo4.c
+++ b/libavcodec/indeo4.c
@@ -362,9 +362,12 @@ static int decode_band_hdr(IVI45DecContext *ctx, 
IVIBandDesc *band,
        }

        /* decode block huffman codebook */
-        if (ff_ivi_dec_huff_desc(&ctx->gb, get_bits1(&ctx->gb), IVI_BLK_HUFF,
-                                 &band->blk_vlc, avctx))
-            return AVERROR_INVALIDDATA;
+        if (!get_bits1(&ctx->gb))
+            band->blk_vlc.tab = ctx->blk_vlc.tab;
+        else
+            if (ff_ivi_dec_huff_desc(&ctx->gb, 1, IVI_BLK_HUFF,
+                                     &band->blk_vlc, avctx))
+                return AVERROR_INVALIDDATA;

        /* select appropriate rvmap table for this band */
        band->rvmap_sel = get_bits1(&ctx->gb) ? get_bits(&ctx->gb, 3) : 8;
--
1.7.9.5

LGTM

// Martin
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to