diff options
Diffstat (limited to 'video/decode')
-rw-r--r-- | video/decode/dxva2.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/video/decode/dxva2.c b/video/decode/dxva2.c index 852319611d..62b27671ef 100644 --- a/video/decode/dxva2.c +++ b/video/decode/dxva2.c @@ -36,6 +36,7 @@ #include "video/fmt-conversion.h" #include "video/mp_image_pool.h" #include "video/hwdec.h" +#include "video/d3d.h" #include "gpu_memcpy_sse4.h" // A minor evil. @@ -341,6 +342,15 @@ static int create_device(struct lavc_ctx *s) D3DDISPLAYMODE d3ddm; UINT adapter = D3DADAPTER_DEFAULT; + if (s->hwdec_info && s->hwdec_info->hwctx && s->hwdec_info->hwctx->d3d_ctx) { + ctx->d3d9device = s->hwdec_info->hwctx->d3d_ctx->d3d9_device; + if (ctx->d3d9device) { + IDirect3D9_AddRef(ctx->d3d9device); + MP_VERBOSE(ctx, "Using VO-supplied device %p.\n", ctx->d3d9device); + return 0; + } + } + ctx->d3dlib = LoadLibrary(L"d3d9.dll"); if (!ctx->d3dlib) { MP_ERR(ctx, "Failed to load D3D9 library\n"); |