From 4d534ad8e8fc0fdad2b1879bd2a02ce3939e7f8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Tue, 25 Sep 2018 16:56:24 +0300 Subject: [PATCH] glviewconvert: Copy composition meta from the primary buffer to both outputs Without this, glviewconvert (and thus glimagesink) will drop all overlay composition metas. --- gst-libs/gst/gl/gstglviewconvert.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/gst-libs/gst/gl/gstglviewconvert.c b/gst-libs/gst/gl/gstglviewconvert.c index 7e1e70ddb0..35f380c89f 100644 --- a/gst-libs/gst/gl/gstglviewconvert.c +++ b/gst-libs/gst/gl/gstglviewconvert.c @@ -2354,18 +2354,38 @@ gst_gl_view_convert_get_output (GstGLViewConvert * viewconvert, outbuf = priv->primary_out; if (outbuf) { + GstVideoOverlayCompositionMeta *composition_meta; + gst_buffer_copy_into (outbuf, priv->primary_in, GST_BUFFER_COPY_FLAGS | GST_BUFFER_COPY_TIMESTAMPS, 0, -1); GST_BUFFER_FLAG_SET (outbuf, GST_VIDEO_BUFFER_FLAG_FIRST_IN_BUNDLE | GST_VIDEO_BUFFER_FLAG_MULTIPLE_VIEW); + + composition_meta = + gst_buffer_get_video_overlay_composition_meta (priv->primary_in); + if (composition_meta) { + GST_DEBUG ("found video overlay composition meta, applying on output."); + gst_buffer_add_video_overlay_composition_meta + (outbuf, composition_meta->overlay); + } } if (priv->auxilliary_out) { + GstVideoOverlayCompositionMeta *composition_meta; + gst_buffer_copy_into (priv->auxilliary_out, priv->primary_out, GST_BUFFER_COPY_FLAGS, 0, -1); GST_BUFFER_FLAG_UNSET (priv->auxilliary_out, GST_VIDEO_BUFFER_FLAG_FIRST_IN_BUNDLE); + + composition_meta = + gst_buffer_get_video_overlay_composition_meta (priv->primary_out); + if (composition_meta) { + GST_DEBUG ("found video overlay composition meta, applying on output."); + gst_buffer_add_video_overlay_composition_meta + (priv->auxilliary_out, composition_meta->overlay); + } } priv->primary_out = NULL;