视频硬解api介绍
在一个gpu如此强大的时代,视频解码怎么能少了gpu厂商的参加。为了用硬件加速视频解码,厂商定义了一些api。
好吧,一旦和硬件打交道,就会有os的参加,有了硬件与os参加,api肯定会变成很凌乱,看了一点代码,一些wiki,一些文档,写个总结,希望真正的专家斧正一下。
windows平台:
微软一家说了算,硬件都是小弟。所以api没那么凌乱。就一种
DXVA(directx video acceleration),两个版本,1.0和2.0.
linux平台:
什么事到了linux这,都异常让人郁闷。
号称给你很多选择,最自由的选择,如果都不满意,还可以自己定义一套。
其实呢?我根本不需要那么多选择,我只需要一个容易用的,好用的,稳定的而已。我只是一个普通的程序员,没有站到时代前沿,就想快速开发。
显卡有三大家,intel,amd,nvdia,自然硬解api也就有三套。
intel的:va api (video acceleration api),自我号称为linux标准。freedesktop也用的这套标准。
nv的: vdpau (video decode and presentation api for unix),nv的定义的api。
amd的: Xvba (x-video bitstream acceleration api)),amd定义的api。
其实开源界如果只有三套,其实也还算好吧。但是很让人恼火的就是。当你的硬件平台是nv时,你发现你的想用的软件只支持va api,肿么办?那。。。模拟吧。。于是就有了vdpau for va api。xvba fo va api。
从这个角度讲,也还算可以,至少大家在名义上让intel当了老大。大家都在后端用自己的代码模拟实现intel的api。不过事实上,还有 va api for vdpau这种东西。。。我凌乱了。。你看明白了么?
ps:
实际上,硬件厂商参与完之后,x组织也没忘记插一脚。有个标准XvMC(X-Video Motion Compensation)标准,ffmpeg中有支持,不过签于x组织的弱势,这套api支持不好。其他的va api与vdpau,ffmpeg也加入了支持,不知道为什么xvba没有支持,难道amd已经穷到没人提交patch给开源社区了?
再ps:
最近看了ffmpeg 的patch list,发现1.0时,有人提交xvba的patch,但是没有被合并到主分支上来,看来还需要一段时间ffmpeg才能直接开启amd显卡的硬解。
http://developer.amd.com/tools-and-sdks/open-source/
sdk请戳上面的链接。
android平台:
google一家,别无分号,虽然号称你可以自己干掉libstagefright这个框架,自己实现一套。不过有这样技术实力的公司,通常不去干破坏标准的事。
于是也简单了,openmax。
嵌入式平台嘛,远远比pc世界的厂商多,复杂的多,标准一定要十分十分抽象,干脆什么都没有,只有一个状态机。
所以标准变得十分简化。
不过这样对硬件厂商就方便多了,大家自己只要能搞出openmax定义的组件就好了。
mac
实际上如果操作系统厂商比较封闭一点,世界可能会更好。比如mac os,上面说了linux上视频加速接口的混乱,来自freebsd的mac os又好了很多。
只有一套api,叫vda(Video Decode Acceleration Framework),详细请戳
https://developer.apple.com/library/mac/technotes/tn2267/_index.html
https://lists.libav.org/pipermail/libav-api/2011-November/000314.html
视频硬解api介绍的更多相关文章
- 「小程序JAVA实战」小程序视频组件与api介绍(51)
转自:https://idig8.com/2018/09/22/xiaochengxujavashizhanxiaochengxushipinzujianyuapijieshao50/ 这次说下,小程 ...
- Solr系列三:solr索引详解(Schema介绍、字段定义详解、Schema API 介绍)
一.Schema介绍 1. Schema 是什么? Schema:模式,是集合/内核中字段的定义,让solr知道集合/内核包含哪些字段.字段的数据类型.字段该索引存储. 2. Schema 的定义方式 ...
- 【视频开发】【CUDA开发】英伟达CUVID硬解,并通过FFmpeg读取文件
虽然FFmpeg本身有cuvid硬解,但是找不到什么好的资料,英伟达的SDK比较容易懂,参考FFmpeg源码,将NVIDIA VIDEO CODEC SDK的数据获取改为FFmpeg获取,弥补原生SD ...
- MediaCodec在Android视频硬解码组件的应用
https://yq.aliyun.com/articles/632892 云栖社区> 博客列表> 正文 MediaCodec在Android视频硬解码组件的应用 cheenc 201 ...
- 【Android 直播软件开发:音视频硬解码篇】
开篇 炙手可热,望而生畏的音视频开发 时至今日,短视频App可谓是如日中天,一片兴兴向荣.随着短视频的兴起,音视频开发也越来越受到重视,但是由于音视频开发涉及知识面比较广,入门门槛相对较高,让许许多多 ...
- Android 用MediaCodec实现视频硬解码
http://blog.csdn.net/halleyzhang3/article/details/11473961 http://www.360doc.com/content/14/0119/10/ ...
- iOS视频硬编码技术
iOS视频硬编码技术 一.iOS视频采集硬编码 基本原理 硬编码 & 软编码 硬编码:通过系统自带的Camera录制视频,实际上调用的是底层的高清编码硬件模块,即显卡,不使用CPU,速度快 软 ...
- 使用html5中video自定义播放器必备知识点总结以及JS全屏API介绍
一.video的js知识点: controls(控制器).autoplay(自动播放).loop(循环)==video默认的: 自定义播放器中一些JS中提供的方法和属性的记录: 1.play()控制视 ...
- 安卓平台 全面支持软解和硬解的SDK-Demo源代码开放
专业做视频编解码的SDK开发工作. 2015年12月1日10:46:55: 更新到1.5.0版本 功能列表: 基本播放: 1,正常播放, 支持MP4,FLV,AVI,TS,3GP,RMVB,WM,WM ...
随机推荐
- Android 頁面中有 EditText ,進入時取消自動彈出鍵盤
Android 畫面裡的 EditText 被 Focus 時 會自動彈出鍵盤 這是方便使用者習慣的設計 不過筆者在開發時發現 有時候方便過頭了 原因 一開始進入有 EditText 的頁面時 Edi ...
- css position 定位
fixed 属于绝对定位,相对于浏览器窗口定位 (IE 6不支持) relative 相对定位,通过设置垂直或水平位置,让这个元素"相对于"它的原始起点进行移动. ...
- tomcat7.0 的配置
一.安装JDK 1.7 1.添加环境变量:在 我的电脑->属性->高级->环境变量 2.新建系统变量,变量名:JAVA_HOME 变量值:C:\Program Files\Java\ ...
- java中split以"."分割的问题
今天开发中使用字符串分割函数split(),发现:输出的并不是想要的结果 或者直接报错都有可能 查询后才发现,需要转译 原来在java中函数split(".")必须是是split( ...
- Eclipes中使用BASE64Encoder及BASE64Decoder报错
也没有提示让导包,这是因为Base64的加密解密都是使用sun.misc包下的BASE64Encoder及BASE64Decoder的sun.misc.BASE64Encoder/BASE64Deco ...
- CSS控制长文本内容显示(截取的地方用省略号代替)
自动换行问题,正常字符的换行是比较合理的,而连续的数字和英文字符常常将容器撑大,下面介绍的是CSS如何实现处理的方法. 现实中经常出现一些内容比较长的文本,为了使整体布局美观,需要将文本内容控制在一行 ...
- IOS-开发日志-UIScrollView
UIScrollView 1. contentOffset 默认CGPointZero,用来设置scrollView的滚动偏移量. // 设置scrollView的滚动偏移量 scrollView. ...
- jQuery分析(3) - jQuery.fn.init
1.前言 上一篇jQuery分析(2)中了解了jQuery库的骨架实现原理,这就好比摇滚音乐,摇滚音乐不是某种音乐他就像一个音乐盒子,里面包含了各种不同的摇滚风格(山地.朋克.乡村.流行.硬摇.金属. ...
- LA 3902 Network(树上最优化 贪心)
Network Consider a tree network with n <tex2html_verbatim_mark>nodes where the internal nodes ...
- C语言程序设计概述
1 概论 1972年Dennis Ritchie发明了C语言,而后Dennis Ritchie又使用C语言重写了Unix系统,自那以后C语言逐渐受到了全世界大多数编程爱好者的喜爱,后期的主流操作系统L ...