Features/GlitchFreeAudio

From FedoraProject

< Features(Difference between revisions)
Jump to: navigation, search
(Summary)
(Scope)
Line 33: Line 33:
 
== Scope ==
 
== Scope ==
  
The feature requires a pretty-much rewritten core of !PulseAudio.
+
The feature requires a pretty-much rewritten core of PulseAudio.
  
 
== Test Plan ==
 
== Test Plan ==

Revision as of 20:52, 16 July 2008

Contents

Glitch-free Audio

Summary

The PulseAudio sound server has been 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.

Documentation

Release Notes