Last month PulseAudio 11.0 got released, hooray! The new stuff is documented in the release notes, and I’ve probably linked to the draft version before in these reports, but here’s the link again (this time not a draft): https://www.freedesktop.org/wiki/Software/PulseAudio/Notes/11.0/
Quickly after the release some bad regressions were reported, boo! Some filter sinks were crashing in the new version if the flat volumes feature was enabled. Also, the ALSA mixer handling was broken for sound cards that don’t have any configuration in alsa-lib. I made a fix for both of these issues.
Also, the new bluetooth MTU autodetection feature was known to cause regressions, but it was enabled by default anyway in 11.0. That was deemed a bad idea after all, and the feature was disabled in 11.1. Arun also fixed a crash in the MTU autodetection code.
Another change in 11.1 was that I removed a priority boost for devices that report their form factor as “internal”. The 11.0 release notes advertised that bluetooth and USB sound cards are now prioritized over internal sound cards by default, but actually that was true only for bluetooth devices. The change had not been properly tested for USB, and the internal sound card priority boost still made internal sound cards have higher priority than USB sound cards (at least in cases where the USB sound card doesn’t provide any form factor information).
That’s enough about the releases. Now on to other stuff.
It was reported that on a certain sound card PulseAudio didn’t detect the speaker output. That was because ALSA didn’t indicate the existence of that port except by providing a jack detection mixer control named “Speaker Jack”, and PulseAudio didn’t have configuration for that. I made a patch for that.
When bluetooth headsets advertise their capabilities, they can choose from two different identifiers for the HSP Headset role, which was news to me. PulseAudio used to recognize only one of the identifiers, so to PulseAudio it seemed like the headset didn’t support the HSP profile at all, and naturally that prevented users from using that profile. Now both HSP HS identifiers are recognized.
The equalizer GUI “qpaeq” that is shipped with PulseAudio used to be licensed under AGPL, unlike all other PulseAudio code. Back in December I sent emails to all qpaeq contributors asking for a permission to relicense qpaeq under LGPL. It took some time to receive replies from all contributors, and then it took even longer time for me to take the next step, but now the qpaeq license has finally been changed to LGPL.
I improved the initial ALSA card profile selection. When a new sound card appears (either during PulseAudio startup or when hotplugging a card), PulseAudio will try to choose the best available profile for the card. In case of ALSA cards, the profile availability is based on what has been plugged in (assuming that ALSA provides that information). Previously the algorithm for setting the profile availability was very simplistic: only profiles whose all ports have been indicated as unplugged by ALSA were marked as unavailable. If for example a profile has a sink and a source, and only the sink is unavailable, PulseAudio used to mark the profile as available, which meant that PulseAudio could by default activate a profile whose output was not functional. Now all profiles (apart from some rare exceptions – the algorithm is still not perfect) that don’t have all of their devices available are marked as unavailable.
Victor Gaydov published a very long blog post that explains very comprehensively the PulseAudio design. I have read it all, and I can recommend you to have a look as well. The official PulseAudio documentation is severely lacking in providing an overview of all the core concepts, so this was a very welcome post.
This post was originally written on 2017-10-04, and first made available to my Patreon supporters. Speaking of Patreon – I’m using crowdfunding in an attempt to make it financially sustainable to continue my volunteer work as a PulseAudio maintainer. If you’d like to help, check out my Patreon page.