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实现框架的更多相关文章

  1. Android多媒体开发-- android中OpenMax的实现整体框架

    1.android中用openmax来干啥? android中的AwesomePlayer就 是用openmax来做(code)编解码,其实在openmax接口设计中,他不光能用来当编解码.通过他的组 ...

  2. Android 进阶 Android 中的 IOC 框架 【ViewInject】 (下)

    上一篇博客我们已经带大家简单的吹了一下IoC,实现了Activity中View的布局以及控件的注入,如果你不了解,请参考:Android 进阶 教你打造 Android 中的 IOC 框架 [View ...

  3. Android 进阶 教你打造 Android 中的 IOC 框架 【ViewInject】 (下)

    上一篇博客我们已经带大家简单的吹了一下IoC,实现了Activity中View的布局以及控件的注入,如果你不了解,请参考:Android 进阶 教你打造 Android 中的 IOC 框架 [View ...

  4. android中OpenMax的实现【2】AwesomePlayer中openmax的入口

    AwesomePlayer 中有个变量 OMXClient mClient; 让我们看看   OMXClient class OMXClient { public: OMXClient(); stat ...

  5. android中的http框架,使其更加简单易用

    Afinal 是一个android的sqlite orm 和 ioc 框架. Afinal 是一个android的sqlite orm 和 ioc 框架.同时封装了android中的http框架,使其 ...

  6. Android中使用开源框架android-image-indicator实现图片轮播部署

    之前的博文中有介绍关于图片轮播的实现方式,分别为(含超链接): 1.<Android中使用ViewFlipper实现屏幕切换> 2.<Android中使用ViewPager实现屏幕页 ...

  7. Android中使用开源框架Fresco处理图片

    本文为原创博文,转载请注明原文链接:http://www.cnblogs.com/panhouye/p/6278116.html 关于Fresco的优点大家自行谷歌吧,它太强大太优秀了,我这一片小博文 ...

  8. Android中使用开源框架PagerSlidingTabStrip实现导航标题

    此开源框架官网地址:https://github.com/astuetz/PagerSlidingTabStrip 可以理解为配合ViewPager使用的交互式页面指示器控件. 话不多说,先上效果图: ...

  9. Android中的GreenDao框架修改数据库的存储路径

    目前android中比较热门的数据库框架有greenDAO.OrmLite.AndrORM,其中我比较喜欢用GreenDao,其运行效率最高,内存消耗最少,性能最佳.具体怎么使用GreenDao,网上 ...

随机推荐

  1. IDEA添加非空Getter方法模板

    #if($field.modifierStatic) static ## #end $field.type ## #set($name = $StringUtil.capitalizeWithJava ...

  2. hive cst 时间转换

    select from_unixtime(unix_timestamp(r.collecttime,'EEE MMM dd HH:mm:ss zzz yyyy'),'yyyy-MM-dd HH:mm: ...

  3. Deep Voice

    https://arxiv.org/abs/1702.07825 听起来和真人声非常接近了.

  4. 服务端API安全解决方案

    由于server端和client端需要通信,所以api的安全性需要保证 1.完全开放的 一般只是查询,不能执行增.删.改的操作 裸奔的 <?php public function getGood ...

  5. MathType让矩阵中的小数以小数点对齐的教程

    用MathType编辑公式时,有很多模板都可以应用,并且这些模板并不是只有一种用途,比如矩阵.矩阵模板可以用来编辑矩阵也可是用来编辑一些需要排列组合的数据等等.在用MathType编辑矩阵时,如果里面 ...

  6. 配置caffe过程中,生成解决方案出错。无法打开包括文件: “gpu/mxGPUArray.h”

    ------ 已启动生成: 项目: matcaffe, 配置: Release x64 ------12> MatlabPreBuild.cmd : Create output director ...

  7. Sublime的插件Color Highlighter的安装方法

    ColorHighlighter是一个显示选中颜色代码的视觉颜色的插件.如果您选择“# fff“,它将向您展示白色.ColorHighlighter支持所有CSS颜色格式,如Hex,RGB,HSL,H ...

  8. MongoDB 连接池

    http://www.cnblogs.com/huangfox/archive/2012/04/01/2428947.html http://www.iteye.com/problems/97350

  9. 常见bootloader介绍

    https://blog.csdn.net/weibo1230123/article/details/82716818 http://fasight001.spaces.eepw.com.cn/art ...

  10. iOS_UITextField 基本操作

    基本操作 UITextField *userNameTextField = [[UITextField alloc] init]; userNameTextField.frame = CGRectMa ...