summaryrefslogtreecommitdiffstats
path: root/video/decode
diff options
context:
space:
mode:
authorKevin Mitchell <kevmitch@gmail.com>2016-01-30 01:04:34 -0800
committerKevin Mitchell <kevmitch@gmail.com>2016-02-17 06:59:02 -0800
commit084162d6fe9033cb3499a7013a2489a70e1aed93 (patch)
tree71bd0ce88427547314d56d91bbbd557a23595451 /video/decode
parent941885b62cabb4dc1dfe3946705efd97c2d10f56 (diff)
downloadmpv-084162d6fe9033cb3499a7013a2489a70e1aed93.tar.bz2
mpv-084162d6fe9033cb3499a7013a2489a70e1aed93.tar.xz
dxva2: add interop (non-copyback) hwdec_type
This always falls back to software decoding right now. VO support will be added in future commits.
Diffstat (limited to 'video/decode')
-rw-r--r--video/decode/dxva2.c16
-rw-r--r--video/decode/vd_lavc.c2
2 files changed, 16 insertions, 2 deletions
diff --git a/video/decode/dxva2.c b/video/decode/dxva2.c
index 987da326d0..4cc1dcf630 100644
--- a/video/decode/dxva2.c
+++ b/video/decode/dxva2.c
@@ -296,9 +296,11 @@ static int dxva2_init(struct lavc_ctx *s)
s->hwdec_priv = ctx;
ctx->log = mp_log_new(s, s->log, "dxva2");
- ctx->sw_pool = talloc_steal(ctx, mp_image_pool_new(17));
- mp_check_gpu_memcpy(ctx->log, NULL);
+ if (s->hwdec->type == HWDEC_DXVA2_COPY) {
+ mp_check_gpu_memcpy(ctx->log, NULL);
+ ctx->sw_pool = talloc_steal(ctx, mp_image_pool_new(17));
+ }
ctx->deviceHandle = INVALID_HANDLE_VALUE;
@@ -633,6 +635,16 @@ static int probe(struct vd_lavc_hwdec *hwdec, struct mp_hwdec_info *info,
return HWDEC_ERR_NO_CODEC;
}
+const struct vd_lavc_hwdec mp_vd_lavc_dxva2 = {
+ .type = HWDEC_DXVA2,
+ .image_format = IMGFMT_DXVA2,
+ .probe = probe,
+ .init = dxva2_init,
+ .uninit = dxva2_uninit,
+ .init_decoder = dxva2_init_decoder,
+ .allocate_image = dxva2_allocate_image,
+};
+
const struct vd_lavc_hwdec mp_vd_lavc_dxva2_copy = {
.type = HWDEC_DXVA2_COPY,
.image_format = IMGFMT_DXVA2,
diff --git a/video/decode/vd_lavc.c b/video/decode/vd_lavc.c
index ef713c2d65..19c05a9c2f 100644
--- a/video/decode/vd_lavc.c
+++ b/video/decode/vd_lavc.c
@@ -124,6 +124,7 @@ extern const struct vd_lavc_hwdec mp_vd_lavc_vdpau;
extern const struct vd_lavc_hwdec mp_vd_lavc_videotoolbox;
extern const struct vd_lavc_hwdec mp_vd_lavc_vaapi;
extern const struct vd_lavc_hwdec mp_vd_lavc_vaapi_copy;
+extern const struct vd_lavc_hwdec mp_vd_lavc_dxva2;
extern const struct vd_lavc_hwdec mp_vd_lavc_dxva2_copy;
extern const struct vd_lavc_hwdec mp_vd_lavc_rpi;
@@ -142,6 +143,7 @@ static const struct vd_lavc_hwdec *const hwdec_list[] = {
&mp_vd_lavc_vaapi_copy,
#endif
#if HAVE_DXVA2_HWACCEL
+ &mp_vd_lavc_dxva2,
&mp_vd_lavc_dxva2_copy,
#endif
NULL