[vlc-devel] [PATCH] opengl: interop: avoid generic interop with opaque
Alexandre Janniaux
ajanni at videolabs.io
Tue Nov 17 11:19:35 CET 2020
The generic interop is designed for CPU buffers which are not available
anyway with GPU buffers (zero planes available). Avoid loading the
generic interop in that case.
Refs #25256
---
modules/video_output/opengl/interop.c | 24 +++++++++++-------------
1 file changed, 11 insertions(+), 13 deletions(-)
diff --git a/modules/video_output/opengl/interop.c b/modules/video_output/opengl/interop.c
index 96d548519e..9abb2f802f 100644
--- a/modules/video_output/opengl/interop.c
+++ b/modules/video_output/opengl/interop.c
@@ -55,30 +55,28 @@ vlc_gl_interop_New(struct vlc_gl_t *gl, const struct vlc_gl_api *api,
vlc_object_delete(interop);
return NULL;
}
+
if (desc->plane_count == 0)
{
/* Opaque chroma: load a module to handle it */
interop->vctx = context;
interop->module = module_need_var(interop, "glinterop", "glinterop");
+ if (interop->module == NULL)
+ goto error;
}
-
- int ret;
- if (interop->module != NULL)
- ret = VLC_SUCCESS;
else
{
- /* Software chroma or gl hw converter failed: use a generic
- * converter */
- ret = opengl_interop_generic_init(interop, true);
- }
-
- if (ret != VLC_SUCCESS)
- {
- vlc_object_delete(interop);
- return NULL;
+ /* No opengl interop module found: use a generic interop. */
+ int ret = opengl_interop_generic_init(interop, true);
+ if (ret != VLC_SUCCESS)
+ goto error;
}
return interop;
+
+error:
+ vlc_object_delete(interop);
+ return NULL;
}
struct vlc_gl_interop *
--
2.29.2
More information about the vlc-devel
mailing list