D3D12_VIDEO_DECODE_TIER 枚举 (d3d12video.h)

指定硬件视频解码器的解码层,该解码器确定应用程序定义的纹理和缓冲区的所需格式。

语法

typedef enum D3D12_VIDEO_DECODE_TIER {
  D3D12_VIDEO_DECODE_TIER_NOT_SUPPORTED,
  D3D12_VIDEO_DECODE_TIER_1,
  D3D12_VIDEO_DECODE_TIER_2,
  D3D12_VIDEO_DECODE_TIER_3
} ;

常量

 
D3D12_VIDEO_DECODE_TIER_NOT_SUPPORTED
不支持视频解码。
D3D12_VIDEO_DECODE_TIER_1
在第 1 层中,硬件解码器要求应用程序将引用纹理分配为纹理数组。 这是为了满足硬件要求,即纹理在地址空间中“接近”,因为硬件不支持每个单独的图片缓冲区的全尺寸指针。 相反,它有一个指针和更有限的位偏移量。 有关纹理数组的详细信息,请参阅 Direct3D 11 中的纹理简介

如果解码器硬件需要其他引擎上的操作或不同视频操作不支持的唯一内存布局,则解码器可能会在查询 配置文件 支持时在D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT结构中设置 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_REFERENCE_ONLY_ALLOCATIONS_REQUIRED 配置标志。 此标志指示应用程序必须使用 D3D12_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY 标志分配引用。 如果需要将输出用作将来的参考帧,则应用程序应使用 D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS 结构来设置仅引用输出。 传递给 ID3D12VideoCommandList::D ecodeFrame 的输出帧是可由管道的其他部分使用的 D3D12 资源,不得具有D3D12_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY标志。

#### 压缩输入缓冲区的第 1 层要求
- 给定帧的所有切片必须按顺序放置,并且必须是连续的,即切片之间不得有间隙。 切片控制缓冲区必须指定满足此要求的偏移量和大小参数。
- 第一个切片必须在 128 字节边界上开始。 D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM 结构中设置的偏移量必须是 128 字节的倍数。
- 使用 D3D12_MEMORY_POOL_L0 分配的缓冲区支持解码。 这始终是系统内存,但仍是 D3D12 缓冲区。
- 支持从使用 D3D12_MEMORY_POOL_L1(默认池)分配的缓冲区(包括使用 D3D12_CPU_PAGE_PROPERTY_NOT_AVAILABLE 分配的缓冲区)进行解码。
D3D12_VIDEO_DECODE_TIER_2
在解码第 2 层中,纹理可以作为纹理数组或单独的纹理 2D 资源数组引用, (数组大小为 1) 的每个资源。 对于调用方而言,这更加灵活,并且对于分辨率频繁更改的情况(例如在流视频中)非常重要,因为纹理数组只能作为单个单元进行分配和解除分配,但可以单独分配和解除分配单独的纹理 2D 资源。

如果解码硬件需要其他引擎上的操作或不同视频操作不支持的唯一平铺格式,则解码器可能会在查询配置文件支持时在D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT结构中设置D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_REFERENCE_ONLY_ALLOCATIONS_REQUIRED配置标志。 此标志指示应用程序必须使用 D3D12_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY 标志分配引用。 如果需要将输出用作将来的参考帧,应用程序应使用 D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS 结构来设置仅引用输出。 传递给 ID3D12VideoCommandList::D ecodeFrame 的输出帧是可由管道的其他部分使用的 D3D12 资源,不得具有D3D12_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY标志。

#### 压缩输入缓冲区的第 2 层要求

这些要求与第 1 层要求相同。

- 给定帧的所有切片必须按顺序放置,并且必须是连续的,即切片之间不得有间隙。 切片控制缓冲区必须指定满足此要求的偏移量和大小参数。
- 第一个切片必须在 128 字节边界上开始。 D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM 结构中设置的偏移量必须是 128 字节的倍数。
- 使用 D3D12_MEMORY_POOL_L0 分配的缓冲区支持解码。 这始终是系统内存,但仍是 D3D12 缓冲区。
- 支持从使用 D3D12_MEMORY_POOL_L1(默认池)分配的缓冲区(包括使用 D3D12_CPU_PAGE_PROPERTY_NOT_AVAILABLE 分配的缓冲区)进行解码。
-
D3D12_VIDEO_DECODE_TIER_3
该字段被保留。

要求

要求
Header d3d12video.h