Only realloc() bitstream buffer when the needed size increased,
authorMichael Niedermayer <michaelni@gmx.at>
Fri, 18 Jul 2008 11:38:53 +0000 (11:38 +0000)
committerMichael Niedermayer <michaelni@gmx.at>
Fri, 18 Jul 2008 11:38:53 +0000 (11:38 +0000)
this is needed to prevent loosing bitstream data with large metadata.

Originally committed as revision 14279 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/flac.c

index a7ba016..5745210 100644 (file)
@@ -139,7 +139,8 @@ static void allocate_buffers(FLACContext *s){
         s->decoded[i] = av_realloc(s->decoded[i], sizeof(int32_t)*s->max_blocksize);
     }
 
-    s->bitstream= av_fast_realloc(s->bitstream, &s->allocated_bitstream_size, s->max_framesize);
+    if(s->allocated_bitstream_size < s->max_framesize)
+        s->bitstream= av_fast_realloc(s->bitstream, &s->allocated_bitstream_size, s->max_framesize);
 }
 
 void ff_flac_parse_streaminfo(AVCodecContext *avctx, struct FLACStreaminfo *s,