diff options
author | Alex Converse <alex.converse@gmail.com> | 2010-05-19 20:18:34 +0000 |
---|---|---|
committer | Alex Converse <alex.converse@gmail.com> | 2010-05-19 20:18:34 +0000 |
commit | c16d5a6f146d7fb4858eb00d577c0aecc1a6aee9 (patch) | |
tree | 4f0ea67cc2dfd0a7c5684614fc18fdc5a363dc94 | |
parent | 7382617a2f2f1d08d19ebbaf29d5279a34fe023d (diff) | |
download | ffmpeg-c16d5a6f146d7fb4858eb00d577c0aecc1a6aee9.tar.gz |
Make aac_decode_frame() consume zero padding at the end of a packet.
Originally committed as revision 23195 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r-- | libavcodec/aac.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/libavcodec/aac.c b/libavcodec/aac.c index ac8c9c6ec4..3330e1cefe 100644 --- a/libavcodec/aac.c +++ b/libavcodec/aac.c @@ -1954,6 +1954,7 @@ static int aac_decode_frame(AVCodecContext *avccontext, void *data, int err, elem_id, data_size_tmp; int buf_consumed; int samples = 1024, multiplier; + int buf_offset; init_get_bits(&gb, buf, buf_size * 8); @@ -2065,7 +2066,11 @@ static int aac_decode_frame(AVCodecContext *avccontext, void *data, ac->output_configured = OC_LOCKED; buf_consumed = (get_bits_count(&gb) + 7) >> 3; - return buf_size > buf_consumed ? buf_consumed : buf_size; + for (buf_offset = buf_consumed; buf_offset < buf_size; buf_offset++) + if (buf[buf_offset]) + break; + + return buf_size > buf_offset ? buf_consumed : buf_size; } static av_cold int aac_decode_close(AVCodecContext *avccontext) |