From: Benjamin Otte Date: Mon, 24 Apr 2023 20:22:07 +0000 (+0200) Subject: media-gstreamer: Port to GdkGLTextureBuilder X-Git-Tag: archive/raspbian/4.12.3+ds-1+rpi1~1^2^2^2~22^2~1^2~354^2~9 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=fa44d258d090cc44bb3fc6f21b4d9f32212ae2b8;p=gtk4.git media-gstreamer: Port to GdkGLTextureBuilder This is a rudimentary port that does not take advantage of all the cool new formats that we could support now. --- diff --git a/modules/media/gtkgstsink.c b/modules/media/gtkgstsink.c index 552c23c23d..f0a15390f7 100644 --- a/modules/media/gtkgstsink.c +++ b/modules/media/gtkgstsink.c @@ -287,6 +287,7 @@ gtk_gst_sink_texture_from_buffer (GtkGstSink *self, gst_video_frame_map (frame, &self->v_info, buffer, GST_MAP_READ | GST_MAP_GL)) { GstGLSyncMeta *sync_meta; + GdkGLTextureBuilder *builder; sync_meta = gst_buffer_get_gl_sync_meta (buffer); if (sync_meta) { @@ -296,12 +297,17 @@ gtk_gst_sink_texture_from_buffer (GtkGstSink *self, gst_gl_context_activate (self->gst_gdk_context, FALSE); } - texture = gdk_gl_texture_new (self->gdk_context, - *(guint *) frame->data[0], - frame->info.width, - frame->info.height, - (GDestroyNotify) video_frame_free, - frame); + builder = gdk_gl_texture_builder_new (); + gdk_gl_texture_builder_set_context (builder, self->gdk_context); + gdk_gl_texture_builder_set_id (builder, *(guint *) frame->data[0]); + gdk_gl_texture_builder_set_width (builder, frame->info.width); + gdk_gl_texture_builder_set_height (builder, frame->info.height); + + texture = gdk_gl_texture_builder_build (builder, + (GDestroyNotify) video_frame_free, + frame); + + g_object_unref (builder); *pixel_aspect_ratio = ((double) frame->info.par_n) / ((double) frame->info.par_d); }