Re: Wayland gtk windowing (glimagesink)
Max Weng via gstreamer-devel <[email protected]> Mon, 29 Apr 2024 11:28:11 +0800
| Newsgroups | gmane.comp.video.gstreamer.devel |
|---|---|
| Message-ID | <CACWdWrYmYw_qbzfb-0vqHL=nxS2Y+hi6unPaXA7ApDzu01YC0Q@mail.gmail.com> |
I understand your situation better now. :) I've noticed that the video indeed appears in a separate window with other sinks as well. It seems that in my experience, only waylandsink consistently integrates directly into the GTK window without issues. On Mon, 29 Apr 2024 at 10:51, Gregoire Gentil <[email protected]> wrote: > I could have been more precise: the glimageslink pipeline does work and > the video appears in a separated window if I don't link it to the window > with the code mentioned below. What I want to do is to insert the video > inside the gtk window. > > Also glimagesink has the unique advantage to work on both wayland and > non-wayland systems, > > Grégoire > > > > > On 4/28/24 19:12, Max Weng wrote: > > try use waylandsink? > > > > this work for me "rtspsrc name=rtspsrc location={url} protocols=tcp > > latency=10 max-rtcp-rtp-time-diff=10 ! errorignore ! rtph265depay > > name=depay ! h265parse ! avdec_h265 name=avdec ! videoconvert ! > > video/x-raw, format=RGBA ! waylandsink name=sink" > > > > On Mon, 29 Apr 2024 at 06:18, Gregoire Gentil via gstreamer-devel > > <[email protected] > > <mailto:[email protected]>> wrote: > > > > Hello, > > > > I had an application with a gtk+-3.0 window and a pipeline "... ! > > imagesink". The video is rendered inside the gtk window. > > > > I was doing: > > static void realize_cb(GtkWidget *widget, CustomData *data) { > > GdkWindow *window = gtk_widget_get_window(widget); > > data->window_handle = GDK_WINDOW_XID(window); > > > > and then: > > > > static GstBusSyncReply bus_sync_handler(GstBus * bus, GstMessage * > > message, CustomData *data) { > > > gst_video_overlay_set_window_handle(GST_VIDEO_OVERLAY(data->video_sink), > > data->window_handle); > > > > Everything was working fine. I want now to support wayland system. > > > > Pipeline becomes: "... ! glimagesink". > > > > in the realize_cb function, I have now: > > GdkWindow *window = gtk_widget_get_window(widget); > > data->window_handle = > > (guintptr)gdk_wayland_window_get_wl_surface(window); > > > > > > At run-time, I'm getting hundreds of: > > "GStreamer-GL-CRITICAL **: 14:06:48.263: Failed to flush Wayland > > connection" > > > > What am I doing wrong? Many thanks in advance for any hint, > > > > Grégoire > > >