typedef struct D3D12_VIDEO_DECODE_FRAME_ARGUMENT
{
D3D12_VIDEO_DECODE_ARGUMENT_TYPE Type;
union
{
struct
{
UINT NodeMask;
D3D12_VIDEO_DECODE_REFERENCE_FRAMES ReferenceFrames;
D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM CompressedBitstream;
ID3D12VideoDecoderHeap* pHeap;
UINT DecodeWidth;
UINT DecodeHeight;
DXGI_FORMAT OutputFormat;
D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS ConversionArguments;
D3D12_VIDEO_SCALE_SUPPORT ScaleSupport;
} Decode;
// 其他成员
};
} D3D12_VIDEO_DECODE_FRAME_ARGUMENT;
该结构包含了一个联合(union)成员,根据 Type 的值可以选择性地使用不同的成员。下面是两种常见的用法:
1. 解码模式(Type == D3D12_VIDEO_DECODE_ARGUMENT_TYPE::D3D12_VIDEO_DECODE_ARGUMENT_TYPE_DECODE):
- NodeMask: 与硬件节点相关联的索引。
- ReferenceFrames: 描述参考帧的结构。
- CompressedBitstream: 描述压缩的比特流的结构。
- pHeap: 指向视频解码器堆(decoder heap)的指针。
- DecodeWidth 和 DecodeHeight: 解码的帧的宽度和高度。
- OutputFormat: 输出帧的格式。
- ConversionArguments: 描述解码转换参数的结构。
- ScaleSupport: 视频缩放的支持信息。
2. 其他模式:结构中还包含一个注释部分,表示该联合还可以包含其他成员,具体取决于 Type 的值。
使用这个结构时,你需要根据解码帧的需求填充不同的成员,然后将其传递给相应的 API 函数或接口。
具体的使用方式和最佳实践会根据你的视频解码场景而有所不同。你可能需要查阅相关的 Direct3D 12 文档或示例代码以获取详细信息。
转载请注明出处:http://www.zyzy.cn/article/detail/26192/Win32 API/D3d12video.h/D3D12_VIDEO_DECODE_FRAME_ARGUMENT