Windows D3D12 DDI中的视频函数调用

D3D12DDI_DEVICE_FUNCS_VIDEO_0082_0 D3D12DDI_COMMAND_LIST_FUNCS_VIDEO_DECODE_0088 D3D12DDI_COMMAND_LIST_FUNCS_VIDEO_PROCESS_0088 D3D12DDI_COMMAND_QUEUE_FUNCS_VIDEO中需要注册很多callback函数,这些视频函数表定义了大量回调,它们的注册和调用遵循着清晰的两阶段流程:"能力查询与创建" 阶段和**"录制与执行"** 阶段。

🏗️ 驱动架构与流程概览

在深入细节前,先用一张图来总览整个生命周期:

1. 设备层 (D3D12DDI_DEVICE_FUNCS_VIDEO_0082_0) ------ 资源的"工厂"

这个函数表是视频功能的根对象 ,由驱动在 CreateDevice 时填充。它就像一家工厂,负责创建所有视频相关的核心"机器"(解码器、处理器、编码器等)和进行能力查询。

回调函数 必要性 调用顺序/说明
pfnGetCaps 必须 第1步:最先被调用。运行时用来查询驱动支持哪些视频功能,如解码格式、编码能力等。
pfnCalcPrivate...Size 系列 必须 第2步 :在创建具体对象前调用。运行时让驱动计算其私有数据所需的内存大小,以进行精确的内存分配。
pfnCreateVideo... 系列 必须 第3步 :在实际分配内存后调用,用于创建具体的视频对象句柄。
pfnDestroyVideo... 系列 必须 最后一步 :在应用销毁对象时调用,用于清理驱动侧分配的资源,防止内存泄漏。

核心流程pfnGetCaps (查能力) -> pfnCalcPrivate...Size (算大小) -> pfnCreateVideo... (建对象) -> ... 使用 ... -> pfnDestroyVideo... (销毁)。


2. 命令队列层 (D3D12DDI_COMMAND_QUEUE_FUNCS_VIDEO)

命令队列是GPU执行命令的通道。

回调函数 必要性 调用顺序/说明
pfnExecuteCommandLists 必须 运行时调用此函数将填充好的命令列表提交到GPU的命令队列中执行。
同步相关回调 视功能而定 例如 pfnSignalpfnWait,用于处理队列间的同步和GPU/CPU的协调工作。

3. 命令列表层 (以解码/处理为例)

命令列表负责录制具体的GPU操作。

A. 视频解码 (D3D12DDI_COMMAND_LIST_FUNCS_VIDEO_DECODE_0088)
回调函数 必要性 调用顺序/说明
pfnDecodeFrame 必须 核心录制函数 。在应用调用 DecodeFrame 时被调用,驱动将此帧的解码操作录制到命令列表中
B. 视频处理 (D3D12DDI_COMMAND_LIST_FUNCS_VIDEO_PROCESS_0088)
回调函数 必要性 调用顺序/说明
pfnProcessFrame 必须 核心录制函数 。在应用调用 ProcessFrame 时被调用,驱动将色彩转换、缩放等视频处理操作录制到命令列表中

特别说明 :编码命令的录制流程更复杂,除了核心的 pfnEncodeFrame 外,还必须 调用 pfnEncodeResolveOutputMetadata 来解析编码后的元数据,这是一个不可或缺的步骤。


📝 总结与标准工作流

将这些碎片拼凑起来,一个典型的视频解码工作流如下:

  1. 初始化 :运行时调用 pfnGetCaps 查询解码能力。

  2. 创建对象 :调用 pfnCalcPrivateVideoDecoderSizepfnCreateVideoDecoder 创建解码器对象。

  3. 准备录制:创建命令队列和命令列表。

  4. 录制命令 :应用调用 API,运行时调用命令列表的 pfnDecodeFrame 将解码操作录制下来。

  5. 执行 :应用调用 ExecuteCommandLists,运行时的 pfnExecuteCommandLists 将命令提交给 GPU。

这个流程中,pfnGetCaps 是所有功能的前提,pfnCalcPrivate...SizepfnCreateVideo... 是每类对象创建的必需对,而各种 ...Frame 函数则是驱动完成实际工作的核心。

相关推荐
2601_955662468 小时前
短视频配音 7 款测评:旁白情绪、断句、呼吸感完整打分
人工智能·音视频·语音识别
bj_bluewei_tech13 小时前
拯救者外接耳机麦克风没声音,更换耳机无效,排查主板音频信号电路
电脑·笔记本电脑·音视频
pullyysusie14 小时前
展厅无线按钮触控点播音视频解决方案及应用
网络协议·音视频·集成学习·智能硬件
VidDown14 小时前
# VP9 还是 H.265?一次压缩选型翻车后的复盘
ffmpeg·音视频·h.265·视频编解码·视频·vp9
xywww16816 小时前
商品图生成视频怎么做:Seedance 2.0在电商素材生产中的实操流程
音视频
QH1392923188019 小时前
R&S FSPN50 FSPN26 FSWP26 相位噪声分析仪典型应用案例
人工智能·百度·微信·集成测试·音视频·facebook·oneapi
HyperAI超神经19 小时前
MiniMax H3 突破视频生成边界,音画内容一体生成;Ornith-1.5-35B-A3B 探索推理模型自进化训练新模式
人工智能·深度学习·学习·音视频·多模态·视频生成·推理模型
chunmiao303220 小时前
Gemini Omni 1.1 Flash 发布:场景扩展上限 40 秒,AI 视频生成转向可控
人工智能·音视频
音视频牛哥20 小时前
世界人形机器人运动会9项新赛技术解读:全自主、灵巧手与机器人实时音视频系统演进
音视频·世界人形机器人运动会·世界人形机器人运动会9项新赛·人形机器人技术发展·机器人实时音视频·机器人低延迟视频·机器人远程接管
zhonyu鱼20 小时前
Shotcut:免费开源的专业级视频剪辑软件
音视频·开源软件