Beagle Board

Contents

Beagle Board

Purpose:

To port Helix over to the Beagle Board hardware platform which uses a TI OMAP 3530 processor.  This ARM Cortex-A8 processor is capable of playing back multimedia using it's DSP co-processor.


This platform supports all the major operating systems that Helix also supports.  This project will provide ports for the Symbian, Linux, and Android operating systems.

Project Status

  • Synchronized with dvsdk_3_01_00_10, 2.6.32 kernel, and Rowboat-eclair-dsp(July 16 2010)
  • H264/MPEG4 video playback with DSP via DSPLINK (Done)
  • TI V4L2 Overlay (Done)
  • NEON Optimization (Done)
  • Rendering Optimization (Done)
  • H263 video decoding with DSP (Pending)
  • AAC/MP3 audio playback with DSP (Pending)
  • Robustness Test (Pending)

Project Task

The beagleboard porting project consists of several tasks: 1) We need to create a  configuration profile for beagleboard platform and patch the android media framework to replace PV player with Helix player. With that android will be able to do audio/video playback throught the codecs in Helix engine. 2) We need to create a OpenMAX wrapper function to enable hardware acceleration through OpenMAX IL standard. OpenMAX IL standard defines the interface to interact with the audio/video encoder/decoder components provided in a OpenMAX core. The OpenMAX core is vendor specific. 3) To improve CPU efficiency, Helix needs to utlize overlay feature and implement rendering buffer optimization to avoid memory copy overhead.

Set up SSH CVS access connection and Ribosome build system

To access the code repository of Helix Engine, you have to set up a SSH CVS access connection and the Ribosome build system. Ribosome is a toolchain developed for customizing project, source code checkout, generate makefiles and building Helix source code. The detail steps can be found in the followling page:

Build Environment

Integrate Helix Engine with Android Media Framework

The android media framework has to be patched to use HelixPlayer instead of PVPlayer. The Helix Engine dynamically supports both software codec and hardware codec. The wrapper functions are contained in omxv.so library. If Helix engine cannot find omxv.so in /data/helix,  then it will fall back to software codec for video decoding. The audio decoding uses software codec. After building Helix, log.so and logobserverfile.so should be removed, otherwise they will casue Helix Engine to crash. Hope the problems can be solved in near future.

Our porting work is based on DSPLINK. It is a slimmer version of the dsp-bridge, also developed by TI. It supports a wide variety of devices (e.g. DaVinci, OMAP2, OMAP3, and discreet GPP+DSP devices). Codec Engine and DMAI have been built upon it, and there are GStreamer plug-ins provided by TI to use the algorithms. Rowboat community implements the Opencore/OpenMAX-DMAI bindings to integrate OpenCore with DSPLINK. To ingetrate with Helix Engine instead, we patched the source code of /OpenMAX-DMAI bindings, which is located in external/ti-dsp/dvsdk_3_01_00_10/omx_ti.

The OMX wrapper code for Helix Engine is in datatype/omx after you checkout the Helix source code.
The TI DSP codec supports output formats of both OMX_COLOR_FormatCbYCrY and OMX_COLOR_FormatYUV420Planar. When the decoder output is is in OMX_COLOR_FormatCbYCrY, it is mandatory to use TI overlay in Helix by setting m_bUseTIOverlay to be TRUE in video/sitelib/platform/unix/miniandroidsurf_omap3.cpp.


Steps to run Helix Engine on Beagleboard: Helix Integration


Known Issues

  • The RealPlayer App may crash when switching to play a different video type.
  • MPEG4 video can be successfully decoded when the output format is YUV422I. If the decoding output format is YUV420, it seems that the color rendering of some frames are wrong. Need more test.


Other Documentation:

Verify DSP Acceleration on Rowoat With Gstreamer: DSP Verification

Enable SGX Graphics Acceleration on Rowoat: SGX

RealPlayer For Beagleboard: https://helixcommunity.org/projects/beagleboard/files


Development Tips: Tips


Reference:

  https://porting.helixcommunity.org/2008/android

  http://code.google.com/p/rowboat/wiki/DSP

 

Contributions:

If you are a developer who is interested in contributing to the project or for providing feedback.  Please send an email to our distribution list at beagleboard-general@lists.real.com.