diff options
author | Mark Thompson <sw@jkqxz.net> | 2024-02-04 13:24:33 +0000 |
---|---|---|
committer | Mark Thompson <sw@jkqxz.net> | 2024-02-04 19:18:58 +0000 |
commit | fa580a0f17f72a54a2effe89bf10b00b28203d87 (patch) | |
tree | 333ef57da681b170780bae63fd5f3b75d7f2c5db | |
parent | 52cc89dc451f80fbcb0db9a5ade9bd41bd8594c8 (diff) | |
download | ffmpeg-fa580a0f17f72a54a2effe89bf10b00b28203d87.tar.gz |
lavc/d3d12va: Improve behaviour on missing decoder support
Distinguish between a decoder being entirely missing and a decoder which
requires features which are not present in the incomplete implementation
in libavcodec and therefore can't be used.
-rw-r--r-- | libavcodec/d3d12va_decode.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/libavcodec/d3d12va_decode.c b/libavcodec/d3d12va_decode.c index f678b6f483..9bb8db1690 100644 --- a/libavcodec/d3d12va_decode.c +++ b/libavcodec/d3d12va_decode.c @@ -239,10 +239,14 @@ static int d3d12va_create_decoder(AVCodecContext *avctx) DX_CHECK(ID3D12VideoDevice_CheckFeatureSupport(device_hwctx->video_device, D3D12_FEATURE_VIDEO_DECODE_SUPPORT, &feature, sizeof(feature))); - if (!(feature.SupportFlags & D3D12_VIDEO_DECODE_SUPPORT_FLAG_SUPPORTED) || - !(feature.DecodeTier >= D3D12_VIDEO_DECODE_TIER_2)) { - av_log(avctx, AV_LOG_ERROR, "D3D12 decoder doesn't support on this device\n"); - return AVERROR(EINVAL); + if (!(feature.SupportFlags & D3D12_VIDEO_DECODE_SUPPORT_FLAG_SUPPORTED)) { + av_log(avctx, AV_LOG_ERROR, "D3D12 video decode is not supported on this device.\n"); + return AVERROR(ENOSYS); + } + if (!(feature.DecodeTier >= D3D12_VIDEO_DECODE_TIER_2)) { + av_log(avctx, AV_LOG_ERROR, "D3D12 video decode on this device requires tier %d support, " + "but it is not implemented.\n", feature.DecodeTier); + return AVERROR_PATCHWELCOME; } desc = (D3D12_VIDEO_DECODER_DESC) { |