[prev in list] [next in list] [prev in thread] [next in thread] 

List:       gstreamer-devel
Subject:    Re: Wayland gtk windowing (glimagesink)
From:       Matthew Waters via gstreamer-devel <gstreamer-devel () lists ! freedesktop ! org>
Date:       2024-04-29 8:27:38
Message-ID: 0a9b7c5a-0f29-4ffb-8928-454cbabb9d73 () gmail ! com
[Download RAW message or body]

Wayland (and sometimes X11) also requires that the display connection to 
the display server be shared between all users of wayland protocol API.

Examples for GTK and GStreamer with glimagesink (videooverlay) can be 
found in 
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/tree/main/subprojects/gst-plugins-base/tests/examples/gl/gtk?ref_type=heads.


Cheers
-Matt

On 29/4/24 14:15, Gregoire Gentil via gstreamer-devel wrote:
> Thanks for helping. Still not working.
> 
> I have replaced glimagesink by waylandsink. If I don't call 
> "gst_video_overlay_set_window_handle", the video appears in the back. 
> So at least, waylandsink is working. But note that the video is 
> appearing without being part of any window at all.
> 
> If I call "gst_video_overlay_set_window_handle", the video doesn't 
> appear and doesn't play. I also receive the following message:
> 
> waylandsink cannot use an externally-supplied surface without an 
> externally-supplied display handle. Consider providing a display 
> handle from your application with GstContext
> 
> Am I missing another API call?
> 
> Grégoire
> 
> 
> On 4/28/24 20:28, Max Weng wrote:
> > 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 <gregoire@gentil.com 
> > <mailto:gregoire@gentil.com>> 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
> > > <gstreamer-devel@lists.freedesktop.org
> > <mailto:gstreamer-devel@lists.freedesktop.org>
> > > <mailto:gstreamer-devel@lists.freedesktop.org
> > <mailto:gstreamer-devel@lists.freedesktop.org>>> 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
> > > 
> > 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic