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 的游戏流式处理方案。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/32973.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java 大视界 -- Java 大数据在智慧文旅虚拟导游与个性化推荐中的应用(130)

💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…

【微知】tmux如何在一个会话的1个窗口中水平分割或者垂直分割窗口?(垂直 Ctrl + b, %; 切换Ctrl + b, 方向键; ctrl d关闭)

背景 除了直接创建窗口,还可以分割一个窗口。创建窗口参考兄弟篇:tmux如何在某个会话session中创建多个窗口?如何切换?(Ctrlb c创建;Ctrlb 数字 切换;Ctrlb &关闭) 命令 垂…

强化学习(赵世钰版)-学习笔记(7.时序差分学习)

本章是课程算法与方法中的第四章,介绍的时序差分学习算法是基于随机近似方法设计的强化学习方法,也是model-free的方法。 时序差分算法是一种近似估计策略状态值的算法,具体的形式如下: 本质上是在当前t时刻,被访问到的…

无公网IP也能远程控制Windows:Linux rdesktop内网穿透实战

文章目录 前言1. Windows 开启远程桌面2. Linux安装rdesktop工具3. Win安装Cpolar工具4. 配置远程桌面地址5. 远程桌面连接测试6. 设置固定远程地址7. 固定地址连接测试 前言 如今远程办公已经从一种选择变成了许多企业和个人的必修课,而如何在Linux系统上高效地访…

深度学习与大模型-矩阵

矩阵其实在我们的生活中也有很多应用,只是我们没注意罢了。 1. 矩阵是什么? 简单来说,矩阵就是一个长方形的数字表格。比如你有一个2行3列的矩阵,可以写成这样: 这个矩阵有2行3列,每个数字都有一个位置&a…

【实战ES】实战 Elasticsearch:快速上手与深度实践-8.2.1AWS OpenSearch无服务器方案

👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 8.2.1AWS OpenSearch 无服务器方案深度解析与实践指南1. Serverless架构的核心价值与行业趋势1.1 传统Elasticsearch集群的运维挑战1.2 Serverless技术演进路线技术特性对比…

使用 Arduino 和 ESP8266 Wi-Fi 模块发送电子邮件

使用 Arduino Uno 和 ESP8266 Wi-Fi 模块发送电子邮件 我们正在迈向物联网 (IoT) 世界。这项技术在电子和嵌入式系统中起着非常重要的作用。从任何微控制器或嵌入式系统发送电子邮件都是非常基本的事情,这在 IoT 中是必需的。因此,在本文中,我们将学习“如何使用 Wi-Fi 和…

jmeter-AES加密

AES(全称:Advanced Encryption Standard)对称加密算法,也就是加密和解密用到的密钥是相同的,这种加密方式加密速度非常快, 适合经常发送数据的场合,如:数据加密存储、网络通信加密等。 在进行接口测试或接…

四种 No-SQL

在一个常规的互联网服务中,读取与写入的比例大约是 100:1 到 1000:1。然而,从硬盘读取时,数据库连接操作耗时,99% 的时间花费在磁盘寻址上。 为了优化读取性能,非规范化的设计通过添加冗余数据或分组数据来引入。下述…

使用 Chrome Flags 设置(适用于 HTTP 站点开发)

使用 Chrome Flags 设置(适用于 HTTP 站点开发) 在 Chrome 地址栏输入:chrome://flags/在搜索框输入 “Insecure origins” 或 “Allow invalid certificates”。找到 “Insecure origins treated as secure” 选项(或者 #allow-…

openharmony体验

openharmony5 去年已经出来了 如果以前做过android开发的,学起来不难,关键 1:环境 DevEco Studio 5.0.3 Beta2 https://developer.huawei.com/consumer/cn/deveco-studio/ win10_64bit CPU amd64(不是arm的) 2:安装 执行EXE 安装就行&#x…

【微知】plantuml在泳道图中如何将多个泳道框起来分组并且设置颜色?(box “浏览器“ #LightGreen endbox)

泳道分组并且着色 分组用 box和endbox ,颜色用#xxx,标注用"xxx" box "浏览器" #LightGreen participant "浏览器1" as Browser participant "浏览器2" as Browser2 endboxparticipant "服务端" as …

EngineerCMS完整版支持OnlyOffice8.2文档协作

这次从OO5.3那个时代的接口,改到支持8.2接口,颇费周折。centos升级和docker升级 - Powered by MinDoc (itdos.net) 1. 首先是升级centos 手动升级centos7内核(版本自行选择,亲测内核下载链接有效)_centos内核下载-CS…

仿TikTok推荐系统开发与部署

目录 1、对H&M零售数据集的简要介绍 2、个性化推荐的核心范式 3、引入双塔嵌入模型 4、理解4阶段推荐架构 4.1 第一阶段 4.2 第二阶段 4.3 第三阶段 4.4 第四阶段 5、将4阶段架构应用于我们的H&M案例 6、特征/训练/推理(FTI)架构 7、…

<03.13>八股文补充知识

import java.lang.reflect.*; public class Main {public static void main(String[] args) throws Exception {// 获取 Class 对象//1. 通过类字面量Class<?> clazz Person.class;//2 通过对象实例化String str "Hello";Class<?> clazz_str str.ge…

windows系统,pycharm运行.sh文件

博主亲身试验过&#xff0c;流程简单&#xff0c;可用。 需要pycharm &#xff0c;git。 注意需要Git Bash.exe &#xff0c;也就是Git Bash的应用程序&#xff0c;而不是快捷方式。 需要把这个应用程序的路径复制一下。可以通过右键&#xff0c;复制文件地址的方式。 接着在…

新闻网页信息抽取

1. 网页信息抽取 问题定义&#xff1a;对新闻网页&#xff08;输入为HTML&#xff09;提取结构化信息&#xff0c;包括标题、发布时间、作者、正文、图片等。 动机&#xff1a;由于网页&#xff08;大多数为HTML格式&#xff09;通常带有很多标签、样式、脚本等信息&#xff0…

Attention又升级!Moonshot | 提出MoE注意力架构:MoBA,提升LLM长文本推理效率

源自: AINLPer&#xff08;每日干货分享&#xff01;&#xff01;&#xff09; 编辑: ShuYini 校稿: ShuYini 时间: 2025-3-13 更多&#xff1a;>>>>大模型/AIGC、学术前沿的知识分享&#xff01; 引言 对于大模型来说&#xff0c;有效扩展上下文长度对于实现通用…

人工智能与我何干

思考一下&#xff0c; 如果打破这样的磁场&#xff0c;当我焦虑的时候&#xff0c;总是想要看一些负面的内容&#xff0c;这是错误的&#xff0c;不应该这样做&#xff0c;要坚定自己的信念&#xff0c;我为什么和人工智能去争抢呢&#xff0c;不能和人工智能争抢&#xff0c;这…

Netty启动源码NioEventLoop剖析accept剖析read剖析write剖析

学习链接 NIO&Netty - 专栏 Netty核心技术十–Netty 核心源码剖析Netty核心技术九–TCP 粘包和拆包及解决方案Netty核心技术七–Google ProtobufNetty核心技术六–Netty核心模块组件Netty核心技术五–Netty高性能架构设计 聊聊Netty那些事儿 - 专栏 一文搞懂Netty发送数…