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 函数则是驱动完成实际工作的核心。

相关推荐
程序员-李俞3 小时前
MiniMax H3 深度拆解:全模态视频模型来了,AI 漫剧系统该如何重构?
人工智能·ai作画·重构·aigc·音视频·ai写作·画布
淡淡的香烟4 小时前
Android智能猫砂盆视频加载慢卡顿问题分析
android·服务器·音视频
小猴子爱上树4 小时前
跨马翻译:批量图片翻译与视频字幕工具,跨境电商高效助手
python·音视频
山顶夕景5 小时前
【全模态】音视频理解模型Audio-Visual Flamingo
音视频·video·vlm·多模态理解
郑午时光15 小时前
全球首发!2026年适合IP短剧长视频的AI视频生成工具,即梦seedance2.5轻松做短剧
人工智能·tcp/ip·音视频
Fluxart.ai20 小时前
AI 视频生成接入电商流水线的工程实践:从单条测试到日均 50 条的踩坑全记录
音视频
IT小白杨20 小时前
2026年短视频平台风控技术解析:设备指纹体系、行为建模与环境隔离的边界在哪里
chrome·经验分享·架构·音视频·安全架构·指纹浏览器
桐桐桐21 小时前
视频画面裁剪与尺寸压缩实战:ffmpeg crop/scale 用法与在线替代
ffmpeg·音视频·视频
阿童木写作1 天前
跨境电商图片翻译工具推荐:批量AI翻译+视频字幕+智能抠图
大数据·人工智能·python·音视频
勤劳X码农1 天前
2026年四款免费配音轻量工具参数记录与实测数据
音视频