|  |  | @@ -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) | 
		
	
		
			
			|  |  |  | { | 
		
	
		
			
			|  |  |  | if (!buffer->cmd) { | 
		
	
		
			
			|  |  |  | AVBufferRef *buf = buffer->user_data; | 
		
	
		
			
			|  |  |  | av_buffer_unref(&buf); | 
		
	
		
			
			|  |  |  | FFBufferEntry *entry = buffer->user_data; | 
		
	
		
			
			|  |  |  | av_buffer_unref(&entry->ref); | 
		
	
		
			
			|  |  |  | av_free(entry); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | mmal_buffer_header_release(buffer); | 
		
	
		
			
			|  |  |  | } | 
		
	
	
		
			
				|  |  | @@ -535,19 +536,19 @@ static int ffmmal_fill_input_port(AVCodecContext *avctx) | 
		
	
		
			
			|  |  |  | mbuffer->flags = buffer->flags; | 
		
	
		
			
			|  |  |  | mbuffer->data = buffer->data; | 
		
	
		
			
			|  |  |  | mbuffer->length = buffer->length; | 
		
	
		
			
			|  |  |  | mbuffer->user_data = buffer->ref; | 
		
	
		
			
			|  |  |  | mbuffer->user_data = buffer; | 
		
	
		
			
			|  |  |  | 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 | 
		
	
		
			
			|  |  |  | ctx->waiting_buffers = buffer->next; | 
		
	
		
			
			|  |  |  | if (ctx->waiting_buffers_tail == buffer) | 
		
	
		
			
			|  |  |  | ctx->waiting_buffers_tail = NULL; | 
		
	
		
			
			|  |  |  | av_free(buffer); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | if ((status = mmal_port_send_buffer(ctx->decoder->input[0], mbuffer))) { | 
		
	
		
			
			|  |  |  | mmal_buffer_header_release(mbuffer); | 
		
	
		
			
			|  |  |  | av_buffer_unref(&buffer->ref); | 
		
	
		
			
			|  |  |  | av_free(buffer); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | if (status) { | 
		
	
		
			
			|  |  |  | av_log(avctx, AV_LOG_ERROR, "MMAL error %d when sending input\n", (int)status); | 
		
	
	
		
			
				|  |  | 
 |