PulseAudio Changelog

What's new in PulseAudio 13.0

Sep 16, 2019
  • Added support for Dolby TrueHD and DTS-HD Master Audio
  • Improved initial card profile selection for ALSA cards
  • Bluetooth card profile choices aren't persistent any more by default
  • Added support for SteelSeries Arctis 5 USB headset
  • New "max_latency_msec" module argument for module-loopback
  • New "stream_name" module argument for module-rtp-send
  • Fixed S/PDIF for CMEDIA USB2.0 High-Speed True HD Audio
  • Use source sample spec and channel map by default in module-loopback
  • New "avoid_resampling" module argument for module-udev-detect and module-alsa-card
  • "avoid_resampling" also tries to avoid format conversion if the ALSA device supports it
  • New function to enable realtime scheduling for client threads
  • New convenience functions for getting parameters from pa_format_info
  • Removed BlueZ 4 support
  • Dropped intltool
  • Introduction of the Meson build system
  • Const-ification of parameters across headers
  • Minor bug-fixes, bindings updates and several translation updates

New in PulseAudio 12.2 (Jul 16, 2018)

  • The tarball for 12.1 contained a broken configure script (building failed when gsettings was enabled), so don't use that! Use PulseAudio 12.2, it's better! There are no changes besides the regenerated tarball with a working configure script and updated NEWS file.

New in PulseAudio 12.1 (Jul 14, 2018)

  • Fixed a crash when switching to the A2DP bluetooth profile
  • Fixed the plugin search path in module-ladspa-sink
  • Fixed file permissions for the pipes created by module-pipe-sink and module-pipe-source

New in PulseAudio 12.0 (Jun 21, 2018)

  • Better latency reporting (and hence better A/V sync) with the A2DP bluetooth profile
  • Much more accurate latency reporting for AirPlay devices
  • Fixed a crash or high CPU use problem with Intel HDMI LPE
  • module-switch-on-connect now ignores virtual 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
  • New "sink_input_properties" module argument for module-ladspa-sink
  • New "use_system_clock_for_timing" module argument for module-pipe-sink
  • module-pipe-sink can now use an existing pipe
  • Steelseries Arctis 7 USB headset stereo output support
  • Dell Thunderbolt Dock TB16 speaker jack support
  • Fixed digital input support for some USB sound cards
  • Fixed Native Instruments Traktor Audio 6 detection
  • 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
  • module-augment-properties now uses XDG_DATA_DIRS to find .desktop files
  • Updates for the Vala bindings
  • The GConf dependency can now be avoided
  • qpaeq license changed from AGPL to LGPL
  • qpaeq ported to Qt 5
  • Compatibility with glibc 2.27
  • The esdcompat tool isn't any more installed if esound support is disabled

New in PulseAudio 11.1 (Sep 18, 2017)

  • Fix a crash in filter modules related to flat volumes and volume sharing
  • Fix a crash when the bluetooth adapter reports weird MTU size
  • Disable bluetooth MTU autodetection by default
  • Add mixer handling back for hardware that doesn't have any alsa-lib configuration
  • Prioritize USB devices over built-in sound cards (11.0 was supposed to have this feature, but the implementation turned out to be incomplete)

New in PulseAudio 11.0 (Sep 5, 2017)

  • Support for newer AirPlay hardware
  • USB and bluetooth devices preferred over internal sound cards
  • The default sink and source configuration is remembered better
  • Bluetooth HSP headset role implemented
  • Bluetooth HFP audio gateway role implemented (requires oFono)
  • Bluetooth HSP audio gateway and HFP hands-free unit roles can be enabled simultaneously
  • Upmixing can now be disabled without bad side effects
  • Avoid having unavailable sinks or sources as the default
  • Option to avoid resampling more often
  • Option to automatically switch bluetooth profile to HSP more often
  • Better latency regulation in module-loopback
  • Changed module argument names in module-ladspa-sink and module-virtual-surround-sink
  • Fixed input device handling on Windows
  • Improved bluetooth MTU configuration (warning! this causes some hardware to not work any more, see the details below for how to fix it)
  • GNU Hurd support
  • Applications can request LADSPA or virtual surround filtering for their streams
  • Support for 32-bit applications on 64-bit systems in padsp

New in PulseAudio 10.0 (Jan 19, 2017)

  • Automatically switch Bluetooth profile when using VoIP applications
  • New module for prioritizing passthrough streams (module-allow-passthrough)
  • Fixed hotplugging support for USB surround sound cards
  • Separate volumes for Bluetooth A2DP and HSP profiles
  • memfd-based shared memory mechanism enabled by default
  • Removed module-xenpv-sink
  • Dropped dependency to json-c
  • When using systemd to start PulseAudio, pulseaudio.socket is always started first
  • Compatibility with OpenSSL 1.1.0
  • Clarified qpaeq license

