Le lundi 29 avril 2024 à 10:12 +0800, Max Weng via gstreamer-devel a écrit :
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"

gtkwaylandsink will give you a widget to place into your GTK3 app.

Nicolas


On Mon, 29 Apr 2024 at 06:18, Gregoire Gentil via gstreamer-devel <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