Tanu Kaskinen [Sun, 5 Jan 2020 07:31:07 +0000 (09:31 +0200)]
virtual-surround-sink: Use correct sample spec with memblockq
The memblockq stores data in the virtual sink format, not in the master
sink format. The wrong sample spec caused a crash when the virtual sink
rendered data whose length was not divisible by the sink input frame
size.
Fixes: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/issues/786
Tanu Kaskinen [Sat, 4 Jan 2020 09:39:08 +0000 (11:39 +0200)]
virtual-source: Don't process the rewind during requesting it
The request_rewind() callback of the uplink sink called
pa_sink_process_rewind(), which is not allowed. Things are supposed to
happen so that first a rewind is requested, and then during the next
rtpoll loop the sink will process the request. Calling
pa_sink_process_rewind() during the request phase caused a crash.
Having a request_rewind() callback is completely unnecessary, because
it's only useful for forwarding the request to a downstream sink. In
this case there is no downstream sink.
I also set max_rewind to 0, because the sink doesn't support rewinding.
Fixes: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/issues/775
Ben Buchwald [Tue, 18 Dec 2018 21:40:59 +0000 (16:40 -0500)]
module-jackdbus-detect: Separate sink/source channels arguments
If a channels argument is passed module-jackdbus-detect, it is passed to both
module-jack-sink and module-jack-source when those are started. This is a
problem if you want a different number of input channels from output channels.
In particular, if you want more of one than you physically have of the other,
it will fail. This commit adds separate source_channels and sink_channels
arguments to be able to specify the channels arguments to module-jack-source
and module-jack-sink separately. The combined channels argument is kept for
backwards compatibility and will be used as a default for source_channels and
sink_channels if either of them is omitted.
Ben Buchwald [Tue, 18 Dec 2018 22:12:30 +0000 (17:12 -0500)]
module-jackdbus-detect: Allow omitting channels argument
module-jackdbus-detect documents the channels argument as optional and "if
omitted, the sink wil use the number of physical output port and the source
will use the number of physical input ports registered in the JACK server."
However, although it would correctly omit the channels argument to
module-jack-sink and module-jack-source if its channel argument was omitted,
its argument validation was broken to consider omitting channels an error.
This commit properly validates the channels argument so omitting it is
accepted.
Pali Rohár [Fri, 21 Jun 2019 18:36:09 +0000 (20:36 +0200)]
bluetooth: Print SO_TIMESTAMP warning for SCO source only once
Pali Rohár [Sat, 4 May 2019 06:54:29 +0000 (08:54 +0200)]
bluetooth: Implement reading SO_TIMESTAMP for A2DP source
Tanu Kaskinen [Fri, 27 Dec 2019 09:10:54 +0000 (11:10 +0200)]
switch-on-connect: Blacklist HDMI devices by default
As the comment says, switching to HDMI automatically often causes
problems. Commit
bae8c16bfadb43c596b03f9c7ff7c9e9f1709b76
("switch-on-connect: Do not ignore HDMI sinks") enabled switching to
HDMI earlier. It was known already then that HDMI monitors don't
necessarily have speakers on them, but I accepted the patch on the
basis that module-switch-on-connect acts only if the card profile is
switched to HDMI, so if switching to HDMI is wrong, then already the
profile switch should cause problems. I didn't think of the case where
the default sink is on some other card, in which case switching the
profile on the HDMI card doesn't cause problems by itself.
I don't want to revert
bae8c16bfa, because João needs to be able to
configure their systems to automatically switch to HDMI. Instead, this
patch utilizes the new blacklisting feature in module-switch-on-connect
to blacklist HDMI sinks by default. Switching to HDMI can be enabled by
setting the blacklist modarg to an empty string or something that
doesn't match HDMI sinks.
Fixes: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/issues/749
Tanu Kaskinen [Fri, 27 Dec 2019 05:33:52 +0000 (07:33 +0200)]
core-util: Handle zero-length volume string
Without checking for zero we end up accessing memory outside the str
buffer: str[len - 1].
Fixes: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/issues/768
Jaroslav Kysela [Tue, 10 Dec 2019 11:34:19 +0000 (12:34 +0100)]
alsa-ucm: allow to set profile priority from UCM value
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Sun, 8 Dec 2019 22:17:32 +0000 (23:17 +0100)]
alsa-mixer: improve check for the empty path set for sink/source
The unused mixer instances are created without this code.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Sun, 8 Dec 2019 21:48:45 +0000 (22:48 +0100)]
alsa-mixer: do the quick card number lookup to save mixer instances
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Sat, 7 Dec 2019 22:22:33 +0000 (23:22 +0100)]
alsa-ucm: add support for HDMI ELD
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Sat, 7 Dec 2019 19:39:21 +0000 (20:39 +0100)]
alsa: rewrite mixer open/close, cache mixer accesses in probe
The ALSA mixer can be opened multiple times (especially for UCM
in the probe). This adds a simple mixer cache to prevent
multiple open calls.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Laurent Bigonville [Thu, 7 Mar 2019 10:36:02 +0000 (11:36 +0100)]
alsa-mixer: Set the intended-role of Steelseries Arctis 5/7 headset as phone
Fixes: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/issues/640
Laurent Bigonville [Thu, 7 Mar 2019 10:35:30 +0000 (11:35 +0100)]
alsa-mixer: Add the ability to pass the intended-role to the mapping
https://gitlab.freedesktop.org/pulseaudio/pulseaudio/issues/640
ckdo [Thu, 15 Aug 2019 06:14:42 +0000 (08:14 +0200)]
raop: Add autoreconnect feature
This patch adds the autoreconnect feature to the raop module.
This is mainly to be used in a server context, but can be used
also in a desktop usage context.
With autoreconnect feature, the raop module behaves like this:
- At initialisation or in case of the RTSP TCP connection lost, it
tries to reconnect every 5 seconds
- In case of any fatal error, it tries to reconnect every 5 seconds
- In UDP mode, if no timing packets received anymore for a long time,
RTSP connection is closed, then it tries to reconnect..
- After reconnection, once RTSP session has been established again,
playing is resumed automatically.
- When the connection is not established yet (or loss), the sink
behaves like a null sink. In the source code I called it "autonull",
even if autonull is set to autoreconnect param value, it could be
split into two different params.
ckdo [Tue, 29 Oct 2019 07:55:02 +0000 (08:55 +0100)]
raop: Code clarification : Only free the I/O thread when everything is initialized
ckdo [Tue, 29 Oct 2019 07:52:25 +0000 (08:52 +0100)]
raop: Code clarification : Detect raop_client recording state in a proper way
ckdo [Thu, 24 Oct 2019 14:07:20 +0000 (16:07 +0200)]
raop: Fix callback call in raop client after auth : only call once everything is freed
ckdo [Thu, 24 Oct 2019 13:09:23 +0000 (15:09 +0200)]
raop: Fix rewinding handling : process just after request received
Tanu Kaskinen [Sat, 21 Dec 2019 07:58:57 +0000 (09:58 +0200)]
stream: clarify the meaning of NULL device
The old wording could be understood so that the default sink/source
would always be used, but sometimes a policy module does a different
decision (for example module-stream-restore).
Related: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/issues/767
Peter Meerwald [Wed, 20 May 2015 15:03:52 +0000 (17:03 +0200)]
macro: Move PA_LIKELY()/PA_UNLIKELY(), PA_CLAMP()/PA_CLAMP_UNLIKELY() to pulse/gccmacro.h
PA_CLAMP_VOLUME() in pulse/volume.h makes use of PA_CLAMP_UNLIKELY()
see https://bugs.freedesktop.org/show_bug.cgi?id=89515
Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
Tanu Kaskinen [Fri, 20 Dec 2019 06:00:59 +0000 (08:00 +0200)]
gitlab: explain the container image tag better
Arun Raghavan [Thu, 21 Nov 2019 10:34:18 +0000 (16:04 +0530)]
gitlab: Make container updates automatic
RODRIGUEZ Christophe [Fri, 20 Dec 2019 19:49:09 +0000 (19:49 +0000)]
raop: Allow channel map module argument
ckdo [Sun, 29 Sep 2019 17:01:33 +0000 (19:01 +0200)]
raop: Fix soft volume not applied on initial volume
Jaroslav Kysela [Sat, 7 Dec 2019 16:54:04 +0000 (17:54 +0100)]
alsa-mixer: handle interface type (CARD,PCM) for mixer element lookups
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Sat, 7 Dec 2019 10:50:13 +0000 (11:50 +0100)]
alsa-ucm: use the proper mixer name for ucm pcm sink/source
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Fri, 6 Dec 2019 20:32:21 +0000 (21:32 +0100)]
alsa-ucm: get the mixer names from ucm, don't guess
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Fri, 6 Dec 2019 19:33:45 +0000 (20:33 +0100)]
alsa-ucm: add control and mixer device items
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Fri, 6 Dec 2019 15:05:07 +0000 (16:05 +0100)]
alsa-util: do not try to guess the mixer name from the PCM name
This is just invalid. It results to an error in almost all cases.
The hw:<number> scheme is sufficient to get the right card mixer.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Fri, 6 Dec 2019 14:43:04 +0000 (15:43 +0100)]
alsa-ucm: do not try to use UCM device name as jack name by default
Remove the implicit rule. It is perfectly ok to have the jack with
the same name for another I/O in the driver. Trust only the
value obtained from UCM.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Fri, 6 Dec 2019 20:51:47 +0000 (21:51 +0100)]
alsa-ucm: parse correctly the device values
The UCM library is used to get the fallback values from the verbs
and the defaults section. There is no reason to duplicate this code
inside application.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Hui Wang [Sat, 7 Dec 2019 05:04:39 +0000 (13:04 +0800)]
stream-restore: skip entries set on source from gnome-control-center
When users select an input device from gnome-control-center UI, the
source of this input device will be set to the
configured_default_source and the default_source, these actions are
expected, but after these actions, the gnome-control-center will call
extension_cb() to modify the entries in the database, let all stream
entries to bind the source users select, this is not correct since the
source is default_source now.
This is a temp fix for this issue, after gnome-control-center fixes
this problem, this patch should be reverted.
Signed-off-by: Hui Wang <hui.wang@canonical.com>
Hui Wang [Tue, 10 Dec 2019 08:26:34 +0000 (16:26 +0800)]
source: move the streams to the default_source when the source unlink
When a source is unlinked, all streams of this source are moved to
default_source, this action is implemented in the core rather than
modules now.
And after this change, the module-rescue-streams is not needed, but
for backward compatibility, we keep it as a dummy module.
Signed-off-by: Hui Wang <hui.wang@canonical.com>
Hui Wang [Sat, 7 Dec 2019 04:05:51 +0000 (12:05 +0800)]
device-port: moving streams since active_port on source changes status
When the active port of a source becomes unavailable, all streams from
that source should be moved to the default source.
When the active port of a source changes state from unavailable, all
streams that have their preferred_source set to this source should be
moved to this source.
Signed-off-by: Hui Wang <hui.wang@canonical.com>
Hui Wang [Sat, 7 Dec 2019 03:36:25 +0000 (11:36 +0800)]
source: move streams to new appeared sources if they prefer these sources
When a new source appears, all streams that have their
preferred_source set to the new source should be moved to the new
source.
Signed-off-by: Hui Wang <hui.wang@canonical.com>
Hui Wang [Sat, 7 Dec 2019 03:14:23 +0000 (11:14 +0800)]
core: move source-outputs conditionally when update default_source
When the default source changes, the streams from the old default
source should be moved to the new default source, unless the
preferred_source string is set to the old default source and the
active port of the old default source is not unavailable
Signed-off-by: Hui Wang <hui.wang@canonical.com>
Hui Wang [Sat, 7 Dec 2019 02:29:14 +0000 (10:29 +0800)]
source-output: clear the preferred_source if it is default_source
When the user moves a stream to the current default source, the
preferred_source should be set to NULL and module-stream-restore
should clear the routing for that stream in the stream database. From
that point on the stream will be always routed to the default source.
Signed-off-by: Hui Wang <hui.wang@canonical.com>
Hui Wang [Sat, 7 Dec 2019 02:13:28 +0000 (10:13 +0800)]
source-output: add a new API pa_source_output_set_preferred_source
If the source here is NULL, that means users want to clear the
preferred_source and move the source-output to the default_source,
otherwise set the preferred_source to the source->name and move the
source-output to the source. After that fire the source_output_change
event.
After adding this API, we can use this API to simplify the entry_apply
in the module-stream-restore.c.
Signed-off-by: Hui Wang <hui.wang@canonical.com>
Hui Wang [Fri, 6 Dec 2019 13:51:10 +0000 (21:51 +0800)]
source-output: change bool save_source to char *preferred_source
The finial objective is to store the preferred source name in the
source-output struct, and use module-stream-restore to save and
restore it.
This patch just replaces the save_source with preferred_source, and
tries to keep the original logic.
Signed-off-by: Hui Wang <hui.wang@canonical.com>
Kai-Heng Feng [Tue, 10 Dec 2019 08:16:18 +0000 (16:16 +0800)]
alsa: Skip resume PCM if hardware doesn't support it
Hardwares without SNDRV_PCM_INFO_RESUME capability, like USB Audio,
don't support snd_pcm_resume() when it's in suspended state.
Let's use snd_pcm_hw_params_can_resume() to check hardware's capability
before snd_pcm_resume() attempt. If it doesn't support resume, just go
to snd_pcm_drop() to leave suspended state directly.
Alexander Patrakov [Tue, 10 Dec 2019 06:50:59 +0000 (06:50 +0000)]
Split the enable-lfe-remixing setting into two
remixing-produce-lfe controls upmixing, and remixing-consume-lfe
controls downmixing. The motivation is that a user might want to
synthesize LFE while playing stereo audio on his/her 5.1 speakers,
but at the same time follow the industry recommendation to omit
the LFE channel when producting a stereo downmix (e.g. for headphones)
from 5.1 content. Or the other way round.
Fixes: #753.
Marc Ranolfi [Sat, 7 Dec 2019 22:06:28 +0000 (19:06 -0300)]
card-restore: prevent segfault caused by 'restore_bluetooth_profile=true'
This fixes an oversight introduced in
1f45082c which ultimately causes a segfault error in 'add_key_value()' from 'modargs.c'.
Closes #773.
Jaroslav Kysela [Wed, 4 Dec 2019 18:33:01 +0000 (19:33 +0100)]
alsa-ucm: validate access to PA_DEVICE_PORT_DATA()
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Wed, 4 Dec 2019 15:29:51 +0000 (16:29 +0100)]
alsa-ucm: add comments to ucm_get_mixer_id()
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Tue, 3 Dec 2019 14:13:48 +0000 (15:13 +0100)]
alsa-ucm: fix parsing for JackControl
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Tue, 3 Dec 2019 13:52:08 +0000 (14:52 +0100)]
alsa-ucm: split correctly JackHWMute device names
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Wed, 27 Nov 2019 10:34:49 +0000 (11:34 +0100)]
alsa-ucm: add support for master volume
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Tue, 26 Nov 2019 09:54:15 +0000 (10:54 +0100)]
alsa-ucm: use the correct mixer identifiers as first
The mixer identifiers should be used for snd_mixer_selem API.
Use them as first, then try to fallback to the raw control
identifiers.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaska Uimonen [Tue, 1 Oct 2019 15:34:17 +0000 (18:34 +0300)]
alsa-ucm: Fix volume control based on review
- sync mixer logic added
- mixer path creation, empty set in mapping creation, paths added in path creation
- path creation moved inside new port creation as it might be called twice otherwise
- some comments added
Arun Raghavan [Tue, 3 May 2016 12:52:10 +0000 (18:22 +0530)]
alsa-ucm: Support Playback/CaptureVolume
This allows us to support the PlaybackVolume and CaptureVolume commands
in UCM, specifying a mixer control to use for hardware volume control.
This only works with ports corresponding to single devices at the
moment, and doesn't support stacking controls for combination ports.
The configuration is intended to provide a control (like Headphone
Playback Volume), but we try to resolve to a simple mixer control
(Headphone) to reuse existing volume paths.
On the UCM side, this also requires that when disabling the device for
the port, the volume should be reset to some default.
When enabling/disabling combination devices, things are a bit iffy since
we have no way to reset the volume before switching to a combination
device. It would be nice to have a combination-transition-sequence
command in UCM to handle this and other similar cases.
PlaybackSwitch and CaptureSwitch are yet to be implemented.
Jaroslav Kysela [Tue, 26 Nov 2019 09:35:14 +0000 (10:35 +0100)]
alsa-mixer: improve alsa_id_decode() function
Accept those identifiers:
Speaker,1
'Speaker',1
"Speaker",1
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Sat, 23 Nov 2019 19:59:24 +0000 (20:59 +0100)]
alsa-mixer: handle the index for ALSA mixer element identifiers
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Sat, 23 Nov 2019 14:50:29 +0000 (15:50 +0100)]
alsa-ucm: add mixer IDs to ucm_items
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Sat, 23 Nov 2019 14:17:30 +0000 (15:17 +0100)]
alsa-ucm: use ucm2 name for the direct card index open
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Dave Chiluk [Fri, 9 Aug 2019 04:10:01 +0000 (23:10 -0500)]
alsa-mixer: add support for LucidSound LS31, and create usb-gaming-headset profile
Krzysztof Stasiowski [Tue, 18 Jun 2019 11:50:35 +0000 (11:50 +0000)]
alsa-mixer: Add support for SteelSeries Arctis 5 2019 headset
Signed-off-by: Dave Chiluk <chiluk@ubuntu.com>
Josh [Sat, 25 May 2019 09:35:01 +0000 (02:35 -0700)]
alsa-mixer: add support for SteelSeries Arctis Pro 2019 headset
Signed-off-by: Dave Chiluk <chiluk@ubuntu.com>
Hui Wang [Thu, 17 Jan 2019 03:21:45 +0000 (11:21 +0800)]
stream-restore: skip entries setting action from gnome-control-center
When users select an output device from gnome-control-center UI, the
sink of this output device will be set to the configured_default_sink
and the default_sink, these actions are expected, but after these
actions, the gnome-control-center will call extension_cb() to modify
the entries in the database, let all stream entries to bind the sink
users select, this is not correct since the sink is default_sink now.
This is a temp fix for this issue, after gnome-control-center fixes
this problem, this patch should be reverted.
Signed-off-by: Hui Wang <hui.wang@canonical.com>
Hui Wang [Wed, 16 Jan 2019 07:40:53 +0000 (15:40 +0800)]
sink: move the streams to the default_sink when the sink is unlinked
When a sink is unlinked, all streams of this sink are moved to
default_sink, this action is implemented in the core rather than
modules now.
Signed-off-by: Hui Wang <hui.wang@canonical.com>
Hui Wang [Wed, 16 Jan 2019 04:58:16 +0000 (12:58 +0800)]
device-port: moving streams due to changing the status of active_port
When the active port of a sink becomes unavailable, all streams from
that sink should be moved to the default sink.
When the active port of a sink changes state from unavailable, all
streams that have their preferred_sink set to this sink should be moved
to this sink.
Signed-off-by: Hui Wang <hui.wang@canonical.com>
Hui Wang [Wed, 16 Jan 2019 04:10:38 +0000 (12:10 +0800)]
sink: move streams to new appeared sinks if they prefer these sinks
When a new sink appears, all streams that have their preferred_sink
set to the new sink should be moved to the new sink.
Signed-off-by: Hui Wang <hui.wang@canonical.com>
Hui Wang [Wed, 16 Jan 2019 02:35:45 +0000 (10:35 +0800)]
core: move sink-inputs conditionally when update default_sink
When the default sink changes, the streams from the old default sink
should be moved to the new default sink, unless the preferred_sink
string is set to the old default sink and the active port of the old
default sink is not unavailable
Signed-off-by: Hui Wang <hui.wang@canonical.com>
Hui Wang [Wed, 16 Jan 2019 01:07:26 +0000 (09:07 +0800)]
sink-input: clear the preferred_sink if it is default_sink
When the user moves a stream to the current default sink, the
preferred_sink should be set to NULL and module-stream-restore
should clear the routing for that stream in the stream database. From
that point on the stream will be always routed to the default sink.
Signed-off-by: Hui Wang <hui.wang@canonical.com>
Hui Wang [Tue, 15 Jan 2019 11:28:23 +0000 (19:28 +0800)]
sink-input: add a new API pa_sink_input_set_preferred_sink
If the sink here is NULL, that means users want to clear the
preferred_sink and move the sink-input to the default_sink, otherwise
set the preferred_sink to the sink->name and move the sink-input to
the sink. After that fire the sink_input_change event.
After adding this API, we can use this API to simplify the entry_apply
in the module-stream-restore.c.
Signed-off-by: Hui Wang <hui.wang@canonical.com>
Hui Wang [Tue, 15 Jan 2019 04:12:52 +0000 (12:12 +0800)]
sink-input: change bool save_sink to char *preferred_sink
The finial objective is to store the preferred sink name in the
sink-input struct, and use module-stream-restore to save and restore
it.
This patch just replaces the save_sink with preferred_sink, and tries
to keep the original logic.
Signed-off-by: Hui Wang <hui.wang@canonical.com>
Arun Raghavan [Fri, 22 Nov 2019 15:46:33 +0000 (21:16 +0530)]
switch-on-connect: Fix warning on discarded const qualifier
pa_modargs_get_value() returns a const string -- instead of discarding
the const qualifier, let's just duplicate the string and free it
explicitly in the failure case.
Ryszard Knop [Sun, 17 Nov 2019 14:24:03 +0000 (15:24 +0100)]
switch-on-connect: Add blacklisting
Add a new module argument, blacklist, which is a regular expression.
If the sink/source name matches the provided blacklist regex, don't
automatically switch to it. By default, no devices are blacklisted.
Add a new function to check whenever a regex pattern is valid, plus
extra NULL asserts in pa_match.
muzena [Sun, 10 Nov 2019 13:24:26 +0000 (14:24 +0100)]
i18n: Update the Croatian translation
Wim Taymans [Thu, 12 Sep 2019 07:49:40 +0000 (09:49 +0200)]
X11: Add xauthority parameter
Add an xauthority parameter and use it in the startup script.
Apparently on some systems the X authentication cookie is not stored in
~/.Xauthority but in some dynamic location pointed to by the XAUTHORITY
environment variable. The environment variable therefore needs to be set
in the PulseAudio daemon environment in order to have access to the X
server from the PulseAudio daemon, but the variable is not necessarily
set when starting PulseAudio. For example, systemd starts PulseAudio
outside the X session. The start-pulseaudio-x11 script is run in the
X session, so it has the environment variable available, and can pass it
to the X modules, which then can set the variable in the daemon
environment.
RedHat bug: https://bugzilla.redhat.com/show_bug.cgi?id=1723065
Debian bug: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=593746
Based on patch by Alexander Kurtz <kurtz.alex@googlemail.com>
Tanu Kaskinen [Thu, 14 Nov 2019 17:56:39 +0000 (19:56 +0200)]
man: remove outdated information about real-time scheduling
The pulse-rt group doesn't exist any more, and rtkit exists to make it
safe to acquire real-time scheduling for regular users.
Vasilis Tsiligiannis [Mon, 18 Nov 2019 14:15:47 +0000 (16:15 +0200)]
start-pulseaudio-x11: Make 'plasma' version check shell portable
Currently, the version check snippet uses a 'bash' extension which
arithemtically evaluates variables prior to expansion. This approach
does not nesseceraly work on other shells which may complain with
'5: Illegal numer' error. Expand the arithmetic expression before
evaluation to avoid such an error.
Signed-off-by: Vasilis Tsiligiannis <acinonyx@openwrt.gr>
David Heidelberg [Tue, 12 Nov 2019 13:40:37 +0000 (14:40 +0100)]
meson: convert to install_headers
Instead of install_data use correct install_headers
Signed-off-by: David Heidelberg <david@ixit.cz>
David Heidelberg [Sat, 13 Apr 2019 17:08:28 +0000 (19:08 +0200)]
meson: convert post-install.sh to python
Inspired by: https://gitlab.gnome.org/GNOME/gnome-characters/commit/
36a2e4f8a7c42447f40a797005ddeae0255151d0#0cc1139e3347f573ae1feee5b73dbc8a8a21fcfa_0_14
Signed-off-by: David Heidelberg <david@ixit.cz>
Arun Raghavan [Fri, 5 Jul 2019 00:51:07 +0000 (06:21 +0530)]
rtp: Add some logging to know what backend is being used
Should make debugging any issues that come up easier.
Sebastian Dröge [Mon, 14 Mar 2016 17:17:03 +0000 (19:17 +0200)]
rtp: Properly timestamp buffers in the GStreamer sender pipeline
Otherwise default timestamping will happen, which might not be correct,
especially not after the stream was suspended for a while.
Sebastian Dröge [Mon, 14 Mar 2016 15:38:59 +0000 (17:38 +0200)]
rtp: Use udpsink instead of fdsink for the GStreamer RTP implementation
Sebastian Dröge [Wed, 2 Mar 2016 18:28:00 +0000 (20:28 +0200)]
rtp: Use yes/no in configure instead of 1/0
Arun Raghavan [Thu, 12 May 2016 13:56:55 +0000 (19:26 +0530)]
rtp: Add a GStreamer-based RTP implementation
This adds a GStreamer-based RTP implementation to replace our own. The
original implementation is retained for cases where it is not possible
to include GStreamer as a dependency.
The idea with this is to be able to start supporting more advanced RTP
features such as RTCP, non-PCM audio, and potentially synchronised
playback.
Signed-off-by: Arun Raghavan <arun@arunraghavan.net>
Arun Raghavan [Thu, 12 May 2016 12:35:14 +0000 (18:05 +0530)]
rtpoll: Separate out before/after/work callback userdata
It is possible that we might want to have a separate userdata to be used
for these callbacks, so let's split them out.
This is particularly needed when using an pa_rtpoll_item around pa_fdsem
since that uses its own before/after callback but will essentially have
whatever is using the fdsem set up the work callback appropriately (and
thus at least the work callback's userdata needs to be separated from
the before/after callback -- we might as well then just separate all
three).
Signed-off-by: Arun Raghavan <arun@arunraghavan.net>
Arun Raghavan [Thu, 12 May 2016 12:29:55 +0000 (17:59 +0530)]
rtp: Hide RTP implementation details from module-rtp-*
This moves RTP implementation-specific information out of
module-rtp-send/recv. This is basically done by making the
pa_rtp_context structure opaque from the perspective of these modules.
We can then potentially replace the underlying RTP implementation with
something else transparently.
One RTP detail that does "leak" is the RTP timestamp. We provide this to
module-rtp-recv so that it can perform rate adjustments to match the
sender rate.
Signed-off-by: Arun Raghavan <arun@arunraghavan.net>
Arun Raghavan [Thu, 12 May 2016 12:27:04 +0000 (17:57 +0530)]
rtp: Move MTU handling to the RTP implementation
module-rtp-send itself doesn't really need to handle this, the
implementation can keep track (and make sure sending happens in MTU
sized chunks).
Signed-off-by: Arun Raghavan <arun@arunraghavan.net>
Arun Raghavan [Thu, 12 May 2016 12:26:56 +0000 (17:56 +0530)]
rtp: Drop support for non-L16 media
There doesn't seem much value in supporting streaming U8/mulaw/alaw on
the network, and it's unlikely these get any testing. Makes more sense
to drop these formats and just convert to L16 if we're dealing with
source media in that format.
Signed-off-by: Arun Raghavan <arun@arunraghavan.net>
Arun Raghavan [Thu, 12 May 2016 12:26:51 +0000 (17:56 +0530)]
rtp: Don't use cookie for SSRC
Publishing the cookie on multicast seems to be a bad idea.
Signed-off-by: Arun Raghavan <arun@arunraghavan.net>
Arun Raghavan [Thu, 12 May 2016 12:26:43 +0000 (17:56 +0530)]
rtp: Make init return a value for success/failure
This will be used in the future when writing other RTP implementations
that can fail on init.
Signed-off-by: Arun Raghavan <arun@arunraghavan.net>
Timo Gurr [Thu, 7 Nov 2019 12:50:56 +0000 (12:50 +0000)]
meson: allow to disable installing completions
Daniil Kovalev [Sat, 2 Nov 2019 18:43:51 +0000 (21:43 +0300)]
Fix memory leak in context_free
In commit
f727cd9a `int error` member in `struct pa_context` was changed
to `pa_context_error *error`. The memory that is allocated with
`pa_xnew0` in src/pulse/context.c:142 is never freed, and it causes
a leak of 4 bytes. The leak can be easily detected with leak-sanitizer.
Rickie Schroeder [Wed, 16 Oct 2019 19:33:19 +0000 (19:33 +0000)]
start-pulseaudio-x11: fix KDE version check
Current check wasn't working in case when $DESKTOP_SESSION wasn't set
which happens when session is started without display manager like sddm.
Parsing "plasmashell -v" output should be more reliable and less hacky.
This also changes legacy backticks `...` to modern $(...) as recommended
by shellcheck:
https://github.com/koalaman/shellcheck/wiki/SC2006
Fixes: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/issues/751
ckdo [Sun, 20 Oct 2019 06:19:54 +0000 (08:19 +0200)]
rtp: Fix reverted test for INHIBIT_AUTO_SUSPEND_ONLY_WITH_NON_MONITOR_SOURCES
RTP Monitor sources were never suspended when
inhibit_auto_suspend=only_with_non_monitor_sources
Fixes: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/issues/735
Tanu Kaskinen [Sat, 2 Sep 2017 12:35:01 +0000 (15:35 +0300)]
alsa-mixer: recognize the "Speaker Jack" control
This control has been seen in the wild:
https://lists.freedesktop.org/archives/pulseaudio-discuss/2017-August/028595.html
(The pastebin link in that mail might not work anymore, but the paste
just shows that there's a Speaker Jack control).
Felipe Sateler [Fri, 25 Oct 2019 11:39:03 +0000 (08:39 -0300)]
qpaeq: use python3 instead of python 2
The script was already compatible, so lets just switch interpreter
Felipe Sateler [Fri, 25 Oct 2019 11:34:59 +0000 (08:34 -0300)]
qpaeq: Drop unused imports
Neither sip nor PyQt5 are used. From PyQt5 we only use the named imports just below
Peter Levine [Thu, 26 Sep 2019 07:24:40 +0000 (07:24 +0000)]
atomic: Explicitly cast void* to unsigned long
Rasmus Thomsen [Sun, 15 Sep 2019 12:22:49 +0000 (14:22 +0200)]
meson: link libintl if it's not provided by libc
This fixes the build on musl with external gettext
Tanu Kaskinen [Thu, 19 Sep 2019 07:50:58 +0000 (10:50 +0300)]
null-sink: allow clients to configure the supported formats
The set_formats() callback is already implemented, so the only thing
missing was the SET_FORMATS flag.
ckdo [Wed, 18 Sep 2019 01:53:42 +0000 (03:53 +0200)]
raop: Fix non working tcp mode
Tanu Kaskinen [Mon, 23 Sep 2019 04:48:48 +0000 (07:48 +0300)]
daemon-conf: disable flat-volumes by default
Almost all distributions patch the configuration to disable
flat-volumes, because users tend to find the concept confusing (and it
also causes nasty surprises when some application pushes the volume to
100%). Let's remove the need for patching and disable the feature by
default.
Fixes: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/issues/691
Tanu Kaskinen [Fri, 20 Sep 2019 14:09:40 +0000 (17:09 +0300)]
alsa-mixer-path-test: Hide unused functions when building with Meson
Silences these warnings:
[509/574] Compiling C object 'src/tests/a4ccf2d@@alsa-mixer-path-test@exe/alsa-mixer-path-test.c.o'.
../src/tests/alsa-mixer-path-test.c:24:20: warning: ‘load_makefile’ defined but not used [-Wunused-function]
static pa_strlist *load_makefile() {
^~~~~~~~~~~~~
../src/tests/alsa-mixer-path-test.c:17:20: warning: ‘get_default_paths_dir’ defined but not used [-Wunused-function]
static const char *get_default_paths_dir(void) {
^~~~~~~~~~~~~~~~~~~~~
Tanu Kaskinen [Fri, 20 Sep 2019 13:49:44 +0000 (16:49 +0300)]
Update NEWS
The release notes, on which the NEWS file is based on, weren't complete
at the time of release. Now the notes should be complete.