pipewire/spa/plugins
Michael Olbrich e808875d60 alsa: improve audio output to multiple devices
There are currently several issues when multiple alsa devices are
involved.

For alsa devices that are followers, all data is written via
impl_node_process(). Currently spa_alsa_write() is only called if a new
buffer was queued.
It can happen that all buffers are in the ready list (queued by previous
calls but not yet written because there was no free space in the kernel
ring buffer). In this case writing stalls indefinitely.
To fix this, also call spa_alsa_write() if no new buffer is queued but
there are still buffers in the ready list.

If the ready list of the primary device is not empty then only this
device is handled because spa_alsa_write() is called directly. The other
devices make no progress during this interval.
The clock drift calculation works by comparing the alsa delay with the
expected delay since the last wakeup. This only work if the alsa
ringbuffer was filled completly. If the ready list contains a partial
buffer then the ringbuffer is not filled and the timing calculation
during the next wakeup is incorrect.

To fix all this, remove the special case for the non-empty ready list
and just call spa_node_call_ready() every time.
2023-06-22 09:28:44 +00:00
..
aec aec-webrtc: support beamforming 2023-04-13 15:52:30 +02:00
alsa alsa: improve audio output to multiple devices 2023-06-22 09:28:44 +00:00
audioconvert Revert "audioadapter: renegotiate when EnumFormat changes" 2023-06-22 10:01:02 +02:00
audiomixer mixer: increase mixer ports from 128 to 512 2023-04-21 15:58:38 +02:00
audiotestsrc node: update the duration/rate from the target 2023-03-23 18:39:27 +01:00
avb spa: reuse code to clear the timers 2023-03-24 17:55:15 +01:00
bluez5 bluez5: do not delay transport release if it is not active 2023-05-26 07:17:51 +00:00
control mixer: add some more debug 2023-06-08 16:35:08 +02:00
ffmpeg treewide: use SPDX tags to specify copyright information 2023-02-16 10:54:48 +00:00
jack jack: improve jack-sink and jack-source 2023-04-25 20:17:11 +02:00
libcamera camera: work around target_ mishandling 2023-03-27 09:59:21 +02:00
support node-driver: allow specifying both PHC and ID 2023-06-20 06:51:30 +00:00
test treewide: use SPDX tags to specify copyright information 2023-02-16 10:54:48 +00:00
v4l2 v4l2: add support fot G_CTRL 2023-04-18 16:27:55 +02:00
videoconvert treewide: use SPDX tags to specify copyright information 2023-02-16 10:54:48 +00:00
videotestsrc treewide: use SPDX tags to specify copyright information 2023-02-16 10:54:48 +00:00
volume volume: Fix inverted check for buffer validity 2023-03-31 08:19:07 +00:00
vulkan treewide: use SPDX tags to specify copyright information 2023-02-16 10:54:48 +00:00
meson.build Disable alsa plugin on !Linux platforms. 2023-03-15 16:53:41 +00:00