OpenMAX (Open Media Acceleration)

Orange Pi Development Boards

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.
OpenMAX AL, OpenMAX IL and OpenMAX DL
OpenMAX Layers

Here are links to the specifications and header files for the three layer:

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.

 

Support CNX Software - Donate via PayPal or become a Patron on Patreon

1
Leave a Reply

avatar
1 Comment threads
0 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
0 Comment authors
Raspberry Pi OpenGL and OpenMAX IL “Hello World!” Applications | CNXSoft – Embedded Software Development Recent comment authors
  Subscribe  
newest oldest most voted
Notify of
trackback

[…] sample are located in /opt/vc/src/hello_pi directory:hello_audio – Audio output demo using OpenMAX IL through the ilcient helper libraryhello_triangle – A rotating cube rendered with OpenGL ES […]