dev builds
themes manual
device status forums
mailing lists
IRC bugs
dev guide

Search | Go
Wiki > Main > SummerOfCode > SummerOfCode2007 > GsocRoundup2007 (r7)

Roundup of Google Summer of Code 2007


Rockbox is an open source firmware replacement for a growing number of MP3 players. Rockbox aims to be considerably more functional and efficient than your device's stock firmware while remaining easy to use and customizable. Rockbox is written by users, for users. A more elaborate introduction can be found on WhyRockbox.

This year was the first time Rockbox joined Google SoC, and we got 4 students which was more than we hoped for and less then the number of proposals we had wink SoC has been a great learning experience for both the project and the students. Despite our experience with SoC (none) and the difficulty of the proposed projects, we can still say that SoC 2007 was a success. And all 4 students are still with us, working on their projects.

Below are the 4 SoC projects and their outcome.

WMA codec?

Thanks to Google (and ffmpeg of course), Rockbox can now play WMA files! While there is still some work to be done (seeking), the codec works nicely and is already quite efficient. The codec does not support DRM (and never will!). A big part of this project was to convert the codec to fixed point because the targets where Rockbox runs have no floating point hardware, and having it in software is a big no-no if you want speed and efficiency. The asf parser was written by another Rockbox developer, who also helped the student out.

USB stack

For players that have no hardware USB bridge, Rockbox relies on the original firmware (using dual boot) to do the USB handling. We also wanted to support other device drivers like serial. Using the Linux Gadget API, a device stack was written, and then troubles started. Writing code for a target with almost no documentation is pretty hard, and some time was spent to get the early code working. The current status is that Rockbox is recognized as device when attached but fails to mount as UMS. Work is still in progress, albeit slowly due to real life commitments.

Metadata on Buffer

Currently, Rockbox stores the metadata of a file into a separate fixed buffer, which has some drawbacks: only one file can have its metadata loaded and we cannot handle files with big tags (like embedded album art). Metadata on Buffer, however, proposes not only to keep that data on the buffer, but it also introduces a complete new buffering system that sits between the file system and the playback engine. The current status is that the new buffering system is working (debugged and all) but not yet integrated into the playback engine. Again, real life commitments have slowed down progress here, but we have good faith it will make it into our playback engine.

TTS engine

Rockbox has a lot of blind and sight impaired users because we have had voice feedback for years. Almost every menu item can be read back to you, and you can have voice clips for your files/directories or have them spelled out. To support this system, we have a voice file that is essentially a bunch of clips glued together. This SoC project had the aim to replace all this with a TTS (Text To Speech) engine. We had our hopes high because the student had a theoretical background in this matter, but practical skills and commitment caused huge delays. The student has requested (and received) an extension from Google, and he wants to continue the work. Of the 4 projects, this one has had the least progress.


We are very grateful to have been part of SoC, and we are already planning proposals for next years edition! We will, however, be handling that next edition in a more formal and closely controlled manner so that the delays we suffered this year are handled more appropriately. It was a great learning experience and we feel we didn't do badly for a first time. Thanks again, Google, it was a pleasure (and a first for us) to have people paid to code for Rockbox.
r7 - 15 Nov 2007 - 05:05:38 - JustinHannigan

Copyright by the contributing authors.