From 46aaad78c3cf03d43e7c9ca1d4a8b8a71fb0527d Mon Sep 17 00:00:00 2001 From: wm4 Date: Thu, 14 Apr 2016 12:21:21 +0200 Subject: 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 --- libavcodec/mmaldec.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'libavcodec') diff --git a/libavcodec/mmaldec.c b/libavcodec/mmaldec.c index 6015e54867..77838dc509 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); } -- cgit v1.2.3