Render Gstreamer video on Wayland subsurface.

Nicolas Dufresne nicolas at ndufresne.ca
Thu Jun 9 16:34:40 UTC 2022


Le mercredi 08 juin 2022 à 07:23 +0000, Kishan Dudhatra a écrit :
> Hi,
> 
> Thank you for the replay , however I was trying the same approach using gst-
> overlay.
> 
> I'veattachedthecode for reference, executing this does not give favorable
> response (actual result attached in the image below).
> 
> Can you advice on the missing part ?

Perhaps try the example:

https://gitlab.freedesktop.org/gstreamer/gstreamer/-/tree/main/subprojects/gst-plugins-bad/tests/examples/waylandsink

And try to see what your app is doing different ?

> >     static GstBusSyncReply
> >     bus_sync_handler (GstBus * bus, GstMessage * message, gpointer
> > user_data)
> >     {
> >       DemoApp *app = user_data;
> > 
> >       if (gst_is_wayland_display_handle_need_context_message (message)) {
> >         app->context = gst_wayland_display_handle_context_new (app-
> > >display);
> >         gst_element_set_context (GST_ELEMENT (GST_MESSAGE_SRC (message)),
> >             app->context);
> > 
> >         goto drop;
> >       } else if (gst_is_wayland_display_handle_need_context_message
> > (message)) {
> >         gst_video_overlay_set_window_handle (GST_VIDEO_OVERLAY
> > (GST_MESSAGE_SRC
> >                 (message)), (guintptr) subsurface1);
> >         gst_video_overlay_set_render_rectangle (GST_VIDEO_OVERLAY
> > (GST_MESSAGE_SRC
> >                 (message)), 0, 0, 200, 200);
> >         wl_surface_commit (subsurface1);
> >         printf ("commiting surface from bus sync\n");
> >         goto drop;
> >       }
> >       return GST_BUS_PASS;
> > 
> > 
> 
> Appreciate if any (offline?) hacks are also available. Any links ?
> 
> Thanks, in advance.
> 
> Wecurrently have mainsurface (black), subsurface(silver), and gstreamer Video.
> 
> Themain surface isrendered in arandom location, thesubsurfaceis rendered ina
> fixedlocation relativeto the mainsurface, andthe GstreamerVideo rendered out
> ofthe mainsurface. 
> 
> 
> From: Nicolas Dufresne <nicolas at ndufresne.ca>
> Sent: Wednesday, June 8, 2022 5:13 AM
> To: Discussion of the development of and with GStreamer
> <gstreamer-devel at lists.freedesktop.org>
> Cc: gstreamer-embedded at lists.freedesktop.org
> <gstreamer-embedded at lists.freedesktop.org>; Kishan Dudhatra
> <kishan.dudhatra at sisignals.com>
> Subject: Re: Render Gstreamer video on Wayland subsurface. 
> 
> 
> Le mar. 7 juin 2022, 06 h 30, Kishan Dudhatra via gstreamer-devel
> <gstreamer-devel at lists.freedesktop.org> a écrit :
> > hello;
> > 
> > issue posted : gst-plugins-bad
> > 
> > I want to render GStreamer video on Wayland subsurface and using
> > waylandsink.
> > 
> > Currently i have created 1.main surface 2.Subsurface as shown in attached
> > image.
> > 
> > I want to render the GStreamer video on subsurface.
> 
> As subsurface have no framebuffer or size, this is pretty inconvenient way. I
> would rather suggest to use the existing mechanism. through the sync message
> handler reply to the message the query a window handle. Pass your top level
> surface handle, and position that using
> gst_video_overlay_set_render_rectangle().
> 
> > 
> > I checked the Waylandsink source and discovered that it creates the surface
> > itself and renders video on that surface. So, what I'm trying to figure out
> > is how to render video on my own applications subsurface.
> > 
> > 



More information about the gstreamer-devel mailing list