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
Tanu Kaskinen [Sat, 31 Oct 2020 10:00:54 +0000 (12:00 +0200)]
alsa-mixer: Remove references to non-existent multichannel paths
We don't have any mixer configuration for the multichannel mappings.
Tanu Kaskinen [Sat, 31 Oct 2020 07:43:26 +0000 (09:43 +0200)]
gitlab: Remove trailing whitespace from the issue template
Tanu Kaskinen [Sun, 4 Oct 2020 10:18:16 +0000 (13:18 +0300)]
alsa-mixer: Fix jack name comparison
HDMI jacks are configured like this:
[Jack HDMI/DP]
append-pcm-to-name = yes
The pa_alsa_jack.name field is then "HDMI/DP" and pa_alsa_jack.alsa_name
is set to "HDMI/DP,pcm=3 Jack" or similar. If we compare the name fields
of HDMI paths, they appear to use the same jack element even though they
are different in reality, so all HDMI ports got incorrectly assigned to
the same availability group.
Tanu Kaskinen [Sun, 4 Oct 2020 10:00:58 +0000 (13:00 +0300)]
alsa-mixer: Set availability groups once per card
Previously they were set once per mapping, which caused the numbering to
restart from 1 for every mapping, so ports were incorrectly assigned to
the same group.
Arun Raghavan [Mon, 26 Oct 2020 15:45:27 +0000 (11:45 -0400)]
sink, source: Skip filter streams while changing default sink/source
Streams connecting filter devices to their target devices shouldn't move
because of default settings (they are intended to be filtering the
specific device that are attached to).
Fixes: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/issues/1015
Jaroslav Kysela [Wed, 14 Oct 2020 15:16:44 +0000 (17:16 +0200)]
alsa: move the exceptionally large value errors from error to debug level
Almost all reports from users, I have seen in last years, were not valid.
The report is also printed when the system scheduler does not wake
the pulseaudio thread in the right time. Users are not able to distinguish
between slow machine and the real problem.
Move the log level from 'error' to 'debug' for those messages.
The right fix should be to measure the time between the call invocation and
return to determine (and skip) the scheduling problems, but it is another
extra code just to debug things.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Arun Raghavan [Wed, 14 Oct 2020 13:09:53 +0000 (09:09 -0400)]
build-sys: Set the GStreamer RTP backend to disabled by default
Packaging shouldn't be using the automatic setting anyway, and let's
disable by default for one release and mark this as experimental so we
can flush out any corner cases.
Arun Raghavan [Thu, 22 Oct 2020 14:12:03 +0000 (10:12 -0400)]
rtp: gstreamer: Account for rounding errors in RTP timestamp conversion
Since the RTP timestamp is converted to time units and back, a small
error can creep up, which then results in a single frame error in where
we place the buffer in the output memblockq. This results in minor
glitches, so we check for and eliminate the error.
Arun Raghavan [Thu, 22 Oct 2020 14:06:40 +0000 (10:06 -0400)]
rtp: gstreamer: Don't count on buffer DTS for capture time
With GStreamer 1.18, the old behaviour of storing the capture time in
DTS is gone (which is reasonable, since the semantics really don't
match). So instead, we get a capture timestamp when the buffer is being
pushed from udpsrc. This should eventually move into udpsrc, and the
timestamp should come from the cmsg instead of the clock.
We still fallback to the DTS if the meta isn't available, as the meta
might be dropped in older versions of rtpL16pay due to a bug.
Igor V. Kovalenko [Thu, 15 Oct 2020 20:55:17 +0000 (23:55 +0300)]
module-bluez5-discover: avoid use after free on de-init
Hashmap loaded_device_paths contain objects holding keys to entries, and
these objects must be alive while map is emptied.
Reorder freeing this hashmap before destroying device objects to fix
crash on exit.
Igor V. Kovalenko [Thu, 15 Oct 2020 21:24:50 +0000 (00:24 +0300)]
build-sys: meson: adjust path to gsettings-helper runing from build tree
Arun Raghavan [Tue, 20 Oct 2020 18:36:20 +0000 (14:36 -0400)]
build-sys: meson: Add libm dep to raop module
This is required for using pow().
Igor V. Kovalenko [Mon, 19 Oct 2020 05:29:43 +0000 (08:29 +0300)]
device-port: fire port available changed hook after streams are moved
If port becomes unavailable then PA_CORE_HOOK_PORT_AVAILABLE_CHANGED
callbacks may eventually destroy related source or sink object. Call
this hook after stream is moved to prevent crash reading from freed
memory.
Fixes: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/issues/1008
Arun Raghavan [Wed, 14 Oct 2020 01:03:30 +0000 (21:03 -0400)]
Revert "alsa-mixer: support up to 8 channels per mixer element"
This reverts commit
e0ab9fa4a478a79fac5fa25a957daff4947d5133.
The change broke some Xonar cards, and we probably don't want to hold up
the 14.0 release for this.
Fixes: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/issues/1009
Tanu Kaskinen [Tue, 13 Oct 2020 14:14:00 +0000 (17:14 +0300)]
ci: Fix comment
The UBUNTU_DEBS variable has been replaced by FDO_DISTRIBUTION_PACKAGES.
Igor V. Kovalenko [Tue, 13 Oct 2020 06:36:50 +0000 (09:36 +0300)]
module-stream-restore: check if dbus entry exists in dbus_entries map before creating it
If write_entry fails to store new entry in database, next time we can try creating new entry again.
With DBUS enabled this will create another dbus entry for same name leading to crash inserting duplicate into dbus_entries map.
Fix this by checking if dbus entry exists in dbus_entries map before creating it.
Fixes: #974
Igor V. Kovalenko [Tue, 13 Oct 2020 06:50:31 +0000 (09:50 +0300)]
module-stream-restore: log error writing volume/mute/device entry to database
Jaroslav Kysela [Mon, 4 May 2020 11:04:28 +0000 (13:04 +0200)]
alsa-mixer: support up to 8 channels per mixer element
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
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Tanu Kaskinen [Tue, 13 Oct 2020 10:22:11 +0000 (13:22 +0300)]
alsa-mixer: Document the intended-roles mapping option
Jaroslav Kysela [Sun, 4 Oct 2020 19:35:52 +0000 (21:35 +0200)]
alsa: fix type for legacy hdmi devices
Although the hdmi-output is in well_known_descriptions[] table,
the hdmi device names are indexed (hdmi-output-0), thus there
is no match to assign the proper type automatically.
This patch puts the correct hdmi type to all relevant hdmi
configuration files.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Fri, 18 Sep 2020 14:32:00 +0000 (16:32 +0200)]
alsa: fix analog-input-microphone-headset device type
From: Hui Wang <hui.wang@canonical.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Fri, 18 Sep 2020 14:30:02 +0000 (16:30 +0200)]
alsa: mixer - reorder the type field in path parser
The items array is assigned later and the order of fields is important.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Michael Pivonka [Sat, 26 Sep 2020 16:39:37 +0000 (12:39 -0400)]
alsa-mixer: Add Razer Kraken Tournament Edition USB headset
Ralph Seichter [Thu, 10 Sep 2020 18:25:05 +0000 (20:25 +0200)]
macos: Add missing import statement
Add missing import of util.h. This fixes a build failure with the
Xcode 12 command line tools which manifests as follows:
error: implicit declaration of function 'pa_thread_make_realtime'
is invalid in C99 [-Werror,-Wimplicit-function-declaration]
Ref https://trac.macports.org/ticket/61107
Sanchayan Maity [Mon, 7 Sep 2020 13:05:40 +0000 (18:35 +0530)]
rtp: Fix sending of small packets
The current implementation for RTP send isn't optimised for sending MTU
bytes of data like rtp-native. For eg. if MTU is 1280 bytes and we have
to send 1276 bytes, two packets are send out one of 1268 bytes and other
of 8 bytes. Sending out a packet of 8 bytes has a significant overhead
and we should be sending MTU bytes of data.
Fix this by accumulating MTU bytes of data and sending data only on
accumulation of MTU worth of data.
Juliano de Souza Camargo [Sat, 19 Sep 2020 03:39:58 +0000 (04:39 +0100)]
Update Portuguese translation
Arun Raghavan [Mon, 21 Sep 2020 00:11:52 +0000 (20:11 -0400)]
build-sys: Bump gettext dependency
Needed for distcheck to work with a checked-in pulseaudio.pot. Not
updating to the very latest (0.21) to not force the dependency bump to
something "too new" on distros.
Arun Raghavan [Sun, 20 Sep 2020 23:02:56 +0000 (19:02 -0400)]
build-sys: Add doxygen/meson.build to distfiles
Arun Raghavan [Sun, 20 Sep 2020 22:43:05 +0000 (18:43 -0400)]
build-sys: Bump soversions
libpulse gets a full API bump due to the addition of availability
groups, and libpulse-mainloop-glib gets a minor bump for implementation
change.
Jaroslav Kysela [Sun, 7 Jun 2020 16:25:41 +0000 (18:25 +0200)]
ucm: add possibility to skip the UCM card completely (Linked)
We have a requirement to "hide" some hardware drivers, because
other (main) UCM configuration will refer them.
This patch use special error codes to notify the upper layers
to skip the module loading.
BugLink: https://github.com/alsa-project/alsa-ucm-conf/issues/30
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Rafael Fontenelle [Sat, 12 Sep 2020 15:24:11 +0000 (12:24 -0300)]
Update Brazilian Portuguese translation
Tanu Kaskinen [Fri, 11 Sep 2020 08:13:02 +0000 (11:13 +0300)]
man: client.conf: Explain that autospawn=no doesn't disable systemd autostarting
Milo Casagrande [Mon, 7 Sep 2020 08:56:16 +0000 (08:56 +0000)]
Translated using Weblate (Italian)
Currently translated at 100.0% (533 of 533 strings)
Translation: pulseaudio/pulseaudio
Translate-URL: https://translate.fedoraproject.org/projects/pulseaudio/pulseaudio/it/
Göran Uddeborg [Thu, 13 Aug 2020 19:24:58 +0000 (19:24 +0000)]
Translated using Weblate (Swedish)
Currently translated at 100.0% (534 of 534 strings)
Translation: pulseaudio/pulseaudio
Translate-URL: https://translate.fedoraproject.org/projects/pulseaudio/pulseaudio/sv/
Arun Raghavan [Tue, 11 Aug 2020 04:46:56 +0000 (00:46 -0400)]
alsa-mixer: Add an explicit profile-set for Audigy devices
These lost analog-mono support when we made that a fallback profile, as
the stereo-fallback would be picked up as the only input profile, and
that does not work in duplex mode.
Fixes: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/issues/750
Tom Yan [Sun, 16 Aug 2020 22:16:23 +0000 (22:16 +0000)]
man: mention that exit-idle-time is complied if the user is lingering
Tom Yan [Sun, 16 Aug 2020 20:16:01 +0000 (20:16 +0000)]
main, core: check idle after loading conf
pa_core_check_idle() uses pa_core.exit_idle_time, which is set after the
pa_core_new() call, so pa_core_check_idle() needs to be called later.
This patch preserves the fact that core state is set to PA_CORE_RUNNING
after checking idle (now in main). It doesn't seem to matter anyway and
main(pa_core_new(state:PA_CORE_STARTUP)->...->state:PA_CORE_RUNNING)
seems right as well.
itsthem [Fri, 28 Aug 2020 13:15:50 +0000 (13:15 +0000)]
pulsecore: Replace gendered pronouns with gender neutral ones
Felix Yan [Fri, 14 Aug 2020 14:13:32 +0000 (14:13 +0000)]
shell-completion: zsh: Correct a typo
Tanu Kaskinen [Thu, 13 Aug 2020 19:01:18 +0000 (22:01 +0300)]
i18n: Update pulseaudio.pot
Balázs Meskó [Mon, 20 Jul 2020 14:15:48 +0000 (14:15 +0000)]
Translated using Weblate (Hungarian)
Currently translated at 100.0% (526 of 526 strings)
Translation: pulseaudio/pulseaudio
Translate-URL: https://translate.fedoraproject.org/projects/pulseaudio/pulseaudio/hu/
Milo Ivir [Tue, 14 Jul 2020 18:17:36 +0000 (18:17 +0000)]
Translated using Weblate (Croatian)
Currently translated at 100.0% (531 of 531 strings)
Translation: pulseaudio/pulseaudio
Translate-URL: https://translate.fedoraproject.org/projects/pulseaudio/pulseaudio/hr/
Geert Warrink [Fri, 10 Jul 2020 19:00:45 +0000 (19:00 +0000)]
Translated using Weblate (Dutch)
Currently translated at 85.8% (426 of 496 strings)
Translation: pulseaudio/pulseaudio
Translate-URL: https://translate.fedoraproject.org/projects/pulseaudio/pulseaudio/nl/
Tanu Kaskinen [Mon, 10 Aug 2020 17:56:43 +0000 (20:56 +0300)]
alsa-mixer: Fix indentation
Tanu Kaskinen [Wed, 17 Jun 2020 05:40:16 +0000 (08:40 +0300)]
Rename "available group" to "availability group"
"Availability group" is more clear about what the field is about.
Credits to Arun Raghavan for coming up with the better name.
Tanu Kaskinen [Tue, 21 Jul 2020 07:26:43 +0000 (10:26 +0300)]
alsa-mixer: Fix mapping_group_available() logic
There were three bugs:
1) j->state_plugged was set to PA_AVAILABLE_UNKNOWN too early. It must
be set only after we have found that the jack is shared by two ports.
The result of setting it too early was that no jack ever could have
the PA_AVAILABLE_YES status.
2) The inner jack loop iterated through p->jacks instead of p2->jacks,
so the code didn't compare jacks between two ports at all. As a result
all ports were put in the same availability group.
3) The inner jack loop checked j->state_plugged instead of
j2->state_plugged. The result was that the speaker port, which uses the
Headphone jack to toggle between unknown and unavailable, was put in the
same group with the headphone port.
Tanu Kaskinen [Wed, 17 Jun 2020 05:14:18 +0000 (08:14 +0300)]
Improve the port available_group and type documentation
Tanu Kaskinen [Mon, 10 Aug 2020 16:47:45 +0000 (19:47 +0300)]
meson: Add doxygen target
The documentation can be generated with "ninja -C build doxygen". The
output will go to "doxygen/html" under the build directory.
Tanu Kaskinen [Mon, 10 Aug 2020 16:38:07 +0000 (19:38 +0300)]
build-sys: Configure doxygen.conf.in a bit differently
This change prepares for adding a doxygen target to the Meson build
system. The DOXYGEN_OUTPUT_DIRECTORY substitution variable is needed so
that the output will go to the build directory. I also replaced @srcdir@
with @top_srcdir@. I think it looks cleaner, since the ".." parent
directory traversal is avoided. It also happened to make writing the
Meson rules easier.
Sanchayan Maity [Tue, 28 Jul 2020 08:41:05 +0000 (14:11 +0530)]
modules: rtp-gstreamer: Fix RTP sound lag
In the current scenario of reading samples from the appsink, it is
observed that we do not actually read all the data available in the
appsink to read. This results in a choppy sound or heard as gaps in
the playback.
The underlying reason for this happening is as follows. Let's say
the appsink new sample callback is called 2-3 times, but, with the
underlying fdsem post machinery when pa_rtp_recv eventually gets
called, there would be those 2-3 samples to read. However, we were
only reading one sample in the current implementation.
Fix this by reading all samples from the appsink in a loop, coalescing
them and then writing to the memchunk.
Fixes: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/issues/889
Signed-off-by: Sanchayan Maity <sanchayan@asymptotic.io>
Kai-Heng Feng [Thu, 6 Aug 2020 09:17:27 +0000 (17:17 +0800)]
module-alsa-card: Set a minimum profile priority if it's not set
If the profile is generated from UCM, the priority won't be set so it
stays as 0.
Assume a card has two available profiles, when the selected one becomes
unavailable, module-switch-on-port-available's find_best_profile()
should pick the next available one. However, since the priority is 0,
the "off" profile was chosen instead of the available one.
So let's set the priority to 1 to make profile that is available has
higher priority than "off" profile.
Rosen Penev [Thu, 6 Aug 2020 01:32:03 +0000 (18:32 -0700)]
raop-crypto: add missing header
Fixes compilation without deprecated OpenSSL APIs.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
Rosen Penev [Thu, 6 Aug 2020 01:38:19 +0000 (18:38 -0700)]
modules: fix wrong formats under 32-bit
Signed-off-by: Rosen Penev <rosenp@gmail.com>
Jan Alexander Steffens (heftig) [Sun, 2 Aug 2020 15:43:03 +0000 (17:43 +0200)]
build: Make alsadatadir configurable
Pipewire has started shipping copies of PulseAudio's ALSA card profiles.
It would be useful if both projects could share the same profiles and
this patch is a step toward that.