From ac08f798bbfe6b3a631964a26da961e692b1c9af Mon Sep 17 00:00:00 2001 From: Mans Rullgard Date: Sat, 17 Dec 2011 16:19:24 +0000 Subject: [PATCH] mp3dec: hack: fix decoding with safe bitstream reader The buffer splicing relies on the bitstream reader over-reading the end of the buffer as declared in init_get_bits(), although more data is actually present. Manually moving the bitstream boundary after init_get_bits() allows this to work as expected. Signed-off-by: Mans Rullgard --- libavcodec/mpegaudiodec.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/libavcodec/mpegaudiodec.c b/libavcodec/mpegaudiodec.c index eeef470a57..0c8f9c787b 100644 --- a/libavcodec/mpegaudiodec.c +++ b/libavcodec/mpegaudiodec.c @@ -1548,6 +1548,9 @@ static int mp_decode_layer3(MPADecodeContext *s) memcpy(s->last_buf + s->last_buf_size, ptr, EXTRABYTES); s->in_gb = s->gb; init_get_bits(&s->gb, s->last_buf, s->last_buf_size*8); +#if CONFIG_SAFE_BITSTREAM_READER + s->gb.size_in_bits_plus8 += EXTRABYTES * 8; +#endif skip_bits_long(&s->gb, 8*(s->last_buf_size - main_data_begin)); }