Perfecting audio on Linus with ALSA and WebRTC
At Jitsi Linux has been one of our target platforms and that’s something very important to us. Lately however we have been somewhat unhappy with the audio quality there. We would therefore like to improve things a bit there.
Currently Jitsi has support for a number of backends for audio, two of which are targeting linux: PortAudio and Pulse Audio.
PortAudio was our first non-Java implementation. Originally we were happy with it but it then turned out to be suboptimal in certain situations and we would get 100% CPU surges for no reason. That’s why we added support for Pulse Audio. Pulse performs rather well on systems that have it. Many don’t however and installing it could be an issue in a number of situations. We have therefore decided that adding a third backend might be necessary for such situations: one that directly uses the Advanced Linux Sound Architecture: ALSA. We would like that audio system to be available in cases where pulse isn’t.
Secondly, we would like you to implement Acoustic Echo Cancellation (AEC) features for Jitsi on Linux for both PulseAudio and the new ALSA backend. We think the best way to achieve this would be through the WebRTC native library, which we are already using for the same purpose on Mac OS X.
PortAudio, Portable Cross-platform Audio I/O
Pulse Audio, a sound system for POSIX OSes
WebRTC Native APIs
Other Jitsi GSoC Projects
Jitsi Developer Documentation
The official Jitsi website