regarding gst_buffer_add_parent_buffer_meta tags

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

regarding gst_buffer_add_parent_buffer_meta tags

Naveen.C
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/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel