[vlc-devel] [PATCH 1/6] gl: vaapi: refactor VADisplay creation
Thomas Guillem
thomas at gllm.fr
Sun Feb 24 12:27:03 CET 2019
No functional changes.
---
modules/video_output/opengl/converter_vaapi.c | 59 ++++++++-----------
1 file changed, 26 insertions(+), 33 deletions(-)
diff --git a/modules/video_output/opengl/converter_vaapi.c b/modules/video_output/opengl/converter_vaapi.c
index a2f8f34dd8..f4de838b86 100644
--- a/modules/video_output/opengl/converter_vaapi.c
+++ b/modules/video_output/opengl/converter_vaapi.c
@@ -347,51 +347,46 @@ x11_native_destroy_cb(VANativeDisplay native)
XCloseDisplay(native);
}
-static int
-x11_init_vaapi_instance(opengl_tex_converter_t *tc, struct priv *priv)
+static struct vlc_vaapi_instance *
+x11_init_vaapi_instance(vout_window_t *window, VADisplay *vadpyp)
{
- if (!vlc_xlib_init(VLC_OBJECT(tc->gl)))
- return VLC_EGENERIC;
+ if (!vlc_xlib_init(VLC_OBJECT(window)))
+ return NULL;
- Display *x11dpy = XOpenDisplay(tc->gl->surface->display.x11);
+ Display *x11dpy = XOpenDisplay(window->display.x11);
if (x11dpy == NULL)
- return VLC_EGENERIC;
+ return NULL;
- priv->vadpy = vaGetDisplay(x11dpy);
- if (priv->vadpy == NULL)
+ VADisplay vadpy = *vadpyp = vaGetDisplay(x11dpy);
+ if (vadpy == NULL)
{
x11_native_destroy_cb(x11dpy);
- return VLC_EGENERIC;
+ return NULL;
}
- priv->vainst = vlc_vaapi_InitializeInstance(VLC_OBJECT(tc->gl), priv->vadpy,
- x11dpy, x11_native_destroy_cb);
- return priv->vainst != NULL ? VLC_SUCCESS : VLC_EGENERIC;
+ return vlc_vaapi_InitializeInstance(VLC_OBJECT(window), vadpy,
+ x11dpy, x11_native_destroy_cb);
}
#endif
#ifdef HAVE_VA_DRM
-static int
-drm_init_vaapi_instance(opengl_tex_converter_t *tc, struct priv *priv)
+static struct vlc_vaapi_instance *
+drm_init_vaapi_instance(vout_window_t *window, VADisplay *vadpyp)
{
- priv->vainst =
- vlc_vaapi_InitializeInstanceDRM(VLC_OBJECT(tc->gl), vaGetDisplayDRM,
- &priv->vadpy, NULL);
- return priv->vainst != NULL ? VLC_SUCCESS : VLC_EGENERIC;
+ return vlc_vaapi_InitializeInstanceDRM(VLC_OBJECT(window), vaGetDisplayDRM,
+ vadpyp, NULL);
}
#endif
#ifdef HAVE_VA_WL
-static int
-wl_init_vaapi_instance(opengl_tex_converter_t *tc, struct priv *priv)
+static struct vlc_vaapi_instance *
+wl_init_vaapi_instance(vout_window_t *window, VADisplay *vadpyp)
{
- priv->vadpy = vaGetDisplayWl(tc->gl->surface->display.wl);
- if (priv->vadpy == NULL)
- return VLC_EGENERIC;
+ VADisplay vadpy = *vadpyp = vaGetDisplayWl(window->display.wl);
+ if (vadpy == NULL)
+ return NULL;
- priv->vainst = vlc_vaapi_InitializeInstance(VLC_OBJECT(tc->gl), priv->vadpy,
- NULL, NULL);
- return priv->vainst != NULL ? VLC_SUCCESS : VLC_EGENERIC;
+ return vlc_vaapi_InitializeInstance(VLC_OBJECT(window), vadpy, NULL, NULL);
}
#endif
@@ -444,23 +439,21 @@ Open(vlc_object_t *obj)
if (priv->glEGLImageTargetTexture2DOES == NULL)
goto error;
- int ret = VLC_EGENERIC;
#if defined (HAVE_VA_X11)
if (tc->gl->surface->type == VOUT_WINDOW_TYPE_XID)
- ret = x11_init_vaapi_instance(tc, priv);
+ priv->vainst = x11_init_vaapi_instance(tc->gl->surface, &priv->vadpy);
#elif defined(HAVE_VA_WL)
if (tc->gl->surface->type == VOUT_WINDOW_TYPE_WAYLAND)
- ret = wl_init_vaapi_instance(tc, priv);
+ priv->vainst = wl_init_vaapi_instance(tc->gl->surface, &priv->vadpy);
#elif defined (HAVE_VA_DRM)
- ret = drm_init_vaapi_instance(tc, priv);
+ priv->vainst = drm_init_vaapi_instance(tc->gl->surface, &priv->vadpy);
#else
# error need X11/WL/DRM support
#endif
- if (ret != VLC_SUCCESS)
+ if (!priv->vainst)
goto error;
-
- assert(priv->vadpy != NULL && priv->vainst != NULL);
+ assert(priv->vadpy != NULL);
if (tc_va_check_interop_blacklist(tc, priv->vadpy))
goto error;
--
2.20.1
More information about the vlc-devel
mailing list