nvdec与vaapi与vdpau的关系

news2024/7/3 15:12:46

nvdec/vaapi/vdpau的关系

NVDEC:nvidia video decoder。

英伟达官网中有关video codec SDK的介绍,其中有头文件、开发API文档等

Nvidia Video SDK中提供了NVDEC、NVENC,其中NVDEC以前也叫做NVCUVID(不知道NVDEC的开发API中很多都已cuvid开头的函数是不是因为之前从NVCUVID转变而来的)。之前NVDEC是随着cuda toolkit一起发布的,现在是随着Nvidia codec SDK打包发布。

1.1 VDPAU与NVDEC

NVDEC作为一种私有API,只被nvidia driver支持。

VDPAU是一种开源API,最初是由Nvidia开发的用于支持Nvidia PureVideo SIP Block,后来发展为可以被多种GPU支持,所有的支持VDPAU的英伟达显卡列表,AMD Raedon HD4000+支持VDPAU,Intel不支持VDPAU只支持VA-API,不过可以通过libva-va-gl来支持VDPAU中使用Intel的VA-API,Mesa通过Gallium3D来支持VDPAU。

generic VDPAU drivers

也有drivers是支持VDPAU转VA-API的,特别是对于部分Intel显卡来说,其可能只支持VA-API,此时如果应用只支持VDPAU,则就需要VDPAU–>VA-API的转换驱动。我这里的GTX 1050Ti其实就同时支持VDPAU和NVDEC,两种方式我尝试了下,都能正确的解码视频。

mesa Gallium3D

mesa的gallium3D模块是旨为简化3D图像设备编程API接口的适用于多种操作系统、rendering或者video加速API的一系列接口和库,它是开源的。

gallium3D模块的前端frontends中就包含了多种加速接口,比如vavdpau

mesa中现在va和vdpau主要支持的是,【va】:r600,radeonsi,nouveau,virtio_gpu,d3d12;【vdpau】:r600,radeonsi,nouveau,virtio_gpu,d3d12。从这里也可以看出,linux虚机中的va和vdpau都是通过virtio_gpu下发到host主机上的,而host上virglrenderer中目前只支持libva接口的处理,所以host主机上就需要VA-API转VDPAU或者VA-API转NVDEC的各种驱动以便适配不同厂家的显卡(intel/amd/nvidia)等

1.2 NVDEC驱动

厂家驱动

NVDEC由nvidia官方驱动中包含了,可以通过安装NVIDIA-Linu-xxx.run来安装,nvidia-smi查看其信息,其中应该同时也安装了cuda驱动。

VAAPI转NVDEC驱动

vaapi转vdpau驱动

原本有个库 libva-vdpau-driver实现VA-API到VDPAU的转换,不过该软件有点老了,还停留在2012年,而且该软件的ubuntu deb包被ubuntu之前给遗弃了,所以ubuntu22.04中用apt search搜不到该包,据说要到ubuntu23之后还会加进来。

不顾可以直接安装vdpau-va-dirver_0.7.4-7_amd64.deb包,安装完会出现vdpau_drv_video.so,目前测试了下,vainfo是可以通过vdpau去获取到profile和entrypoints的。但是我在用vdpau启动虚拟机时,虚机coredump了。虚机就没启动的了。待分析排查。
在这里插入图片描述

vaapi转nvdec驱动

elFarto这家伙发了帖子问,2018年libva中准备遗弃GLX,转用EGL/dm-buf方式,不过那时候NVIDIA驱动中并不支持EGL,所以就会出现vdpau实际不可用了,而当时Linux的app中基本都不支持NVDEC,比如firefox等,所以就出先那些只支持VA-API的Linux应用无法使用Nvidia显卡做video硬件加速。参考这个帖子。

后来,elFarto自己写了个 nvidia-vaapi-driver ,专门给Firefox通过VA-API使用NVDEC加速的。

不过其实该仓库取名应该是nvdec-vaapi-driver 更合适,毕竟它的功能只是将VA-API转NVDEC。我也试过了,安装之后,会出现nvidia_vidoe_drv.so,通过vainfo可以正确获取profiles和entrypoints。

请添加图片描述

不过这个在虚机中使用mpv --hwdec=auto 播放h264视频时,会出现coredump,dump在nvidia-vaapi-driver的nvEndPicture()。待分析排查

安装了nvidia-vaapi-driver驱动后,vainfo的vdpauinfo运行结果
请添加图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【9.HTML入门知识-其他知识补充】

其他知识补充 1.使用Web字体和图标1.1 web fonts兼容性写法1.2 字体图标1.2.1 字体图标的使用 2.精灵图 CSS Sprite2.1 精灵图的使用 3.置鼠标指针(光标)样式cusor4.居中方案4.1 使用绝对定位元素居中 1.使用Web字体和图标 1.1 web fonts兼容性写法 1.2 …

软件开发团队的护网低成本应对方案

主题: 1、攻击方技术手段说明,结合攻击队手段重点关注的防御点介绍; 2、防守方(软件开发团队)的低成本应对思路;系统是如何被攻破的 攻防演练(APT)攻击路径 未知攻,焉知…

IGH EtherCAT主站应用层代码开发:控制驱动电机

1、安装IGH EtherCAT主站 Ubuntu18.04环境下安装igH EtherCAT Master 2、查询从站配置信息 连接从站通过网线连接主站与从站 启动主站打开终端,输入: sudo /etc/init.d/ethercat star 显示Starting EtherCAT master 1.5.2 done则说明成功。 查询从站列表终端输入: eth…

【C++】 list-map 链表与映射表的简单使用

目录 list 链表 定义链表,并在首、尾添加、删除元素 迭代器遍历链表 任意位置插入或删除 获取首尾节点中元素的值 使用增强的范围for循环进行遍历链表 其他常见的函数 map 映射表 定义map 添加 使用函数插入元素 迭代器遍历map 修改 删除 使用增强的范…

