[vlc-commits] nvdec: clean CudaCall error check

Steve Lhomme git at videolan.org
Wed Sep 18 11:26:48 CEST 2019


vlc | branch: master | Steve Lhomme <robux4 at ycbcr.xyz> | Wed Sep 18 09:57:12 2019 +0200| [aab3940cc426c73399685bb4f1417698bdacf637] | committer: Steve Lhomme

nvdec: clean CudaCall error check

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=aab3940cc426c73399685bb4f1417698bdacf637
---

 modules/hw/nvdec/chroma.c    | 14 +-------------
 modules/hw/nvdec/nvdec.c     | 19 +++----------------
 modules/hw/nvdec/nvdec_fmt.h | 12 ++++++++++++
 modules/hw/nvdec/nvdec_gl.c  | 18 ++----------------
 4 files changed, 18 insertions(+), 45 deletions(-)

diff --git a/modules/hw/nvdec/chroma.c b/modules/hw/nvdec/chroma.c
index b963d6602b..e41413dd39 100644
--- a/modules/hw/nvdec/chroma.c
+++ b/modules/hw/nvdec/chroma.c
@@ -47,19 +47,7 @@ typedef struct
     vlc_decoder_device *device;
 } nvdec_filter_sys_t;
 
-static inline int CudaCall(filter_t *p_filter, decoder_device_nvdec_t *devsys, CUresult result, const char *psz_func)
-{
-    if (unlikely(result != CUDA_SUCCESS)) {
-        const char *psz_err, *psz_err_str;
-        devsys->cudaFunctions->cuGetErrorName(result, &psz_err);
-        devsys->cudaFunctions->cuGetErrorString(result, &psz_err_str);
-        msg_Err(p_filter, "%s failed: %s (%s)", psz_func, psz_err_str, psz_err);
-        return VLC_EGENERIC;
-    }
-    return VLC_SUCCESS;
-}
-
-#define CALL_CUDA(func, ...) CudaCall(p_filter, devsys, devsys->cudaFunctions->func(__VA_ARGS__), #func)
+#define CALL_CUDA(func, ...) CudaCheckErr(VLC_OBJECT(p_filter), devsys->cudaFunctions, devsys->cudaFunctions->func(__VA_ARGS__), #func)
 
 
 static picture_t * FilterCUDAToCPU( filter_t *p_filter, picture_t *src )
diff --git a/modules/hw/nvdec/nvdec.c b/modules/hw/nvdec/nvdec.c
index 14651e3a5e..00cab2ed46 100644
--- a/modules/hw/nvdec/nvdec.c
+++ b/modules/hw/nvdec/nvdec.c
@@ -102,22 +102,9 @@ typedef struct nvdec_ctx {
     picture_pool_t              *out_pool;
 } nvdec_ctx_t;
 
