regarding gst_buffer_add_parent_buffer_meta tags

Naveen.C navi.chees at gmail.com
Sat Jul 11 08:26:24 UTC 2020


Dear Gst community,

As per documentation, GstParentBufferMeta is related to child buffer using
GstMemory of parent buffer.
Please help me to understand why we do not have  GST_META_TAG_MEMORY_STR in
tags of gst_parent_buffer_meta_api_get_type.

Lets take example pipeline : filter1 -> filter -> filter3

*filter1 : *
filter1_out= gst_buffer_make_writable (filter1_in) // filter1_in is not
writable
gst_buffer_add_parent_buffer_meta (filter1_out, filter1_in);
gst_pad_push (writable_buffer)
Now, filter1_out & filter1_in is using same GstMemory (i.e. filter1_in's
GstMemory)

*filter2 :*
creates new output buffer filter2_out
copies metadata using gst_buffer_copy_into (filter2_out, filter1_out,
GST_BUFFER_COPY_META, 0, -1); // Now GstParentBufferMeta is copied and
reference count of filter1_in is incremented
unrefs filter1_out 

*filter3 : *
use filter2_out and does gst_buffer_unref (filter2_out)

As per above flow, filter1_in buffer is active still filter2_out is unreffed
in filter3 element. Ideally, filter1_in buffer should be freed along with
filter2_out buffer in filter2 element.

In my opinion by adding GST_META_TAG_MEMORY_STR in tags of
gst_parent_buffer_meta_api_get_type() API, filter1_in buffer can be
destroyed in filter2 element instead of filter3 element.

Best Regards,
Naveen.



--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/


More information about the gstreamer-devel mailing list