GstOpenMAX

GstOpenMAX is a GStreamer plug-in that allows communication with OpenMAX IL components.

OpenMAX IL is an industry standard that provides an abstraction layer for computer graphics, video, and sound routines.

Why is it good?

The easiest way to see OpenMAX IL is to think about OpenGL; both standards are controlled by the Khronos Group, both standards are open and royalty free.

In a similar way you can think of Bellagio/OpenMAX IL as Mesa/Open GL. They are not official implementations, but they follow the standard.

There are many Open Source encoders/decoders, but they all have different API's, so in order to use it you need to learn the API. In fact some projects as FFmpeg constantly change their API, so it makes things difficult.

If you use Bellagio's omxil you don't have to worry about FFmpeg's API changes, those are wrapped inside a standard API.

The standard has been reviewed by several parties including: Texas Instruments, ARM, ATI Technologies, Beatnik, Broadcom, Emuzed, Fraunhofer, Freescale, Infineon, Intel, Motorola, Nokia, NVIDIA, Philips, SKY MobileMedia, Samsung, Sasken, Siemens, ST Microelectronics, and Symbian.

The gst-openmax project is a collaboration between Fluendo, Nokia, NXP, STMicroelectronics, Texas Instruments, and the Open Source community.

The following is a diagram showing examples of what could be possible to do with OpenMAX IL:

What's bad?

Not all of the codecs are defined. For example Vorbis is defined, but not Theora. Of course it could be added as an extension, but that API wouldn't be set in stone.

What's the status?

Right now a few Bellagio components can be used:

Basic playback functionality is provided:

The GstOpenMAX elements can be used in multimedia applications like Rhythmbox or Totem instead of the original ones.

We are missing:

And of course, input from the community and the first release.

How to get it

You'll need an OpenMAX IL implementation. Luckily STMicroelectronics has provided an useful sample implementation in the Bellagio project which is Open Source.

omxil

So, first install Bellagio's omxil from here, or direct link. Version 0.3.3 is recommended.

Install as usual:

 ./configure --prefix="$HOME/omx" --disable-ffmpegcomponents
 make
 make install

NOTE: The ffmpeg components don't compile on Ubuntu.

Register the components:

$HOME/omx/bin/omxregister -v

You'll get an output like this:

Component OMX.st.volume.component registered
  Specific role OMX.st.volume.component registered
Component OMX.st.audio_decoder.ogg.single registered
  Specific role OMX.st.audio_decoder.ogg.single registered
Component OMX.st.alsa.alsasink registered
  Specific role OMX.st.alsa.alsasink registered
Component OMX.st.audio_filereader registered
Component OMX.st.audio_decoder registered
  Specific role OMX.st.audio_decoder.mp3 registered
  Specific role OMX.st.audio_decoder.ogg registered
  Specific role OMX.st.audio_decoder.aac registered
Component OMX.st.video_decoder registered
  Specific role OMX.st.video_decoder.mpeg4 registered
  Specific role OMX.st.video_decoder.avc registered
Component OMX.st.video_colorconv.ffmpeg registered
  Specific role OMX.st.video_colorconv.ffmpeg registered
Component OMX.st.audio_decoder.mp3.mad registered
  Specific role OMX.st.audio_decoder.mp3.mad registered

 8 OpenMAX IL ST static components with 11 roles succesfully scanned

Make sure you have:

GstOpenMAX

Download from here.

./configure --prefix="$HOME/omx"
make
make install

How to try it

export GST_PLUGIN_PATH=$HOME/omx/lib/gstreamer-0.10
export LD_LIBRARY_PATH=$HOME/omx/lib

You'll be able to play audio and video with MP3, Vorbis, MPEG4, H.264, or H.263 content using Bellagio's components.

For MP3 you'll also need the mp3parse element, otherwise you'll get:

GStreamer-CRITICAL **: gst_segment_clip: assertion `segment->format == format' failed

If you want to see what's happening:

 export GST_DEBUG=omx:4

How to contribute

We have a mailing list. You can subscribe, check the archives or send a direct e-mail to gstreamer-openmax@lists.sourceforge.net.

Questions, comments and patches are welcome.

Also, you can jump in directly to the code in the WebCVS interface.

If you find any issues please fill a bug report here.

Roadmap

0.1 (07-wk44) <- Released in (0.10.0.2)

0.2 (08-wk07) <- Released in (0.10.0.3)

0.3 (08-wk08)

0.4 (08-wk26) <- Released in (0.10.0.4)

0.5

0.6

1.0

1.1

More codecs will be developed on the way, but we are still not sure which ones. Also, probably omx-clock mapping, depending on the resources of the parties involved. Patches are welcome :)

News

External Links