mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-10 02:40:11 +00:00
media: support OpenGL-based video playback on macOS
If we have GStreamer on macOS we likely have support for CGL to get an OpenGL context we can use. This provides the missing pieces to get accelerated video playback in gtk4-widget-factory working.
This commit is contained in:
parent
9c1a66518b
commit
7ec9c5181d
@ -48,6 +48,10 @@
|
||||
#include <gst/gl/egl/gstgldisplay_egl.h>
|
||||
#endif
|
||||
|
||||
#ifdef GDK_WINDOWING_MACOS
|
||||
#include <gdk/macos/gdkmacos.h>
|
||||
#endif
|
||||
|
||||
#include <gst/gl/gstglfuncs.h>
|
||||
|
||||
enum {
|
||||
@ -497,6 +501,29 @@ gtk_gst_sink_initialize_gl (GtkGstSink *self)
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#if defined(GST_GL_HAVE_PLATFORM_CGL) && defined(GDK_WINDOWING_MACOS)
|
||||
if (GDK_IS_MACOS_DISPLAY (display))
|
||||
{
|
||||
platform = GST_GL_PLATFORM_CGL;
|
||||
|
||||
GST_DEBUG_OBJECT (self, "got CGL on macOS!");
|
||||
|
||||
gl_api = gst_gl_context_get_current_gl_api (platform, NULL, NULL);
|
||||
gl_handle = gst_gl_context_get_current_gl_context (platform);
|
||||
|
||||
if (gl_handle)
|
||||
{
|
||||
self->gst_display = gst_gl_display_new ();
|
||||
self->gst_app_context = gst_gl_context_new_wrapped (self->gst_display, gl_handle, platform, gl_api);
|
||||
}
|
||||
else
|
||||
{
|
||||
GST_ERROR_OBJECT (self, "Failed to get handle from GdkGLContext, not using macOS CGL");
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#if GST_GL_HAVE_WINDOW_WIN32 && (GST_GL_HAVE_PLATFORM_WGL || GST_GL_HAVE_PLATFORM_EGL) && defined (GDK_WINDOWING_WIN32)
|
||||
if (GDK_IS_WIN32_DISPLAY (display))
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user