记录一下遇到几个平台里的视频编解码和图像scale的硬件加速的方法

1,intel平台
当包含GEN系列的集成GPU时,可用libva实现视频codec、颜色空间转换和图像scale的硬件加速,具体可使用libyami这个接口友好的封装库。加速处理过程中图像位于GPU内存,用libva的Surface表示。其在原生的linux和Android NDK环境中均可用。

2,Allwinner平台
可以直接使用特有的 cedarx 硬件引擎实现视频编解码加速。使用G2D组件实现图像scale的硬件加速。其SDK包可从其官方github上获取。

3,opemnax接口
openmax只是一套开放的媒体处理接口,有些厂商不直接提供原生的媒体SDK,将媒体处理功能以Openmax接口来提供。此时只能使用Openmax来使用硬件加速功能了。具体需要阅读Openmax接口规范,以及厂商自身的额外提供的扩展接口。
此类接口比较广泛,比如MTK/Intel/RasperryPi等,都可用。具体的功能是通过OMX组件来提供的,因此具体需要看实际有组件可用。在android系统框架中也有openmax组件接口可用,但只能用于系统定制开发,在开发App时只能使用Mediacodec接口。

4,Android的MediaCodec接口
MediaCodec接口为新版Android的所提供的媒体处理接口,其本质上也是基于openmax接口来做的实现。各个硬件平台厂商对自己平台提供的硬件加速功能以openmax接口的方式进行提供,在android框架中基于OMX继续封装成MediaCodec,实际上在android框架中除了平台厂商提供的硬件加速OMX组件,也有android提供软codec组件实现。这些实现位于libstagefright中。

5,Nvidia VideoCodec
直接利用显卡的内部的硬件视频编解码音频来进行编解码(不是CUDA计算引擎),直接使用vidia-video-codec-sdk来做开发即可。好处是与CUDA交互比较方便。类似主要是视频编解码功能。

其他平台没有接触到,暂不记录。

=== update 2017年12月25日 ===
其实各个平台实现硬件加速媒体处理的基本原理都是一致的,即在图像数据放在专有memory中,然后交给专有的硬件单元进行计算处理,这些专有硬件单元对这些计算任务都是特别设计和优化的,所以其处理速度比CPU软处理要快。

因而若图像数据开始时在常规内存中,那么则需要先将其copy到专有memory中,然后才能进行这些硬件加速计算,并且结果若需要由CPU后续处理,也需要将数据从专有memory中copy回常规内存中,这些copy过程效率取决于硬件平台的设计实现(CPU和内存总线等),性能各不相同,但是都是需要额外耗时的。若数据量比较小,且这种copy动作较多,那么copy动作耗时占比可能比较大,那么整体的效率可能还不如直接由CPU对常规内存中的数据进行直接处理来的快。

类似CUDA/OpenCL的使用都有类似问题,因而是否需要采用硬件加速计算,需要视情况而定,综合考虑数据量大小/硬件加速效率之后再决定,而不是一概盲目采用。

