[vlc-commits] [Git][videolan/vlc][master] 5 commits: nvdec: use FFNVCODEC_CFLAGS

Steve Lhomme (@robUx4) gitlab at videolan.org
Mon May 12 06:17:18 UTC 2025



Steve Lhomme pushed to branch master at VideoLAN / VLC


Commits:
8747503d by Thomas Guillem at 2025-05-12T06:01:01+00:00
nvdec: use FFNVCODEC_CFLAGS

- - - - -
d4cbf045 by Thomas Guillem at 2025-05-12T06:01:01+00:00
nvdec_gl: specify tex_target

Fixes GL assert when using nvdec + gl interop.

- - - - -
d92a35e7 by Thomas Guillem at 2025-05-12T06:01:01+00:00
nvdec_gl: add missing error case

- - - - -
5ebeac18 by Thomas Guillem at 2025-05-12T06:01:01+00:00
nvdec_gl: fix upside-down rendering

- - - - -
f317f0f8 by Thomas Guillem at 2025-05-12T06:01:01+00:00
opengl: extend VDPAU GLX hack for NVDEC

- - - - -


3 changed files:

- modules/hw/nvdec/Makefile.am
- modules/hw/nvdec/nvdec_gl.c
- modules/video_output/opengl/display.c


Changes:

=====================================
modules/hw/nvdec/Makefile.am
=====================================
@@ -4,6 +4,7 @@ nvdec_LTLIBRARIES =
 libnvdec_plugin_la_SOURCES = \
 	hw/nvdec/nvdec.c hw/nvdec/nvdec_fmt.h hw/nvdec/nvdec_priv.h \
 	hw/nvdec/hw_pool.c hw/nvdec/hw_pool.h
+libnvdec_plugin_la_CFLAGS = $(AM_CFLAGS) $(FFNVCODEC_CFLAGS)
 libnvdec_plugin_la_LIBADD = $(LIBDL) libvlc_hxxxhelper.la
 if HAVE_NVDEC
 nvdec_LTLIBRARIES += libnvdec_plugin.la
@@ -11,12 +12,14 @@ endif
 
 libnvdec_chroma_plugin_la_SOURCES = hw/nvdec/chroma.c \
 	hw/nvdec/nvdec_fmt.h hw/nvdec/nvdec_priv.h
+libnvdec_chroma_plugin_la_CFLAGS = $(AM_CFLAGS) $(FFNVCODEC_CFLAGS)
 if HAVE_NVDEC
 nvdec_LTLIBRARIES += libnvdec_chroma_plugin.la
 endif
 
 libglinterop_nvdec_plugin_la_SOURCES = hw/nvdec/nvdec_gl.c \
 	video_output/opengl/interop.h hw/nvdec/nvdec_fmt.h hw/nvdec/nvdec_priv.h
+libglinterop_nvdec_plugin_la_CFLAGS = $(AM_CFLAGS) $(FFNVCODEC_CFLAGS)
 libglinterop_nvdec_plugin_la_LIBADD = $(LIBDL)
 if HAVE_GL
 if HAVE_NVDEC


=====================================
modules/hw/nvdec/nvdec_gl.c
=====================================
@@ -198,9 +198,14 @@ static int Open(struct vlc_gl_interop *interop)
         result = CALL_CUDA(cuCtxCreate, &p_sys->cuConverterCtx, 0, cuConverterDevice);
         if (result != VLC_SUCCESS)
         {
+            vlc_decoder_device_Release(device);
+            return result;
         }
     }
 
+    /* The pictures are uploaded upside-down */
+    video_format_TransformBy(&interop->fmt_out, TRANSFORM_VFLIP);
+
     vlc_fourcc_t render_chroma = NVDECToVlcChroma(interop->fmt_in.i_chroma);
     switch (render_chroma)
     {
@@ -267,6 +272,7 @@ static int Open(struct vlc_gl_interop *interop)
             break;
     }
 
+    interop->tex_target = GL_TEXTURE_2D;
     interop->fmt_out.i_chroma = render_chroma;
     interop->fmt_out.space = interop->fmt_in.space;
 


=====================================
modules/video_output/opengl/display.c
=====================================
@@ -219,7 +219,7 @@ static int Open(vout_display_t *vd,
     vlc_window_t *surface = vd->cfg->window;
     char *gl_name = var_InheritString(surface, MODULE_VARNAME);
 
-    /* VDPAU GL interop works only with GLX. Override the "gl" option to force
+    /* VDPAU/NVDEC GL interop works only with GLX. Override the "gl" option to force
      * it. */
 #ifndef USE_OPENGL_ES2
     if (surface->type == VLC_WINDOW_TYPE_XID)
@@ -227,6 +227,11 @@ static int Open(vout_display_t *vd,
         switch (vd->source->i_chroma)
         {
             case VLC_CODEC_VDPAU_VIDEO:
+            case VLC_CODEC_NVDEC_OPAQUE:
+            case VLC_CODEC_NVDEC_OPAQUE_10B:
+            case VLC_CODEC_NVDEC_OPAQUE_16B:
+            case VLC_CODEC_NVDEC_OPAQUE_444:
+            case VLC_CODEC_NVDEC_OPAQUE_444_16B:
             {
                 /* Force the option only if it was not previously set */
                 if (gl_name == NULL || gl_name[0] == 0



View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/005aa763e97ee0c88a4fbf57d6a0060b17ce47bd...f317f0f8dd10e86c6796f607c0645fc062151650

-- 
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/005aa763e97ee0c88a4fbf57d6a0060b17ce47bd...f317f0f8dd10e86c6796f607c0645fc062151650
You're receiving this email because of your account on code.videolan.org.


VideoLAN code repository instance


More information about the vlc-commits mailing list