openmax用法

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

     

一  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

  1. kComponents[] = {  
  2.     { "OMX.google.aac.decoder", "aacdec", "audio_decoder.aac" },  
  3.     { "OMX.google.aac.encoder", "aacenc", "audio_encoder.aac" },  
  4.     { "OMX.google.amrnb.decoder", "amrdec", "audio_decoder.amrnb" },  
  5.     { "OMX.google.amrnb.encoder", "amrnbenc", "audio_encoder.amrnb" },  
  6.     { "OMX.google.amrwb.decoder", "amrdec", "audio_decoder.amrwb" },  
  7.     { "OMX.google.amrwb.encoder", "amrwbenc", "audio_encoder.amrwb" },  
  8.     { "OMX.google.h264.decoder", "h264dec", "video_decoder.avc" },  
  9.     { "OMX.google.h264.encoder", "h264enc", "video_encoder.avc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

步基

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值