几个平台环境里视频编解码和图像scale的硬件加速的方法的更多相关文章

  1. 集显也能硬件编码:Intel SDK && 各种音视频编解码学习详解

    http://blog.sina.com.cn/s/blog_4155bb1d0100soq9.html INTEL MEDIA SDK是INTEL推出的基于其内建显示核心的编解码技术,我们在播放高清 ...

  2. 【miscellaneous】各种音视频编解码学习详解

    编解码学习笔记(一):基本概念 媒体业务是网络的主要业务之间.尤其移动互联网业务的兴起,在运营商和应用开发商中,媒体业务份量极重,其中媒体的编解码服务涉及需求分析.应用开发.释放license收费等等 ...

  3. 【FFMPEG】各种音视频编解码学习详解 h264 ,mpeg4 ,aac 等所有音视频格式

    目录(?)[-] 编解码学习笔记二codec类型 编解码学习笔记三Mpeg系列Mpeg 1和Mpeg 2 编解码学习笔记四Mpeg系列Mpeg 4 编解码学习笔记五Mpeg系列AAC音频 编解码学习笔 ...

  4. 视频编解码学习之路(H264)

    学习视频编解码技术很难吗?视频编解码技术的未来是什么? 明了的说,无论是软件还是硬件设计,视频编解码技术有很多难点,都需要很长一段时间积累才行. 从一开始接触MPEG-2到最新的H.264标准,可算走 ...

  5. 音视频编解码技术(一):MPEG-4/H.264 AVC 编解码标准

    一.H264 概述 H.264,通常也被称之为H.264/AVC(或者H.264/MPEG-4 AVC或MPEG-4/H.264 AVC) 1. H.264视频编解码的意义 H.264的出现就是为了创 ...

  6. 视频编解码---x264用于编码,ffmpeg用于解码

    项目要用到视频编解码,最近半个月都在搞,说实话真是走了很多弯路,浪费了很多时间.将自己的最终成果记录于此,期望会给其他人提供些许帮助. 参考教程: http://ffmpeg.org/trac/ffm ...

  7. FFmpeg音视频编解码实践总结

    PS:由于目前开发RTSP服务器传输模块时用到了h264文件,所以攻了一段时间去实现h264的视频编解码,借用FFmpeg SDK实现了任意文件格式之间的转换,并实现了流媒体实时播放,目前音视频同步需 ...

  8. 121-基于TI DSP TMS320DM8148的全高清1080P 60fs的视频编解码系统 机器人主板

    基于TI DSP TMS320DM8148的全高清1080P 60fs的视频编解码系统 一.板卡概述 本系统基于最先进的DSP技术,构建一个全高清的视频编解码系统,采用TI的芯片.借助TI的DaVin ...

  9. [转帖]AVS音视频编解码技术了解

    AVS高清立体视频编码器 电视技术在经历了从黑白到彩色.从模拟到数字的技术变革之后正在酝酿另一场技术革命,从单纯观看二维场景的平面电视跨越到展现三维场景的立体电视3DTV.3DTV系统的核心问题之一是 ...

随机推荐

  1. RChain的Casper共识算法

    RChain的Casper共识算法是基于Vlad Zamfir的correct-by-construction共识协议和CTO Greg Meredith和其他RChain成员讨论而来的.他们还为Ca ...

  2. CheckStyle

    在Eclipse当中安装CheckStyle插件非常方便,和安装FindBugs除了URL有区别之外,其他的几乎完全一样.我们可以参照以下几个步骤进行(注意一下,eclipse版本不一样,可能安装插件 ...

  3. [偏序关系与CDQ分治]【学习笔记】

    组合数学真是太棒了 $CDQ$真是太棒了(雾 参考资料: 1.<组合数学> 2.论文 课件 很容易查到 3.sro __stdcall 偏序关系 关系: 集合$X$上的关系是$X$与$X$ ...

  4. Material使用11 核心模块和共享模块、 如何使用@angular/material

    1 创建项目 1.1 版本说明 1.2 创建模块 1.2.1 核心模块 该模块只加载一次,主要存放一些核心的组件及服务 ng g m core 1.2.1.1 创建一些核心组件 页眉组件:header ...

  5. Go学习笔记01-语言

    1.1 变量 Go 是静态类型语言,不能在运行期改变变量类型.使用关键字 var 定义变量,自动初始化为零值.如果提供初始化值,可省略变量类型,由编译器自动推断. var x int var f fl ...

  6. httping:测量网站延迟

    遇到网络问题的时候,我们一般会先通过 ping 这个工具来了解基本的情况.httping 与 ping 类似,不过它不是发送 ICMP 请求,而是发送 HTTP 请求.利用 httping,我们可以测 ...

  7. 基于Centos7的autobahn-python+crossbar的环境搭建

    一.基于centos7的crossbar安装(已经安装好python) (1) sudo yum update (2) sudo yum install gcc gcc-c++ make openss ...

  8. Spring Data与elasticsearch版本对应关系

  9. ArrayList源码阅读

    前言 数组是我们最常用最简单的数据结构,Java里对数组做了一个简单的包装,就是ArrayList,提供自动扩容的功能. 最常用法 list在我们日常代码中最为常用的做法是创建一个list,放入数据, ...

  10. 利用fiddler和mock调试本地微信网页

    利用fiddler和mock调试本地微信网页 微信公众号网页是比较特殊的页面,普通页面直接打开即可访问,但对于需要请求微信相关接口的部分需要安全域名认证.这导致了使用mock数据进行开发的页面没办法走 ...