[maemo-developers] [maemo-developers] Ogg Vorbis and the N800

From: Krischan Keitsch krischan.keitsch at alumni.tu-berlin.de
Date: Mon Jan 29 09:45:55 EET 2007
Hi

as far as I can tell the n800 with the OMAP2420 processor has a vfp (vector 
floating point unit; see [1] ) Based on this I wanted to find out if vorbis  
could take advantage of this unit by default.

To make it short: Yes it works - BUT it is just painful! 

What I did:
1) Set up scratchbox for bora --> excellent install script! Thanks! :-) 
2) downloaded the sources for libao, libogg, libvorbis from [2]
3) downloaded gst-plugins-base-0-10.9 from [3]
4) compiled on SDK_ARMEL target
5) copied the libs to the n800
6) called gst-inspect: 
	------------snip-------------
Nokia-N800-51:~# gst-inspect vorbis
Plugin Details:
  Name:                 vorbis
  Description:          Vorbis plugin library
  Filename:             /usr/lib/gstreamer-0.10/libgstvorbis.so
  Version:              0.10.9
  License:              LGPL
  Source module:        gst-plugins-base
  Binary package:       GStreamer Base Plug-ins source release
  Origin URL:           Unknown package origin

  vorbisparse: VorbisParse
  vorbisdec: Vorbis audio decoder
  vorbisenc: Vorbis audio encoder

  3 features:
  +-- 3 elements

Nokia-N800-51:~# gst-inspect ogg
Plugin Details:
  Name:                 ogg
  Description:          ogg stream manipulation (info about ogg: 
http://xiph.org)
  Filename:             /usr/lib/gstreamer-0.10/libgstogg.so
  Version:              0.10.9
  License:              LGPL
  Source module:        gst-plugins-base
  Binary package:       GStreamer Base Plug-ins source release
  Origin URL:           Unknown package origin

  oggparse: Ogg parser
  ogmtextparse: OGM text stream parser
  ogmvideoparse: OGM video stream parser
  ogmaudioparse: OGM audio stream parser
  oggmux: Ogg muxer
  oggdemux: Ogg demuxer

  6 features:
  +-- 6 elements
	------------snap-------------
7) ran gst-launch-0.10 filesrc location=opensource.ogg  ! oggdemux ! 
vorbisdec ! audioconvert ! dsppcmsink

8) listen to ogg vorbis :-)

Conclusion:
It works but the cpu load is high. Vorbis decoding takes almost 80% cpu. I 
also tried MPlayer 1.0rc1-maemo.8 which has the integer based Tremor decoder 
codec [4] nicely integrated. Tremor needs around 12% cpu for the same ogg 
file. (That is an expected scale up from the 770 experience - tremor takes 
around 20% cpu on the 770 - due to the faster cpu of the n800)

It exceeds my skills to analyze this much further. However it seems that the 
vorbis decoder is not vfp optimized ;-) [yet?].

Hm, and now?
Maybe someone who is more skilled than me could verify my results.
It all boils down to the dsp! The dsp on the 770 and the n800 is the same. So, 
a once implemented plugin could support both platforms (770 and n800).

--> We need a dsp based vorbis decoder! 
[I know: demanding is easy - implementing rather not ;-) ] 

As we wait for Nokia to release more codecs we can try to use the Tremor based 
plugins for the audioplayer [5] (great work!).

Any feedback is wellcome.

Regards Krischan

[1] http://en.wikipedia.org/wiki/ARM_architecture#VFP
[2] http://svn.xiph.org/trunk/
[3] http://gstreamer.freedesktop.org/src/
[4] http://svn.xiph.org/trunk/Tremor/
[5] https://garage.maemo.org/projects/mogg/
-- 
Krischan Keitsch
jabber: krischan_keitsch at jabber.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://lists.maemo.org/pipermail/maemo-developers/attachments/20070129/d8a2e616/attachment.pgp 
More information about the maemo-developers mailing list