您的位置:华清远见教育科技集团 >> Android资料 >> Android开发OpenMAX接口规范  
 
Android开发OpenMAX接口规范
分享到:

OpenMAX 是一个无须授权费的、跨平台的应用程序接口规范,该规范针对嵌入式设备、移动设备的多媒体软件架构。在OpenMAX架构中,为多媒体的编解码器和数据处理定义了一套统一的集成接口(OpenMAX IL),通过对底层硬件的多媒体数据的处理功能进行系统级抽象,为用户屏蔽了底层的细节。因此,多媒体应用程序和多媒体框架通过 OpenMAX IL 可以以一种统一的方式来使用编解码器和其他多媒体数据处理功能,这使得OpenMAX拥有跨平台的能力。OpenMAX的框架如下图所示。

OpenMAX 框架
OpenMAX 框架

本文就来简要介绍下OpenMAX的OpenMAX AL、OpenMAX IL、OpenMAX DL实现。

1、OpenMAX AL应用层

OpenMAX AL(Appliction Layer)API 在应用程序和OpenMAX IL之间提供了一个标准化接口,OpenMAX IL提供服务以实现被期待的 API 功能。使得应用在多媒体接口上具有了可移植性。

OpenMAX AL包括引擎对象(Engine Object)、媒体对象(Media Object)、元数据提取器对象(Metadata Extractor Object)、音频输出混音器对象(Audio Output Mix Objects)、照相机对象(Camera Objects)、LED阵列对象(LED Array Objects)、FM对象(Radio Objects)、振动控制对象(Vibration Control Objects)等。

在Android中,并没有提供多少关于OpenMAX AL的内容,这里就不再详述了,OpenMAX AL的头文件位于external\opencore\extern_libs_v2\khronos\openmax\include目录下。关于OpenMAX AL的更多内容,请参考文献[35]。

为了实现封装的编解码器给上层提供一个标准化的接口,在Android中,提供了AuthorDriver作为记录引擎和上层应用的接口,PlayerDriver作为播放引擎与上层应用的接口。

2、OpenMAX IL集成层

OpenMAX IL(Integration Layer)作为在嵌入式和移动设备中使用的音频、视频、图像等编解码器的底层接口。使得应用和多媒体框架可以以统一的方式访问多媒体编解码器和支持组件。编解码器可以是硬件和软件的任意组合,对用户透明。

为了把一个编解码器集成到OpenCORE多媒体框架中,有多种途径,可以将编解码器封装成一个媒体I/O的组件,也可以封装成一个OpenCORE的节点,或者作为OpenMAX的组件被集成到OpenMAX的编解码器节点中。

对于包含了硬件加速的编解码器而言,通常会被封装为OpenMAX的组件出现。这就要求其必须遵守OpenMAX IL的接口规范。OpenMAX IL的接口OpenMax Core在OMX_Core.h中定义。OpenMAX的组件在OMX_Component.h中定义。OpenMAX的组件框架如下图所示。

多媒体组件框架
多媒体组件框架

3、OpenMAX DL开发层

OpenMAX DL(Development Layer)定义了一套API,包含了音频、视频和图像功能的函数集合,这些函数需要由芯片厂商针对处理器特性进行实现和优化,然后被编解码器厂商在各种编解码器上使用。

OpenMAX DL涵盖了音频信号的处理功能,如FFT、过滤器等;图像处理功能,如颜色空间转换等;视频处理功能,如MPEG-4、H.264、MP3、AAC 和 JPEG 等编解码器的优化。OpenMAX 通过 iDL 和 aDL 来支持加速, iDL 使用 OpenMAX IL 结构, aDL 向 Open MAX DL API 增加了异步接口。

 更多相关文章

·Android 图像解码的实现
·Android Camera 参数的设置
·Android Camera的HAL接口
·Android中Camera数据的处理
·Android Camera拍照源码分析