fix handling of packet loss when the output buffer is full
authorSascha Sommer <saschasommer@freenet.de>
Sat, 5 Sep 2009 10:59:09 +0000 (10:59 +0000)
committerSascha Sommer <saschasommer@freenet.de>
Sat, 5 Sep 2009 10:59:09 +0000 (10:59 +0000)
Originally committed as revision 19766 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/wmaprodec.c

index 62f6d12..886ff45 100644 (file)
@@ -1461,7 +1461,8 @@ static int decode_packet(AVCodecContext *avctx,
     s->samples_end   = (float*)((int8_t*)data + *data_size);
     *data_size = 0;
 
-    if (!s->output_buffer_full) {
+    if (!s->output_buffer_full || s->packet_loss) {
+        s->output_buffer_full = 0;
         s->buf_bit_size = buf_size << 3;
 
         /** sanity check for the buffer length */
@@ -1537,7 +1538,7 @@ static int decode_packet(AVCodecContext *avctx,
 
     *data_size = (int8_t *)s->samples - (int8_t *)data;
 
-    return (s->output_buffer_full)?0: avctx->block_align;
+    return (s->output_buffer_full && !s->packet_loss)?0: avctx->block_align;
 }
 
 /**