On Mon, 12.02.07 13:35, keith preston (keithpre at gmail.com) wrote: > I was wondering about a status update on getting a fixed point > resampler into pulseaudio. I heard some of this work was taking > place, but had not yet seen anything. I am interested in helping if > it would speed things along. During FOMS and linux.conf.au Jean-Marc Valin from Speex hacked up a fixed-point resampler: http://svn.xiph.org/trunk/speex/libspeex/resample.h http://svn.xiph.org/trunk/speex/libspeex/resample.c It has a nice API and is reasonably high-quality. As soon as I am done with my thesis and can focus full-time on PulseAudio again I will add support for this new resampler. If you are interested to work on this: it should be not too difficult, probably requires substantial changes only in resampler.[ch] and a few minor changes in some other files. (such as all files where PA_RESAMPLER_SRC_ is referenced.) Of course, libsamplerate support should be kept in, because it has better quality. The current resampler.h API already supports two implementations (a naive internal one, and libsamplerate), hence adding a third one shouldn't be too difficult. libsamplerate should be downgraded to an optional dependency, however. To become truly useful on non-FP CPUs the current (naive) mixing code needs to be rewritten, based on liboil. That however is not trivial, since liboil lacks a few features (like adding 16bit integer arrays into 32bit integer arrays), and we don't have a thread-safe bounce buffer abstraction yet. And then we enter squishy ground, since the whole thread-safety stuff is only available in the "lockfree" branch for now - and that branch doesn't really work yet. (BTW: If you interested read http://0pointer.de/blog/projects/foms-lca-recap.html for a longer list of what's new and what's coming in PulseAudio land.) > I'm also interesting in helping with APIs especially like what gsmartmix was > going to try and do. This area is very much in flux right now. Since I am not quite sure how a good API might look like I implemented only "automatic" policy modules for now - which don't need a user API. Those are module-volume-restore and module-rescue-streams. In short: for now, feel free to work on adding the Speex resampler into PA, but the rest is too unsettled, please wait with any further work until I am done with my thesis and can focus on PA full-time again (some time next month) Thanks for your interest! Lennart -- Lennart Poettering; lennart [at] poettering [dot] net ICQ# 11060553; GPG 0x1A015CC4; http://0pointer.net/lennart/