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

List:       gstreamer-devel
Subject:    Re: Wayland gtk windowing (glimagesink)
From:       Gregoire Gentil via gstreamer-devel <gstreamer-devel () lists ! freedesktop ! org>
Date:       2024-04-29 2:51:51
Message-ID: 3a5e54f8-6412-4e63-9f85-9ee24773e17d () gentil ! com
[Download RAW message or body]

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>> 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