mirror of https://git.ffmpeg.org/ffmpeg.git
Merge commit '65db4899fa8790049bec3af16ecdb75dd81051fd'
* commit '65db4899fa8790049bec3af16ecdb75dd81051fd': mmaldec: refactor to have more context per MMAL input buffer Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
This commit is contained in:
commit
827d4b7942
|
@ -188,8 +188,9 @@ static av_cold int ffmmal_close_decoder(AVCodecContext *avctx)
|
||||||
static void input_callback(MMAL_PORT_T *port, MMAL_BUFFER_HEADER_T *buffer)
|
static void input_callback(MMAL_PORT_T *port, MMAL_BUFFER_HEADER_T *buffer)
|
||||||
{
|
{
|
||||||
if (!buffer->cmd) {
|
if (!buffer->cmd) {
|
||||||
AVBufferRef *buf = buffer->user_data;
|
FFBufferEntry *entry = buffer->user_data;
|
||||||
av_buffer_unref(&buf);
|
av_buffer_unref(&entry->ref);
|
||||||
|
av_free(entry);
|
||||||
}
|
}
|
||||||
mmal_buffer_header_release(buffer);
|
mmal_buffer_header_release(buffer);
|
||||||
}
|
}
|
||||||
|
@ -535,19 +536,19 @@ static int ffmmal_fill_input_port(AVCodecContext *avctx)
|
||||||
mbuffer->flags = buffer->flags;
|
mbuffer->flags = buffer->flags;
|
||||||
mbuffer->data = buffer->data;
|
mbuffer->data = buffer->data;
|
||||||
mbuffer->length = buffer->length;
|
mbuffer->length = buffer->length;
|
||||||
mbuffer->user_data = buffer->ref;
|
mbuffer->user_data = buffer;
|
||||||
mbuffer->alloc_size = ctx->decoder->input[0]->buffer_size;
|
mbuffer->alloc_size = ctx->decoder->input[0]->buffer_size;
|
||||||
|
|
||||||
if ((status = mmal_port_send_buffer(ctx->decoder->input[0], mbuffer))) {
|
|
||||||
mmal_buffer_header_release(mbuffer);
|
|
||||||
av_buffer_unref(&buffer->ref);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Remove from start of the list
|
// Remove from start of the list
|
||||||
ctx->waiting_buffers = buffer->next;
|
ctx->waiting_buffers = buffer->next;
|
||||||
if (ctx->waiting_buffers_tail == buffer)
|
if (ctx->waiting_buffers_tail == buffer)
|
||||||
ctx->waiting_buffers_tail = NULL;
|
ctx->waiting_buffers_tail = NULL;
|
||||||
|
|
||||||
|
if ((status = mmal_port_send_buffer(ctx->decoder->input[0], mbuffer))) {
|
||||||
|
mmal_buffer_header_release(mbuffer);
|
||||||
|
av_buffer_unref(&buffer->ref);
|
||||||
av_free(buffer);
|
av_free(buffer);
|
||||||
|
}
|
||||||
|
|
||||||
if (status) {
|
if (status) {
|
||||||
av_log(avctx, AV_LOG_ERROR, "MMAL error %d when sending input\n", (int)status);
|
av_log(avctx, AV_LOG_ERROR, "MMAL error %d when sending input\n", (int)status);
|
||||||
|
|
Loading…
Reference in New Issue