Browse Source

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.
tags/n3.0
wm4 10 years ago
parent
commit
a55fbfa4c4
1 changed files with 3 additions and 0 deletions
  1. +3
    -0
      libavcodec/mmaldec.c

+ 3
- 0
libavcodec/mmaldec.c View File

@@ -160,6 +160,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);
}


Loading…
Cancel
Save