



PulseAudio 13.0 release notes

Changes at a glance

Added support for Dolby TrueHD and DTS-HD Master Audio

Improved 5.1 surround channel routing

Improved initial card profile selection for ALSA cards

Automatically switch away from unavailable card profiles

Bluetooth card profile choices aren't persistent any more by default

Added support for some SteelSeries Arctis 5 USB headsets

Removed KDE specific routing configuration

New information collection script for bug reports: pa-info

New "max_latency_msec" module argument for module-loopback

New "fast_adjust_threshold_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

module-role-cork and module-role-ducking can now use recording streams as triggers

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

Added support for non-PCM formats in module-null-sink

More efficient channel remapping in some cases for 32-bit streams

Removed the "latency_time" option from module-null-source

New function to enable realtime scheduling for client threads

New convenience functions for getting parameters from pa_format_info

New function for pa_threaded_mainloop to run a callback in the mainloop thread without the mainloop lock being held

Const-ification of parameters across headers

Removed BlueZ 4 support

Dropped intltool

Introduction of the Meson build system

New build option for improving build reproducibility

Minor bug-fixes, bindings updates and several translation updates

Notes for end users

Added support for Dolby TrueHD and DTS-HD Master Audio

It's now possible to play Dolby TrueHD and DTS-HD Master Audio encoded audio in passthrough mode. Players need to be updated to expose support for these formats. Update: This announcement was premature. There are still things missing that are required to make this work.

Improved 5.1 surround channel routing

When applications play 5.1 surround audio, they have to tell PulseAudio the channel map of the content. The established naming standards for various surround setups aren't entirely consistent: what is called "rear" speakers in 5.1 setups is called "side" in 7.1 speaker setups. In the 7.1 arrangement the "rear" speakers are further back. With 5.1 content applications have to decide whether to use the "side" or "rear" channels, and it varies across applications which is used. PulseAudio used to handle the channel routing correctly only if the application chose to use the "rear" channels with 5.1 content. Applications using the "side" channels got their audio badly remixed, because PulseAudio determined that the 5.1 speaker system doesn't have any "side" speakers. Now it doesn't matter which alternative the application picks, PulseAudio treats both cases identically when the user has a 5.1 speaker setup (with a 7.1 setup there is still a difference which channel pair gets used).

Improved initial card profile selection for ALSA cards

When a new card shows up (during PulseAudio startup or hotplugged), PulseAudio needs to pick the initial profile for the card. Unavailable profiles shouldn't be picked, but module-alsa-card sometimes marked unavailable profiles as available, causing bad initial profile choices. Specifically, if a profile contains a sink and a source, and only one of them is available, the profile should be marked as unavailable, but previously it was marked as available. As a result PulseAudio might pick a profile with a non-working output. That's now fixed.

Automatically switch away from unavailable card profiles

PulseAudio has for a long time supported switching the sink or source port when the port becomes unavailable, for example switching to laptop speakers when headphones are detached. Now similar switching is implemented for card profiles when the current profile becomes unavailable. A common case is a HDMI profile that becomes unavailable when a monitor is detached. Playback should now automatically move to somewhere else when a HDMI monitor is detached.

Bluetooth card profile choices aren't persistent any more by default

Which profile to use with bluetooth is highly context dependent (HSP/HFP for phone calls, A2DP for everything else), so there's not much point in saving user's profile choices. It's better to just use A2DP by default and switch to HSP when necessary (automatically when possible). It's still possible to enable persistent profile choices by passing "restore_bluetooth_profile=true" as an argument to module-card-restore.

Added support for some SteelSeries Arctis 5 USB headsets

The Arctis headsets are unusual in that they provide separate outputs with separate volume controls for speech and other audio (which is useful with gaming), which requires some custom configuration in PulseAudio. PulseAudio 12.0 added support for the Arctis 7 headset, and now PulseAudio 13.0 adds support for the Arctis 5 headset too.

We are still discovering new USB product IDs for this series, and support for more headsets will be coming.

Removed KDE specific routing configuration

