一、OpenMax
OpenMAX是由Khronos组织所发布的一种开放标准,用来实现高效能的多媒体加速。为了因应目前众多的平台与开发装置,在media上也需要制定开放标准的APIs,OpenMAX 是一个免费的跨平台API,适合用在multimedia components的开发,特色是可以在不同的平台上开发整合。
OpenMax 实际上分成三个层次,自下而下上分别是和,OpenMax DL(开发层),OpenMal IL(集成层),OpenMax AL(应用层)。
提示:在实际的应用中,OpenMax的三个层次中使用较多的是OpenMax IL集成层,由于操作系统到硬件的差异和多媒体应用的差异,
OpenMax的DL和AL层使用相对较少
二、OpenMax IL
2.1、定义
OpenMAX IL component:封装了目标系统所需功能的组件,IL封装为函数提供了一个标准接口。在IL层,component代表各个功能模块,可以是sources, sinks,codecs, filters, splitters, mixers等等。
OpenMAX IL core:相关平台的代码,具有将OpenMAX IL component载入主存储器的功能,当应用程序不再需要某组件时,IL core将负责把该组件从存储器卸去。一般来说,组件一旦载入存储器,IL core将不在参与应用程序与组件之间的通信。
IL client:访问IL core或IL component的软件层,可能是位于GUI应用程序的下层,如GStreamer。IL client是一个典型的功能块,如filter graph multimedia ramework, OpenMAX AL, 或application。IL client与OpenMAX IL core进行交互, 利用IL core加载和卸载组件、在组件间建立直接通信以及获得组件方法的入口。
Tunnels/Tunneling:直接在两个IL component间操作的标准的数据隧道。
2.2、接口
OpenMAX IL API是一个基于组件的媒体API,由两部分组成:内核API和
组件API。
2.2.1 core
OpenMAX IL API core的作用是用来动态地装载和卸载component,并且用来建立 component之间的通信的。组件一旦加载,则API允许用户直接与组件进行通信。另外,内核允许用户在两个组件之间建立一个communication tunnel,一旦建立,将不再使用内核API,通信直接在组件间进行。
2.2.2 component
在IL层,component代表各个功能模块,可以是sources, sinks, codecs, filters,splitters, mixers等等。一个组件通过一系列相关的数据结构和接口可以设置或检索各个参数,这些参数包括相的组件操作数据或是组件的实际状态。
2.3 Ports
组件间的数据进出由叫做ports的接口进行传输,ports不仅代表组件间的数据联系,还代表需要维持这个联系的buffers。用户可以经过input ports发送数据到组件,或经过output ports接收数据。将一个组件的output port与另一个组件类型相似的input por相连,在组件间建立一个communication tunnel。