mpv 0.27.0-473-gd7a02bcb3b (C) 2000-2017 mpv/MPlayer/mplayer2 projects
built on Sat Dec 2 23:26:19 CET 2017
with media autobuild suite with shaderc and crossc manually installed (this very precious script is a bit outdated)
Reproduction steps
Try to play a video with d3d11va hardware decoding, d3d11ra renderer (thanks for having added support for it) and d3d11vpp deinterlacing: if hardware decoding is not possible, for example if the codec/format is not supported by the GPU, mpv falls back to software decoding, but there is no video, as the insertion of the d3d11vpp filter breaks the chain.
Ex: mpv.exe --hwdec=d3d11va --vo=gpu --gpu-context=d3d11 --gpu-api=d3d11 --vf-add=d3d11vpp=deint=yes:interlaced-only=yes "video" where "video" cannot be hardware decoded (for example a VP9 10 bit on a GTX 1080)
Without the d3d11vpp parameter in the command line, video works fine (so it has nothing to see with vp9 support and ffmpeg-mpv stuff).
Same behaviour if you try the same options on any video while asking for software decoding.
Ex: mpv.exe --hwdec=none --vo=gpu --gpu-context=d3d11 --gpu-api=d3d11 --vf-add=d3d11vpp=deint=yes:interlaced-only=yes "video" whatever "video" is
Expected behavior
mpv should not only falls back to software decoding (or directly use software decoding if asked in options), but also discard the d3d11vpp filter as it needs d3d11va decoding
Otherwise, it means you cannot let the d3d11vpp deinterlace filter in you config file permanently, because it breaks the playing of hardware decoding incompatible videos, and you manually have to add it each time you play an interlaced video that can be decoded with your GPU.
So, it would be very useful if a test could be made before attempting to apply the d3d11vpp filter, checking if d3d11va decoding is in use or not. Thanks in advance if it can easily me made.
Actual behavior
mpv keeps the d3d11vpp filter in the video chain, cannot initialize it, and uninit video.
mpv version and platform
mpv 0.27.0-473-gd7a02bcb3b (C) 2000-2017 mpv/MPlayer/mplayer2 projects built on Sat Dec 2 23:26:19 CET 2017 with media autobuild suite with shaderc and crossc manually installed (this very precious script is a bit outdated)
Reproduction steps
Try to play a video with d3d11va hardware decoding, d3d11ra renderer (thanks for having added support for it) and d3d11vpp deinterlacing: if hardware decoding is not possible, for example if the codec/format is not supported by the GPU, mpv falls back to software decoding, but there is no video, as the insertion of the d3d11vpp filter breaks the chain. Ex: mpv.exe --hwdec=d3d11va --vo=gpu --gpu-context=d3d11 --gpu-api=d3d11 --vf-add=d3d11vpp=deint=yes:interlaced-only=yes "video" where "video" cannot be hardware decoded (for example a VP9 10 bit on a GTX 1080) Without the d3d11vpp parameter in the command line, video works fine (so it has nothing to see with vp9 support and ffmpeg-mpv stuff).
Same behaviour if you try the same options on any video while asking for software decoding. Ex: mpv.exe --hwdec=none --vo=gpu --gpu-context=d3d11 --gpu-api=d3d11 --vf-add=d3d11vpp=deint=yes:interlaced-only=yes "video" whatever "video" is
Expected behavior
mpv should not only falls back to software decoding (or directly use software decoding if asked in options), but also discard the d3d11vpp filter as it needs d3d11va decoding Otherwise, it means you cannot let the d3d11vpp deinterlace filter in you config file permanently, because it breaks the playing of hardware decoding incompatible videos, and you manually have to add it each time you play an interlaced video that can be decoded with your GPU. So, it would be very useful if a test could be made before attempting to apply the d3d11vpp filter, checking if d3d11va decoding is in use or not. Thanks in advance if it can easily me made.
Actual behavior
mpv keeps the d3d11vpp filter in the video chain, cannot initialize it, and uninit video.
Log file (relevant parts)
[vo/gpu/d3d11] Initializing GPU context 'd3d11' [vo/gpu/d3d11] Using Direct3D 11 feature level 12_1 [vo/gpu/d3d11] Device: NVIDIA GeForce GTX 1080 [vo/gpu/d3d11] Initializing SPIR-V compiler 'shaderc' [vo/gpu/d3d11] Using Direct3D 11.1 runtime [vo/gpu/d3d11] Using DXGI 1.2+ [vo/gpu/d3d11] Using flip-model presentation [vd] Codec list: [vd] vp9 - Google VP9 [vd] vp9_cuvid (vp9) - Nvidia CUVID VP9 decoder [vd] Opening video decoder vp9 [vd] Looking at hwdec vp9-d3d11va... [vo/gpu] Loading hwdec driver 'd3d11-egl' [vo/gpu] Loading failed. [vo/gpu] Loading hwdec driver 'd3d11-egl-rgb' [vo/gpu] Loading failed. [vo/gpu] Loading hwdec driver 'dxva2-egl' [vo/gpu] Loading failed. [vo/gpu] Loading hwdec driver 'd3d11va' [vo/gpu] Loading hwdec driver 'dxva2-dxinterop' [vo/gpu] Loading failed. [vo/gpu] Loading hwdec driver 'cuda-nvdec' [vo/gpu] Loading failed. [vd] Trying hardware decoding via vp9-d3d11va. [vd] Selected video codec: vp9 (Google VP9) [vf] Opening video filter: [d3d11vpp deint=yes interlaced-only=yes mode=adaptive] [d3d11vpp] Setting option 'deint' = 'yes' (flags = 0) [d3d11vpp] Setting option 'interlaced-only' = 'yes' (flags = 0) [d3d11vpp] Setting option 'mode' = 'adaptive' (flags = 0) [vd] Requesting pixfmt 'yuv420p10le' from decoder. [vd] Falling back to software decoding. [vd] Requesting 12 threads for decoding. [vd] Using software decoding. [vd] Decoder format: 3840x1620 [0:1] yuv420p10 bt.2020-ncl/auto/auto/limited CL=unknown (auto 0.000000/0.000000/0.000000) [vd] Using container aspect ratio. [vf] Using conversion filter. [vf] Video filter chain: [vf] [in] 3840x1620 yuv420p10 bt.2020-ncl/bt.2020/pq/limited SP=10.000000 CL=mpeg2/4/h264 [vf] [convert] 3840x1620 yuv420p10 bt.2020-ncl/bt.2020/pq/limited SP=10.000000 CL=mpeg2/4/h264 [a] [vf] [d3d11vpp] "d3d11vpp.00" ??? <--- [vf] [out] ??? Cannot initialize video filters. Could not initialize video chain. [vd] Uninit video. [vo/gpu] flushing shader cache [vo/gpu/win32] uninit Video: no video