static gboolean gst_vaapi_display_egl_bind_display (GstVaapiDisplay * base_display, gpointer native_params) { GstVaapiDisplay *native_display = NULL; GstVaapiDisplayEGL *display = GST_VAAPI_DISPLAY_EGL (base_display); EglDisplay *egl_display; const InitParams *params = (InitParams *) native_params; if (params->display) { native_display = params->display; } else { #if USE_X11 native_display = gst_vaapi_display_x11_new (NULL); #endif #if USE_WAYLAND if (!native_display) native_display = gst_vaapi_display_wayland_new (NULL); #endif } if (!native_display) return FALSE; gst_vaapi_display_replace (&display->display, native_display); egl_display = egl_display_new (GST_VAAPI_DISPLAY_NATIVE (display->display)); if (!egl_display) return FALSE; egl_object_replace (&display->egl_display, egl_display); egl_object_unref (egl_display); display->gles_version = params->gles_version; return TRUE; }
static gboolean gst_vaapi_display_egl_bind_display (GstVaapiDisplay * base_display, gpointer native_params) { GstVaapiDisplay *native_vaapi_display; GstVaapiDisplayEGL *display = GST_VAAPI_DISPLAY_EGL (base_display); EglDisplay *egl_display; EGLDisplay *native_egl_display; guint gl_platform = EGL_PLATFORM_UNKNOWN; const InitParams *params = (InitParams *) native_params; GstVaapiDisplayPrivate *const priv = GST_VAAPI_DISPLAY_GET_PRIVATE (display); native_vaapi_display = params->display; native_egl_display = params->gl_display; if (!native_vaapi_display) { #if USE_X11 if (params->display_type == GST_VAAPI_DISPLAY_TYPE_ANY || params->display_type == GST_VAAPI_DISPLAY_TYPE_X11 || params->display_type == GST_VAAPI_DISPLAY_TYPE_EGL) native_vaapi_display = gst_vaapi_display_x11_new (NULL); #endif #if USE_WAYLAND if (!native_vaapi_display) native_vaapi_display = gst_vaapi_display_wayland_new (NULL); #endif } else { /* thus it could be assigned to parent */ gst_object_ref (native_vaapi_display); } if (!native_vaapi_display) return FALSE; gst_vaapi_display_replace (&display->display, native_vaapi_display); priv->parent = native_vaapi_display; switch (GST_VAAPI_DISPLAY_GET_CLASS_TYPE (display->display)) { case GST_VAAPI_DISPLAY_TYPE_X11: gl_platform = EGL_PLATFORM_X11; break; case GST_VAAPI_DISPLAY_TYPE_WAYLAND: gl_platform = EGL_PLATFORM_WAYLAND; break; default: break; } if (native_egl_display) { egl_display = egl_display_new_wrapped (native_egl_display); } else { egl_display = egl_display_new (GST_VAAPI_DISPLAY_NATIVE (display->display), gl_platform); } if (!egl_display) return FALSE; egl_object_replace (&display->egl_display, egl_display); egl_object_unref (egl_display); display->gles_version = params->gles_version; return TRUE; }