Hi guys,

I am currently searching for an external codec for my IP-TV project on android device. Is OpenMAX AL suitable for it?

Thank you for the advice.

Hi Jabez91,

OpenMAX AL is a control layer rather than an implementation layer. It gives you methods for controlling the underlying media chain in a way that is well suited to application development. If you are looking at developing a codec, I suggest you look at OpenMAX IL which may fit into the Android system. You can then use OpenMAX AL to control the codec.

OpenMAX AL is not fully implemented on Android unfortunately, so you may have to implement additional control layers to manage your IP-TV solution.



OpenMAX AL is a companion API to OpenSL ES, but for multimedia (video and audio) rather than audio only.

Android 4.0 provides a direct, efficient path for low-level streaming multimedia. The new path is ideal for applications that need to maintain complete control over media data before passing it to the platform for presentation. For example, media applications can now retrieve data from any source, apply proprietary encryption/decryption, and then send the data to the platform for display.

Applications can now send processed data to the platform as a multiplexed stream of audio/video content in MPEG-2 transport stream format. The platform de-muxes, decodes, and renders the content. The audio track is rendered to the active audio device, while the video track is rendered to either a Surface or a SurfaceTexture. When rendering to a SurfaceTexture, the application can apply subsequent graphics effects to each frame using OpenGL.

Note: though based on OpenMAX AL, the Android native multimedia API is not a conforming implementation of either OpenMAX AL 1.0.1 profile (media player or media player / recorder). This is because Android does not implement all of the features required by either of the profiles. Any known cases where Android behaves differently than the specification are described in section “Android extensions” below. The Android OpenMAX AL implementation has limited features, and is intended primarily for certain performance-sensitive native streaming multimedia applications such as video players.