[FFmpeg-cvslog] mp3dec: hack: fix decoding with safe bitstream reader

Mans Rullgard git at videolan.org
Sun Dec 18 03:12:21 CET 2011


ffmpeg | branch: master | Mans Rullgard <mans at mansr.com> | Sat Dec 17 16:19:24 2011 +0000| [ac08f798bbfe6b3a631964a26da961e692b1c9af] | committer: Mans Rullgard

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 <mans at mansr.com>

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

 libavcodec/mpegaudiodec.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/libavcodec/mpegaudiodec.c b/libavcodec/mpegaudiodec.c
index eeef470..0c8f9c7 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));
     }
 



More information about the ffmpeg-cvslog mailing list