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
