0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用NVIDIA SDK 11.1对DirectX 12进行编码

星星科技指导员 来源:NVIDIA 作者:NVIDIA 2022-04-20 16:27 次阅读

DirectX 12 是 Microsoft 提供的一种低级编程 API ,与以前的版本相比,它减少了驱动程序开销。 DirectX 12 使用命令队列、命令列表等在底层硬件上提供了更大的灵活性和细粒度控制,从而提高了资源利用率。您可以利用这些功能,优化应用程序,并获得比早期 DirectX 版本更好的性能。同时,应用程序本身必须负责资源管理、同步等。

越来越多的游戏标题和其他图形应用程序采用 DirectX12 API 。视频编解码器 SDK 11 . 1 在 Windows 20H1 及更高版本的操作系统上引入了 DirectX 12 编码支持。这使 DirectX 12 应用程序能够在所有受支持的 GPU 代中使用 NVENC 。视频编解码器 SDK 包包含 Nvencodepi 头文件、演示用法的示例应用程序以及使用 API 的编程指南。示例应用程序包含 C ++包装类,可以根据需要重用或修改。

typedef struct _NV_ENC_FENCE_POINT_D3D12
 {
     void*                   pFence; /**< [in]: Pointer to ID3D12Fence. This fence object is  
                                                used for synchronization. */
     uint64_t                value;  /**< [in]: Fence value to reach or exceed before the GPU 
                                                operation or fence value to set the fence to,                                                                
                                                after the GPU operation. */ 

初始化 NVENC 时,客户端应用程序还必须指定输入缓冲区格式。

尽管在 DirectX 12 中传递给 Encode picture API 的大多数参数与其他接口中的参数相同,但仍存在某些功能差异。输入端(客户端应用程序写入输入面, NVENC 读取输入面)和输出端( NVENC 写入位流面,应用程序读取位流面)的同步必须使用 fences 进行管理。这与以前的 DirectX 接口不同,后者由操作系统运行时和驱动程序自动处理。

在 DirectX 12 中,需要有关围栏和围栏值的附加信息作为编码图片 API 的输入参数。这些围栏和围栏值用于同步 CPU – GPU 和 GPU – GPU 操作。应用程序必须在NV_ENC_PIC_PARAMS::inputBuffer和NV_ENC_PIC_PARAMS:: outputBitstream中发送以下输入和输出结构指针,其中包含围栏和围栏值:

typedef struct _NV_ENC_INPUT_RESOURCE_D3D12
 {
     NV_ENC_REGISTERED_PTR       pInputBuffer
     NV_ENC_FENCE_POINT_D3D12    inputFencePoint;       
     …
 } NV_ENC_INPUT_RESOURCE_D3D12;
  
 typedef struct _NV_ENC_OUTPUT_RESOURCE_D3D12
 {
     NV_ENC_REGISTERED_PTR      pOutputBuffer;
     NV_ENC_FENCE_POINT_D3D12   outputFencePoint;     
     …

要在异步操作模式下检索编码输出,应用程序应在调用NvEncLockBitstream之前等待完成事件。在同步操作模式下,应用程序可以调用NvEncLockBitstream,因为 NVENCODE API 在返回编码输出之前确保编码已完成。但是,在这两种情况下,客户机应用程序都应该在NV_ENC_LOCK_BITSTREAM::outputBitstream中传递指向NV_ENC_OUTPUT_RESOURCE_D3D12的指针,该指针在NvEncEncodePicture API 中使用。

关于作者

Dipti Taur 是 NVIDIA 多媒体驱动程序团队的高级系统软件工程师。她曾从事DirectX 12的各种视频编解码器、视频驱动程序开发和应用程序编程接口设计。她拥有印度孟买IIT电子工程硕士学位,专业从事通信信号处理。

Sampurnananda Mishra 是 NVIDIA 负责多媒体驱动程序的高级经理。他研究过 NVIDIA GPU s 上支持的各种多媒体用例。他的兴趣包括视频编码、计算机视觉、视频安全、深度学习和系统软件。他拥有印度 IIT 坎普尔电子工程硕士学位,主攻数字信号处理。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 接口
    +关注

    关注

    33

    文章

    8639

    浏览量

    151384
  • NVIDIA
    +关注

    关注

    14

    文章

    5013

    浏览量

    103243
  • 深度学习
    +关注

    关注

    73

    文章

    5507

    浏览量

    121266
收藏 人收藏

    评论

    相关推荐

    通过Google Play SDK管理中心打造更安全、更优质的SDK

      虽然 SDK 可以为应用开发者带来许多好处,但也可能会以不易识别或难以控制的方式影响应用。因此,我们在 2021 年推出了 Google Play SDK 管理中心,并在其中纳入了一些被广泛采用
    的头像 发表于 11-14 10:36 315次阅读
    通过Google Play <b class='flag-5'>SDK</b>管理中心打造更安全、更优质的<b class='flag-5'>SDK</b>

    如何使用ASCII码进行编码

    ,包括英文字母、数字、标点符号和一些特殊符号。每个字符在ASCII码表中都有一个唯一的数字代码,范围从0到127。以下是使用ASCII码进行编码的基本步骤: 1. 确定字符的ASCII码 首先,你需要
    的头像 发表于 11-10 09:37 680次阅读

    NVIDIA JetPack 6.0版本的关键功能

    NVIDIA JetPack SDK 支持 NVIDIA Jetson 模块,为构建端到端加速 AI 应用提供全面的解决方案。JetPack 6 通过微服务和一系列新功能,扩展了 Jetson 平台的灵活性和可扩展性,是 202
    的头像 发表于 09-09 10:18 453次阅读
    <b class='flag-5'>NVIDIA</b> JetPack 6.0版本的关键功能

    NVIDIA RTX AI套件简化AI驱动的应用开发

    NVIDIA 于近日发布 NVIDIA RTX AI套件,这一工具和 SDK 集合能够帮助 Windows 应用开发者定制、优化和部署适用于 Windows 应用的 AI 模型。该套件免费提供,不要求使用者具备 AI 框架和开发
    的头像 发表于 09-06 14:45 465次阅读

    IB Verbs和NVIDIA DOCA GPUNetIO性能测试

    NVIDIA DOCA GPUNetIO 是 NVIDIA DOCA SDK 中的一个库,专门为实时在线 GPU 数据包处理而设计。它结合了 GPUDirect RDMA 和 GPUDirect
    的头像 发表于 08-23 17:03 643次阅读
    IB Verbs和<b class='flag-5'>NVIDIA</b> DOCA GPUNetIO性能测试

    Mistral AI与NVIDIA推出全新语言模型Mistral NeMo 12B

    Mistral AI 和 NVIDIA 于近日共同发布了一款全新的领先语言模型Mistral NeMo 12B。开发者可以轻松定制和部署该模型,令其适用于支持聊天机器人、多语言任务、编码和摘要的企业应用。
    的头像 发表于 07-27 11:04 676次阅读

    ESP8266 12E如何使用SDK中的函数?

    ESP8266 12E - 如何使用 SDK 中的函数
    发表于 07-22 06:52

    如何将SDK安装到IDE并使用所有SDK功能?

    我是 Wi-Fi 无线通信和ESP8266芯片方面的新手。我想使用带有MCUXpresso IDE的32位MCU Kinetis与ESP 12-E进行通信。如何将SDK安装到IDE并使用所有S
    发表于 07-11 08:07

    NVIDIA Holoscan SDK中使用OpenCV构建零拷贝AI传感器处理管线

    NVIDIA Holoscan 是 NVIDIA 的跨领域多模态实时 AI 传感器处理平台,为开发者构建端到端传感器处理管线奠定了基础。
    的头像 发表于 07-02 11:50 533次阅读
    在<b class='flag-5'>NVIDIA</b> Holoscan <b class='flag-5'>SDK</b>中使用OpenCV构建零拷贝AI传感器处理管线

    MediaTek NeuroPilot SDK整合NVIDIATAO

    MediaTek 在 COMPUTEX 2024 期间宣布将 NVIDIA TAO 与 MediaTek NeuroPilot SDK 集成,应用于边缘 AI 推理芯片的开发。MediaTek
    的头像 发表于 06-12 14:03 496次阅读

    NVIDIA发布DeepStream 7.0,助力下一代视觉AI开发

    NVIDIA DeepStream 是一款功能强大的 SDK,能够提供用于构建端到端视觉 AI 管线的 GPU 加速构建模块。
    的头像 发表于 05-23 10:09 685次阅读
    <b class='flag-5'>NVIDIA</b>发布DeepStream 7.0,助力下一代视觉AI开发

    聚沃科技SDK使用指南

    本文主要针对SDK如何重定义硬件接口和外设参数进行说明,方便让大家快速灵活使用聚沃科技SDK
    的头像 发表于 05-06 10:23 532次阅读
    聚沃科技<b class='flag-5'>SDK</b>使用指南

    利用NVIDIA AI Enterprise IGX在边缘赋能任务关键型AI

    NVIDIA SDK 在加速智慧城市、医疗和机器人等领域的 AI 应用方面发挥了重要作用。
    的头像 发表于 04-26 09:46 508次阅读
    利用<b class='flag-5'>NVIDIA</b> AI Enterprise IGX在边缘赋能任务关键型AI

    foc sdk5.0如何使用库中AB编码器的脉冲来计数?

    在使用foc sdk5.0过程中,我配置了光编码器来检测马达速度,但在使用过程中,发现控制不是很好,我想使用库中AB编码器的脉冲来计数,请告知应该用哪个函数? 谢谢!
    发表于 04-03 08:26

    FPGA处理编码信号进行毛刺滤波的方法实现

    在利用处理编码信号时,一般在较为理想的环境下可以很方便进行计算,判断等。
    的头像 发表于 02-21 14:46 1612次阅读
    FPGA处理<b class='flag-5'>编码</b>信号<b class='flag-5'>进行</b>毛刺滤波的方法实现