一 omx概述
OpenMax是一个多媒体应用程序的框架标准。它自上而下分为三层,Application Layer, Integration Layer和Development Layer。应用层规定了应用程序和多媒体中间层的标准接口,使应用程序的移植性更好。集成层定义了多媒体组件的接口,使得多媒体框架能以一种统一的方式访问多媒体Codec和组件,以便在嵌入式流媒体框架中快速集成加速编解码器。开发层为Codec厂商和硬件厂商提供了一套API,使开发更加便捷。
图 OpenMax的分层结构
omx由组件构成:
1. 组件是独立的一个处理模块,可以有内部独立的线程(但并不一定)处理数据。 通常组件类型有:splitter组件、hot组件、sink组件、clock组件等。

2. 组件之间通过端口进行数据通信,每个组件至少要有一个端口,根据数据方向区分:有输入端口 和 输出端口 两种方向。任意一个端口只能是其中一种方向。
| OMXMaster 负责OMX中编解码器插件管理,软件解码和硬件解码都使用OMX标准,挂载plugins的方式来进行管理。 软解通过 addPlugin(new SoftOMXPlugin)把这些编解码器的名字都放在PluginByComponentName。 硬件编解码是通过 addVendorPlugin(); 加载 libstagefrighthw.so.各个芯片平台可以遵循openmax 标准,生成libstagefrighthw.so的库来提供android应用。 android定义软编解码 /frameworks/av/media/libstagefright/omx/OMXMaster.cpp
|

OpenMax是一个多媒体应用程序框架,分为Application、Integration和Development三层。它定义了应用程序与多媒体组件的接口,支持编解码器的快速集成。组件通过端口进行数据通信,OMXMaster管理软硬解码。组件状态包括Invalid、Loaded、WaitForResources、Idle、Executing和Pause。通信方式有tunnel、non-tunnel和proprietary,其中tunnel模式下组件间直接通信,无需ILClient参与。
最低0.47元/天 解锁文章
1204

被折叠的 条评论
为什么被折叠?