-static inline int CudaCall(decoder_t *p_dec, CUresult result, const char *psz_func)
-{
-    if (unlikely(result != CUDA_SUCCESS)) {
-        const char *psz_err, *psz_err_str;
-        nvdec_ctx_t *p_sys = p_dec->p_sys;
-        p_sys->cudaFunctions->cuGetErrorName(result, &psz_err);
-        p_sys->cudaFunctions->cuGetErrorString(result, &psz_err_str);
-        msg_Err(p_dec, "%s failed: %s (%s)", psz_func, psz_err_str, psz_err);
-        return VLC_EGENERIC;
-    }
-    return VLC_SUCCESS;
-}
-
-#define CALL_CUDA_DEC(func, ...) CudaCall(p_dec,  p_sys->cudaFunctions->func(__VA_ARGS__), #func)
-#define CALL_CUDA_DEV(func, ...) CudaCall(device, p_sys->cudaFunctions->func(__VA_ARGS__), #func)
-#define CALL_CUVID(func, ...)    CudaCall(p_dec,  p_sys->cuvidFunctions->func(__VA_ARGS__), #func)
+#define CALL_CUDA_DEC(func, ...) CudaCheckErr(VLC_OBJECT(p_dec),  p_sys->cudaFunctions, p_sys->cudaFunctions->func(__VA_ARGS__), #func)
+#define CALL_CUDA_DEV(func, ...) CudaCheckErr(VLC_OBJECT(device), p_sys->cudaFunctions, p_sys->cudaFunctions->func(__VA_ARGS__), #func)
+#define CALL_CUVID(func, ...)    CudaCheckErr(VLC_OBJECT(p_dec),  p_sys->cudaFunctions, p_sys->cuvidFunctions->func(__VA_ARGS__), #func)
 
 static vlc_fourcc_t MapSurfaceChroma(cudaVideoChromaFormat chroma, unsigned bitDepth)
 {
diff --git a/modules/hw/nvdec/nvdec_fmt.h b/modules/hw/nvdec/nvdec_fmt.h
index 9ac0bb947a..3db633e2a5 100644
--- a/modules/hw/nvdec/nvdec_fmt.h
+++ b/modules/hw/nvdec/nvdec_fmt.h
@@ -32,6 +32,18 @@ typedef struct {
 
 } decoder_device_nvdec_t;
 
+static inline int CudaCheckErr(vlc_object_t *obj, CudaFunctions *cudaFunctions, CUresult result, const char *psz_func)
+{
+    if (unlikely(result != CUDA_SUCCESS)) {
+        const char *psz_err, *psz_err_str;
+        cudaFunctions->cuGetErrorName(result, &psz_err);
+        cudaFunctions->cuGetErrorString(result, &psz_err_str);
+        msg_Err(obj, "%s failed: %s (%s)", psz_func, psz_err_str, psz_err);
+        return VLC_EGENERIC;
+    }
+    return VLC_SUCCESS;
+}
+
 static inline bool is_nvdec_opaque(vlc_fourcc_t fourcc)
 {
     return fourcc == VLC_CODEC_NVDEC_OPAQUE ||
diff --git a/modules/hw/nvdec/nvdec_gl.c b/modules/hw/nvdec/nvdec_gl.c
index 96fdf801e0..9c16122a3b 100644
--- a/modules/hw/nvdec/nvdec_gl.c
+++ b/modules/hw/nvdec/nvdec_gl.c
@@ -32,7 +32,7 @@
 
 #include <ffnvcodec/dynlink_loader.h>
 
-#include "../../hw/nvdec/nvdec_fmt.h"
+#include "nvdec_fmt.h"
 
 #include "../../video_output/opengl/internal.h"
 #include <GL/glext.h>
@@ -56,21 +56,7 @@ typedef struct {
     CUarray mappedArray[PICTURE_PLANE_MAX];
 } converter_sys_t;
 
-static inline int CudaCall(const opengl_tex_converter_t *tc, CUresult result, const char *psz_func)
-{
-    if (unlikely(result != CUDA_SUCCESS)) {
-        const char *psz_err, *psz_err_str;
-        vlc_decoder_device *device = tc->dec_device;
-        decoder_device_nvdec_t *devsys = device->opaque;
-        devsys->cudaFunctions->cuGetErrorName(result, &psz_err);
-        devsys->cudaFunctions->cuGetErrorString(result, &psz_err_str);
-        msg_Err((vlc_object_t *)&tc->obj, "%s failed: %s (%s)", psz_func, psz_err_str, psz_err);
-        return VLC_EGENERIC;
-    }
-    return VLC_SUCCESS;
-}
-
-#define CALL_CUDA(func, ...) CudaCall(tc, devsys->cudaFunctions->func(__VA_ARGS__), #func)
+#define CALL_CUDA(func, ...) CudaCheckErr((vlc_object_t*)&tc->obj, devsys->cudaFunctions, devsys->cudaFunctions->func(__VA_ARGS__), #func)
 
 static int tc_nvdec_gl_allocate_texture(const opengl_tex_converter_t *tc, GLuint *textures,
                                 const GLsizei *tex_width, const GLsizei *tex_height)



More information about the vlc-commits mailing list