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

Search | Go
Wiki > Main > SummerOfCode > SummerOfCode2011 > StandaloneAudioLibrary (r2)
This project is part of the Google Summer of Code 2011 project.

Project name Student Mentor Backup mentor
Standalone audio library Sean Bartell Michael Giacomelli  


My project is to separate out Rockbox's codecs, metadata parsing, and DSP code into a separate library. I'll add an automated testing suite, make the library usable by other embedded software, and perform some other improvements. My project will make codec development easier, and hopefully external projects will use and make contributions to the library.

In progress

Compile audio code as a library

The library will include the decoders, encoders, metadata parsers, and DSP code (resampling, equalization, and timestretching). When the first steps are done, it will be possible to build the library on Linux. I'll make a simple demo program that can play music and use all the features of the library.

This stage will focus on the minimal changes needed to get the demo program working, in preparation for the next steps.

Future work

Remove dependencies on other Rockbox code

There will be a fixed set of functions that must be implemented by the library's user, similar to the way codecs currently interact with the rest of Rockbox through struct codec_api.

Write test suite

This will be my project's most direct benefit to Rockbox. I plan to write a Python driver that will decode each test file and do an exact comparison against known correct output. For new test files, where there's no known output, I'll use fuzzy comparisons (e.g. PSNR) against other libraries and tools. The driver will also check the results of seeking, and test the other library features.

It may be possible to test platform-dependent assembly code with qemu or another emulator. I'm also interested in checking coverage and using other techniques, like Valgrind.

Clean up the API

The initial focus will be on getting the library working, not on a nice API. In order to appeal to software other than Rockbox, I'll change the API to make it cleaner and more flexible. I'll examine other codec software (both proprietary and open), talk to interested projects (if any), and make a big list of features the ideal library would have. This includes anything from documentation (essential) to reading lyrics files (feature creep). We can then figure out which items are feasible and important enough to implement this summer.

If there's still time left, further work may include performance optimization and bughunting.

Completed work


As a warmup task, I removed or commented unused codec code, and made other parts static: FS#12140, FS#12141, FS#12142, FS#12143.


Codec bugs found and fixed: FS#12130 (ADX), FS#12146 (Cook).

Other changes not related to codecs: FS#12121.

-- SeanBartell - 25 May 2011
r2 - 03 Jun 2011 - 04:19:27 - SeanBartell

Copyright by the contributing authors.