OpenMAX (Open Media Acceleration) is a royalty-free, cross-platform set of C-language programming interfaces that provides abstractions for routines especially useful for audio, video, and still images. OpenMAX standard is managed by the non-profit technology consortium Khronos Group.
OpenMAX allows developers to take advantages of hardware media decoding/encoding. For example, If you want to play video using Raspberry Pi hardware (VideoCore IV GPU in Broadcom BCM2835) you’ll have to use OpenMAX IL.
OpenMAX provides three layers of interfaces:
- Application Layer (AL): Open standard for accelerating the capture, and presentation of audio, video, and images in multimedia applications on embedded and mobile devices.
- Integration Layer (IL) : API defining a standardized media component interface to enable developers and platform providers to integrate and communicate with multimedia codecs implemented in hardware or software.
- Development Layer (DL): APIs containing a comprehensive set of audio, video and imaging functions that can be implemented and optimized on new CPUs , hardware engines, and DSPs and then used for a wide range of accelerated codec functionality such as MPEG-4, H.264, MP3, AAC and JPEG.
Here are links to the specifications and header files for the three layer:
- OpenMAX AL:
- OpenMAX IL:
- OpenMAX DL:
There are several implementations of OpenMAX including:
- LIM OpenMAX is an open source implementation of OpenMAX AL and IL.
- Android 4.0 NDK exposes OpenMAX AL 1.0.1. I understand this will also be made open source (with the full Android 4.0 source), once the Galaxy Nexus smartphone is available on the market next week.
- Bellagio is an open source implementation maintained by ST Microelectronics.
- C-only, NEON (Cortex A8) optimized and SIMD (for ARM11) optimized OpenMAX DL libraries are available at http://www.arm.com/community/multimedia/standards-apis.php
GStreamer is an open source multimedia framework used by several programs such as Rythmbox, AmaroK, Totem and more. It can support OpenMAX IL with gst-openmax, a GStreamer plug-in that allows communication with OpenMAX IL components. It currently support hardware decoding (DSP acceleration) on TI OMAP3 (Beagleboard) and can also interface with Bellagio. For further information on GStreaner and OpenMAX IL, you can refer to “OpenMAX IL with GSstreamer” white paper (year 2006) or the more recent (2008) “GSteamer and OpenMAX IL Plug-n-Play” presentation.
XMBC media center software is apparently currently updated to support Broadcom BCM2835 (for Raspberry Pi Board) and implement OpenMAX support in DVDPlayer application and/or related libraries. Raspberry Pi also have a custom player using OpenMAX IL to play 1080p video. This is not currently open sourced, but should be once the board is ready.