Igor V. Kovalenko [Wed, 23 Dec 2020 07:31:18 +0000 (10:31 +0300)]
x11: gracefully handle ICE connection error
Implementation is largely inspired by GNOME/mutter ICE session handling.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/441>
Igor V. Kovalenko [Tue, 22 Dec 2020 17:54:40 +0000 (20:54 +0300)]
x11: gracefully handle X11 connection error
Perform X11 connection recovery via XSetIOErrorExitHandler mechanism.
Implementation is largely inspired by this change to GNOME/mutter
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1447
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/441>
Arun Raghavan [Fri, 25 Dec 2020 16:10:30 +0000 (11:10 -0500)]
doc: Add some contributor guidelines
Document some things that should be helpful to at least new
contributors. Since we don't have a way to show this when people are
creating MRs, also copy over the next to a merge request template so
that creates a dropdown that folks might look at when creating an MR.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/444>
Igor V. Kovalenko [Sun, 27 Dec 2020 12:25:40 +0000 (15:25 +0300)]
ladspa-sink: do not call pa_sink_suspend if PA_SINK_IS_LINKED is false
While module-ladspa-sink is still being loaded and before pa_sink_put() is
called there may be an attempt to reconfigure master sink when avoid-resampling
is true. This breaks attempting to suspend ladspa-sink which is still in INIT
state.
Fix this by skipping pa_sink_suspend if PA_SINK_IS_LINKED is false.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/445>
Georg Chini [Fri, 1 Jan 2021 20:35:41 +0000 (21:35 +0100)]
message-params: Fix array reading functions
The array read functions need the state pointer as an additional argument because the
array may be in the middle of a parameter list and the state pointer must be advanced
to the element after the array.
Additionally fixes some compiler warnings.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/450>
Tanu Kaskinen [Sat, 26 Dec 2020 20:29:06 +0000 (22:29 +0200)]
alsa-mixer: Add support for the Headphone,1 element
This is seen at least on HP EliteDesk 800 DM and HP EliteDesk 800 SFF.
This is used by the analog-output-headphones-2 path, but all other paths
on the same sink need to handle the element too. The existing
configuration is inconsistent between files regarding whether headphone
outputs should be muted or not when not using them. I chose to be
consistent within files, which means that Headphone,1 handling is
inconsistent between files in the same way that the existing Headphone
and Headphone2 handling is. (My opinion is that unused paths should be
always muted, but I didn't want to do that policy change in this patch.)
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/272>
Tanu Kaskinen [Sat, 26 Dec 2020 20:22:06 +0000 (22:22 +0200)]
alsa-mixer: Move HP EliteDesk 800 SFF/DM second headphone output to path analog-output-headphones-2
The two headphone outputs should be handled in separate paths so that
volume control can be implemented properly for both outputs.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/272>
Tanu Kaskinen [Sat, 26 Dec 2020 20:15:20 +0000 (22:15 +0200)]
alsa-mixer: Use unambiguous descriptions with dual headphone outputs
Previously both paths had description "Headphones", which I assume can
cause confusion with users who see two ports with identical names. I
don't have this kind of hardware myself nor have I heard complaints from
users, this is just something I noticed while reading the configuration
files.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/272>
Kai-Heng Feng [Wed, 25 Mar 2020 10:08:56 +0000 (18:08 +0800)]
alsa-mixer: Support dual Front Headphone Jack
There are dual Front Headphone Jacks with different indices or with
different names, they can be found on HP EliteDesk 800 SFF and HP
EliteDesk 800 DM, respectively.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/272>
Kai-Heng Feng [Tue, 22 Dec 2020 05:39:05 +0000 (13:39 +0800)]
alsa-mixer: Handle the index for ALSA mixer jack identifiers
Some systems have two jacks with same name but different index, we need
to take index into consideration to use both jacks.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/272>
Igor V. Kovalenko [Mon, 28 Dec 2020 21:03:41 +0000 (00:03 +0300)]
context: add property to forcefully disable shared memory channels
If application wants last bits of virtual memory, allow it to forcefully disable
shared memory communication channels via PA_PROP_CONTEXT_FORCE_DISABLE_SHM=yes
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/448>
Igor V. Kovalenko [Tue, 29 Dec 2020 21:00:50 +0000 (00:00 +0300)]
bluetooth: align max renderable block size to frame size
When bluez5 device I/O thread detects it is too slow sending data, allow it to
skip up to max rendered block size bytes which must be aligned to frame size.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/449>
morrishoresh [Thu, 24 Dec 2020 21:58:54 +0000 (23:58 +0200)]
bluetooth: correct possible segmentation fault
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/443>
Hui Wang [Mon, 23 Nov 2020 03:25:51 +0000 (11:25 +0800)]
switch-on-port-available: Switch to headset or mic on unknown avail
On some Dell AIO machines, there is no internal mic, only a multi
function audio jack, so the only input devices are headphone-mic and
headset-mic, and they share the Jack with headphone.
When there is no headset plugged in that Jack, the headphone-mic
and headset-mic are off. And since there is no available port under
the analog input source, this source is unlinked (if there is
internal mic, the source will not be unlinked). so the only pa-source
left in the PA is analog-stereo-monitor.
After the headset is plugged, we need to let switch_to_port() handle
headset-mic and headphone-mic conditionally, this will guarantee the
source will be created if it is unlinked before plugging, and then the
input profile could be selected correctly.
Signed-off-by: Hui Wang <hui.wang@canonical.com>
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/390>
Jaroslav Kysela [Wed, 14 Oct 2020 20:20:37 +0000 (22:20 +0200)]
alsa: mixer - add support up 8 mixer channels
We have at least one USB hardware which supports the 8
channels in one mixer element:
https://github.com/alsa-project/alsa-ucm-conf/pull/25
POSITION_MASK_CHANNELS define was added for the future extensions.
The override_map variable was changed from bool to mask (unsigned int).
The channel map override settings is handled for channels up to eight now.
Also added missing override-map.3 .. override-map.8 to the configuration
parser array.
The driver channel position was added to the override mask arguments
(syntax is driver:pulseaudio like left:all-left). If ommited, the ALSA's
channel positions are guessed by index.
Link: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/292
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/389>
Jaroslav Kysela [Sat, 24 Oct 2020 16:20:59 +0000 (18:20 +0200)]
alsa: mixer - use safe dB range values when the override mask is unset
Use safe values for the min_dB and max_dB fields when the position mask
is unset to avoid breakage for the upper levels.
If the range is incorrect, the volume range shown in pavucontrol shows
strange values.
(Thanks to Wim Taymans for the idea.)
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/389>
David [Sun, 20 Dec 2020 11:35:30 +0000 (11:35 +0000)]
Capitalize jack in module-jack-sink.c
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/439>
David [Sun, 20 Dec 2020 11:32:02 +0000 (11:32 +0000)]
Capitalize jack in module-jack-source.c
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/439>
Edward Lee [Thu, 1 Oct 2020 14:24:40 +0000 (10:24 -0400)]
win32: Fix meson build system for Windows.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/360>
Edward Lee [Thu, 1 Oct 2020 14:22:20 +0000 (10:22 -0400)]
win32: Change linkage of lt_preloaded_symbols to match definition in libtool in daemon/main.c.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/360>
Edward Lee [Thu, 1 Oct 2020 14:14:08 +0000 (10:14 -0400)]
win32: Add support for Unix sockets in autoconf build.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/360>
Edward Lee [Thu, 1 Oct 2020 14:11:09 +0000 (10:11 -0400)]
win32: (Temporarily) Add sockaddr_un definition from <afunix.h>
This is a temporary addition, until <afunix.h> ships with the
MinGW toolchain.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/360>
Edward Lee [Thu, 1 Oct 2020 14:10:19 +0000 (10:10 -0400)]
win32: Check WSAGetLastError() in pa_is_unix_socket_stale.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/360>
Edward Lee [Thu, 1 Oct 2020 13:56:45 +0000 (09:56 -0400)]
win32: Fix (interim) esound paths in module-protocol-stub.c
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/360>
Edward Lee [Thu, 1 Oct 2020 13:39:54 +0000 (09:39 -0400)]
win32: Handle (WSA)EWOULDBLOCK as EAGAIN.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/360>
Sebastian Krzyszkowiak [Thu, 29 Oct 2020 01:11:22 +0000 (02:11 +0100)]
filter-apply: Look for filter parameters also in device properties
Some filters take parameters that effectively describe the hardware
they're being applied to (like echo-cancel allowing to specify the
mic array parameters for better noise filtering). This allows system
integrators to set default parameters for such modules per-device,
which will get used when the stream doesn't specify their own.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/400>
Tanu Kaskinen [Thu, 17 Sep 2020 14:36:37 +0000 (17:36 +0300)]
sink: Increase JACK device priority
The JACK sink and source priority was 0, but I believe the common case
is that when a JACK sink or source is loaded, the user wants to make it
the default device.
Fixes: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/issues/983
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/369>
Igor V. Kovalenko [Mon, 14 Dec 2020 05:48:11 +0000 (08:48 +0300)]
build-sys: meson: change oss-output boolean to Meson feature
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/437>
Tanu Kaskinen [Sat, 6 Jun 2020 14:00:01 +0000 (17:00 +0300)]
alsa-mixer: Pick at most one fallback mapping
The old behaviour was such that if none of the normal mappings worked,
we would probe ALL fallbacks. I don't think that makes sense, and it
caused concrete issues: let's say we have a regular stereo mic device,
but there's no "front" PCM defined for it. In this situation we would
probe the stereo-fallback mapping (which uses "hw" instead of "front"),
and it would work, but then we'd also probe the "multichannel-input"
mapping, which would also work, so we end up with two mappings that
don't have any difference in behaviour.
I think it's better to simply pick the first working fallback and ignore
the rest.
Fixes: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/issues/901
(issue is marked as confidential due to unreleased hardware)
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/304>
SimonP [Thu, 7 May 2020 15:13:27 +0000 (16:13 +0100)]
alsa-mixer: Respect XDG base directory spec when loading path configs
Try $XDG_DATA_HOME, then $XDG_DATA_DIRS, and finally fall back to old
behaviour (prefix-defined directory).
core-util: Ignore non-absolute XDG base dirs
These are invalid per the spec.
Fixes: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/issues/862
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/293>
Samuel Thibault [Sun, 26 Apr 2020 17:55:08 +0000 (19:55 +0200)]
alsa-sink: increase watermark when there is nothing to rewind
If we do not manage to rewind at all because there is nothing to rewind
any more, it means the latency is too small, and we let audio escape our
control. We should thus increase the watermark to fix this.
Fixes #871
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/287>
Igor V. Kovalenko [Sun, 13 Dec 2020 10:09:19 +0000 (13:09 +0300)]
module-alsa-card: handle udev PULSE_MODARGS
Allow adding module arguments using udev PULSE_MODARGS environment variable and
fail module loading if there is a problem with PULSE_MODARGS
This helps setting e.g. 'tsched=0' for specific devices without a need to create
full load module entry in default.pa.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/436>
Hui Wang [Thu, 10 Dec 2020 07:36:40 +0000 (15:36 +0800)]
alsa-mixer: disable the Auto-Mute once the system has speaker
With the Auto-Mute enabled, if the headphone jack is plugged, the
alsa hda driver will mute the speaker and set pinctl of the speaker
to Hi-Z state, after this happens, even the pulseaudio unmute the
speaker, the speaker still couldn't output sound because the pinctl
is in Hi-Z state.
We found this issue on a Dell machine which has multi-function audio
jack, after the headphone is plugged in, the speaker's availability is
still unknown, users could select speaker from gnome-sound-setting,
but even the speaker is selected to be the active device, it couldn't
output sound.
The Auto-Mute is not useful if the pulseaudio is running since pa
could mute/unmute devices according to active port change, the ucm
for sof+hda already disabled the Auto-Mute, let us disable it for
hda audio if the machine has the internal speaker.
Signed-off-by: Hui Wang <hui.wang@canonical.com>
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/433>
Mattias Jernberg [Thu, 26 Mar 2020 18:53:08 +0000 (19:53 +0100)]
alsa-mixer: Enable volume control of SteelSeries Arctis stereo output
Since there is now support for specifying the index of an Element, add the
same config as is used for the output-mono variant, as they behave the same:
One volume control with no support for adjustments to the left and right
channels.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/274>
Tanu Kaskinen [Sat, 14 Mar 2020 08:42:44 +0000 (10:42 +0200)]
sink: Reduce chat sink priority
Some gaming sound cards have custom profiles with analog-game and
analog-chat mappings that exist simultaneously. The game sink should
have higher priority than the chat sink, but currently there's no way to
affect the sink priorities from the profile-set configuration (the
mapping priority is not propagated to the sink priority).
I first thought about adding the mapping priority to the sink priority,
but that could mess up the prioritization system in
pa_device_init_priority(). I ended up checking for the intended roles
property to reduce the chat sink priority. I also reduced the iec958
priority so that the chat and iec958 sinks don't end up with the same
priority.
Fixes: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/issues/818
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/266>
Tanu Kaskinen [Sat, 14 Mar 2020 06:22:44 +0000 (08:22 +0200)]
pstream: Log "Cannot send block reference..." only once per pstream
Despite the ratelimiting, this error gets logged too much.
I fixed a typo (Fallig -> Falling) while at it.
Related: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/issues/824
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/265>
Patrick McLean [Wed, 26 Feb 2020 08:26:12 +0000 (00:26 -0800)]
alsa-mixer: add support for Sennheiser GSX 1000 gaming DAC
This same profile should also work for the GSX 1200, but I don't know the USB id
for that.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/257>
Pierre Ossman [Tue, 7 Jul 2015 11:01:22 +0000 (13:01 +0200)]
tunnel-sink-new: log buffer events
Aids in tracking down exactly where in the chain underruns are
happening.
Signed-off-by: Pierre Ossman <ossman@cendio.se>
Tanu Kaskinen [Fri, 14 Feb 2020 05:29:33 +0000 (07:29 +0200)]
build-sys: Add an option for enabling/disabling Valgrind
In OpenEmbedded the PulseAudio recipe currently disables Valgrind
support by passing "ac_cv_header_valgrind_memcheck_h=no" to the
configure script (this was added to make it deterministic whether
Valgrdind support gets enabled or not). I'm converting the PulseAudio
recipe to use Meson, and I needed an option to disable Valgrind.
Tanu Kaskinen [Tue, 11 Feb 2020 07:40:49 +0000 (09:40 +0200)]
module: Check version before loading a module
Since there's no stable API for modules, all modules need to be compiled
together with the server. This version check tries to ensure that if
a version mismatch happens, there will be an informative error message
rather than a random crash.
Frédéric Danis [Tue, 28 May 2019 14:49:19 +0000 (16:49 +0200)]
core, modules: Remove useless EINTR tests
Since commit
ad447d14682 (in 2009) pa_read and pa_write take care of
handling EINTR error.
So, pa_read, pa_write, pa_iochannel_read and pa_iochannel_write can not
exit with errno set to EINTR, and testing it is useless.
Ben Buchwald [Mon, 6 Jan 2020 23:03:42 +0000 (18:03 -0500)]
jackdbus-detect: Passthrough more arguments to sink and source
module-jackdbus-detect now accepts sink_name, sink_properties,
sink_client_name, sink_channel_map, source_name, source_properties,
source_client_name, and source_channel_map arguments that will be passed
through to module-jack-source and module-jack-sink (without the sink and
source prefixes, except where needed).
Jaechul Lee [Tue, 8 Dec 2020 02:20:14 +0000 (11:20 +0900)]
null-source: Fix max_latency_msec argument is not changed
This module uses 2 seconds for default max latency. If max_latency_msec
is set, max_latency value will be changed.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/431>
Tanu Kaskinen [Tue, 8 Dec 2020 11:52:39 +0000 (13:52 +0200)]
i18n: Update pulseaudio.pot
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/432>
Dusan Kazik [Tue, 24 Nov 2020 08:32:06 +0000 (08:32 +0000)]
Translated using Weblate (Slovak)
Currently translated at 76.0% (400 of 526 strings)
Translation: pulseaudio/pulseaudio
Translate-URL: https://translate.fedoraproject.org/projects/pulseaudio/pulseaudio/sk/
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/432>
Sanchayan Maity [Thu, 23 Jul 2020 15:03:36 +0000 (20:33 +0530)]
module-match: Allow loading module more than once
As long as modules use different keys, multiple loading of this module
should be safe. Even in case of same keys, either the pa_proplist_update
should correctly update the property list based on the mode or for the
volume writable case, the last rule should win.
Fixes: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/issues/942
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/332>
Laurențiu Nicola [Tue, 24 Nov 2020 16:57:41 +0000 (18:57 +0200)]
alsa-mixer: Add OnePlus Bullets udev rule
Jason Nader [Mon, 7 Dec 2020 10:56:39 +0000 (19:56 +0900)]
man: clarify pactl command arguments
Jaechul Lee [Mon, 16 Nov 2020 01:14:56 +0000 (10:14 +0900)]
null-source: Add max_latency_msec argument
It takes much time when starting to capture because max latency is set
to 2 seconds as a initial value. null-source latency need to be set a
lower value than initial value to improve latency.
Igor V. Kovalenko [Mon, 30 Nov 2020 19:25:16 +0000 (22:25 +0300)]
message-params: consume array enclosing {} by array read methods
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/51>
Igor V. Kovalenko [Mon, 30 Nov 2020 19:39:23 +0000 (22:39 +0300)]
message-params: add read length param reference to array read methods
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/51>
Tanu Kaskinen [Thu, 23 Jul 2020 07:01:49 +0000 (10:01 +0300)]
core-util-test: Test pa_atou64() and pa_atoi64()
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/51>
Tanu Kaskinen [Thu, 23 Jul 2020 06:49:12 +0000 (09:49 +0300)]
core-util-test: Drop "modargs" from test function names
These tests aren't directly related to modargs. I suppose these were
first written for the modargs.h API and renaming was forgotten.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/51>
Tanu Kaskinen [Thu, 23 Jul 2020 06:39:25 +0000 (09:39 +0300)]
core-util-test: Test parsing integer strings with leading zeros
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/51>
Tanu Kaskinen [Sat, 18 Jul 2020 07:13:26 +0000 (10:13 +0300)]
core-util: Never parse integers as octal
I believe nobody needs to pass octal numbers to PulseAudio, and if we
encounter integer strings starting with zeros, the intention is to use
them in base 10. Hexadecimal numbers are more common, and they can't be
interpreted in base 10 anyway, so they are still supported.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/51>
Tanu Kaskinen [Wed, 22 Jul 2020 13:06:23 +0000 (16:06 +0300)]
core-util: Reduce repetition in number parsing functions
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/51>
Tanu Kaskinen [Sat, 11 Jul 2020 10:58:36 +0000 (13:58 +0300)]
introspect: Add version check to pa_context_send_message_to_object()
If an application calls the function when the server doesn't support the
feature, the result should be just an error from the function. Without
the check the whole connection gets terminated due to protocol error.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/51>
Tanu Kaskinen [Tue, 9 Jun 2020 04:56:17 +0000 (07:56 +0300)]
core-util: Make range checks easier to read
It wasn't immediately obvious to me what these checks are supposed to
do. Explicitly checking against the min/max values should make the code
easier to understand.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/51>
Georg Chini [Tue, 14 Jan 2020 19:50:24 +0000 (20:50 +0100)]
message-params: Add read functions for arrays
The following new functions have been added:
pa_message_params_read_double_array() - read an array of double from list
pa_message_params_read_int64_array() - read an array of int64 from list
pa_message_params_read_uint64_array() - read an array of uint64 from list
pa_message_params_read_string_array() - read an array of strings from list
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/51>
Georg Chini [Tue, 14 Jan 2020 15:41:59 +0000 (16:41 +0100)]
message-params: Add read/write functions for various simple data types
The following functions have been added:
pa_message_params_write_double() - writes a double to a pa_message_params structure
pa_message_params_write_int64() - writes an integer to a pa_message_params structure
pa_message_params_write_uint64() - writes an unsigned to a pa_message_params structure
pa_message_params_write_bool() - writes a boolean to a pa_message_params structure
pa_message_params_read_double() - read a double from a parameter list
pa_message_params_read_int64() - read an integer from a parameter list
pa_message_params_read_uint64() - read an unsigned from a parameter list
pa_message_params_read_bool() - read a boolean from a parameter list
The patch also improves the doxygen documentation im message-params.h
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/51>
Georg Chini [Tue, 14 Jan 2020 13:04:11 +0000 (14:04 +0100)]
core-util: Add pa_atoi64() and pa_atou64() functions
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/51>
Georg Chini [Tue, 14 Jan 2020 12:24:16 +0000 (13:24 +0100)]
message-params: Allow parameter strings to contain escaped curly braces
The patch adds the possibility to escape curly braces within parameter strings
and introduces several new functions that can be used for writing parameters.
For writing, the structure pa_message_params, which is a wrapper for pa_strbuf
has been created. Following new write functions are available:
pa_message_params_new() - creates a new pa_message_params structure
pa_message_params_free() - frees a pa_message_params structure
pa_message_param_to_string_free() - converts a pa_message_param to string and
frees the structure
pa_message_params_begin_list() - starts a list
pa_message_params_end_list() - ends a list
pa_message_params_write_string() - writes a string to a pa_message_params structure
pa_message_params_write_raw() - writes a raw string to a pa_message_params structure
For string parameters that contain curly braces or backslashes, those characters
will be escaped when using pa_message_params_write_string(), while write_raw() will
put the string into the buffer without any changes.
For reading, pa_message_params_read_string() reverts the changes that
pa_message_params_write_string() might have introduced.
The patch also adds more restrictions on the object path name. Now only
alphanumeric characters and one of "_", ".", "-" and "/" are allowed.
The path name may not end with a / or contain a double slash. If the user
specifies a trailing / when sending a message, it will be silently removed.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/51>
Georg Chini [Tue, 14 Jan 2020 10:31:39 +0000 (11:31 +0100)]
pactl: Implement list message-handlers
For better readability, "pactl list message-handlers" is introduced which
prints a formatted output of "pactl send-message /core list-handlers".
The patch also adds the functions pa_message_params_read_raw() and
pa_message_params_read_string() for easy parsing of the message response
string. Because the functions need to modify the parameter string,
the message handler and the pa_context_string_callback function now
receive a char* instead of a const char* as parameter argument.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/51>
Georg Chini [Tue, 14 Jan 2020 10:00:20 +0000 (11:00 +0100)]
core: add message handler
This patch adds a small message handler to the core which enables
clients to list available handlers via the list-handlers message.
Command: pacmd send-message /core list-handlers
pactl can be used with the same parameters.
The patch also introduces a convention for the return string.
It consists of a list of elements where curly braces are used
to separate elements. Each element can itself contain further
elements. For example consider a message that returns multiple
elements which each contain an integer and an array of float.
A response string would look like that:
{{Integer} {{1st float} {2nd float} ...}}{...}
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/51>
Georg Chini [Tue, 14 Jan 2020 09:24:36 +0000 (10:24 +0100)]
pactl, pacmd, cli-command: Add send-message command
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/51>
Georg Chini [Tue, 14 Jan 2020 09:15:36 +0000 (10:15 +0100)]
protocol-native: add message sending capability
This patch adds the PA_COMMAND_SEND_OBJECT_MESSAGE command to protocol-native
so that clients can use the messaging feature introduced in the previous patch.
Sending messages can in effect replace the extension system for modules. The
approach is more flexible than the extension interface because a generic string
format is used to exchange information. Furthermore the messaging system can be
used for any object, not only for modules, and is easier to implement than
extensions.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/51>
Igor V. Kovalenko [Mon, 30 Nov 2020 10:31:19 +0000 (13:31 +0300)]
build-sys: meson: use target_machine.cpu_family() for CANONICAL_HOST
target_machine provides information about the machine on which the compiled
binary's output will run.
cpu_family() returns CPU family name (such as x86_64, not more specific amd64)
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/426>
Igor V. Kovalenko [Fri, 27 Nov 2020 20:49:17 +0000 (23:49 +0300)]
build-sys: meson: add oss-output option for OSS output support
Restore an option to disable OSS output available with autotools.
Jaechul Lee [Fri, 6 Nov 2020 01:52:33 +0000 (10:52 +0900)]
null-sink: Change block size to 50 msec when norewinds is set
playing sound through null sink takes almost 2 seconds at first time
playback when norewinds is set. Because block_usec is set 2 seconds at
initializing time. The value will be changed 50 msec after calling
update_request_latency callback.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/406>
Igor V. Kovalenko [Wed, 25 Nov 2020 16:35:04 +0000 (19:35 +0300)]
pa-info: look for alsa-info.sh in /usr/sbin as well
At least Gentoo and OpenSUSE install alsa-info.sh in /usr/sbin, look there too.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/422>
Laurent Bigonville [Thu, 27 Aug 2020 13:58:55 +0000 (15:58 +0200)]
tests: Fix incompatible pointer type on Debian kfreebsd
Debian kfreebsd uses the GNU libc that uses cpu_set_t instead of cpuset_t
Also do not include unnecessary headers on this platform
Fixes: #851
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/356>
Christopher Snowhill [Fri, 24 Jan 2020 05:21:59 +0000 (21:21 -0800)]
virtual-surround-sink: Use FFTW3 instead of naive approach
This replaces the original virtual surround sink with a total
rewrite, aiming to implement any number of hrir use cases,
including asymmetrical impulses as two separate left and right
output files. It uses FFTW3 FFT convolution, using the overlap-
save method, with full rewind support. It operates in steps
equal to the resampled length of the hrir, and overlaps input
blocks in increments equal to the size of the FFT block. If
using paired hrirs, it requires matched sample spec and sample
rates and channel maps. For best results, the input files should
have speaker maps, rather than expecting the sample loader to
auto detect the mapping.
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/240>
Arun Raghavan [Mon, 23 Nov 2020 22:01:01 +0000 (17:01 -0500)]
mutex-posix: Fix error assignment for unlock() check
This comment was missed in
757eb264485b11ca9163a260d8772c59ac3108a1.
Tanu Kaskinen [Thu, 3 Sep 2020 10:33:15 +0000 (13:33 +0300)]
alsa-mixer: Expand comments in the HP Thunderbolt Dock configuration
Kai-Heng Feng [Tue, 1 Sep 2020 16:23:54 +0000 (00:23 +0800)]
alsa-mixer: Add support for HP Thunderbolt Dock
The HP Thunderbolt Dock [1] has two separate USB cards, a headset jack
and an optional module which is a speakerphone.
This patch adds new description for them, and mark the intended-roles as
phone for the speakerphone module.
[1] https://store.hp.com/us/en/pdp/hp-thunderbolt-dock-120w-g2-with-audio
Nazar Mokrynskyi [Sat, 21 Dec 2019 12:01:44 +0000 (14:01 +0200)]
alsa-mixer: add mono input support for Behringer UMC22
Sanchayan Maity [Wed, 2 Sep 2020 13:49:07 +0000 (19:19 +0530)]
Add default.pa.d folder support
The .include meta command already supports specifying a directory and
when including a directory, all files with the extension '.pa' in that
directory will be parsed in alphabetical order.
This feature can be used to add support for default.pa.d directory, so
that packages for other applications or users can just drop in a file
for configuration without changing the default.pa which is shipped.
We use the PA_DEFAULT_CONFIG_DIR for this, however, since meson quotes
this build variable, introduce an unquoted version for this purpose and
use it with .include.
Fixes: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/issues/909
Signed-off-by: Sanchayan Maity <sanchayan@asymptotic.io>
Tanu Kaskinen [Thu, 3 Sep 2020 11:28:29 +0000 (14:28 +0300)]
alsa-mixer: Add support for the Center/LFE element
We already supported the CLFE element, which should be semantically
equivalent, so I just copied all the CLFE element definitions.
The Center/LFE element is seen on Creative X-Fi with 20K1 chipset cards.
Fixes: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/issues/978
Tanu Kaskinen [Tue, 22 Sep 2020 11:12:37 +0000 (14:12 +0300)]
main: set LC_NUMERIC to C
The webrtc backend of module-echo-cancel uses sscanf() to parse floating
point numbers from module arguments, which didn't work when the locale
used a comma for the decimal point. Setting the LC_NUMERIC locale
variable to C makes the pulseaudio process use a period as the decimal
point regardless of the user's locale configuration.
Fixes: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/issues/89
Tanu Kaskinen [Thu, 24 Sep 2020 09:07:07 +0000 (12:07 +0300)]
mutex-posix: Log pthread_mutex_unlock() error
This call has been seen failing on FreeBSD, and it's difficult to debug
without seeing which error the function returned.
Fixes: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/issues/988
Tanu Kaskinen [Sun, 11 Oct 2020 12:47:32 +0000 (15:47 +0300)]
raop-sink: Don't set device.intended_roles=music
If there are RAOP devices in the network, it doesn't necessarily mean
that the user wants to play music to them.
Fixes: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/issues/993
Arun Raghavan [Thu, 23 Jul 2020 23:42:47 +0000 (19:42 -0400)]
stream-restore,device-restore: Avoid unaligned access
Newer GCC warns us that the channel_map and volume in legacy entries are
accessed via pointers, and these might be unaligned as the legacy entry
is a packed structure. For this reason, we read out those values into
local variables before accessing them as pointers.
The warnings are:
[146/433] Compiling C object src/modules/module-device-restore.so.p/module-device-restore.c.o
../src/modules/module-device-restore.c: In function ‘legacy_entry_read’:
../src/modules/module-device-restore.c:554:51: warning: taking address of packed member of ‘struct legacy_entry’ may result in an unaligned pointer value [-Waddress-of-packed-member]
554 | if (le->volume_valid && !pa_channel_map_valid(&le->channel_map)) {
| ^~~~~~~~~~~~~~~~
../src/modules/module-device-restore.c:559:48: warning: taking address of packed member of ‘struct legacy_entry’ may result in an unaligned pointer value [-Waddress-of-packed-member]
559 | if (le->volume_valid && (!pa_cvolume_valid(&le->volume) || !pa_cvolume_compatible_with_channel_map(&le->volume, &le->channel_map))) {
| ^~~~~~~~~~~
../src/modules/module-device-restore.c:559:104: warning: taking address of packed member of ‘struct legacy_entry’ may result in an unaligned pointer value [-Waddress-of-packed-member]
559 | if (le->volume_valid && (!pa_cvolume_valid(&le->volume) || !pa_cvolume_compatible_with_channel_map(&le->volume, &le->channel_map))) {
| ^~~~~~~~~~~
../src/modules/module-device-restore.c:559:117: warning: taking address of packed member of ‘struct legacy_entry’ may result in an unaligned pointer value [-Waddress-of-packed-member]
559 | if (le->volume_valid && (!pa_cvolume_valid(&le->volume) || !pa_cvolume_compatible_with_channel_map(&le->volume, &le->channel_map))) {
| ^~~~~~~~~~~~~~~~
[211/433] Compiling C object src/modules/module-stream-restore.so.p/module-stream-restore.c.o
../src/modules/module-stream-restore.c: In function ‘legacy_entry_read’:
../src/modules/module-stream-restore.c:1076:51: warning: taking address of packed member of ‘struct legacy_entry’ may result in an unaligned pointer value [-Waddress-of-packed-member]
1076 | if (le->volume_valid && !pa_channel_map_valid(&le->channel_map)) {
| ^~~~~~~~~~~~~~~~
../src/modules/module-stream-restore.c:1081:48: warning: taking address of packed member of ‘struct legacy_entry’ may result in an unaligned pointer value [-Waddress-of-packed-member]
1081 | if (le->volume_valid && (!pa_cvolume_valid(&le->volume) || !pa_cvolume_compatible_with_channel_map(&le->volume, &le->channel_map))) {
| ^~~~~~~~~~~
../src/modules/module-stream-restore.c:1081:104: warning: taking address of packed member of ‘struct legacy_entry’ may result in an unaligned pointer value [-Waddress-of-packed-member]
1081 | if (le->volume_valid && (!pa_cvolume_valid(&le->volume) || !pa_cvolume_compatible_with_channel_map(&le->volume, &le->channel_map))) {
| ^~~~~~~~~~~
../src/modules/module-stream-restore.c:1081:117: warning: taking address of packed member of ‘struct legacy_entry’ may result in an unaligned pointer value [-Waddress-of-packed-member]
1081 | if (le->volume_valid && (!pa_cvolume_valid(&le->volume) || !pa_cvolume_compatible_with_channel_map(&le->volume, &le->channel_map))) {
|
Arun Raghavan [Thu, 23 Jul 2020 23:36:11 +0000 (19:36 -0400)]
glib-mainloop: Drop deprecated g_get_current_time() usage
This uses the year 2038-safe g_get_real_time() as recommended instead.
Bumps GLib dependency to 2.28 as a result.
Arun Raghavan [Thu, 23 Jul 2020 23:36:06 +0000 (19:36 -0400)]
proplist-util: Drop deprecated G_CONST_RETURN macro
The preference in glib is now to just use the const qualifier directly.
Arun Raghavan [Mon, 23 Nov 2020 18:22:25 +0000 (13:22 -0500)]
build-sys: Bump libpulse soversion
This is because we reverted the previous API breaking change to the
meaning of the pa_mainloop_prepare() timeout argument.
Arun Raghavan [Mon, 23 Nov 2020 17:56:41 +0000 (12:56 -0500)]
Revert "mainloop: fix timeout assignment in pa_mainloop_prepare"
This reverts commit
6b1719d0ed100ce5a65f28c3c4d4f3b59f3f56a0, as it
inadvertently broke the semantics of timeout in the API.
Fixes: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/issues/1039
Tanu Kaskinen [Mon, 23 Nov 2020 17:12:27 +0000 (19:12 +0200)]
build-sys: Disable GStreamer by default with Autotools
With Meson GStreamer is already disabled by default, let's match that
with Autotools.
Pali Rohár [Sat, 21 Nov 2020 10:58:05 +0000 (11:58 +0100)]
alsa: Fix compile warnings
modules/alsa/alsa-sink.c: In function ‘pa_alsa_sink_new’:
modules/alsa/alsa-sink.c:2603:15: warning: declaration of ‘state’ shadows a previous local [-Wshadow]
void *state;
^~~~~
modules/alsa/alsa-sink.c:2270:11: note: shadowed declaration is here
void *state = NULL;
^~~~~
CC modules/alsa/module_alsa_sink_la-module-alsa-sink.lo
modules/alsa/alsa-source.c: In function ‘pa_alsa_source_new’:
modules/alsa/alsa-source.c:2289:15: warning: declaration of ‘state’ shadows a previous local [-Wshadow]
void *state;
^~~~~
modules/alsa/alsa-source.c:1975:11: note: shadowed declaration is here
void *state = NULL;
^~~~~
modules/alsa/module-alsa-card.c: In function ‘prune_singleton_availability_groups’:
modules/alsa/module-alsa-card.c:691:71: warning: pointer of type ‘void *’ used in arithmetic [-Wpointer-arith]
pa_hashmap_put(group_counts, p->availability_group, count + 1);
^
Tanu Kaskinen [Sat, 21 Nov 2020 14:52:23 +0000 (16:52 +0200)]
switch-on-port-available: Fix switching away from unplugged headphones
Commits
323195e305 ("switch-on-port-available: Switch to headphones on
unknown availability") and
d83ad6990e ("module-alsa-card: Drop
availability groups with only one port") broke switching from headphones
to speakers when headphones are unplugged. switch_from_port() selects
speakers, whose availability is unknown and availability group is unset,
and then calls switch_to_port(). The new logic in switch_on_port()
unintentionally blocked that switch.
This patch moves the problematic logic from switch_to_port() to
port_available_hook_callback() where it doesn't interfere with
switch_from_port().
Fixes: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/issues/1043
Tanu Kaskinen [Sun, 22 Nov 2020 14:14:58 +0000 (16:14 +0200)]
alsa-mixer: Document the description and description-key mapping options
Emanuil Novachev [Wed, 14 Oct 2020 21:14:42 +0000 (21:14 +0000)]
Translated using Weblate (Bulgarian)
Currently translated at 2.6% (14 of 521 strings)
Translation: pulseaudio/pulseaudio
Translate-URL: https://translate.fedoraproject.org/projects/pulseaudio/pulseaudio/bg/
Dusan Kazik [Tue, 6 Oct 2020 08:39:43 +0000 (08:39 +0000)]
Translated using Weblate (Slovak)
Currently translated at 69.2% (364 of 526 strings)
Translation: pulseaudio/pulseaudio
Translate-URL: https://translate.fedoraproject.org/projects/pulseaudio/pulseaudio/sk/
Emilio Herrera [Wed, 30 Sep 2020 15:16:23 +0000 (15:16 +0000)]
Translated using Weblate (Spanish)
Currently translated at 100.0% (521 of 521 strings)
Translation: pulseaudio/pulseaudio
Translate-URL: https://translate.fedoraproject.org/projects/pulseaudio/pulseaudio/es/
Karl Ove Hufthammer [Sun, 20 Sep 2020 13:02:19 +0000 (13:02 +0000)]
Translated using Weblate (Norwegian Nynorsk)
Currently translated at 100.0% (527 of 527 strings)
Translation: pulseaudio/pulseaudio
Translate-URL: https://translate.fedoraproject.org/projects/pulseaudio/pulseaudio/nn/
Igor V. Kovalenko [Thu, 19 Nov 2020 18:45:40 +0000 (21:45 +0300)]
switch-on-port-available: Add logging for port availability group
Igor V. Kovalenko [Fri, 20 Nov 2020 07:52:12 +0000 (10:52 +0300)]
module-alsa-card: Add debug logging if availability group was pruned
Igor V. Kovalenko [Sat, 21 Nov 2020 13:49:10 +0000 (16:49 +0300)]
i18n: Update pulseaudio.pot
Igor V. Kovalenko [Tue, 3 Nov 2020 17:23:20 +0000 (20:23 +0300)]
pactl: explicitly print if port availability is unknown
Port availability is a tristate -- not-available / unknown / available.
Explicitly print if availability is unknown to reduce confusion.
Arun Raghavan [Fri, 30 Oct 2020 19:01:19 +0000 (15:01 -0400)]
module-alsa-card: Drop availability groups with only one port
These are not really meaningful, and can be confusing for clients.
Fixes: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/issues/1022
Arun Raghavan [Wed, 11 Nov 2020 02:04:11 +0000 (21:04 -0500)]
switch-on-port-available: Switch to headphones on unknown availability
Since not all users will have environments that asks what they plugged
in when their hardware supports TRRS inputs but don't have impedance
sensing, let's emulate our previous default behaviour of enabling the
headphone port at least.
This can likely be improved so users can configure the module to select
for the device they are most likely to plug in (so an option to enable
just the microphone, or headphones+headset-mic ports).
Fixes: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/issues/1028