This is an automated email from the git hooks/post-receive script.

Git pushed a commit to branch master
in repository ffmpeg.

The following commit(s) were added to refs/heads/master by this push:
     new fc7c38f9da avcodec/d3d12va_encode: add detailed ValidationFlags error 
reporting for video encoders check feature support
fc7c38f9da is described below

commit fc7c38f9da4a9262beedd0fd8bf69d5c0f32d923
Author:     stevxiao <[email protected]>
AuthorDate: Mon Dec 8 17:56:43 2025 -0500
Commit:     Tong Wu <[email protected]>
CommitDate: Wed Feb 25 08:47:14 2026 +0000

    avcodec/d3d12va_encode: add detailed ValidationFlags error reporting for 
video encoders check feature support
    
    Improves error diagnostics for D3D12 video encoders check feature support 
by adding
    detailed ValidationFlags reporting when driver validation fails.
    
    This made it easy for users to identify which specific feature was
    unsupported without manually decoding the flags.
    
    Signed-off-by: younengxiao <[email protected]>
---
 libavcodec/d3d12va_encode.c      | 23 +++++++++++++++++++++++
 libavcodec/d3d12va_encode.h      |  3 +++
 libavcodec/d3d12va_encode_av1.c  |  3 ++-
 libavcodec/d3d12va_encode_h264.c |  3 ++-
 libavcodec/d3d12va_encode_hevc.c |  3 ++-
 5 files changed, 32 insertions(+), 3 deletions(-)

diff --git a/libavcodec/d3d12va_encode.c b/libavcodec/d3d12va_encode.c
index 14efe633ae..2cca179b83 100644
--- a/libavcodec/d3d12va_encode.c
+++ b/libavcodec/d3d12va_encode.c
@@ -39,6 +39,29 @@ const AVCodecHWConfigInternal *const 
ff_d3d12va_encode_hw_configs[] = {
     NULL,
 };
 
