[pulseaudio-discuss] GSoC: Call for project ideas

Toby St Clere Smithe tsmithe at ubuntu.com
Sat Mar 23 17:39:21 PDT 2013


Hi Thomas,

Thomas Martitz <kugel at rockbox.org> writes:
> I think this is a great project idea. I've been suffering from the
> problems you mentioned as well. However I think a lossless codec
> should be considered. Lossy codecs might not be acceptable for lots of
> people and a lossless codec might improve things sufficiently. But I
> can see a lossy codec being useful also for congested networks, so it
> could be an option.

When I did my research into codec choice around 9 months ago, I looked
into FLAC, along with lossless codecs like Vorbis. Off the top of my
head, I can't remember the details exactly, but my criteria were quite
straightforward: firstly, I wanted something to reduce my network
bandwidth requirements, since my 802.11g equiment wasn't hacking it[0];
secondly, I wanted something with low latency; thirdly, I wanted
something flexible, so that I could support different types of stream
and adjust intelligently but imperceptibly for different network
conditions; and lastly, I wanted something with low CPU and memory
requirements.

Opus performed favourably against all the lossy codecs I thought about
on pretty much all of these measures[1,2,3], but after discovering this,
I didn't really evaluate FLAC very much, since I believe FLAC and Vorbis
or AAC at high quality settings (eg, 320kbit/s) to be indistinguishable
under ABX testing, and since PulseAudio streaming, for me, is about
listening rather than archiving (for which you can use something far
less complex, and needn't be constrained by frame drops,
synchronisation, or real-time playback).

Of course, there are applications (such as audio manipulation) for which
one might want to have lossless transmission, and so I can see two
outcomes for my project. Potentially, I would have enough spare time to
implement FLAC support as well as Opus. But I don't want to over-commit
myself, and promise something I probably won't be able to achieve, since
I'm bound to concentrate on the more versatile Opus
implementation. Nonetheless, I would like the network code to be as
codec-agnostic as possible, and so would try and ensure that FLAC
support could be easily added at a later date.

[0] I have since upgraded to 802.11n equipment, but I still experience
    degradations when I move far from my access point, or when streaming
    more than 2-channel audio. I know I should get substantially more
    throughput than the ~4.4 mbit/s required for 6-channel 16-bit 48kHz
    PCM audio, but I don't, at least not reliably.
[1] http://opus-codec.org/comparison/
[2] https://tools.ietf.org/html/rfc6716#section-2.1.5
[3] https://tools.ietf.org/html/rfc6716#section-4.5


Regard,

Toby



More information about the pulseaudio-discuss mailing list