Subject: CVS commit: pkgsrc/audio/pulseaudio
From: Ryo ONODERA
Date: 2022-07-02 18:44:39
Message id: 20220702164439.576F0FB1A@cvs.NetBSD.org

Log Message:
pulseaudio: Update to 16.1

Changelog:
16.1:
The 16.0 release had some regressions, so here comes a bugfix
release to remedy those (along with some other fixes). These are
the changes:

 * Fix parsing of percentage volumes with decimal points in pactl
 * Fix crash with the "pacmd play-file" command when reads from
 the disk aren't frame-aligned

 * Fix module-rtp-recv sometimes thinking it's receiving an Opus
   stream when it's not
 * Fix frequent crashing in module-combine-sink, regression in 16.0
 * Fix crashing on 32-bit architectures when using the GStreamer
   codecs for LDAC and AptX

16.0:
## Notes for end users

Opus support in the RTP modules

The audio sent with module-rtp-send can now be compressed with the
Opus codec. To use it, pass enable_opus=true as a module argument
to module-rtp-send. This feature works only when PulseAudio is
compiled with GStreamer enabled (both sending and receiving end).

Stereo output support for EPOS/Sennheiser GSP 670 USB/wireless
headset and SteelSeries GameDAC

The EPOS/Sennheiser GSP 670 headset has separate mono and stereo
output ALSA devices, but with the default configuration only mono
worked with PulseAudio. Now both outputs work. The support includes
both direct USB connection and the GSA 70 wireless dongle.

The same fix was applied to SteelSeries GameDAC.

Fix input issues for Texas Instruments PCM2902 based sound cards

Texas Instruments PCM2902 is a generic audio chip that is used in
multiple USB sound cards. We had custom configuration for Behringer
UMC22, which turned out to affect multiple sound cards because they
use the same USB ID. The PCM2902 sound cards vary in their
capabilities, while our configuration was tailored only for the
UMC22 card, which caused some trouble with recording on multiple
PCM2902 sound cards. The reported issues have now been fixed.

Native Instruments Komplete Audio 6 MK2 profiles

The Native Instruments Komplete Audio 6 MK2 is similar to the
Komplete Audio 6 and is now supported as well.

Tunnel latency is now configurable

The tunnel sink and source modules used to have a fixed 250 ms
latency. The desired latency can now be configured with the
latency_msec module argument.

Tunnel modules can now reconnect to remote server

A new reconnect_interval_ms argument was added to all four tunnel
sink and source modules. When the argument is specified, the tunnel
module will try automatic re-connection to the remote server if
the connection fails. The argument specifies the time interval in
ms after which a connection attempt is repeated. In particular,
this allows to load tunnel sinks and sources from default.pa which
will become available as soon as the remote server becomes available.
Bluetooth device battery level reporting added

If a bluetooth device supports battery level reporting, PulseAudio
now is able to forward the information to other software. In case
your desktop environment doesn't yet support showing the battery
level in a nice GUI, the level is also available in the device's
card object properties with the bluetooth.battery key. The property
can be read with pactl list cards, for example.

Tunnel and combine-sink latency fixes

The tunnel and combine-sink latency reporting accuracy has been
improved, which should help with audio synchronization issues.

module-loopback improvements

As part of a set of improvements to module-loopback's latency
stability, a new argument, adjust_threshold_usec, was added to
module-loopback to fine-tune the controller algorithm. The default
value is 250 (microseconds), which should be sufficient in most
cases. If it's not enough (caused by inaccurate latency reports
from the sink or source), the loopback's sample rate will oscillate,
while unnecessarily high values will increase variance in the
loopback latency.

Another change is the ability to set the adjust_time argument to
smaller values than 1 second, for example 0.5 sets the adjustment
interval to half a second. The default value was changed from 10
seconds to 1 second to make the latency control tighter.

module-loopback used to log a bunch of status information every
time it adjusted the playback rate. Now that the default adjustment
interval is down from 10 seconds to 1 second, the logging became
a bit too much, and the logging was disabled by default. It can
now be enabled by setting the log_interval module argument. The
value is given in seconds, it doesn't have to be an integer. The
logging still happens at the time the rate adjustment is done, so
if log_interval is less than adjust_time, then the logging will
happen once per adjustment cycle.

