[FFmpeg-cvslog] mmaldec: correct package buffering accounting

wm4 git at videolan.org
Tue Jun 21 13:21:27 CEST 2016


ffmpeg | branch: master | wm4 <nfxjfg at googlemail.com> | Thu Apr 14 12:21:21 2016 +0200| [46aaad78c3cf03d43e7c9ca1d4a8b8a71fb0527d] | committer: Anton Khirnov

mmaldec: correct package buffering accounting

The assert in ffmmal_stop_decoder() could trigger sometimes. The
packets_buffered counter was indeed not correctly maintained, and
packets were not subtracted from it if they were still in the waiting
queue.

For some reason, this happened especially with VC-1.

Signed-off-by: Anton Khirnov <anton at khirnov.net>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=46aaad78c3cf03d43e7c9ca1d4a8b8a71fb0527d
---

 libavcodec/mmaldec.c |    3 +++
 1 file changed, 3 insertions(+)

diff --git a/libavcodec/mmaldec.c b/libavcodec/mmaldec.c
index 6015e54..77838dc 100644
--- a/libavcodec/mmaldec.c
+++ b/libavcodec/mmaldec.c
@@ -161,6 +161,9 @@ static void ffmmal_stop_decoder(AVCodecContext *avctx)
 
         ctx->waiting_buffers = buffer->next;
 
+        if (buffer->flags & MMAL_BUFFER_HEADER_FLAG_FRAME_END)
+            avpriv_atomic_int_add_and_fetch(&ctx->packets_buffered, -1);
+
         av_buffer_unref(&buffer->ref);
         av_free(buffer);
     }



More information about the ffmpeg-cvslog mailing list