[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