Increased flexibility for module-jackdbus-detect

module-jackdbus-detect is used for loading a JACK sink and source
when JACK starts up. The module now has new sink_enabled and
source_enabled arguments that accept boolean values. The new
arguments can be used to disable either the sink or the source if
loading both is not desired.

module-jackdbus-detect can now also be loaded more than once,
allowing multiple JACK sinks or sources with different configurations
to be created.

pactl can show information in JSON format

pactl has a new option --format, which accepts values text and
json. text shows the pactl output in the traditional way, json
shows it in the JSON format for easier interfacing with other
software.  Channel remixing can be disabled for module-combine-sink

module-combine-sink now accepts a boolean remix argument, which
can be used to disable normal remixing. This is useful when combining
multiple sound cards for surround output: if there are 3 stereo
sound cards, you might want to set the channel map of one card to
front-left,front-right, another to rear-left,rear-right and the
third to front-center,lfe. If a combine sink is then created with
a 5.1 surround channel map using these sound cards as slaves, audio
is copied to all these sound cards, but by default the audio is
downmixed to stereo for each card, which doesn't result in proper
s is done, the channels that don't fit the slave channel map are
just dropped, which means that each sound card gets audio only for
the intended channels.

## Notes for application developers

Stream latency reports now include resampler delay

Sink input and s, respectively. While this is minor semantic change,
it should allow for more accurate A/V sync for applications.

Bluetooth device battery level reporting added

If a bluetooth device supports battery level reporting, the level
is now reported to BlueZ. Aroperties with the bluetooth.battery
key. There are no notifications when the property value changes,
however (bug reported: #1314).

## Notes for packagers

Module installation location changed, remember to upgrade paprefs
to the latest version!

Modules are now installed to $libdir/pulseaudio/modules, previously
they were installed to $libdir/pulse-$version/modules. paprefs has
some logic that is sensitive to the module installation path, so
if you ship paprefs in your distribution, make sure to upgrade
paprefs to version 1.2. Earlier paprefs versions won't work properly
with PulseAudio 16.0.

Opus support in the RTP modules requires enabling GStreamer

The new Opus compression is available only when PulseAudio is built
with the gstreamer Meson option enabled (previously it was disabled
by default, now it's automatically enabled if the necessary
dependencies are found).

Bluetooth battery level reporting via BlueZ requires enabling
experimentals features in BlueZ

The Battery API is still marked as an experimental feature in BlueZ,
and if you wish to have PulseAudio use it, bluetoothd has to be
started with the --experimental command line argument.

New time smoother implementation

There's a new algorithm for keeping latency stable during adaptive
resampling in module-loopback and elsewhere. Part of that is a new
"time smoother" implementation. It will deliver more accurate and
stable latency estimations compared to the current algorithm. This
is mainly important where a fixed relationship between different
streams is required (A/V sync, module-loopback, module-combine-sink,
module-echo cancel, ...). Since this is a fair bit of complex new
code in the core audio processing parts, the old implementation is
kept around for a while to have a backup in case bugs show up. The
new time smoother can be disabled with the enable-smoother-2=false
Meson option.

Possibility to build the daemon without the client parts

It's now possible to build the daemon without building the client
parts at the same time, by using the -Dclient=false Meson option.
The daemon will still need the client libraries during the build,
the libraries installed in the system will be used. Apparently this
kind of scheme is useful for Gentoo.

Files:
RevisionActionfile
1.172modifypkgsrc/audio/pulseaudio/Makefile
1.42modifypkgsrc/audio/pulseaudio/PLIST
1.41modifypkgsrc/audio/pulseaudio/buildlink3.mk
1.85modifypkgsrc/audio/pulseaudio/distinfo
1.15modifypkgsrc/audio/pulseaudio/options.mk
1.3modifypkgsrc/audio/pulseaudio/patches/patch-meson.build
1.2modifypkgsrc/audio/pulseaudio/patches/patch-src_pulsecore_iochannel.c