New in PulseAudio 9.0 (Jun 22, 2016)

  • Automatic routing improvements
  • Beamforming and various other new features in the WebRTC echo canceller
  • Various improvements in module-role-cork and module-role-ducking
  • LFE remixing disabled by default
  • memfd-backed shared memory transport
  • Support for sample rates up to 384 kHz
  • webrtc-audio-processing dependency minimum version bumped to 0.2
  • Changed the C standard from C99 to C11.

New in PulseAudio 8.0 (Jan 22, 2016)

  • Automatic routing more likely to change profile
  • OS X and NetBSD support improvements
  • Systemd journal logging for clients
  • New LFE balance programming interface
  • Module-dbus-protocol improvements
  • More flexible configuration file handling
  • pulsecore-8.0.so moved to a private directory
  • New script for measuring memory consumption
  • Various bug fixes and small improvements

New in PulseAudio 7.1 (Oct 31, 2015)

  • Fix a crasher when using srbchannel
  • Fix a build system typo that caused symlinks to turn up in /
  • Make Xonar cards work better
  • Other minor bug fixes and improvements

New in PulseAudio 7.0 (Sep 24, 2015)

  • LFE channel synthesis with low-pass filtering
  • New libsoxr based resamplers
  • Socket activation support for TCP
  • The "srbchannel" IPC mechanism enabled by default
  • More flexible jack detection support when using UCM
  • Exiting due to SIGTERM isn't considered a failure
  • Better support for Creative SoundBlaster Omni Surround 5.1

New in PulseAudio 6.0 (Feb 13, 2015)

  • BlueZ 5 native HSP (headset) support
  • BlueZ 5 HFP (hands-free) profile support via oFono
  • systemd socket activation support
  • Better support for multichannel and 2.1 profiles
  • Remap optimisations
  • Many minor improvements, bug fixes, and i18n updates

New in PulseAudio 4.0 (Jun 4, 2013)

  • Better handling of low latency requests
  • Optimisations while mixing (generic, ARM NEON)
  • Default resampler is now speex-float-1 (lower CPU usage)
  • Major Bluetooth refactoring for better reliability and easier maintenance
  • Fixes for graceful hand-off to/from JACK
  • New module to apply ducking based on stream roles
  • Echo canceller infrastructure fixes
  • Bash and zsh completion for command line tools
  • Solaris and OS X fixes
  • Lots of other enhancements, bug fixes, and documenation and i18n updates

New in PulseAudio 3.0 (Dec 18, 2012)

  • ALSA Use Case Manager (UCM) Support:
  • The audio hardware on desktop and laptop computers is usually standard enough for PulseAudio to handle using a common set of configuration files. The situation is different on e.g. phones and tablets. Practically all of those devices need separate configuration files for describing the hardware so that PulseAudio can properly use all basic features of the hardware. The configuration could be shipped as PulseAudio configuration files, but the ALSA folks have been working on a system that allows applications (such as PulseAudio) to use the hardware without needing any extra configuration in the application. The system is called UCM, and PulseAudio now has support for it.
  • Runtime Editable LADSPA Filter Parameters:
  • The LADSPA module now exposes a basic D-Bus interface for changing the filter parameters on the fly. Previously the parameters could not be changed after loading the filter.
  • Out-of-the-box support for Bluetooth sources:
  • PulseAudio can be used in a Bluetooth headset role, for example to connect a laptop to a mobile phone and pretend that the laptop is a headset. It's often desirable in that case to loop back the audio from the phone to the laptop's sound card. That is now done automatically by module-bluetooth-policy, which is loaded by default. Users do need to enable Source support in their BlueZ configuration, though.
  • ARM NEON optimisations:
  • Optimisations were added for sample format conversion between S16LE and floating point formats using the ARM NEON instructions. Support for these is detected at compile-time (based on FPU flags) as well as run-time (based on /proc/cpuinfo). As part of this effort, the groundwork has been laid for adding more NEON optimisations in the future.
  • Configurable Device Latency Offset:
  • Accurate latency reporting is important for e.g. "lip sync" in video playback. PulseAudio relies on the audio hardware to provide accurate information about the audio delay. If that information is not accurate for some reason, it is now possible to configure an offset to be applied to each latency report, thanks to Damir Jelić's Google Summer of Code work. For example, if you're watching a video and you use a Bluetooth headset for audio output, the lip sync might be a bit off, because PulseAudio doesn't currently have proper support for querying the latency for Bluetooth devices. With the upcoming version of pavucontrol, you will be able to fix the synchronization problem by adjusting the latency offset of the Bluetooth headset.
  • Adhere to the XDG Base Directory Specification:
  • The location of configuration files has been moved from ~/.pulse to ~/.config/pulse (or if $XDG_CONFIG_HOME is set, then use that). If ~/.pulse exists, however, it will still be used so that the user configuration is not lost when updating PulseAudio. The authentication cookie has also been moved from ~/.pulse-cookie to ~/.config/pulse/cookie.
  • The location of runtime files (i.e. files that don't need to be kept across reboots, e.g. sockets) has been moved from a random directory under /tmp to $XDG_RUNTIME_DIR/pulse. In case $XDG_RUNTIME_DIR is not set, the old scheme is still used as a fallback.
  • Various ALSA Changes:
  • A regression in 2.0, that could cause some machines not to have "Speaker" or "Internal Mic" ports, has been mostly fixed in 3.0 - when used together with Linux 3.6 or higher. Also, a workaround for older kernels is applied to certain most common machines.
  • Pierre-Louis Bossart introduced a change to improve accuracy of timestamp queries, and thus timer-based scheduling, by querying a number of ALSA timing parameters atomically.
  • We have added icon name property to ALSA ports, which could help UI makers to display better per-port icons.
  • Also, there has been a few other changes, such as removing the troublesome lfe-on-mono port, and adding more mixer control names to better stay in sync with the kernel.
  • Improvements for Automatic Testing:
  • Deng Zhengrong improved PulseAudio's automatic testing support as part of his Google Summer of Code work. The improvements include support for test coverage reporting with gcov, changing the existing tests to use the "check" framework, and making it possible to launch a PulseAudio daemon for testing purposes while simultaneously having the normal daemon running.
  • Unloading Modules by Name:
  • pactl and pacmd now support unloading modules by name. Previously unloading could only be done by the module index, which was a bit inconvenient, because usually you don't know the index without somehow looking it up first.
  • Logging Improvements:
  • In addition to the automatic testing improvements, GSoC student Deng worked also on PulseAudio's logging facilities. It's now possible to change the log target of a running daemon with pacmd, using the set-log-target command. Also, a new log target type was added: "newfile". The "newfile" target is like the old "file" target, with the difference that if the given file name already exists, the file is not overwritten, but instead a new file is created with a numbered suffix.
  • Bluetooth Code Refactoring:
  • There has been a lot of refactoring work done on the Bluetooth modules, as preparation for the upcoming BlueZ 5 support and for making the code more pleasant to work with in general. These are not directly user-visible changes, but we'd like to take the opportunity here to thank Mikel Astiz anyway for the great work he has done.
  • Next Steps:
  • The development continues as always, and the 4.0 release is targeted to happen in April (so far we haven't been very good at maintaining a 4 month release cycle, though, so take that with a grain of salt). The report from PulseConf 2012 offers some clues about what might be coming next.

New in PulseAudio 2.0 (May 12, 2012)

  • Alternate sample rates
  • Jack detection
  • Echo cancellation: WebRTC canceller, automatic gain control, drift compensation
  • Virtual Surround module
  • Xen Paravirtualised audio sink
  • Fixed HURD support
  • A2DP decoder quality improvements

New in PulseAudio 0.9.17 (Sep 18, 2009)

  • Lennart Poettering (13):
  • libpulse: add new error code PA_ERR_BUSY
  • alsa: properly convert sample buffer sizes
  • alsa: properly report suspension error codes
  • i18n: add ja to LINGUAS
  • i18n: run make update-po
  • build-sys: increase library version
  • doxygen: drop references to pacat.c and paplay.c as examples since tehy are not useful as such and in the case of paplay not even existant anymore
  • doxygen: add rtclock.h to documentation
  • doxygen: don't confuse doxygen with spurious ..
  • proplist: define properties for storing window position
  • position-event-sounds: honour window position if set, position both vertically and horizontally
  • core: add an additional volume factor that is applied after resampling took place
  • position-event-sounds: apply volume factor after, not before resampling
  • amitakhya (1):
  • Sending translation for Assamese
  • anipeter (1):
  • Sending translation for Malayalam
  • hyuuga (1):
  • Sending translation for po/ja.po
  • ifelix (1):
  • Sending translation for Tamil
  • jassy (1):
  • Sending translation for Punjabi
  • kkrothap (1):
  • Sending translation for Telugu
  • rajesh (1):
  • Sending translation for Hindi
  • runab (1):
  • Sending translation for Bengali (India)
  • sandeeps (1):
  • Sending translation for Marathi
  • swkothar (1):
  • Sending translation for Gujarati
  • warrink (1):
  • Sending translation for Dutch