diff --git a/libavcodec/flac.c b/libavcodec/flac.c index de1c5255ce..894da93848 100644 --- a/libavcodec/flac.c +++ b/libavcodec/flac.c @@ -637,10 +637,17 @@ static int flac_decode_frame(AVCodecContext *avctx, switch(metadata_type) { case METADATA_TYPE_STREAMINFO:{ - int bits_count= get_bits_count(&s->gb); - metadata_streaminfo(s); + /* Buffer might have been reallocated, reinit bitreader */ + if(buf != &s->bitstream[s->bitstream_index]) + { + int bits_count = get_bits_count(&s->gb); + buf= &s->bitstream[s->bitstream_index]; + init_get_bits(&s->gb, buf, buf_size*8); + skip_bits(&s->gb, bits_count); + } + dump_headers(s); break;} default: