OpenMAX™是一个免版税的跨平台API标准,通过支持跨多个操作系统和芯片平台开发、集成和编程加速多媒体组件,提供了全面的流媒体编解码器和应用程序可移植性。OpenMAX API将与处理器一起发布,使库和编解码器的用户能够快速有效地充分利用新处理器的加速潜力——而不管底层硬件架构如何。
OpenMAX DL(开发层)api包含一组全面的音频、视频和图像功能,可以在新的cpu、硬件引擎和dsp上实现和优化,然后用于广泛的加速编解码器功能,如MPEG-4、H.264、MP3、AAC和JPEG。OpenMAX DL 1.0.2包括对以前版本(1.0.1)的澄清和更正。所有的实现都应该在互操作性方面与这个版本相匹配。
随着多媒体硬件平台的发展步伐逐渐加快,消费者对应用程序,如智能手机、音频和视频媒体播放器和游戏控制台等平台上的视频、音频、语音和3D的需求不断增长。一般来说,这类产品需要高性能处理和高数据吞吐量能力。因此,出现了各种解决方案,每一种都旨在加速多媒体应用程序。例子包括:
- 具有特定多媒体扩展的通用处理器
- 底层硬件加速器,
- 包括dsp在内的多处理器架构
- 专用硬件视频解码器
所有这些架构变体的关键挑战之一是开发有效的代码。尽管通常提供了编译器,但是很少能够从高级编程语言中充分利用整个体系结构的潜力。结果是,应用程序的大部分通常是用专门针对硬件平台的汇编语言编写的。不同多媒体硬件解决方案的普及意味着软件必须针对移植到的每个新平台重新编写和优化。
这种执行效率低下的影响是延迟新产品的推出,增加开发成本和降低产品质量,这最终会减缓在市场需求增长的时候在多媒体领域的创新。
为了解决这个问题,Khronos小组成立了OpenMAX工作组,为多媒体应用程序定义一套标准的开放应用程序编程接口(api)。这个开放标准的目标是降低将多媒体软件移植到新处理器和架构的成本和复杂性。
通过为中间件应用程序(如多媒体编解码器、图形库和视频、图像、音频、语音和语音的其他功能)商定一个通用的规范,开发人员社区将有可能专注于区分他们的产品,而不是重复实现通用功能。这将确保新产品能够更快地推向市场,并支持更广泛的硬件平台。
- OpenMAX AL(应用层)
OpenMAX AL提供了应用程序和多媒体中间件之间的标准化接口,其中多媒体中间件提供了执行预期API功能所需的服务。OpenMAX AL提供了与多媒体接口相关的应用程序可移植性。
- OpenMAX IL(集成层)
OpenMAX IL作为嵌入式和/或移动设备中使用的音频、视频和图像编解码器的低级接口。它使应用程序和媒体框架能够以统一的方式与多媒体编解码器和支持组件(即源和汇)接口。编解码器本身可以是任何硬件或软件的组合,并且对用户完全透明。如果没有这种性质的标准化接口,编解码器供应商必须编写专有或封闭的接口来集成到移动设备中。IL的主要目标是使用专门的功能库,为编解码器提供一定程度的系统抽象,以解决许多截然不同的媒体系统之间的可移植性问题。
- OpenMAX DL(开发层)
OpenMAX DL定义了一个API,该API包含了一组全面的音频、视频和图像功能,处理器厂商可以在新的处理器上实现和优化这些功能,然后编解码器厂商可以使用这些功能来编写各种编解码器功能。它包括音频信号处理功能(如fft和滤波器)、图像处理原语(如颜色空间转换)和视频处理原语(如MPEG-4、H.264、MP3、AAC和JPEG)等编解码器的优化实现。OpenMAX通过iDL(使用OpenMAX IL结构)和aDL(向OpenMAX DL API添加异步接口)支持加速并发。
OpenMAX是一个非专有的、免版税的标准,主要针对生产多媒体编解码器、游戏引擎和图形库的中间件开发人员。OpenMAX广泛适用于所有多媒体性能是关键问题的应用程序,包括智能手机、游戏机、数字电视和机顶盒。通过越来越多的主要利益相关者的协作和支持,该标准将得到开发和推广,并鼓励广泛的行业支持和采用。
工作组欢迎现有Khronos成员的投入和经验,并鼓励具有多媒体知识的新成员加入,并帮助确保规范提供与整个行业相关的利益。这包括半导体制造商、独立软件供应商、知识产权供应商、操作系统公司和提供最终用户的OEM或产品开发公司,除了OpemMAX标准,khronos还是以下标准的制定者
Component工作模型
OpenMax和Gstreamer的关系
OpenMax IL组件可以嫁接到Gstreamer之上,利用Gstreamer框架实现多媒体功能,如下图:
- OpenMAX IL doesn’t autoconnect components
-
OpenMAX IL has more industry support: AMD, Apple, ARM, Creative, Dell Inc, Ericsson, Freescale, Imagination......
-
OpenMAX IL is a standard
-
OpenMAX IL doesn’t recognize input stream
-
OpenMAX IL was developed with embedded devices in mind
-
OpenMAX IL doesn’t automatically change state
-
OpenMAX IL is in a lower level than GStreamer