summaryrefslogtreecommitdiffstats
path: root/video
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2017-11-02 15:53:22 +0100
committerwm4 <wm4@nowhere>2017-11-02 15:58:36 +0100
commitff17760c0009dc02458e5a4c6fc114d3b5d3408d (patch)
tree8aa70cb363846103d80b814ed783ee3435794cd4 /video
parent09c61347a8481cfb42bfc381880bd3fe93c4e744 (diff)
downloadmpv-ff17760c0009dc02458e5a4c6fc114d3b5d3408d.tar.bz2
mpv-ff17760c0009dc02458e5a4c6fc114d3b5d3408d.tar.xz
vd_lavc: restore --hwdec-image-format and d3d11 opaque mode
When the ifdeffery for the frame_params API was added, the new code accidentally didn't include this.
Diffstat (limited to 'video')
-rw-r--r--video/decode/d3d.c5
-rw-r--r--video/decode/vd_lavc.c2
2 files changed, 6 insertions, 1 deletions
diff --git a/video/decode/d3d.c b/video/decode/d3d.c
index bdc907bd71..c7b2afd470 100644
--- a/video/decode/d3d.c
+++ b/video/decode/d3d.c
@@ -87,7 +87,10 @@ void d3d_hwframes_refine(struct lavc_ctx *ctx, AVBufferRef *hw_frames_ctx)
if (fctx->format == AV_PIX_FMT_D3D11) {
AVD3D11VAFramesContext *hwctx = fctx->hwctx;
- hwctx->BindFlags |= D3D11_BIND_SHADER_RESOURCE;
+ // According to hwcontex_d3d11va.h, yuv420p means DXGI_FORMAT_420_OPAQUE,
+ // which has no shader support.
+ if (fctx->sw_format != AV_PIX_FMT_YUV420P)
+ hwctx->BindFlags |= D3D11_BIND_SHADER_RESOURCE;
}
}
diff --git a/video/decode/vd_lavc.c b/video/decode/vd_lavc.c
index c455dbdab6..2e144ac409 100644
--- a/video/decode/vd_lavc.c
+++ b/video/decode/vd_lavc.c
@@ -725,6 +725,8 @@ static int init_generic_hwaccel(struct dec_video *vd, enum AVPixelFormat hw_fmt)
if (hwdec->image_format == IMGFMT_VIDEOTOOLBOX)
new_fctx->sw_format = imgfmt2pixfmt(vd->opts->videotoolbox_format);
+ if (vd->opts->hwdec_image_format)
+ new_fctx->sw_format = imgfmt2pixfmt(vd->opts->hwdec_image_format);
// The video output might not support all formats.
// Note that supported_formats==NULL means any are accepted.