diff options
author | wm4 <wm4@nowhere> | 2017-06-30 12:27:15 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2017-06-30 18:57:37 +0200 |
commit | dd408e68ed57fa5130bef976751e58a5d6e42f75 (patch) | |
tree | 7b47f293f3a07b318289ac277bcba6c588f0e586 /video | |
parent | c61520b6bd51d2ab8ba1fa14d89170844ebd159b (diff) | |
download | mpv-dd408e68ed57fa5130bef976751e58a5d6e42f75.tar.bz2 mpv-dd408e68ed57fa5130bef976751e58a5d6e42f75.tar.xz |
d3d: make DXVA2 support optional
This partially reverts the change from a longer time ago to always build
DXVA2 and D3D11VA together.
To make it simpler, we change the following:
- building with ANGLE headers is now required to build D3D hwaccels
- if DXVA2 is enabled, D3D11VA is still forcibly built
- the CLI vo_opengl ANGLE backend is now under --egl-angle-win32
This is done to reduce the dependency mess slightly.
Diffstat (limited to 'video')
-rw-r--r-- | video/decode/d3d.c | 7 | ||||
-rw-r--r-- | video/decode/vd_lavc.c | 3 | ||||
-rw-r--r-- | video/out/opengl/context.c | 2 | ||||
-rw-r--r-- | video/out/opengl/hwdec.c | 6 |
4 files changed, 13 insertions, 5 deletions
diff --git a/video/decode/d3d.c b/video/decode/d3d.c index d81f481e7c..3e6e1accc8 100644 --- a/video/decode/d3d.c +++ b/video/decode/d3d.c @@ -377,9 +377,12 @@ AVBufferRef *d3d9_wrap_device_ref(struct IDirect3DDevice9 *device) { return NULL #else /* !HAVE_D3D_HWACCEL_NEW */ #include <libavutil/hwcontext.h> -#include <libavutil/hwcontext_dxva2.h> #include <libavutil/hwcontext_d3d11va.h> +#if HAVE_D3D9_HWACCEL +#include <libavutil/hwcontext_dxva2.h> +#endif + void d3d_hwframes_refine(struct lavc_ctx *ctx, AVBufferRef *hw_frames_ctx) { AVHWFramesContext *fctx = (void *)hw_frames_ctx->data; @@ -400,11 +403,13 @@ void d3d_hwframes_refine(struct lavc_ctx *ctx, AVBufferRef *hw_frames_ctx) fctx->width = FFALIGN(fctx->width, alignment); fctx->height = FFALIGN(fctx->height, alignment); +#if HAVE_D3D9_HWACCEL if (fctx->format == AV_PIX_FMT_DXVA2_VLD) { AVDXVA2FramesContext *hwctx = fctx->hwctx; hwctx->surface_type = DXVA2_VideoDecoderRenderTarget; } +#endif if (fctx->format == AV_PIX_FMT_D3D11) { AVD3D11VAFramesContext *hwctx = fctx->hwctx; diff --git a/video/decode/vd_lavc.c b/video/decode/vd_lavc.c index 226fd30bd3..a36adbf334 100644 --- a/video/decode/vd_lavc.c +++ b/video/decode/vd_lavc.c @@ -265,8 +265,11 @@ static const struct vd_lavc_hwdec *const hwdec_list[] = { #endif #if HAVE_D3D_HWACCEL &mp_vd_lavc_d3d11va, + + #if HAVE_D3D9_HWACCEL &mp_vd_lavc_dxva2, &mp_vd_lavc_dxva2_copy, + #endif &mp_vd_lavc_d3d11va_copy, #endif #if HAVE_ANDROID diff --git a/video/out/opengl/context.c b/video/out/opengl/context.c index 72311e11fa..a3b92ac8b4 100644 --- a/video/out/opengl/context.c +++ b/video/out/opengl/context.c @@ -56,7 +56,7 @@ static const struct mpgl_driver *const backends[] = { #if HAVE_GL_COCOA &mpgl_driver_cocoa, #endif -#if HAVE_EGL_ANGLE +#if HAVE_EGL_ANGLE_WIN32 &mpgl_driver_angle, #endif #if HAVE_GL_WIN32 diff --git a/video/out/opengl/hwdec.c b/video/out/opengl/hwdec.c index 60a6ee82a9..346493671f 100644 --- a/video/out/opengl/hwdec.c +++ b/video/out/opengl/hwdec.c @@ -51,15 +51,15 @@ static const struct gl_hwdec_driver *const mpgl_hwdec_drivers[] = { &gl_hwdec_videotoolbox, #endif #if HAVE_D3D_HWACCEL -#if HAVE_EGL_ANGLE &gl_hwdec_d3d11egl, &gl_hwdec_d3d11eglrgb, + #if HAVE_D3D9_HWACCEL &gl_hwdec_dxva2egl, + #endif #endif -#if HAVE_GL_DXINTEROP +#if HAVE_GL_DXINTEROP_D3D9 &gl_hwdec_dxva2gldx, #endif -#endif #if HAVE_CUDA_HWACCEL &gl_hwdec_cuda, #endif |