glfilter: add parent meta to output buffer for input buffer

glfilter will unref input buffer after _transform() call immidiately,
but gpu may still reading input buffer for rendering because gl
api is executed async. Need hold reference for input buffer by
adding parent meta to output buffer.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4801>
This commit is contained in:
Haihua Hu 2023-06-13 10:30:16 +08:00 committed by GStreamer Marge Bot
parent e422a991f3
commit 5716ee3513

View file

@ -1033,6 +1033,14 @@ gst_gl_filter_transform (GstBaseTransform * bt, GstBuffer * inbuf,
if (out_sync_meta) if (out_sync_meta)
gst_gl_sync_meta_set_sync_point (out_sync_meta, context); gst_gl_sync_meta_set_sync_point (out_sync_meta, context);
/* since gl api is async operation, when return from transform()
* function, basetransform will unref input buffer immidiately,
* but gpu may still reading input buffer for rendering. Add parent
* buffer meta to hold one reference of inbuf, this can avoid this
* buffer sync problem.
*/
gst_buffer_add_parent_buffer_meta (outbuf, inbuf);
return ret ? GST_FLOW_OK : GST_FLOW_ERROR; return ret ? GST_FLOW_OK : GST_FLOW_ERROR;
} }