Windows 图形显示驱动开发-WDDM 3.0功能- D3D12 视频编码(二)

D3D12 视频编码回调函数

驱动程序实现以下回调函数以支持 D3D12 视频编码。

  • 创建表示视频编码器的驱动程序对象:
  1. PFND3D12DDI_CALCPRIVATEVIDEOENCODERSIZE_0082_0 会计算 D3D 运行时需要为驱动程序对象分配的内存量。
  2. PFND3D12DDI_CREATEVIDEOENCODER_0082_0 创建保存视频编码会话状态的实际视频编码器对象。
  • 创建表示视频编码器堆的驱动程序对象:
  1. PFND3D12DDI_CALCPRIVATEVIDEOENCODERHEAPSIZE_0080_2 会计算 D3D 运行时需要为驱动程序对象分配的内存量。
  2. PFND3D12DDI_CREATEVIDEOENCODERHEAP_0080_2 创建包含依赖于分辨率的驱动程序资源和状态的视频编码器堆对象。
  • 对帧进行编码:
  1. PFND3D12DDI_VIDEO_ENCODE_FRAME_0082_0 将编码帧操作记录到命令列表。
  2. 编码操作后,还必须调用 PFND3D12DDI_VIDEO_ENCODE_RESOLVE_OUTPUT_METADATA_0082_0 才能将编码操作的输出元数据解析为可读格式。 驱动程序解析的元数据的布局类似于规范中图表 所示的示例。
  • 销毁视频编码器和关联堆:
  1. PFND3D12DDI_DESTROYVIDEOENCODER_0080
  2. PFND3D12DDI_DESTROYVIDEOENCODERHEAP_0080 

测试

以下测试包含在 Windows 硬件实验室工具包(WHLK)的一部分。 有关详细信息,请参阅 WHLK。
 

测试名称
描述
CreateVideoEncoder 根据报告的 CheckFeatureSupport 相关案例验证 VideoEncoder/VideoEncoderHeap 的创建。
SingleEncodeH264/HEVC
用于结构图像基本检查的基于 QR 码的测试。 输入图像序列使用预定义的 QR 内容进行标记,然后进行编码和解码。 最后,会检查输出值(并在一定程度上检查质量),以确保与预期一致。
EncodeProfileLevelSuggestionsH264/HEVC
验证根据 H.264/HEVC 规范和作为输入传递给 D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT 的配置,D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT.SuggestedProfile/Level 值是预期值。
EncodeHeapSizeCap 使用不同增加的输入参数验证增加的内存占用量。
SimpleGOPEncodeH264/HEVC(10 位)
使用不同的分辨率、GOP 模式、切片模式和其他编解码器配置对输入视频进行转码,并针对输入视频流差异验证输出编码的视频是否可接受。 此比较是使用峰值信号与噪音比率(PSNR)完成的。
EncodeSubregions/ResolutionReconfiguration 验证实时重新配置
EncodeH264LongTermReferences
验证长期图片引用的使用。
EncodeIntraRefresh 使用打开的 IPP...P...P... GOP 验证帧内刷新的简单方案。
VideoEncodeCommandListFeatures
验证视频编码命令列表的预测和标记。
VideoEncodeTimestamps 验证视频编码命令列表的时间戳。

 视频编码场景

OneCore

D3D12 视频编码支持会在仅 D3D12 可用的平台上启用可移植硬件加速视频编码。 这些模式包括云计算和 IoT 平台使用的各种 OneCore SKU。 这些方案中提供了视频编码加速,无需使用特定于平台的解决方案。

媒体 API

所有硬件供应商都可以以低级别和可移植的方式访问视频编码功能。 这种可访问性允许更高级别的媒体 API(如媒体基础架构)在此 API 的基础上构建其媒体层,该 API 负责抽象化处理不同的硬件平台。 鉴于 API 的低级别设计,这些更高级别的媒体层可以针对其方案进行优化,方法是精细控制视频编码会话的同步和内存分配/驻留方面,例如完全控制参考图片管理和位流标头写入职责。 这种责任转移到位于此 API 之上的层也允许硬件供应商在媒体层中具有一组一致的编码策略(例如 DPB 启发式策略,如自适应 GOP),这些策略可以跨不同的硬件平台重复使用。

与 D3D 图形、计算和机器学习的互操作性

D3D12 视频编码 API 可实现 D3D12 视频编码和 D3D12 图形、计算和 ML 方案之间的高效互操作性。 对于通过相机流运行 ML 推理等方案,这种互操作性很有趣。

游戏直播场景

D3D12 视频编码 API 支持需要高性能低级别 API 的游戏流式处理方案。

你可能感兴趣的:(windows图形显示驱动开发,驱动开发)