在 Direct3D 12 中,D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS 结构用于描述视频解码输入流的参数。以下是其定义:
typedef struct D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS
{
    D3D12_VIDEO_DECODE_ARGUMENT_TYPE Type;
    union
    {
        struct
        {
            DXGI_RATIONAL FrameRate;
            UINT Bitrate;
            UINT DecoderRefreshRate;
            D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENTS Histograms;
            D3D12_VIDEO_SIZE_RANGE SizeRange;
            D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
            BOOL OutputReferenceFrameAsSubresources;
        } Decode;
        // 其他成员
    };
} D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS;

该结构包含了一个联合(union)成员,根据 Type 的值可以选择性地使用不同的成员。以下是两种常见的用法:

1. 解码模式(Type == D3D12_VIDEO_DECODE_ARGUMENT_TYPE::D3D12_VIDEO_DECODE_ARGUMENT_TYPE_DECODE):

    - FrameRate: 视频帧速率的有理数表示。
    - Bitrate: 视频比特率。
    - DecoderRefreshRate: 解码器刷新率。
    - Histograms: 描述直方图的结构。
    - SizeRange: 视频帧大小的范围。
    - Configuration: 视频解码配置的结构。
    - OutputReferenceFrameAsSubresources: 是否将输出参考帧作为子资源。

2. 其他模式:结构中还包含一个注释部分,表示该联合还可以包含其他成员,具体取决于 Type 的值。

使用这个结构时,你需要根据解码输入流的需求填充不同的成员,然后将其传递给相应的 API 函数或接口。

具体的使用方式和最佳实践会根据你的视频解码场景而有所不同。你可能需要查阅相关的 Direct3D 12 文档或示例代码以获取详细信息。


转载请注明出处:http://www.zyzy.cn/article/detail/26193/Win32 API/D3d12video.h/D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS