记录一下遇到几个平台里的视频编解码和图像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. php+redis 学习 四 队列

    <?php /** * redis实战 * * 利用列表list实现简单队列 * * @example php cache.php */ header('content-type:text/ht ...

  2. nodejs http post 请求带参数

    // We need this to build our post string var querystring = require('querystring'); var http = requir ...

  3. Atom Mac安装 有快捷方式

    https://jeffjade.com/2016/03/03/2016-03-02-how-to-use-atom/ 如何在 PyCharm 中使用 MacDown 作为外部编辑器 新编码神器Ato ...

  4. cnblogs的使用

    cnblogs的使用 选择使用cnblogs而不是csdn,答案是很明显的.csdn每次创建博客之后会有一段时间的审核期,这大大的影响了用户体验.此外,cnblogs的用户群以及使用模式有着很大的诱惑 ...

  5. 置换群、Burnside引理与等价类计数问题

    置换群.Burnside引理与等价类计数问题 标签: 置换群 Burnside引理 置换 说说我对置换的理解,其实就是把一个排列变成另外一个排列.简单来说就是一一映射.而置换群就是置换的集合. 比如\ ...

  6. springboot入门_data-jpa

    今天学习了在springboot项目中访问数据库,做下笔记,以备后期查看. Spring Data JPA 是 Spring 基于 ORM 框架和JPA 规范 封装的一套应用框架,包含了增删改查等常用 ...

  7. iOS 添加WKWebView导致控制器无法释放的问题

    在WkWebView与JavaScript交互中,经常会在原生中注入MessageHandler,app中注入MessageHandler的方法 WKWebViewConfiguration *con ...

  8. bzoj 4596 [Shoi2016]黑暗前的幻想乡 矩阵树定理+容斥

    4596: [Shoi2016]黑暗前的幻想乡 Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 559  Solved: 325[Submit][Sta ...

  9. Java中Dom解析xml文档

    xml文档 <?xml version="1.0" encoding="UTF-8"?> <bookstore> <book id ...

  10. iOS-UI控件优化

    一.tableView的优化 tableView作为iOS开发中使用最为频繁的控件之一,对其进行优化,对整个应用性能的提升显得至关重要.官方设计的框架中,已经包含了UITableViewCell的重用 ...