PMP项目管理-[第七章]成本管理

成本管理知识体系: 规划成本管理: 估算成本: 制定预算: 控制成本: 7.1 挣值管理新兴实践 ps:了解即可,考试考不到 7.2 规划成本管理 定义:确定如何估算、预算、管理、监督和控制项目…

直接插入排序

一、概念及其介绍 插入排序(InsertionSort),一般也被称为直接插入排序。 对于少量元素的排序,它是一个有效的算法。插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增…

你是否曾经为自己写的代码而感到懊恼?那如何才能写出高质量代码呢?

这里写目录标题 一、 前言二、高质量代码的特征三、编程实践技巧1. 遵循编码规范2. 使用有意义的变量名和函数名3. 减少代码重复4. 使用注释5. 编写单元测试6. 使用设计模式7. 使用版本控制工具8. 保持代码简洁9. 优化代码性能10. 学习和借鉴他人的代码总结 一、 前言 写出高质…

Python入门教程+项目实战-11.5节: 程序实战-选择排序算法

目录 11.5.1 排序算法简介 11.5.2 选择排序算法 11.5.3 系统学习python 11.5.1 排序算法简介 所谓排序,是指将数据集合中的元素按从小到大的顺序进行排列,或按从大到小的顺序进行排列。前者称为升序排序,后者称为降序排序。在数据结构与算…

ChatGPT会颠覆SEO内容创作吗

近几年 AI 的发展日新月异。除了搜索算法本身大规模应用人工智能,我也一直关注着 AI 用于写作的进展。 上篇关于 Google 有用内容更新的帖子还在说,高质量内容创作是 SEO 最难的事之一,对某些网站来说,如果能有工具帮助&#xff…

python毕业设计之django+vue.js幼儿园网站系统

开发语言:Python 框架:django Python版本:python3.7.7 数据库:mysql 数据库工具:Navicat 开发软件:PyCharm 采用了Windows10操作系统平台,使用HTMLCSSJS前端模板django作为后台监控&#xff0…

大数据Doris(九):Apache Doris 简单使用

文章目录 Apache Doris 简单使用 一、用户创建 二、创建数据库 三、账户赋权 四、创建数据表 1、创建数据表 2、准备数据 3、导入数据 五、查询数据表 Apache Doris 简单使用 下面按照官网给出的示例简单操作Doris,首先创建用户、创建数据库、赋权、创建表…

第二弹进阶吴恩达 ChatGPT Prompt 技巧

第一弹笔记在这里: 总结吴恩达 ChatGPT Prompt 免费课程 今天分享第二弹,进阶篇。 第一点,任务序列化。 通常看完一篇长文,脑子里往往充满无数疑问。急切想知道所有答案,必须列一个问题清单。对话式问法,对…

ChatGPT:数字时代革新与展望

ChatGPT:数字时代革新与展望 AGI 未来的愿景:建安全有益的 AGI OpenAI团队对AGI的展望: 我们希望 AGI 能够赋予人类在宇宙中最大程度地繁荣发展的能力。我们不期望未来是一个不合格的乌托邦,但我们希望将好的最大化,将…

vue使用路由的query配置项时如何清除地址栏的参数

写vue项目时,如果想通过路由的query配置项把参数从一个组件传到另一个组件,但是又不希望?idxxx显示在地址栏(如:http://localhost:8080/test?idxxx的?idxxx),该怎么做: 举一个案例&#xff1…

【Python】【进阶篇】18、Django初始化项目环境精讲

目录 18、Django初始化项目环境精讲1. 完成数据库迁移2. PyMySQL模块的使用3. migrate与makemigrations命令详解1) makegrations生成数据库迁移文件2) migrate执行数据库迁移命令3) 完成数据库迁移总结 18、Django初始化项目环境精讲 上一节中,我们完成了对 settin…

软件工程导论 - 了解黑盒测试

前言 本篇介绍用例的基本要素,熟悉黑盒测试的7种设计测试用例的方法,了解等价类,边界值,判定表,正交表,场景设计,错误猜测法;如有错误,请在评论区指正,让我们…

使用docker部署prometheus最新版本2.43.0

环境准备: 192.168.197.136 安装prometheus 192.168.197.137 安装grafana 先把需要用到的镜像拉取下来 docker pull prom/prometheus 136服务器拉取 当前最新版本2.43.0 在部署prometheus之前先运行一个容器,把需要挂载的目录文件拷贝出来 docker…

[230501] 4月29日考试真题第一篇|Temporary Pools

题目来源:http://t.csdn.cn/goCDT 正确率:6/10 目录​​​​​​​ Temporary Pools 题目 Temporary Pools Paragraph 1: Temporary pools are freshwater habitats that retain water for only three to four months of the year or even shorter pe…

如何在CentOS上详细安装PageOffice进行企业文档管理和协作

PageOffice是一款针对企业文档管理和协作的办公软件,使用它可以轻松创建和编辑办公文档,并协作共享给其他用户。在CentOS上安装PageOffice可以提高企业的工作效率和文档管理水平。本文将详细介绍在CentOS上安装PageOffice的步骤和注意事项。 一、安装Ja…

【Unity-UGUI控件全面解析】| RawImage 显示纹理组件详解

🎬【Unity-UGUI控件全面解析】| RawImage 显示纹理组件详解一、组件介绍二、组件属性面板三、代码操作组件四、组件常用方法示例4.1 相机映射,可充当小地图4.2 播放视频💯总结🎬 博客主页:https://xiaoy.blog.csdn.net 🎥 本文由 呆呆敲代码的小Y 原创,首发于 CSDN�…