Ogg-support 0.4: Media Player

I added initial support for the built-in Media Player. It’s untrivial to get everything working properly as the FileManager, the Metalayer Crawler, and the Media Player are all close source applications and their behaviour is not really documented anywhere.

The change log:

  • Added OGG support for the built-in media player.
  • Updated ogg related mime types from freedesktop.org.xml (excluding *.ogg patterns).
  • Added icons for the new mime types.
  • Removed dependency to floating point vorbis library.

Known issues:

  • The FM doesn’t now how to start the new mime types.
  • The Metalayer Crawler doesn’t fill in the meta data (artist etc.) for the ogg files.
  • I removed the *.ogg patterns from the mime file because with it neither the FM nor the Crawler checked the real mime type for files but just put the first mime type with *.ogg pattern.

The Crawler did fill in the artist etc. for my ogg files at one point, but I don’t know why. If you have any hints for these issues, I’m all ears :)

PS. The MP now plays oggs with Theora video and Vorbis audio too :)

Ogg-support 0.2: Speex

The 0.2 release includes dependency to the Speex (libspeex1 and the corresponding gst plugin in gstreamer0.10-plugins-good-kulve). The Speex is compiled from SVN trunk.

I made some light (just looked the numbers, no playback) performance tests. The two tables below show how much time in seconds it took to encode a 60 second audio clip (8000Hz, mono, 16bit). The first column shows the complexity used (scale is 0-10) and the rest of the columns show the encoding time with different qualities (0-10).

no VBR, no DTX, no VAD:

c/q      1       2       3       5       7
0       12       8      10      14      11
1       12       9      10      15      11
2       13       8      12      16      16
3       13      10      15      22      19
4       13      10      16      23      20

VBR, DTX, VAD:

c/q      1       2       3       5       7
0       10      10      11      14      16
1        9      10      13      14      16
2       10      12      13      15      18
3       11      13      15      19      22
4       11      13      17      20      24

The next table shows the difference between fixed point and floating point versions.

c        fixed     float
0        11        17
1        11        18
2        13        20
3        19        29

So, use the fixed point Speex API, if possible (the gst doesn’t use it). If using the floating point API, the libspeex will make the conversion.

For VoIP a good quality setting could be quality 7, complexity 2 and VBR, VAD, and DTX on.

Ogg support for n800

The Internet Tablets don’t support Ogg natively, so there has been some open source projects to add it. I made yet another one.

Features:

  • Adds application/ogg and audio/x-ogg mime types
  • Add GnomeVFS mime type icons for above
  • Depends on ogg, vorbis and theora libs and on the corresponding GStreamer plugins

See project page, home page or install it (conflicts with kilikali-codecs-meta).

For an open source player, see kilikali.

Streaming DVB-T as ogg to N800

Transcode DVB-T with VLC on mediaserver (low resolution because of low(?) CPU):


vlc --program=241 dvb: --dvb-frequency=674000000
--dvb-srate=6900000 --dvb-transmission=8
--dvb-guard=8 --dvb-hierarchy=-1
--dvb-bandwidth=8 --sout #transcode{width=128, height=96, vcodec=theora, vb=300, acodec=vorb, ab=96}: std{access=http, mux=ogg, url=example.server.fi:8000}

Watch stream on N800:


gst-launch-0.10 gnomevfssrc location=http://example.server.fi:8000 ! oggdemux name=demuxer ! {queue ! theoradec ! xvimagesink} {demuxer.!queue ! vorbisdec ! audioconvert ! dsppcmsink}

Tested with VLC 0.9.0 and self compiled theora, ogg, vorbis libs. The transcoding parameters are just the ones I got first working :)

EDIT: It seems that I almost reinvented the wheel again. See MoRpHeUz’s blog (especially this) for more details.