From b56825c40ee1329b33aed34ff8a639fa18d263a0 Mon Sep 17 00:00:00 2001 From: Kostya Shishkov Date: Mon, 4 Jun 2012 08:01:34 +0200 Subject: [PATCH] mpc8: fix maximum bands handling In Musepack SV8 codec property tell the maximum nonzero band, but every frame codes maximum band as a limit (i.e. strictly less than given value). Synthesis also expects maximum nonzero band, so there's a need to convert frame maximum band limit value. --- libavcodec/mpc8.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/libavcodec/mpc8.c b/libavcodec/mpc8.c index f682edbed7..f2e8342dcb 100644 --- a/libavcodec/mpc8.c +++ b/libavcodec/mpc8.c @@ -270,7 +270,7 @@ static int mpc8_decode_frame(AVCodecContext * avctx, void *data, maxband = c->last_max_band + get_vlc2(gb, band_vlc.table, MPC8_BANDS_BITS, 2); if(maxband > 32) maxband -= 33; } - if(maxband > c->maxbands) + if(maxband > c->maxbands + 1) return AVERROR_INVALIDDATA; c->last_max_band = maxband; @@ -405,7 +405,8 @@ static int mpc8_decode_frame(AVCodecContext * avctx, void *data, } } - ff_mpc_dequantize_and_synth(c, maxband, c->frame.data[0], avctx->channels); + ff_mpc_dequantize_and_synth(c, maxband - 1, c->frame.data[0], + avctx->channels); c->cur_frame++;