vlc | branch: master | Thomas Guillem <[email protected]> | Fri Jul 21 11:37:42 2017 +0200| [c26437784aedab329fe278129870fc173aa23b8c] | committer: Thomas Guillem
gl: favor glx for vdpau chromas When using X11, favor glx instead of egl in order to use vdpau interop. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=c26437784aedab329fe278129870fc173aa23b8c --- modules/video_output/opengl/display.c | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/modules/video_output/opengl/display.c b/modules/video_output/opengl/display.c index 063873372b..54d23c0d28 100644 --- a/modules/video_output/opengl/display.c +++ b/modules/video_output/opengl/display.c @@ -109,7 +109,33 @@ static int Open (vlc_object_t *obj) goto error; } - sys->gl = vlc_gl_Create (surface, API, "$" MODULE_VARNAME); + const char *gl_name = "$" MODULE_VARNAME; + + /* VDPAU GL interop works only with GLX. Override the "gl" option to force + * it. */ +#ifndef USE_OPENGL_ES2 + if (surface->type == VOUT_WINDOW_TYPE_XID) + { + switch (vd->fmt.i_chroma) + { + case VLC_CODEC_VDPAU_VIDEO_444: + case VLC_CODEC_VDPAU_VIDEO_422: + case VLC_CODEC_VDPAU_VIDEO_420: + { + /* Force the option only if it was not previously set */ + char *str = var_InheritString(surface, MODULE_VARNAME); + if (str == NULL) + gl_name = "glx"; + free(str); + break; + } + default: + break; + } + } +#endif + + sys->gl = vlc_gl_Create (surface, API, gl_name); if (sys->gl == NULL) goto error; _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
