Logo

HomeAboutCommunityDownloadDocumentationPlanet


PulseAudio 12.0 release notes (draft)

Changes at a glance

  • Much more accurate latency reporting for AirPlay devices
  • When using passthrough for compressed audio, set the "non-audio" bit
  • Prioritize HDMI output over S/PDIF output
  • HSP support for more bluetooth headsets
  • Choose the A2DP bluetooth profile by default instead of HSP
  • Steelseries Arctis 7 USB headset stereo output support
  • Dell Thunderbolt Dock TB16 speaker jack support
  • Fixed digital input support for some USB sound cards
  • Ability to disable input or output on macOS
  • New "dereverb" option for the Speex echo canceller
  • New module: module-always-source
  • State files not any more readable by all users in the system mode
  • qpaeq license changed from AGPL to LGPL

Notes for end users

Much more accurate latency reporting for AirPlay devices

When playing videos, it's important that the audio latency is known so that the video can be synchronized accurately. The AirPlay protocol has a large latency, but PulseAudio didn't previously report that latency to applications. Now it reports it, or at least something much closer to the reality than before.

The AirPlay protocol doesn't provide a mechanism for getting the exact latency (or if it does, we're not aware of that). PulseAudio makes an educated guess, and a significant part of that guess is a latency constant that is added to each latency report. The default value for that constant is exactly 2 seconds, but that's not optimal for all devices. PulseAudio uses a different constant for some known devices, and we'd like to expand the set of known devices. If you find that audio-video synchronization is bad with your AirPlay device, you can experiment with different latency constants by passing argument "latency_msec=2000" to module-raop-discover in /etc/pulse/default.pa. Change the number 2000 to something that works better. Once you find a better latency value, we'd be happy hear from you so that we can add your device to the list of known devices.

When using passthrough for compressed audio, set the "non-audio" bit

When playing compressed audio through S/PDIF or HDMI, it should be indicated that the data is not normal uncompressed audio, otherwise the receiver might play some horrible noise. It seems that PulseAudio never set the "non-audio" bit properly. There hasn't been any complaints about this until recently, so apparently receivers generally detect compressed audio pretty well even without the "non-audio" bit being set, but in any case, now PulseAudio does set that bit.

Prioritize HDMI output over S/PDIF output

HDMI output is probably used more often than S/PDIF output, so if PulseAudio has to pick one, it's better to pick HDMI. Previously S/PDIF had higher priority than HDMI.

HSP support for more bluetooth headsets

When connecting a bluetooth headset, the headset sends a list of features that it supports. Headsets can indicate HSP support in two different ways, but PulseAudio used to recognize only one way, so to PulseAudio it seemed that some headsets didn't support HSP even when in reality they did. Now both kinds of headsets are supported.

Choose the A2DP bluetooth profile by default instead of HSP

When connecting a new bluetooth headset, PulseAudio used to activate the HSP profile by default. Now A2DP has higher priority. A2DP is a better default, because it has better audio quality. HSP is needed with phone applications, but we already have automatic profile switching when a phone application appears, so using A2DP as the default profile shouldn't cause problems even when using bluetooth primarily for phone calls.

Steelseries Arctis 7 USB headset stereo output support

The headset is unusual in that it presents itself as two output devices: a mono device (meant for voice audio) and a stereo device (for everything else), and both devices have separate volume control at the hardware level. PulseAudio used to make only the mono device available by default, now both devices can be used at the same time.

Dell Thunderbolt Dock TB16 speaker jack support

TB16 has a speaker jack that PulseAudio didn't previously make available by default. That has now been fixed.

Fixed digital input support for some USB sound cards

Some USB sound cards require the "PCM Capture Source" control in the ALSA mixer to be set to "IEC958 In" in order to be able to record from the digital input, but PulseAudio didn't do that. Now it does.

Ability to disable input or output on macOS

module-coreaudio-detect and module-coreaudio-device now have the "record" and "playback" boolean options that can be used to disable the respective functionality.

New "dereverb" option for the Speex echo canceller

The Speex backend of module-echo-cancel has a new "dereverb" boolean option. The option is enabled by default. TODO: Explain what the dereverb processing does.

New module: module-always-source

The new module makes sure that there's always at least one non-monitor source available in the system. If you're running into situations where there are no "proper" input devices, and you'd rather use a null source that only produces silence as the default input device rather than a monitor source that copies the audio from the default output, this is for you.

module-always-source is not loaded by default.

State files not any more readable by all users in the system mode

PulseAudio used to set the process umask to 022. That meant that the state files that PulseAudio writes on disk were readable by all users when running PulseAudio in the "system mode", i.e. only one instance that all users share. Now the umask is 077, so users can't read the state files any more, which is a slight improvement in privacy, because the state files might contain e.g. information about what applications users use.

The umask change also affects the file permissions in the default setup where each user runs their own PulseAudio instance, but in that mode the files are written in a directory that other users can't access, so there shouldn't be any practical difference.

Notes for application developers

Nothing here yet...

Notes for packagers

qpaeq license changed from AGPL to LGPL

Most of PulseAudio's code is licensed under LGPLv2.1, but the equalizer GUI qpaeq was licensed under AGPL. qpaeq is now licensed under LGPLv2.1, so there's one less exception in PulseAudio's licensing terms.

git shortlog

TODO