+void ff_d3d12va_encode_check_encoder_feature_flags(void *log_ctx,
+                                                   
D3D12_VIDEO_ENCODER_VALIDATION_FLAGS flags)
+{
+    if (flags & D3D12_VIDEO_ENCODER_VALIDATION_FLAG_CODEC_NOT_SUPPORTED)
+        av_log(log_ctx, AV_LOG_ERROR, "  - Codec not supported\n");
+    if (flags & D3D12_VIDEO_ENCODER_VALIDATION_FLAG_INPUT_FORMAT_NOT_SUPPORTED)
+        av_log(log_ctx, AV_LOG_ERROR, "  - Input format not supported\n");
+    if (flags & 
D3D12_VIDEO_ENCODER_VALIDATION_FLAG_CODEC_CONFIGURATION_NOT_SUPPORTED)
+        av_log(log_ctx, AV_LOG_ERROR, "  - Codec configuration not 
supported\n");
+    if (flags & 
D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RATE_CONTROL_MODE_NOT_SUPPORTED)
+        av_log(log_ctx, AV_LOG_ERROR, "  - Rate control mode not supported\n");
+    if (flags & 
D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RATE_CONTROL_CONFIGURATION_NOT_SUPPORTED)
+        av_log(log_ctx, AV_LOG_ERROR, "  - Rate control configuration not 
supported\n");
+    if (flags & 
D3D12_VIDEO_ENCODER_VALIDATION_FLAG_INTRA_REFRESH_MODE_NOT_SUPPORTED)
+        av_log(log_ctx, AV_LOG_ERROR, "  - Intra refresh mode not 
supported\n");
+    if (flags & 
D3D12_VIDEO_ENCODER_VALIDATION_FLAG_SUBREGION_LAYOUT_MODE_NOT_SUPPORTED)
+        av_log(log_ctx, AV_LOG_ERROR, "  - Subregion layout mode not 
supported\n");
+    if (flags & 
D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RESOLUTION_NOT_SUPPORTED_IN_LIST)
+        av_log(log_ctx, AV_LOG_ERROR, "  - Resolution not supported\n");
+    if (flags & 
D3D12_VIDEO_ENCODER_VALIDATION_FLAG_GOP_STRUCTURE_NOT_SUPPORTED)
+        av_log(log_ctx, AV_LOG_ERROR, "  - GOP structure not supported\n");
+}
+
 static int d3d12va_fence_completion(AVD3D12VASyncContext *psync_ctx)
 {
     uint64_t completion = ID3D12Fence_GetCompletedValue(psync_ctx->fence);
diff --git a/libavcodec/d3d12va_encode.h b/libavcodec/d3d12va_encode.h
index 7eecdb6eb8..f059ae9806 100644
--- a/libavcodec/d3d12va_encode.h
+++ b/libavcodec/d3d12va_encode.h
@@ -371,6 +371,9 @@ int ff_d3d12va_encode_receive_packet(AVCodecContext *avctx, 
AVPacket *pkt);
 int ff_d3d12va_encode_init(AVCodecContext *avctx);
 int ff_d3d12va_encode_close(AVCodecContext *avctx);
 
+void ff_d3d12va_encode_check_encoder_feature_flags(void *log_ctx,
+                                                   
D3D12_VIDEO_ENCODER_VALIDATION_FLAGS flags);
+
 #define D3D12VA_ENCODE_INTRA_REFRESH_MODE(name, mode, desc) \
     { #name, desc, 0, AV_OPT_TYPE_CONST, { .i64 = 
D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE_ ## mode }, \
       0, 0, FLAGS, .unit = "intra_refresh_mode" }
diff --git a/libavcodec/d3d12va_encode_av1.c b/libavcodec/d3d12va_encode_av1.c
index 912f411547..8d2edec491 100644
--- a/libavcodec/d3d12va_encode_av1.c
+++ b/libavcodec/d3d12va_encode_av1.c
@@ -580,8 +580,9 @@ static int 
d3d12va_encode_av1_init_sequence_params(AVCodecContext *avctx)
     }
 
     if (!(support.SupportFlags & 
D3D12_VIDEO_ENCODER_SUPPORT_FLAG_GENERAL_SUPPORT_OK)) {
-        av_log(avctx, AV_LOG_ERROR, "Driver does not support some request 
D3D12VA AV1 features. %#x\n",
+        av_log(avctx, AV_LOG_ERROR, "Driver does not support requested 
features. ValidationFlags: %#x\n",
                support.ValidationFlags);
+        ff_d3d12va_encode_check_encoder_feature_flags(avctx, 
support.ValidationFlags);
         return AVERROR(EINVAL);
     }
 
diff --git a/libavcodec/d3d12va_encode_h264.c b/libavcodec/d3d12va_encode_h264.c
index eae97e1f23..bd15856f0e 100644
--- a/libavcodec/d3d12va_encode_h264.c
+++ b/libavcodec/d3d12va_encode_h264.c
@@ -202,8 +202,9 @@ static int 
d3d12va_encode_h264_init_sequence_params(AVCodecContext *avctx)
     }
 
     if (!(support.SupportFlags & 
D3D12_VIDEO_ENCODER_SUPPORT_FLAG_GENERAL_SUPPORT_OK)) {
-        av_log(avctx, AV_LOG_ERROR, "Driver does not support some request 
features. %#x\n",
+        av_log(avctx, AV_LOG_ERROR, "Driver does not support requested 
features. ValidationFlags: %#x\n",
                support.ValidationFlags);
+        ff_d3d12va_encode_check_encoder_feature_flags(avctx, 
support.ValidationFlags);
         return AVERROR(EINVAL);
     }
 
diff --git a/libavcodec/d3d12va_encode_hevc.c b/libavcodec/d3d12va_encode_hevc.c
index 45038bbad6..8cae7a8b66 100644
--- a/libavcodec/d3d12va_encode_hevc.c
+++ b/libavcodec/d3d12va_encode_hevc.c
@@ -273,8 +273,9 @@ static int 
d3d12va_encode_hevc_init_sequence_params(AVCodecContext *avctx)
     }
 
     if (!(support.SupportFlags & 
D3D12_VIDEO_ENCODER_SUPPORT_FLAG_GENERAL_SUPPORT_OK)) {
-        av_log(avctx, AV_LOG_ERROR, "Driver does not support some request 
features. %#x\n",
+        av_log(avctx, AV_LOG_ERROR, "Driver does not support requested 
features. ValidationFlags: %#x\n",
                support.ValidationFlags);
+        ff_d3d12va_encode_check_encoder_feature_flags(avctx, 
support.ValidationFlags);
         return AVERROR(EINVAL);
     }
 

_______________________________________________
ffmpeg-cvslog mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to