Glitch-free Audio
Summary
The !PulseAudio sound server is being rewritten to use timer-based audio scheduling instead of the traditional interrupt-driven approach. This is the approach that is taken by other systems such as Apples !CoreAudio and the Windows Vista audio subsystem and has a number of advantages, not the least in reduced power consumption.
Owner
- Name: Lennart Poettering
Current status
- Targeted release: Fedora 10
- Last updated: 2008-04-09
- Percentage of completion: 50%
Detailed Description
Lennart has written a great explanation of the technical details here .
Benefit to Fedora
Lennarts writeup has a detailed discussion of advantages (and disadvantages) of the glitch-free approach. Some highlights are:
- Less wakeups, reduced power consumption
- Dynamic latency adaption
- Less dependent on audio hardware
- Minimized chance of drop outs
Scope
The feature requires a pretty-much rewritten core of !PulseAudio.
Test Plan
User Experience
Unfortunately not much of this is directly visible. The location where this is best visible is powertop.
Dependencies
The glitch-free logic will only be enabled on mmap()-capable ALSA devices and where hrtimers are available. The non-gltich-free logic will be preserved as compatibility code with older kernels and limited sound hardware or drivers.
From Lennarts writeup:
- System timers on Unix are not very high precision. On traditional Linux with HZ=100 sleep times for timers are rounded up to multiples of 10ms. Only very recent Linux kernels with hrtimers can provide something better, but only on x86 and x86-64 until now. This makes the whole scheme unusable for low latency setups unless you run the very latest Linux. Also, hrtimers are not (yet) exposed in poll()/select(). It requires major jumping through loops to work around this limitation.
- Generally, this works reliably only on newest ALSA, newest kernel, newest everything. It has pretty steep requirements on software and sometimes even on hardware.
Contingency Plan
If the glitch-free !PulseAudio exhibits glitches that cannot be fixed in time for F10, we can just revert to the last 'traditional' !PulseAudio release.