From 16db88a09312720dd4f87f5030f3e501a999f6cc Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Sat, 5 May 2012 01:51:33 +0200 Subject: [PATCH] vorbis_parser: fix blocksize Signed-off-by: Michael Niedermayer --- libavcodec/vorbis_parser.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/libavcodec/vorbis_parser.c b/libavcodec/vorbis_parser.c index a0468cb652..c35bafe10e 100644 --- a/libavcodec/vorbis_parser.c +++ b/libavcodec/vorbis_parser.c @@ -164,7 +164,7 @@ static int parse_setup_header(AVCodecContext *avctx, VorbisParseContext *s, skip_bits_long(&gb, got_framing_bit); for (i = mode_count - 1; i >= 0; i--) { skip_bits_long(&gb, 40); - s->mode_blocksize[i] = s->blocksize[get_bits1(&gb)]; + s->mode_blocksize[i] = get_bits1(&gb); } bad_header: @@ -195,7 +195,7 @@ int avpriv_vorbis_parse_extradata(AVCodecContext *avctx, VorbisParseContext *s) return ret; s->valid_extradata = 1; - s->previous_blocksize = s->mode_blocksize[0]; + s->previous_blocksize = s->blocksize[s->mode_blocksize[0]]; return 0; } @@ -221,11 +221,11 @@ int avpriv_vorbis_parse_frame(VorbisParseContext *s, const uint8_t *buf, av_log(s->avctx, AV_LOG_ERROR, "Invalid mode in packet\n"); return AVERROR_INVALIDDATA; } - if (mode) { + if(s->mode_blocksize[mode]){ int flag = !!(buf[0] & s->prev_mask); previous_blocksize = s->blocksize[flag]; } - current_blocksize = s->mode_blocksize[mode]; + current_blocksize = s->blocksize[s->mode_blocksize[mode]]; duration = (previous_blocksize + current_blocksize) >> 2; s->previous_blocksize = current_blocksize; } @@ -236,7 +236,7 @@ int avpriv_vorbis_parse_frame(VorbisParseContext *s, const uint8_t *buf, void avpriv_vorbis_parse_reset(VorbisParseContext *s) { if (s->valid_extradata) - s->previous_blocksize = 0; + s->previous_blocksize = s->blocksize[0]; } #if CONFIG_VORBIS_PARSER