Commit 8bd0fc04 authored by Julian Scheel's avatar Julian Scheel Committed by Jean-Baptiste Kempf

mmal/deinterlace: Clear data from buffer header before release

The data attached to the output port headers is not owned by the deinterlace
filter but by the vout and only temporarily attached to the codecs buffers. To
avoid refcount issues within the mmal core clear the data field before
releasing the buffers.
Signed-off-by: default avatarJulian Scheel <julian@jusst.de>
Signed-off-by: default avatarJean-Baptiste Kempf <jb@videolan.org>
parent 5011389f
...@@ -522,8 +522,10 @@ static void input_port_cb(MMAL_PORT_T *port, MMAL_BUFFER_HEADER_T *buffer) ...@@ -522,8 +522,10 @@ static void input_port_cb(MMAL_PORT_T *port, MMAL_BUFFER_HEADER_T *buffer)
filter_t *filter = (filter_t *)port->userdata; filter_t *filter = (filter_t *)port->userdata;
filter_sys_t *sys = filter->p_sys; filter_sys_t *sys = filter->p_sys;
buffer->user_data = NULL;
vlc_mutex_lock(&sys->buffer_cond_mutex); vlc_mutex_lock(&sys->buffer_cond_mutex);
buffer->user_data = NULL;
buffer->alloc_size = 0;
buffer->data = NULL;
mmal_buffer_header_release(buffer); mmal_buffer_header_release(buffer);
if (picture) if (picture)
picture_Release(picture); picture_Release(picture);
...@@ -547,6 +549,10 @@ static void output_port_cb(MMAL_PORT_T *port, MMAL_BUFFER_HEADER_T *buffer) ...@@ -547,6 +549,10 @@ static void output_port_cb(MMAL_PORT_T *port, MMAL_BUFFER_HEADER_T *buffer)
picture = (picture_t *)buffer->user_data; picture = (picture_t *)buffer->user_data;
picture_Release(picture); picture_Release(picture);
buffer->user_data = NULL; buffer->user_data = NULL;
buffer->alloc_size = 0;
buffer->data = NULL;
mmal_buffer_header_reset(buffer);
mmal_buffer_header_release(buffer);
} }
atomic_fetch_sub(&sys->output_in_transit, 1); atomic_fetch_sub(&sys->output_in_transit, 1);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment