Android中openmax实现框架
OMX中 OMXNodeInstance 负责创建并维护不同的实例,这些实例是根据上面需求创建的,以node作为唯一标识。这样播放器中每个OMXCodec在OMX服务端都对应有了自己的OMXNodeInstance实例。OMXMaster 维护底层软硬件解码库,根据OMXNodeInstance中想要的解码器来创建解码实体组件。

1.android系统中只用openmax来做codec,所以android向上抽象了一层OMXCodec,提供给上层播放器用。播放器中音视频解码器mVideosource、mAudiosource都是OMXCodec的实例。
2.OMXCodec通过IOMX 依赖binder机制 获得 OMX服务,OMX服务 才是openmax 在android中的实现。
3. OMX把软编解码和硬件编解码统一看作插件的形式管理起来。
android中支持的组件和Role
根据pv_omxregistry.cpp,得到如下表格(其中黄绿色部分表示没有相应编码器)
|
组件 |
角色 |
动态库名 |
|
OMX.PV.mpeg4dec |
video_decoder.mpeg4 |
libomx_m4vdec_sharedlibrary |
|
OMX.PV.h263dec |
video_decoder.h263 |
libomx_m4vdec_sharedlibrary |
|
OMX.PV.avcdec |
video_decoder.avc |
libomx_avcdec_sharedlibrary |
|
OMX.PV.wmvdec |
video_decoder.wmv |
libomx_wmvdec_sharedlibrary |
|
OMX.PV.rvdec |
video_decoder.rv |
libomx_rvdec_sharedlibrary |
|
OMX.PV.aacdec |
audio_decoder.aac |
libomx_aacdec_sharedlibrary |
|
OMX.PV.amrdec |
audio_decoder.amr audio_decoder.amrnb audio_decoder.amrwb |
libomx_amrdec_sharedlibrary |
|
OMX.PV.mp3dec |
audio_decoder.mp3 |
libomx_mp3dec_sharedlibrary |
|
OMX.PV.wmadec |
audio_decoder.wma |
libomx_wmadec_sharedlibrary |
|
OMX.PV.radec |
audio_decoder.ra |
libomx_radec_sharedlibrary |
|
OMX.PV.amrencnb |
audio_encoder.amrnb |
libomx_amrenc_sharedlibrary |
|
OMX.PV.mpeg4enc |
video_encoder.mpeg4 |
libomx_m4venc_sharedlibrary |
|
OMX.PV.h263enc |
video_encoder.h263 |
libomx_m4venc_sharedlibrary |
|
OMX.PV.avcenc |
video_encoder.avc |
libomx_avcenc_sharedlibrary |
|
OMX.PV.aacenc |
audio_encoder.aac |
libomx_aacenc_sharedlibrary |
OMX中非常重要的2个成员就是 OMXMaster 和 OMXNodeInstance。OMX通过这俩个成员来创建和维护不同的openmax 解码器组件,
OMXNodeInstance 负责创建并维护不同的实例,这些实例是根据上面需求创建的,以node作为唯一标识。这样播放器中每个OMXCodec在OMX服务端都对应有了自己的OMXNodeInstance实例。
OMXMaster 维护底层软硬件解码库,根据OMXNodeInstance中想要的解码器来创建解码实体组件。

Android中openmax实现框架的更多相关文章
- Android多媒体开发-- android中OpenMax的实现整体框架
1.android中用openmax来干啥? android中的AwesomePlayer就 是用openmax来做(code)编解码,其实在openmax接口设计中,他不光能用来当编解码.通过他的组 ...
- Android 进阶 Android 中的 IOC 框架 【ViewInject】 (下)
上一篇博客我们已经带大家简单的吹了一下IoC,实现了Activity中View的布局以及控件的注入,如果你不了解,请参考:Android 进阶 教你打造 Android 中的 IOC 框架 [View ...
- Android 进阶 教你打造 Android 中的 IOC 框架 【ViewInject】 (下)
上一篇博客我们已经带大家简单的吹了一下IoC,实现了Activity中View的布局以及控件的注入,如果你不了解,请参考:Android 进阶 教你打造 Android 中的 IOC 框架 [View ...
- android中OpenMax的实现【2】AwesomePlayer中openmax的入口
AwesomePlayer 中有个变量 OMXClient mClient; 让我们看看 OMXClient class OMXClient { public: OMXClient(); stat ...
- android中的http框架,使其更加简单易用
Afinal 是一个android的sqlite orm 和 ioc 框架. Afinal 是一个android的sqlite orm 和 ioc 框架.同时封装了android中的http框架,使其 ...
- Android中使用开源框架android-image-indicator实现图片轮播部署
之前的博文中有介绍关于图片轮播的实现方式,分别为(含超链接): 1.<Android中使用ViewFlipper实现屏幕切换> 2.<Android中使用ViewPager实现屏幕页 ...
- Android中使用开源框架Fresco处理图片
本文为原创博文,转载请注明原文链接:http://www.cnblogs.com/panhouye/p/6278116.html 关于Fresco的优点大家自行谷歌吧,它太强大太优秀了,我这一片小博文 ...
- Android中使用开源框架PagerSlidingTabStrip实现导航标题
此开源框架官网地址:https://github.com/astuetz/PagerSlidingTabStrip 可以理解为配合ViewPager使用的交互式页面指示器控件. 话不多说,先上效果图: ...
- Android中的GreenDao框架修改数据库的存储路径
目前android中比较热门的数据库框架有greenDAO.OrmLite.AndrORM,其中我比较喜欢用GreenDao,其运行效率最高,内存消耗最少,性能最佳.具体怎么使用GreenDao,网上 ...
随机推荐
- css 设置背景图片铺满固定不动
#page{ position: relative; width: 100%; height: 100%; background-image:url(../img/bg.JPG); backgroun ...
- 安卓开发笔记——Fragment+FragmentTabHost组件(实现新浪微博底部菜单)
记得之前写过2篇关于底部菜单的实现,由于使用的是过时的TabHost类,虽然一样可以实现我们想要的效果,但作为学习,还是需要来了解下这个新引入类FragmentTabHost 之前2篇文章的链接: 安 ...
- Linux 系统磁盘满处理方法
1.使用find命令,找出占用空间较大的文件 find / -type f -size +5G —找到大于5G的文件,有work权限的情况下可以使用 find . -type f -size +1 ...
- Cakephp中使用JavaScriptHelper来引入js文件
页面的head部分的内容在Cakephp中主要是有htmlhelper来进行控制的,而js部分则是由JavaScripthelper来进行控制的,在controller里面设置好:var $helpe ...
- Eclipse------导入项目后出现Java compiler level does not match the version of the installed Java project facet
报错信息:Java compiler level does not match the version of the installed Java project facet 解决方法: 1.点击工具 ...
- 【GIS】使用GDAL为Leaflet切图
一.参考资料 https://commenthol.github.io/leaflet-rastercoords/ https://github.com/commenthol/gdal2tiles-l ...
- CentOS安装、配置RabbitMQ
安装步骤(rpm包安装): rpm安装官网:http://www.rabbitmq.com/install-rpm.html 下载rpm并安装: CentOs: wget http://www.rab ...
- Win7 如何访问XP系统里的网上邻居?
Win7 如何访问XP系统里的网上邻居? [ 标签:win7,xp系统 ] 现有两台电脑,一台XP,一台WIN7,共用一个无线路由器(两者都是经无线网络连接路由器).可以从XP里访问WIN7里的共享文 ...
- 资源打包Assetbundle .
在手游的运营过程中,更新资源是比不可少的.资源管理第一步是资源打包.传统的打包可以将所有物件制成预设Prefab,打包成场景.今天我们来一起学习官方推荐的Assetbundle,它是Unity(Pro ...
- [Command] sync - 同步内存与硬盘数据
sync - 同步内存与硬盘之间的数据. sync [--help] [--version] sync 命令将内存中缓存的数据写入磁盘.这包括但不限于修改过的 superblock, inode 和延 ...