mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-10-29 05:40:27 -04:00
gst: pool: add explicit remove_buffer method
This is for readability and better control. Make sure we clear out all pointers to anything related to the released pw_buffer, including all the memories.
This commit is contained in:
parent
40fd2553ea
commit
1e2618f314
3 changed files with 18 additions and 5 deletions
|
|
@ -119,6 +119,21 @@ void gst_pipewire_pool_wrap_buffer (GstPipeWirePool *pool, struct pw_buffer *b)
|
|||
b->user_data = data;
|
||||
}
|
||||
|
||||
void gst_pipewire_pool_remove_buffer (GstPipeWirePool *pool, struct pw_buffer *b)
|
||||
{
|
||||
GstPipeWirePoolData *data = b->user_data;
|
||||
|
||||
data->b = NULL;
|
||||
data->header = NULL;
|
||||
data->crop = NULL;
|
||||
data->videotransform = NULL;
|
||||
|
||||
gst_buffer_remove_all_memory (data->buf);
|
||||
|
||||
/* this will also destroy the pool data, if this is the last reference */
|
||||
gst_clear_buffer (&data->buf);
|
||||
}
|
||||
|
||||
GstPipeWirePoolData *gst_pipewire_pool_get_data (GstBuffer *buffer)
|
||||
{
|
||||
return gst_mini_object_get_qdata (GST_MINI_OBJECT_CAST (buffer), pool_data_quark);
|
||||
|
|
|
|||
|
|
@ -66,6 +66,7 @@ GType gst_pipewire_pool_get_type (void);
|
|||
GstPipeWirePool * gst_pipewire_pool_new (void);
|
||||
|
||||
void gst_pipewire_pool_wrap_buffer (GstPipeWirePool *pool, struct pw_buffer *buffer);
|
||||
void gst_pipewire_pool_remove_buffer (GstPipeWirePool *pool, struct pw_buffer *buffer);
|
||||
|
||||
GstPipeWirePoolData *gst_pipewire_pool_get_data (GstBuffer *buffer);
|
||||
|
||||
|
|
|
|||
|
|
@ -472,11 +472,8 @@ static void
|
|||
on_remove_buffer (void *_data, struct pw_buffer *b)
|
||||
{
|
||||
GstPipeWireSink *pwsink = _data;
|
||||
GstPipeWirePoolData *data = b->user_data;
|
||||
|
||||
GST_LOG_OBJECT (pwsink, "remove buffer");
|
||||
|
||||
gst_buffer_unref (data->buf);
|
||||
GST_DEBUG_OBJECT (pwsink, "remove pw_buffer %p", b);
|
||||
gst_pipewire_pool_remove_buffer (pwsink->pool, b);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue