Home | About | Community | Download | Documentation | Planet |
PulseAudio 17.0 release notes
Notes for end users
Updates to ALSA UCM-based setups
An extensive set of changes landed which modify how ALSA UCM configuration is mapped to PulseAudio profiles and ports. Notably
- We no longer generate combined ports for non-conflicting devices, and instead create one profile for each set of non-conflicting devices. Devices that are not explicitly marked as conflicting but share the same
PlaybackPCM
orCapturePCM
are considered conflicting. - Instead of different inputs/outputs being exposed as ports on a source/sink, they will be exposed as separate sources/sinks. On some setups where two inputs or outputs can run concurrently and independently, you will now see more than one input/output sink available when selecting the appropriate profile.
Battery level indication to Bluetooth devices
This shares the battery level of a PulseAudio host to a Bluetooth headset (for example, if you're running a PulseAudio-based device connected to a car, the car can report the battery level of your device).
Support for the Bluetooth FastStream codec
Devices that support the FastStream codec (which provides higher quality bidirectional audio) are now supported.
webrtc-audio-processing dependency updated
We updated to a more recent version of the webrtc-audio-processing
library with improvements in echo cancellation and higher tolerance for drift. Unfortunately, this does mean that beamforming support, which was dropped upstream, is no longer present.
Trigger role groups added to module-role-cork
module-role-cork
now allows groups of roles (separated by /
) as triggers.
XDG base directory spec for profile-set loading
The XDG base directory specification is now used for ALSA profile set loading ($XDG_DATA_HOME
, followed by $XDG_DATA_DIRS
, and finally falling back to the previous behaviour).
Notes for application developers
PA_RATE_MAX increased
The maximum supported sample rate is now 768kHz.
Notes for packagers
webrtc-audio-processing dependency updated
We now depend on version 1.3 of the library, which is parallel-installable with other API versions. As part of this change, the default cpp_std
for the project has been set to c++17
.
git shortlog
Alistair Leslie-Hughes (7): Propagate return value from pa_pstream_attach_memfd_shmid Ensure fds are closed when exec functions are used. pactl: Stop a crash when setting the volume which is out of range pulsecore: Set errno before calling read rtp-send: Use getaddrinfo to improve support for ipv6. rtp-send: Use getaddrinfo to improve support for ipv6 on source address rtp-recv: Use getaddrinfo to improve support for ipv6. Alper Nebi Yasak (24): idxset: Add set contains() function idxset: Add set comparison operations idxset: Add reverse iteration functions alsa-ucm: Always create device conflicting/supported device idxsets alsa-ucm: Make modifiers track conflicting/supported devices as idxsets alsa-ucm: Add enable, disable, status helpers for devices alsa-ucm: Let profiles know their associated UCM verb alsa-ucm: Stop conflating profile name with UCM verb name alsa-ucm: Make mapping creation independent from indvidual profiles alsa-ucm: Split profile creation into verb and profile parts alsa-ucm: Rewrite conformant device group generation with idxsets alsa-ucm: Fix device conformance check alsa-ucm: Split out helpers for device set name, description, priority alsa-ucm: Make one input/output mapping per UCM device alsa-ucm: Remove combination port generation logic alsa-ucm: Make ports store only one device alsa-ucm: Make mapping UCM contexts have only one device alsa-ucm: Make mapping UCM contexts have only one modifier alsa-ucm: Disable old devices when switching profiles of same verb alsa-ucm: Create multiple profiles per verb for conflicting devices alsa-ucm: Add enable, disable, status helpers for modifiers alsa-ucm: Disable old modifiers when switching profiles of same verb alsa-ucm: Consider devices using the same PCM as incompatible alsa-ucm: Fix more instances of profile-verb conflation Arun Raghavan (13): ci: Update to freedesktop/ci-templates ci: Use built-in distribution image name mechanism echo-cancel-test: Drop references to internal message queue build-sys: Bump webrtc-audio-processing dependency build-sys: Bump .so version 16.99.1 build-sys: Bump cpp_std to c++17 build-sys: Add a webrtc-audio-processing wrap file ci: Force build of webrtc-aec ci: Add doxygen to build image ci: Drop -werror in build build-sys: Bump webrtc-audio-processing wrap to 1.2 build-sys: Bump webrtc-audio-processing wrap to 1.3 Update NEWS for 17.0 Asier Sarasua Garmendia (2): Added translation using Weblate (Basque) Translated using Weblate (Basque) Ataberk Özen (2): alsa-profiles: import Asus Xonar SE profile from pipewire alsa-profiles: rename mappings for Xonar SE Balázs Meskó (1): Translated using Weblate (Hungarian) Biswapriyo Nath (1): meson: Add DEF file to export APIs in Windows Dylan Van Assche (4): bluez5-util: move pa_bluetooth_discovery to header bluetooth: add AT+BIA support bluetooth: add UPower backend bluetooth: hook up UPower backend Eero Nurkkala (1): echo-cancel: add webrtc AEC3 support Ettore Atalan (1): Translated using Weblate (German) Fabrice Fontaine (1): meson.build: fix build without C++ Fran Diéguez (2): Translated using Weblate (Galician) Translated using Weblate (Galician) Georg Chini (7): combine-sink: Fix threading issue during underrun time-smoother-2: Fix stream time when stream starts paused stream-interaction: Extend trigger groups to module-role-cork stream-interaction: Fix regression when a trigger role is also a cork role tunnel-sink-new: Fix hang when used in combination with module-combine-sink switch-on-connect: Do not overwrite user configured default sink/source pactl, pacmd: Allow to unset the configured default sink or source Gioele Barabucci (1): daemon/meson.build: Install dbus policy in /usr, not /etc Gogo Gogsi (1): Translated using Weblate (Croatian) Hector Martin (1): alsa: ucm: Fix spurious mixer path removal on initial profile set Hugo Carvalho (1): Translated using Weblate (Portuguese) Hui Wang (1): backend-native: Handle multi AT commands in a buffer Igor V. Kovalenko (26): rtp: Accept CRLF delimiters in SDP as required by RFC 4566 rtp: Initialize SDP info struct field added for OPUS build-sys: meson: Make module-console-kit optional build-sys: meson: Move qpaeq to daemon build bluetooth: Free memblock after codec errors bluetooth: Do not use hardware volume control for A2DP backchannel bluetooth: Add faststream codec bluetooth: Use stereo sample spec for faststream backchannel bluetooth: Handle fragmented faststream frames bluetooth: Add 20dB boost for faststream source volume backend-native: Fix stack corruption reading RFCOMM AT+BIA= response module-combine-sink: Do not set up rate adjustment timer at load time module-combine-sink: Suspend while unloading to fix crash moving sinks backend-native: Fix parsing comma-delimited response alsa-util: Dump probed rates alsa-util: Add more standard sample rates. bluetooth: Amend writeout to send more initial frames resampler: Fix oversized memblock pushed from resampler bluetooth: Do not attempt decoding too short faststream packet data pstream: Pass frame size to keep split memblock parts aligned alsa-util: Perform format and rate detection before setting HW params alsa-util: Fix pa_alsa_get_supported_formats fallback. memblockq: Drop check for chunk index alignment, require aligned length shell-completion: Fix typo in --use-pid-file= suggestion memblockq: Adjust tail chunk offset into memblock after split Fix crash running in restricted environment. Jaechul Lee (1): sound-file-stream: Fix crash when playing a file which is not aligned Jan Kuparinen (1): Translated using Weblate (Finnish) Jan Palus (1): bluetooth/gst: Correct var type for GST_TYPE_BITMASK Jaroslav Kysela (5): alsa-mixer: allow to re-attach the mixer control element alsa-ucm: Set profiles by their struct instance, not their name alsa-ucm: remove extra space from the device.intended_roles property alsa-mixer: fix the re-attach code for the mixer control element alsa-mixer: extend pa_alsa_mixer_find with the subdevice check Jiri Grönroos (1): Translated using Weblate (Finnish) Joachim Philipp (1): Translated using Weblate (German) Jordi Mas (2): Translated using Weblate (Catalan) Translated using Weblate (Catalan) Marijn Suijten (5): backend-native: Fix indentation and whitespace style backend-native: Add backend pointer to transport_data Revert "bluez5-util: move pa_bluetooth_discovery to header" backend-native: Update all CIND indicators backend-native: Remove uninformative "Profile unavailable" debug message Mart Raudsepp (1): proplist-util: Don't assume gdkx is there as gtk could be built without it Nicolas Cavallari (2): build-sys: Fix atomic support detection build-sys: Add missing libatomic_ops dependencies Peter Meerwald-Stadler (5): module-combine-sink: Use fabs() instead of abs() for double module-combine-sink: Fix indentation module-tunnel: Fix typos volume: Fix typo raop-client: Fix typo Philip Goto (1): Translated using Weblate (Dutch) Rosen Penev (1): meson: fix meson warnings Rudi Heitbaum (2): shm: use MFD_NOEXEC_SEAL for shared memory shm: allow for older versions of Linux without MFD_NOEXEC_SEAL Sabri Ünal (1): Translated using Weblate (Turkish) Sean Greenslade (1): pactl: fix parsing of percentages with decimal points Seong-ho Cho (1): Translated using Weblate (Korean) Shunsuke Shimizu (1): build-sys: Fix macOS build SimonP (1): alsa-mixer: Respect XDG base directory spec when loading profile sets Takashi Sakamoto (1): alsa-mixer: avoid assertion at alsa-lib mixer API when element removal Tanu Kaskinen (2): i18n: Update .pot and .po files Update NEWS for 16.1 Temuri Doghonadze (10): Translated using Weblate (Georgian) Translated using Weblate (Georgian) Translated using Weblate (Georgian) Translated using Weblate (Georgian) Translated using Weblate (Georgian) Translated using Weblate (Georgian) Translated using Weblate (Georgian) Translated using Weblate (Georgian) Translated using Weblate (Georgian) Translated using Weblate (Georgian) Toni Estevez (5): Translated using Weblate (Catalan) Translated using Weblate (Spanish) Translated using Weblate (Spanish) Translated using Weblate (Spanish) Translated using Weblate (Spanish) Weijia Wang (1): echo-cancel: Fix macOS build Wim Taymans (1): sndfile: handle sndfiles with s24 format Yureka (1): Make gio-2.0 optional when gsettings is disabled acheronfail (1): pactl: SUBSCRIBE add a newline after every json message flyingOwl (1): time-smoother-2: Fix time calculation by comparing timestamps grimst (1): Translated using Weblate (French) hashitaku (2): shell-completion: add new subcommand get-* for bash shell-completion: add new subcommand get-* for zsh mooo (1): Translated using Weblate (Lithuanian) peijiankang (1): fix translation error of pulseaudio redfast00 (1): rtp: fix 'size mismatch' on BSD style operating systems wael (1): meson: use proper type for bools 김인수 (6): Translated using Weblate (Korean) Translated using Weblate (Korean) Translated using Weblate (Korean) Translated using Weblate (Korean) Translated using Weblate (Korean) Translated using Weblate (Korean)