summaryrefslogtreecommitdiffstats
path: root/video/out
diff options
context:
space:
mode:
Diffstat (limited to 'video/out')
-rw-r--r--video/out/gpu/hwdec.c2
-rw-r--r--video/out/opengl/hwdec_cuda.c18
2 files changed, 19 insertions, 1 deletions
diff --git a/video/out/gpu/hwdec.c b/video/out/gpu/hwdec.c
index 9eefe3e287..d88dc5e779 100644
--- a/video/out/gpu/hwdec.c
+++ b/video/out/gpu/hwdec.c
@@ -35,6 +35,7 @@ extern const struct ra_hwdec_driver ra_hwdec_d3d11eglrgb;
extern const struct ra_hwdec_driver ra_hwdec_dxva2gldx;
extern const struct ra_hwdec_driver ra_hwdec_dxva2;
extern const struct ra_hwdec_driver ra_hwdec_cuda;
+extern const struct ra_hwdec_driver ra_hwdec_cuda_nvdec;
extern const struct ra_hwdec_driver ra_hwdec_rpi_overlay;
#if HAVE_DRMPRIME && HAVE_DRM
extern const struct ra_hwdec_driver ra_hwdec_drmprime_drm;
@@ -65,6 +66,7 @@ static const struct ra_hwdec_driver *const mpgl_hwdec_drivers[] = {
#endif
#if HAVE_CUDA_HWACCEL
&ra_hwdec_cuda,
+ &ra_hwdec_cuda_nvdec,
#endif
#if HAVE_RPI
&ra_hwdec_rpi_overlay,
diff --git a/video/out/opengl/hwdec_cuda.c b/video/out/opengl/hwdec_cuda.c
index d9c4c199f1..5aefed106d 100644
--- a/video/out/opengl/hwdec_cuda.c
+++ b/video/out/opengl/hwdec_cuda.c
@@ -160,7 +160,7 @@ static int cuda_init(struct ra_hwdec *hw)
goto error;
p->hwctx = (struct mp_hwdec_ctx) {
- .type = HWDEC_CUDA,
+ .type = hw->driver->api,
.ctx = p->decode_ctx,
.av_device_ref = hw_device_ctx,
};
@@ -340,3 +340,19 @@ const struct ra_hwdec_driver ra_hwdec_cuda = {
.unmap = mapper_unmap,
},
};
+
+const struct ra_hwdec_driver ra_hwdec_cuda_nvdec = {
+ .name = "cuda-nvdec",
+ .api = HWDEC_NVDEC,
+ .imgfmts = {IMGFMT_CUDA, 0},
+ .priv_size = sizeof(struct priv_owner),
+ .init = cuda_init,
+ .uninit = cuda_uninit,
+ .mapper = &(const struct ra_hwdec_mapper_driver){
+ .priv_size = sizeof(struct priv),
+ .init = mapper_init,
+ .uninit = mapper_uninit,
+ .map = mapper_map,
+ .unmap = mapper_unmap,
+ },
+};