OpenMAX_IL_1_2_0_Specification--概述

来源:互联网 发布:韩国免费音乐软件 编辑:程序博客网 时间:2024/06/08 04:50
1 概述
1.1 介绍
这篇文档详细描述OpenMAX移植层(IL)应用编程接口(API),开源标准由The Khronos Group组织开发,IL用为为嵌入式或者移动设备的音频、视频、图像组件提供底层的接口,IL的目的是使各组件抽象,便于在跨操作系统,跨平台软件中进行移植。
1.1.1 关于 the Khronos Group
The Khronos Group是一个会员资助联盟,致力于在各种平台和设备创造开放的标准的API接口使多媒体可以播放。有的Khronos成员参与Khronos API协议的开发,有的在协议出版之前进行投票,有的尽早使标准在平台上实现,还有早期的起草协议时的测试。The Khronos Group还是OpenGL ES, OpenML, OpenVG的开发者。
1.1.2 OpenMax简单的历史
最开始OpenMAX API的构思是方便组件和程序在移动设备中移植。在2004年,由一系列的手机硬件公司起草完成该标准,OpenMAX已经得到很多多媒体领域的公司和机构的支持。至此,OpenMAX推进多媒体组件在各种系统的移植,不仅仅是移动平台,OpenMAX IL API的通用特性使它可以在任何多媒体平台上应用。
1.2 OpenMAX移植层
OpenMAX IL API致力于在不同的平台上进行多媒体移植,接口(API)使得系统的硬件和软件抽象,每个组件和相关的转换都被封装在一个组件接口中。OpenMAX IL API允许用户加载,控制,连接,卸载每个组件。灵活的核心架构使得IL层可以很方便的实现,也可以和现成的媒体框架融合。
1.2.1 关键特性
OpenMAX IL API使得应用和多媒体框架以统一的形式与多媒体编解码,支持的组件(比如设置源,写入硬件)交互。组件对用户是完全透明的,它可以是任何硬件或者软件的组合。没有这个标准的接口,开发者很难将组件移植到移动设备中。经过多年的发展与努力,组件的移植已经非常实用。
因此,IL有很多特殊的功能,可以解决多媒体多平台的移植问题,这些功能包括:
一个灵活的基础组件API核心
很容易添加新的组件
全面包括(音频,视频,图片领域),同时对于The Khrons Group和独立的开发商来说很容易拓展。
可以生成动态库或者静态库
为使用它的软件(比如多媒体框架)保留关键的特性和配置选项
很容易在客户端和组件端交互,以及组件之间的交互
对于关键的组件进行标准化定义,因此所有的标准组件的实现提供相同的外部接口(比如输入,输出,控制)
1.2.2 设计哲学
如之前所述,OpenMAX IL API关键集中在多媒体组件的移植上。由于现存设备的多样性,以及多种多媒体实现,这就需要OpenMAX IL提供更高层次的抽象,对于操作系统来说,就是需要给现存的多媒体框架或者多媒体中间件提供抽象。
另一个关键功能是OpenMAX AL API抽象更高层次的OpenMAX IL,OpenMAX AL遵守OpemMAX IL实现。
因此,OpenMAX IL API使得多媒体中间层可以尽可能的轻便,同事更加容易移植进入操作系统以及多媒体中间件。
API的设计也尽可能满足不同的系统框架,使用高级异步通信,处理过程可以出现在不同的线程中,可以在多个处理单元中,或者在特殊的硬件中。另外通过隧道提供的实现框架,硬件加速组件可以直接和其它组件交互,这样非常灵活和高效。
1.2.3 软件图谱
在一些系统中,一个用户级的多媒体框架已经存在,在那些没有这样多媒体的中间件中,OpenMAX AL可以实现这样的功能。Open MAX IL可以和这一层进行无缝对接。在大多数情况下,一个本地的多媒体框架可以直接和API交互。OpenMAX IL甚至可以直接代替OpenMAX AL实现。
图1.1展示Open MAX IL API的软件构成

OpenMAX标准也定义一组原始开发层(DL),可以在它之上建立组件。OpenMAX DL API协议中定义了原始开发层以及原始开发层和移植层的关系。
1.2.4 利益相关者
一些公司将它们领域的IL API组件写入多媒体中。
1.2.4.1 芯片开发商
芯片开发商实现对于自己平台的OpenMAX IL组件,这些组件也表示它们平台的能力。
1.2.4.2 独立软件开发商
独立软件开发声增加其它的OpenMAX IL组件,组件可能依赖也可以不依赖指定的芯片开发商平台。
1.2.4.3 操作系统开发商
操作系统开发商实现软件的多媒体框架,以及移植芯片开发商和独立软件开发商的OpenMAX IL组件。
1.2.4.4 设备开发商
设备开发商将芯片开发商,操作系统开发商,独立软件开发商提供的软件融合入多媒体设备中,也可以开发自己的OpenMAX IL组件。
1.2.5 接口
OpenMAX IL API由两组API组成基本的多媒体组件API:核心API和组件API。
1.2.5.1 核心
OpenMAX IL核心用于动态加载和卸载组件以及管理组件间通信。一旦组件被加载,API允许用户和组件进行直接交互,这样消除很多冗余的过程。同样的,核心允许用户建立组件间通信隧道。一旦隧道建立,API核心就不再参与,两个组件可以直接通信。
1.2.5.2 组件
在OpenMAX移植层,组件代表独立的功能块。组件可以是sources(设置源), sinks(写硬件), codecs(编解码), filters(过滤), splitters(分离), mixers(混合),以及其它的数据操作。取决于实现,组件可以代表一个硬件,一个软解码,一个处理器,或者是它们的结合。
组件中独立的参数可以通过一组关联的结构体,枚举,接口被设置或者获得。这些参数包括参与组件操作的数(比如解码)或者组件执行的状态。
缓冲的状态,错误,以及其它时间紧密的书籍可以通过一组回调函数传递给程序,通过正常的函数可以被设置,可以展示更多的系统框架的异步特性。
通过端接口组件之间可以完成数据通信,端既表示组件间的数据流的连接又表示维持连接的缓冲。用户可以通过输入端向组件发送数据,可以通过输出端从组件那里得到数据。相似的,组件间的通信隧道建立可以通过连接一个组件的输入端和另一个组件的输出端。
1.3 定义
当需要定义OpenMAX IL API的需求和功能时,一些特殊的词语会被使用,传递在一个实现中的它们的程度。
1.4 作者
下面个人,按照公司的字母排列,为这个OpenMAX IL API协议做出贡献。
1.5 版本1.2的新特性
这个1.2协议的一些新特性总结如下:
更新相关状态机,更新缓冲标志,更新事件,更新错误的代码,更新方法,更新音频特性,更新照相机特性,更新视频特性,更新图片特性,更新时钟特性,更新标准组件,其它更新。
1.6 向后兼容
OpenMAX IL协议定义的组件和结构会在后面的版本中更新,用四个数字的序列表示版本号。
0 0
原创粉丝点击