From: Hyunjun Ko Date: Wed, 8 Nov 2017 04:23:39 +0000 (+0900) Subject: vaapisink: implements gst_vaapisink_wayland_create_window_from_handle() X-Git-Tag: 1.19.3~503^2~81 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a5f37a21ec4c56e0237793c51f441c1de1c0bf08;p=platform%2Fupstream%2Fgstreamer.git vaapisink: implements gst_vaapisink_wayland_create_window_from_handle() Implements gst_vaapisink_wayland_create_window_from_handle() to support using external wl_surface. Part-of: --- diff --git a/gst/vaapi/gstvaapisink.c b/gst/vaapi/gstvaapisink.c index 92f9534..c1f56bf 100644 --- a/gst/vaapi/gstvaapisink.c +++ b/gst/vaapi/gstvaapisink.c @@ -561,11 +561,31 @@ gst_vaapisink_wayland_create_window (GstVaapiSink * sink, guint width, return TRUE; } +static gboolean +gst_vaapisink_wayland_create_window_from_handle (GstVaapiSink * sink, + guintptr window) +{ + GstVaapiDisplay *display; + + if (!gst_vaapisink_ensure_display (sink)) + return FALSE; + display = GST_VAAPI_PLUGIN_BASE_DISPLAY (sink); + + if (sink->window == NULL || (guintptr) sink->window != window) { + gst_vaapi_window_replace (&sink->window, NULL); + sink->window = gst_vaapi_window_wayland_new_with_surface (display, window); + } + + return sink->window != NULL; +} + static const inline GstVaapiSinkBackend * gst_vaapisink_backend_wayland (void) { static const GstVaapiSinkBackend GstVaapiSinkBackendWayland = { .create_window = gst_vaapisink_wayland_create_window, + .create_window_from_handle = + gst_vaapisink_wayland_create_window_from_handle, .render_surface = gst_vaapisink_render_surface, }; return &GstVaapiSinkBackendWayland;