OpenMAX (OMX)框架

Posted 程思扬_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenMAX (OMX)框架相关的知识,希望对你有一定的参考价值。

本文分为两个部分进行讲解
Codec 部分中的 AwesomePlayer 到 OMX 服务
前面介绍了NuPlayer最终解码都会到达OMX框架,也就是 OpenMAX框架,本文开始分析编解码部分中的AwesomePlayer到OMX服务过程,也就是开启OpenMAX准备相关内容。android系统中用OpenMAX来做编解码,Android向上抽象了一 层OMXCodec,提供给上层播放器AwesomePlayer使用。同时有一个IOMX接口,在ACodec 中可以通过IOMX调用OpenMAX组件。播放器中音视频解码器mVideoSource、 mAudiosource 都是 OMXCodec 的实例。
OMXCodec::Create是解码器初始化的入口。OMXCodec通过IOMX依赖Binder机制获得 OMX服务,OMX服务才是OpenMAX在Android中的实现。

OpenMAX与StageFright框架层级的关系
StageFright框架通过OpenMAX与硬件层进行通信,图1是OpenMAX和StageFright的 层级关系图。
在图1中可以看到,StrageFright层共有两路到达OpenMAX框架° 一路是通过NuPlayer 到达ACodec类,然后直接调用OMX IL Core中的接口。另一路是通过StagefrightPlayer到 AwesomePlayer,再到达0MXCodec类,然后调用OMX组件接口进行数据传输。
在以前的AwesomePlayer中,音频和视频数据会到OMXCodec中寻找对应的解码器进行 解码,如图2所示:IOMX和OMX组件通过Binder通信,中间还涉及OMXClient。
OMX 中的OMXNodelnstance负责创建并维护不同的实例,这些实例是根据上面的需求创建的,以 Node作为唯…标识。这样播放器中的每一个OMXCodec在OMX服务器端都有了自己对应的 OMXNodelnstance实例。
OMXMaster维护底层软硬件解码库,根据OMXNodelnstance中想要 的解码器来创建解码实体组件。

OpenMAX
OpenMAX和StageFright的层级关系图

OpenMAX
AwesomePlayer 与 OMX 的关系


以上是关于OpenMAX (OMX)框架的主要内容,如果未能解决你的问题,请参考以下文章

转:android中多媒体解码openmax的实现

Android Multimedia框架总结(十三)CodeC部分之OpenMAX框架初识及接口与适配层实现

Android MultiMedia框架——OMX服务启动

Android MultiMedia框架——ACodec加载OMX

学习从零开发的Android音视频开发(13)——MediaCodec到OMX框架过程及其硬解码

Android多媒体框架