Last month I continued reviewing Georg Chini’s patches for improving the infrastructure for adding new module specific client APIs.
The webrtc backend of module-echo-cancel had locale-dependent parsing code for the beamforming parameters, which meant that parsing failed on those locales that use a comma as the decimal mark. I made the parsing locale-independent.
I found out that the alsa-lib configuration for Intel HDMI LPE contained a definition for the “front” device, which PulseAudio assumes to be analog output. That’s not strictly speaking a valid assumption, but without that assumption it becomes ambiguous whether the sound card has one or two devices if both “front” and “hdmi” exist. I made a patch for alsa-lib that removes the “front” device. With that alsa-lib patch and the earlier pulseaudio patches (of which I made a new version, still pending review) for autodetecting the HDMI device index the Intel HDMI LPE driver reportedly is finally working properly with PulseAudio!
When connecting a new bluetooth headset, PulseAudio used to activate the HSP profile by default. I made a patch that changes the profile priorities so that 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.
I updated some outdated volume documentation for libpulse, and also added some documentation about the difference between the sound card clock and the system clock.
I silenced one Coverity warning by adding a couple of assertions in the code. The warning was a false positive, but figuring that out was quite difficult, so I also added comments why the assertions are valid.
It was reported that having module-remap-source on top of a monitor source caused high latency. That was weird, because the processing that module-remap-source does shouldn’t cause any extra latency. I learned that monitor sources cause extra latency if they monitor a sink that supports rewinding. The amount of extra latency changes depending on the latency of streams connected to the monitored sink, but module-remap-source and module-virtual-source didn’t take those changes into account, often causing more latency than necessary. The alsa sink also was overly conservative when setting its “max rewind” value, which made the problem worse. I made fixes for both issues.
This post was originally written on 2017-11-03, 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.