module-device-manager was created a long time ago to serve the needs of the KDE project's vision for how audio management should work (most notably audio routing), and PulseAudio's autostart system was configured to load module-device-manager when a KDE session is started. The module has had various issues over time, especially when used in combination with module-switch-on-connect, and there hasn't been enough developer interest for fixing the issues. There have been occasional requests from users to disable module-device-manager, but since KDE has depended on the module for some of its audio UI, we have kept the module enabled. With newer KDE versions the dependency on the module is finally gone, however, so now PulseAudio won't load the module by default any more if the startup script detects that the KDE version is new enough.

New information collection script for bug reports: pa-info

PulseAudio comes now with a program called "pa-info", which is a script that runs various commands to gather comprehensive information about the system's audio setup. The script is inspired by ALSA's alsa-info script (and if alsa-info is available, it will also be run by pa-info). The script is intended to reduce the need to repeatedly ask for various bits of information when investigating bug reports.

New "max_latency_msec" module argument for module-loopback

The "max_latency_msec" module argument can be used to set an upper limit for the loopback latency. By default the latency will automatically increase if there are underruns, but if keeping the latency below a certain limit is more important than the absence of glitches, then this option is useful.

New "fast_adjust_threshold_msec" module argument for module-loopback

If the loopback for some reason gathers a lot of audio in its internal queue, it will take a long time before the loopback gradually adjusts its latency back to the target latency. This can happen for example during a suspend/resume cycle, if the loopback's output device takes more time to initialize than the input device. The new "fast_adjust_threshold_msec" module argument can be used to specify a threshold of difference between the actual latency and the target latency, and if the threshold is exceeded, the loopback immediately adjusts to the target latency by dropping audio from its queue.

New "stream_name" module argument for module-rtp-send

module-rtp-send has so far used "PulseAudio RTP Stream on <address>" as the name for the RTP stream that it creates. If a different name is desired, it can be set with the new "stream_name" module argument.

Fixed S/PDIF for CMEDIA USB2.0 High-Speed True HD Audio

The "CMEDIA USB2.0 High-Speed True HD Audio" sound card (probably a generic chip used in several products) uses unusual device indexes for S/PDIF, which is why the default ALSA USB-Audio configuration doesn't work. PulseAudio now has custom configuration to deal with the card.

Use source sample spec and channel map by default in module-loopback

Previously module-loopback used the sink sample spec and channel map by default, which caused unnecessary resampling, because the sink side of the loopback will anyway be resampled due to the adaptive resampling, and if the sink parameters are different than the source parameters, also the source side needed resampling. Now that we default to the source parameters, the source side of the loopback doesn't need resampling.

module-role-cork and module-role-ducking can now use recording streams as triggers

module-role-cork and module-role-ducking are used to pause or attenuate streams based on the existence of other streams and their media role property. So far it has only been possible to use playback streams as the trigger streams, now also recording streams can be used. In order to not change the behaviour of existing configurations, recording stream triggers have to be explicitly enabled by setting the "use_source_trigger=true" module argument.

New "avoid_resampling" module argument for module-udev-detect and module-alsa-card

The global "avoid-resampling" option in daemon.conf can now be overridden for all ALSA cards in module-udev-detect and for a specific card in module-alsa-card with the "avoid_resampling" module argument. This isn't very useful for end users currently, though, because configuring the option per-card is rather complicated. The new feature is mainly useful for system integrators who want to set a fixed sample rate for the "main" sound card (because that's the rate they test, and other sample rates are a risk), but want to allow e.g. USB sound cards to use any sample rate. To do that, daemon.conf should have "avoid-resampling=yes" set, and udev needs to be configured to set the PULSE_IGNORE variable for the main sound card so that module-udev-detect doesn't load the card, and then module-alsa-card needs to be explicitly loaded for the main sound card in default.pa with "avoid_resampling=no".

"avoid_resampling" also tries to avoid format conversion if the ALSA device supports it

In addition to reconfiguring the sample rate on the ALSA device to avoid resampling, we also try to reconfigure the sample format. This would allow, for example, switching between 16- and 24-bit audio based on the file being played if the hardware supports it.

Added support for non-PCM formats in module-null-sink

It's now possible to play compressed audio formats to a null sink. This is mainly useful for developers testing passthrough implementation in applications or in PulseAudio itself. The new "format" module argument of module-null-sink can be used to specify which formats the null sink should accept (by default only PCM is accepted). See the module documentation for more details.

More efficient channel remapping in some cases for 32-bit streams

If the sound card uses 32-bit integer samples (in the system's native endianness) and a stream with the same sample format is connected to the sound card, PulseAudio can now do channel remapping without converting the audio to floating point samples during the processing. This improves performance significantly (for this case, which is not a very common case).

Removed the "latency_time" option from module-null-source

The option didn't make sense, because module-null-source uses dynamic latency (recording streams can specify their desired latency and the source adapts to that). The option value did have some effect on the operation of module-null-source, but that was only because the implementation was buggy. After the implementation was fixed, the latency_time value wasn't used at all.

Notes for application developers

New function to enable realtime scheduling for client threads

pa_thread_make_realtime() is a new utility function that can be used to enable realtime scheduling for the calling thread. That is useful if the application developer doesn't want to figure out the operating system's APIs by themself. The function uses RealtimeKit when available, otherwise operating system specific low-level interfaces are used.

New convenience functions for getting parameters from pa_format_info

Reading the sample rate, sample format, channel count and channel map parameters from pa_format_info can now be done with pa_format_info_get_rate(), pa_format_info_get_sample_format(), pa_format_info_get_channels() and pa_format_info_get_channel_map(), respectively.

New function for pa_threaded_mainloop to run a callback in the mainloop thread without the mainloop lock being held

pa_threaded_mainloop_once_unlocked() can be called from any thread to schedule a callback to be called in the mainloop thread. The callback will be called without the mainloop lock being held, which is unusual and can be unsafe. This was added, because the application might be dealing with locking its own objects in addition to the mainloop thread itself. In this case, it might need to control the locking order of the two, to match the order in other threads, as it might not always be able to allow for its objects to be locked after the mainloop thread lock.

Const-ification of parameters across headers

A number of parameters across heads have been marked with the "const" qualifier where applicable. This should not have a visible impact, other than in some corner cases. We are aware that the QT project uses a mix of their own declarations and system headers (there is a bug to track this).

Notes for packagers

Removed BlueZ 4 support

BlueZ 5.0 was released in 2012, and the 4.x series has been unmaintained since then. Now PulseAudio has dropped support for BlueZ 4.

Dropped intltool

PulseAudio now uses a newer gettext version that removes the need to use intltool. The required minimum gettext version is now 0.19.3.

Introduction of the Meson build system

The plan is to move to a Meson based build system. This should be considered to be in "beta". Packagers are encourage to use it and report issues to allow for a smooth migration. The meson build does not use any compiler optimisations by default, so you will need to specify them manually (for example, with the --optimization argument) to not have a performance regression (this can be ~10x for some compute-intensive tasks on ARM-based systems). The autotools build uses -O2 by default.

New build option for improving build reproducibility

By default PulseAudio can be run from the build directory without installing, and in order to support this the build directory needs to be stored in the compiled code. This is not good for reproducible builds, and this feature can now be disabled with the "--disable-running-from-build-tree" configure option or the "running-from-build-tree" Meson build option.

git shortlog

Alan Coopersmith (3): meson: fix builds on platorms without libsystemd meson: check for sys/filio.h core-util: Use /proc/fd on Solaris as well in pa_close_all Alexander E. Patrakov (1): resampler: Fix confusion between rear and side channels for 5.1 layouts Alexander Potashev (1): i18n: Update Russian translation Andika Triwidada (1): i18n: update the Indonesian translation Arnaud Rebillout (118): build-sys: meson: Generate version.h gitlab-ci: Create two different jobs for autotools and meson builds core: Fix a log function when HAVE_SYSTEMD_JOURNAL && !HAVE_SYSLOG meson: Define HAVE_UDEV when udev is found meson: modules/alsa: Add udev support meson: modules/alsa: Make alsa-util a shared library meson: modules/alsa: Fix udev-util include path meson: Add systemd-login to core dependencies meson: Propagate systemd dep to libpulsecommon and daemon meson: Make systemd-login module depend on systemd meson: Make equalizer-sink modulde depend on fftw, add fftw dependency meson: Add pulsecore internal libraries meson: Add the rtp module library meson: Comment bluez5 modules for now meson: Build modules with '-Wl,no-undefined' meson: Fix all the missing dependencies uncovered by -Wl,--no-undefined meson: Enable dbus-protocol module meson: Enable jack modules, add jack dependency meson: Enable raop-sink module, add raop lib, add openssl dependency meson: modules/raop: Fix rtsp_client.h include path meson: Enable raop-discover module, add avahi dependency meson: Enable x11 modules, add x11 related dependencies meson: Enable zeroconf modules meson: Enable mmkbd-evdev module meson: Enable lirc module, add lirc dependency meson: Enable console-kit module meson: Do not build dbus files as a library meson: Enable bluetooth modules, add bluez_util lib, add bluez and sbc dependencies meson: Enable oss module and padsp util meson: Enable ladspa module meson: Enable echo-cancel module, add libwebrtc_util lib, add speex and webrtc dependencies webrtc: Silence -Wsign-compare warning meson: Build and install man pages dockerfile: Install Meson from upstream tarball meson: Add pulsedspdir option meson: Add a sanity check to the prefix option meson: Create bindir and libdir variables meson: Add a comment to mark the beginning of the configuration data section meson: Tighter coupling of XOrg dependencies meson: Make x11 optional, bump meson requirement meson: Build pax11publish only if X11 is found meson: Install start-pulseaudio-x11 if x11 is found meson: Adjust fixme comment for daemon meson: Make dbus optional, fix build with dbus disabled module-stream-restore: Silence compiler warnings when dbus is disabled meson: Make alsa optional meson: Also set HAVE_ALSA when alsa is enabled meson: Make systemd optional meson: Make avahi optional meson: Make bluez optional meson: Fix bluez5 version requirement meson: Use assert() to validate the prefix meson: Make jack optional meson: Make fftw optional meson: Make lirc optional meson: Make openssl optional, fix build when openssl is disabled meson: Make speex optional meson: Make udev optional meson: Make hal-compat optional meson: Make webrtc optional meson: adrian-aec requires libm meson: Make Adrian echo canceller optional meson: Add a sanity check regarding echo cancellers meson: Add optional GLib support meson: Add optional libpulse-mainloop-glib meson: Add optional Gtk+ support meson: Add optional GSettings support meson: Add optional Async NS support meson: Add optional IPv6 support meson: Add optional SoX Resampler support meson: Add optional libsamplerate support meson: Add optional legacy-database-entry-format support meson: Typo in man/meson.build meson: Display summary and warnings at the end of the meson configure step meson: Sort the core dependencies a bit meson: Process and install files: default.pa, system.pa, daemon.conf, client.conf meson: Fix HAVE_AF_UNIX, add check for mkfifo function meson: Add some platform specific configuration data meson: Add a dependency object for libpulse_mainloop_glib meson: Add a check for sys/eventfd.h header meson: Add some symbol checks meson: Move shm_dep check where it belongs meson: Add libpulse simple meson: Enable (almost) all tests meson: Boolean options default to true, no need to say it meson: Define HAVE_SYS_UN_H, this was forgotten meson: Enable echo-cancel test .gitlab-ci: Add meson test-daemon test-daemon: No need to define dl-search-path meson: Install completion files meson: Make man page build and install conditional meson: Handle man pages symlinks with a meson install script meson: Fix man install dir meson: Install vala apis meson: Install pkg-config files meson: Fix pulsedspdir meson: Add systemduserunitdir option meson: Add udevrulesdir option meson: Fix various install scripts meson: Install ALSA udevrules meson: Add basic po support meson: Translate and install desktop file meson: Build daemon custom targets by default meson: Fix install paths meson: Install dbus policy file meson: Fix udevrulesdir meson: Move oss-util in a library meson: Install utils symlinks, install qpaeq meson: Build libwebrtc-util as a shared library meson: Install systemd user service meson: Install cmake files meson: Install headers meson: Disable esound modules meson: Add ORC support meson: Add support for gcov meson: Increase timeout for tests meson: Add running-from-build-tree option meson: Disable alsa-mixer-path-test Arun Raghavan (63): build-sys: First pass at a meson-ified build system PROTOCOL: Bump to version 33 core: Expose API to elevate a thread to realtime priority null-sink,null-source: Use realtime scheduling if possible map-file: Fix typo while adding pa_thread_make_realtime build-sys: Update meson.build based on recent changes travis: Update gettext along with other packages format: Expose pa_format_info convenience getters in API build-sys: Drop ancient check for dbus_watch_get_unix_fd() build-sys: Add some missing header/function checks to meson build build-sys: Update meson version dependency gitignore: Ignore build* directories doc: Update README to point to GitLab bluetooth: Re-add rtp.h to Makefile.am gitlab: Add support for GitLab CI gitlab: Add meson build to CI Adopt a Code of Conduct build-sys: Add CoC to the dist'ed files gitlab: Update Dockerfile to pull xmllint man: Fix a syntax issue in pacat xml build-sys: Set minimum required meson version to 0.44.0 i18n: Provide *ngettext() stubs when NLS is diabled build-sys: Fix meson version detection logic null-sink: Add support for reconfiguration and non-PCM formats tests: Add a unit test for passthrough support passthrough-test: Add a test for volume set/restore gitignore: Ignore cscope files system.pa: Drop mention of module-hal-detect meson: Fix some config generation warnings build-sys: Add the ability to disable maintainer mode tests: Shorten how long daemon tests take to run pactl: Fix some corner cases when setting sink formats protocol-native: Fix format ownership while creating record streams source: Fix a bad condition that made source events not be emitted thread-mainloop: Add API for running a callback unlocked build-sys: Update meson dependency to 0.50.0 build-sys: Fix up meson install paths daemon: Drop empty fields in desktop file meson: Skip norun tests meson: Duplicate split of long daemon tests from autotools build core-util: Fix detection when running in a VM build-sys: Bump libpulse soversion build-sys: Fixes for i18n parts of the meson build build-sys: meson: Disable coverage by default svolume: Mark channel parameter as earlyclobber build-sys: meson: Add -Wl,no-delete to relevant libraries build-sys: meson: Correctly set up RPATH build-sys: meson: Fix some defines for default.pa generation build-sys: meson: Add symbol versioning as in autotools build-sys: meson: Fix minor typo in orc build build-sys: Move svolume-*.c to libpulsecore build-sys: autotools: Add meson build files to EXTRA_DIST build-sys: meson: Add atomic ops related checks build-sys: meson: Add ARMv6 instruction check build-sys: meson: Add a check for fast 64-bit operations build-sys: meson: Add some missing declaration checks build-sys: meson: Add mkfifo checks for module-pipe-* build-sys: meson: Add a bunch of missing checks build-sys: meson: Give ourselves a little more timeout headroom build-sys: meson: Fixes for some ARM compiler checks build-sys: meson: Process subdirectories before generating configuration build-sys: Bump version info for libpulse build-sys: Fix documentation of version info Bert Hekman (1): alsa-mixer: add support for SteelSeries Arctis 5 and renamed Arctis 7 files appropriately Carlos Garnacho (1): client-conf: Avoid loading X11 properties unless SSH_CONNECTION is set Danny O'Brien (1): man: Add description of pactl special names. David Emett (1): dbus: fix ActiveProfile setting David Heidelberg (2): meson: fix build with simple meson: when avahi is disabled, do not build it's code David Hewitt (3): vala: Fix card profile array bindings vala: add pa_card_port_info bindings Remove active_profile Diego Viola (1): memblockq: fix typo: yepp -> yep Felipe Sateler (1): i18n: Don't compile with -ffast-math Fran Diéguez (1): i18n: Update Galician translations Friedel Wolff (1): i18n: New translation for Afrikaans (af) Frédéric Danis (2): bluetooth: Fix crash in setup_stream() bluetooth: Fix crash when disabling Bluetooth adapter Georg Chini (12): core-util: correct error in set_nonblock() virtual-source: Fix crash in combination with module-loopback loopback: Add option fast_adjust_threshold_msec alsa: Improve resume logic after alsa suspend sink, source: Call sink input suspend callback also on suspend cause change ladspa-sink: Suspend virtual sink when master is suspended null-source: fix multiple bugs core-util: Avoid usage of pa_strbuf in pa_escape() core: add simple message interface source-output: Fix rewinding bug sink-input: fix rewriting render memblockq when nothing should be rewound Commit fd9e3452 removed -ffast-math from the compile flags. Under some conditions this may lead to massive slowdown of floating point operations when underflows or denormals are encountered. In particular, this problem was observed with the soxr resampler after applying https://gitlab.freedesktop.org/pulseaudio/pulseaudio/merge_requests/120 Hans de Goede (1): alsa-ucm: Fix UCM devices which names share a prefix being seen as the same Hongxu Jia (1): build-sys: introduce a special build flag to explicitly disables running from build tree Hui Wang (1): stream-restore: Don't restore if the active_port is PA_AVAILABLE_NO Ing. Jaroslav Safka (1): rtp-send: add configurable RTP stream name Jan Alexander Steffens (heftig) (6): build-sys: Install cmedia-high-speed-true-hdaudio.conf meson: Fix build of padsp meson: Fix library versioning to match Autotools meson: Fix installation of headers build-sys: meson: Add some missing checks build-sys: meson: Fix 2 cases of joining paths w/o join_paths Javier Jardón (1): Use upstream gettext instead intltool Jean-Philippe Guillemin (1): alsa-mixer: add a profile-set file to fix iec958 input and output on CMEDIA USB2.0 High-Speed True HD Audio Jordi Mas (1): Fixes to Catalan translation Josef Andersson (1): Update Swedish Translation Joseph Herlant (22): Fix typo: controling -> controlling Fix typo: Retreive -> Retrieve Fix typo: occurrencies -> occurrences Fix typo: occured -> occurred Fix typo: dependancy -> dependency Fix typo: Doulbe -> Double Fix typo: Extention -> Extension Fix typo: differnt -> different Fix typo: explicitely -> explicitly Fix typo: properies -> properties Fix typo: distuingish -> distinguish Fix typo: recieved -> received Fix typo: comming -> coming Fix typo: prefered -> preferred Fix typo: definately -> definitely Fix typo: transmited -> transmitted Fix typo: substract -> subtract Fix typo: managable -> manageable Fix typo: documenation -> documentation fix typo: satisifed -> satisfied fix typo: existance -> existence volume-test: Allow rounding without having to allow a random number of errors João Paulo Rechi Vita (18): bluetooth: backend-ofono: Demote registration failure to info card-restore: Don't restore profile on Bluetooth cards by default bluetooth: Add missing argument to module's usage bluetooth: Remove leftover references to the BlueZ 4/5 split switch-on-port-available: Improve readability switch-on-connect: Improve readability switch-on-connect: Clean-up tabs used for identation switch-on-connect: Add debug logs module-rescue-streams: Fix tab used for identation card: Fix typo in comments card: Create pa_available_to_string cli-text: Use pa_available_to_string device-port: Use pa_available_to_string card: Log initial profile selection switch-on-connect: Do not ignore HDMI sinks switch-on-port-available: Check if we need to change the active profile module-alsa-card: Update the active profile's availability last card: Only fire the profile available changed hook for linked cards Kaleb Ercanbrack (1): alsa-mixer: Add a missing USB product ID for SteelSeries Arctis 7 Lucas Stach (3): meson: fix build files list when building with NEON meson: allow to build bluez support without libbluetooth meson: add stdint.h to checked headers Luiz Augusto von Dentz (3): bluetooth: ofono: Use Acquire method if available bluetooth: Remove BlueZ 4 support bluetooth: policy: Remove BlueZ 4 related code Lyndon Brown (44): hashmap: constify hashmap ptr for various functions hashmap: constify pointer of private hash_scan function hashmap: constify pointer of pa_hashmap_get proplist: add and use const version of MAKE_HASHMAP macro proplist: pa_proplist_iterate: constify proplist pointer proplist: pa_proplist_get: constify proplist pointer proplist: pa_proplist_gets: constify proplist pointer tagstruct: pa_tagstruct_put_proplist: constify proplist pointer tagstruct: pa_tagstruct_put_format_info: constify format pointer context: pa_context_proplist_update: constify proplist pointer proplist: pa_proplist_to_string[_sep]: constify proplist pointer proplist: pa_proplist_contains: constify proplist pointer proplist: pa_proplist_[size|isempty]: constify proplist pointer proplist: pa_proplist_equal: constify proplist pointers scache: pa_context_play_sample_with_proplist: clarify proplist param scache: pa_context_play_sample_with_proplist: constify proplist param volume: pa_cvolume_get_position: constify context: pa_context_new_with_proplist: constify proplist param context: pa_context_get_protocol_version: constify context: pa_context_get_state: constify mainloop: constify get_retval functions operation: pa_operation_get_state: constify stream: pa_stream_get_state: constify stream: pa_stream_get_context: constify stream: pa_stream_get_index: constify stream: pa_stream_get_device_[index|name]: constify stream: pa_stream_is_[suspended|corked]: constify stream: pa_stream_[writable|readable]_size: constify stream: pa_stream_get_underflow_index: constify stream: pa_stream_get_format_info: constify stream: pa_stream_get_monitor_stream: constify stream: constify internal functions context: hide error attr behind pointer context: pa_context_errno: constify context: pa_context_rttime_new: constify context pointer context: pa_context_rttime_restart: constify context pointer context: pa_context_is_pending: constify context: pa_context_is_local: constify context: pa_context_get_server: constify context: pa_context_get_server_protocol_version: constify context: pa_context_get_index: constify context: pa_context_get_tile_size: constify mainloop: constify is_our_api api ref operation: avoid state change from final state Marek Cernocky (2): i18n: Updated Czech translation i18n: Fixed plural forms handling Mark Filion (1): i18n: Fix copyright information in pt_BR.po Milo Casagrande (3): i18n: update Italian translation i18n: update Italian translation l10n: Update Italian translation Moo (2): l10n: Update lt.po l10n: Update lt.po Mr. M (2): i18n: update the Lithuanian translation i18n: update the Lithuanian translation Nate Brown (1): Expose control param to alsa-card module Nazar Mokrynskyi (2): alsa-mixer: More output modes for SB Omni Surround 5.1 and cleanup alsa-mixer: Don't move LFE in 2.1 and 4.1 modes on SB Omni Surround 5.1 Nicolas Fella (1): daemon: Drop KDE-specific loading of module-device-manager Olaf Hering (1): alsa: Use correct header path Pali Rohár (10): bluetooth: policy: Remove BlueZ 4 related code bluetooth: Update a2dp-codecs.h from upstream bluez project bluetooth: Modular API for A2DP codecs bluetooth: Add missing validations for SBC codec parameters bluetooth: Clean up SBC bitpool calculation bluetooth: Set correct endianity of audio samples for SBC codec bluetooth: Fix usage of MTU, buffer sizes and return values of encode/decode methods bluetooth: Change A2DP codec API of reset() method to indicate failure bluetooth: Fix usage of RTP structures in SBC codec bluetooth: Only perform write-related calculations when we have a sink Pierre-Louis Bossart (1): format: Add support for Dolby TrueHD and DTS-HD HBR passthrough Piotr Drąg (4): Remove bad characters from Malayalam translation i18n: update Polish translation i18n: update Polish translation i18n: update Polish translation RODRIGUEZ Christophe (1): raop: Fix infinite loop in raop-sink with UDP mode Rafael Fontenelle (3): Update Brazilian Portuguese translation Update Brazilian Portuguese translation po: Update Brazilian Portuguese translation Raman Shyshniou (3): loopback: add max_latency_msec argument loopback: use source sample spec and channel map by default optimize set_state_in_io_thread() callbacks Russell Treleaven (4): give users a template that encourages complete bug reports add script to collect information for bug reports Update Bug.md to encourage users to attach pa-info output to bug reports gitlab: white space change to Bug.md S Page (1): pasuspender: explain program argument in help Sangchul Lee (12): rtp-send: remove dead code udev-detect, alsa-card: Adopt avoid resampling option from daemon.conf i18n: Update the Korean translation alsa-util/sink/source: Add infrastructure for supported sample formats alsa-sink/source: Rename a variable for supported sample rates in userdata alsa-sink/source, sink, source: Consider sample format for avoid-resampling/passthrough core-util: Use size_t for out parameter of pa_split_*in_place() stream-interaction: Support for triggering ducking/cork by source-output stream-interaction: Use PA_IDXSET_FOREACH macro to iterate idxset role-ducking, role-cork: Add use_source_trigger argument stream-interaction: Remove useless condition sink: Set monitor source's avoid-resampling value to its sink's Sascha Silbe (3): tests: fix possible segfault in cpu-remap-test tests: test NEON 2-channel->4-channel rearrange remap: support S32NE work format Stefan Huber (1): pacat: Fix code style Takashi Iwai (1): alsa: Fix inclusion of use-case.h Takashi Sakamoto (2): alsa: Suppress udev detection of sound card for some units on IEEE 1394 bus alsa-mixer: distinguish Focusrite Saffire Pro 10 i/o from Liquid Saffire 56 Tanu Kaskinen (36): alsa-card: improve the profile availability logic set exit_idle_time to 0 when we detect a session .gitignore: add m4/extern-inline.m4 and remove-ptcdate.sed core-format: fix TrueHD and DTS-HD channel maps alsa-mixer: make the mono mapping a fallback only context: constify pa_context_set_error() switch-on-port-available: ignore bluetooth cards sink-input: remove the DRAINED state sink-input, source-output: remove the state getters sink, source: remove the state getters ladspa-sink: fix search path pipe-sink, pipe-source: fix file permissions update NEWS update NEWS i18n: update translation bug reporting links daemon-conf: fix printing avoid-resampling in pa_daemon_conf_dump() .gitignore: add passthrough-test alsa-mixer: don't make lineout unavailable when headphones are plugged in alsa-mixer: swap lineout and headphone priorities raop: add error handling to rsa_encrypt() raop: fix typo: modules -> modulus bluez5-device: use correct RTP payload type alsa-mixer: improve a comment in udev rules build-sys: Lower the minimum gettext version build-sys: Fix the Meson build i18n: a couple of improvements to the Spanish translation core: send subscription events when the configured default sink or source changes loopback: remove an unnecessary level of pointer dereferencing loopback: fix callback name in comment sink, source: Don't change suspend cause when unlinking .gitignore: add atomic-test a2dp-codec-sbc: get rid of compiler warnings main: Log more information when executing default.pa fails bootstrap.sh: don't set sysconfdir and localstatedir configure options update NEWS build-sys: Add missing files to release tarballs Thomas Hutschenreuther (1): atomic: fix load and store for armv7 and higher Tomaz Solc (1): cli-command: Report error in pa_play_file. Topi Miettinen (1): daemon: Harden systemd service Wellington Wallace (5): null-sink: add an option that allows rewinds to be disabled null-sink: add an option that allows rewinds to be disabled Merge branch 'allow-to-disable-null-sink-rewinds' of https://gitlab.freedesktop.org/wwmm/pulseaudio into allow-to-disable-null-sink-rewinds null-sink: add an option that allows rewinds to be disabled null-sink: setting maximum latency to 50 ms when rewinds are disabled Will Stott (1): alsa: Support the older model of NI's Traktor Audio 2 DJ Yclept Nemo (1): object: Fix pa_object_new macro (missing close paren) Yuri Chornoivan (3): i18n: update the Ukrainian translation [l10n] Update Ukrainian translation po: update Ukrainian translation Zakhary Husak (1): alsa-mixer: Add support for 2018 Arctis 7 jorisc90 (1): alsa-mixer: Update to support Arctis Pro Wireless headset muzena (1): Update Croatian translation scootergrisen (9): Add missing space Remove "module" from "module user requested module" "e g " to "e.g." Remove space in "Digital Passthrough (IEC958)" channel/s to channel(s) Change "!" to "." to match other identical string. Replace "!" to "." so string is identical with other string. i18n: Add danish translation i18n: Update Danish translation shdown (1): mainloop: fix timeout assignment in pa_mainloop_prepare