Wim Taymans
ee1bb2362d
alsa: sync followers from the driver
...
Keep track or the follower state and do the sync from the driver
wakeup.
This improves sync between devices because the sync no longer
depends on when the node was woken up in the graph and scheduled. We
would have been able to handle this difference by using the htimestamp
but that doesn't seen to work reliably on some hardware.
This is also essential for the interrupt based scheduling.
2023-09-18 14:53:15 +02:00
Wim Taymans
c51f6ccbd7
alsa: rework the state sync code
...
Make one function to sync the state with the realtime thread.
2023-09-18 14:46:56 +02:00
Wim Taymans
86f1d14b72
alsa: keep states in global list
2023-09-18 09:40:52 +02:00
Wim Taymans
c915f2a6fd
modules: add quotes around hw:0
...
Because of the : it needs to be surrounded with quotes to be parsed
as a string.
Fixes #3515
2023-09-16 19:39:51 +02:00
Barnabás Pőcze
06ba425378
treewide: use spa_assert_not_reached() instead of assert(false)
2023-09-16 17:50:25 +02:00
Barnabás Pőcze
436787d6ba
treewide: try to use const char * for string literals
2023-09-16 17:47:35 +02:00
Barnabás Pőcze
fc72208fa0
spa: alsa: mark spa_alsa_silence() static
2023-09-16 17:38:51 +02:00
Barnabás Pőcze
74419e27b4
spa: utils: cleanup: only have one version of spa_clear_ptr()
...
Depend on `spa_steal_ptr()` for checking if `ptr` is actually a pointer or not.
2023-09-16 17:21:54 +02:00
Barnabás Pőcze
ea159e7af0
spa: utils: cleanup: remove unnecessary cast
...
`spa_exchange()` already returns a value with the type of the first
input, so there is no need to cast again.
2023-09-16 17:21:08 +02:00
Barnabás Pőcze
3293e6a8ff
pipewire: module-profiler: mark event vtable const
2023-09-16 17:15:32 +02:00
Barnabás Pőcze
7191ccb0b8
spa: utils: cleanup: fix GCC version check
...
GCC 10 seems to support dereferencing incomplete types in `__typeof__`.
2023-09-16 17:10:07 +02:00
Barnabás Pőcze
3fec887a5f
spa: utils: spa_exchange(): try to evaluate argument only once
2023-09-16 17:06:01 +02:00
Wim Taymans
71808454e7
alsa: add and remove sources from data_loop
...
Add and remove timers and pollfd from the data-loop.
Rework setup_sources.
Start IRQ playback after adding pollfd to make sure we get all events.
2023-09-15 16:31:55 +02:00
Wim Taymans
c6f9cfa220
alsa: IRQ based scheduling wakes up after finishing 1 period
...
So we need to keep 2 periods of silence to keep 1 period of data inside
the ringbuffer when starting the graph.
2023-09-15 15:36:56 +02:00
Wim Taymans
eac74f6ece
alsa: fix warning when compiling without FASTPATH
2023-09-15 15:35:52 +02:00
Wim Taymans
c8db951d61
alsa: some cleanups
...
Make sure we recycle an old buffer even if we don't have a new buffer to
push.
2023-09-15 13:05:31 +02:00
Wim Taymans
bf5b526464
alsa: small cleanups
2023-09-15 12:40:30 +02:00
Wim Taymans
c6745ed0d0
alsa: refactor read and write functions
...
Separate the sync logic from the read/write functions so that we can use
it in the wakeup logic as well.
2023-09-15 12:21:18 +02:00
Wim Taymans
cc1d980f0a
audioconvert: silence some debug
2023-09-15 12:18:20 +02:00
Wim Taymans
bb10a7cb98
jack: setting the Latency to NULL clears the latency
2023-09-15 11:37:58 +02:00
Wim Taymans
27f6ef119f
context: add some more debug
...
Also debug the currently configured graph target values.
2023-09-15 11:17:40 +02:00
Wim Taymans
e975cb16d3
alsa: add spa_alsa_prepare()
...
Split the spa_alsa_start() in a prepare and start function. Prepare
will then also reset state and prefill the playback buffer with silence.
This makes it possible to reuse the prepare function in recover().
2023-09-15 11:15:26 +02:00
Wim Taymans
a5d684af8a
alsa: make sure we recalculate config when samplerate changes
...
The threshold depends on the samplerate and even when the graph rate or
quantum didn't change, the driver could be opened in a different
samplerate, which would cause the timeouts to be wrong and cause xruns.
2023-09-15 11:14:10 +02:00
Jan Alexander Steffens (heftig)
fa7cd96b6e
pipewire-jack: Disable LD_LIBRARY_PATH when libjack is in libdir
...
This avoids prepending /usr/lib to the LD_LIBRARY_PATH, which supersedes
DT_RUNPATH and can cause library confusion.
2023-09-15 08:49:36 +00:00
Jan Alexander Steffens (heftig)
43db03909b
ci: ShellCheck preprocessed scripts separately
...
Change the shellcheck job so that we configure the build and check the
preprocessed versions of the scripts, not the bare ones, which might not
be syntactically valid yet.
2023-09-15 08:49:36 +00:00
Wim Taymans
99cf172bc7
alsa: improve debug
...
Use a new state variable to store the device name and direction so that
we consistently can debug those.
2023-09-15 09:09:04 +02:00
Wim Taymans
3c5da11706
alsa: set_timeout is only called when tsched is enabled.
...
We don't need to do an extra check.
2023-09-14 17:16:44 +02:00
Wim Taymans
4ffa7860bc
alsa: update the clock name when we can
...
Update the clock name as soon as we get a io_clock. This way we can use
it to compare the clock name against the driver right away.
2023-09-14 17:15:06 +02:00
Wim Taymans
354ee6fd96
alsa: with IRQ we can use avail_update()
...
It does not need an ioctl because the driver already updated the info
before waking us up from poll.
2023-09-14 16:16:48 +02:00
Wim Taymans
1f1c308c97
aec: support both webrtc versions
...
Version 1 does not seem to be packaged in many distros and so they would
need to revert the patch or disable AEC. Enabling both allows for things
to move forwards gracefully.
2023-09-14 15:35:40 +02:00
Wim Taymans
a4f3b78dff
conf: enable jackdbus support by default
...
Become a JACK client as soon as jackdbus is started. This is probably
a good thing to do by default.
2023-09-14 13:24:51 +02:00
Wim Taymans
846e732458
pulse-server: remove pending_streams list
...
We can simply use the pending flag and merge the handling of the new
stream with the stream move logic.
2023-09-14 12:08:48 +02:00
Wim Taymans
35cca08d2b
0.3.80
2023-09-14 11:06:20 +02:00
Wim Taymans
13caae49b5
pulse-server: avoid emitting changes for unused params
...
Don't emit change events when latency or tag change, for example.
2023-09-14 11:03:39 +02:00
Pauli Virtanen
2804a8f1f6
bluez5: minor BAP broadcast fixups
...
Don't try to deref NULL if adapter not found. Disable bcast reconnect in
simpler way. Use adapter name as device name. Style fixes.
2023-09-13 15:51:50 +00:00
Pauli Virtanen
186b730c9c
bluez5: fix device supported codec checks
...
Make supported codec checks to use profiles, not "is-a-sink" flag, to
determine which codecs can be used.
Fixes bluez5-device checking only source profiles, even when the local
device is only a sink.
2023-09-13 15:51:50 +00:00
Wim Taymans
6abc6e6693
jack: mark client active a little earlier
...
So that we get all the notifications queued and emitted when we complete
the activation.
2023-09-13 17:48:28 +02:00
Wim Taymans
3c812f672b
pulse-server: add an option to check module arguments
...
Add a list of valid keys to the module info. When set, check if the
module arguments only contain the allowed keys and give an error
otherwise.
2023-09-13 12:26:57 +02:00
Wim Taymans
b094057b0b
handle NULL latency param
...
Fixes #3504
2023-09-13 11:13:48 +02:00
Wim Taymans
56786aedc4
jack: safely update the mixer io areas
...
The buffer io area is used to enable/disable a port and should be
synchronized with the processing loop. Use invoke to safely update the
mixer io area.
Keep track of the number of mixers on a port and clear the global mixer
buffer io when there are none. Check and use the global mixer io when
processing output to avoid using an inactive output without buffers and
crashing.
Fixes #3506
2023-09-13 10:59:35 +02:00
Wim Taymans
18f29bd840
jack: make sure we emit port registration events
...
When we activate, emit the port registration events of our own port,
even when they were suppressed (and marked registered) when we created
them. This is what JACK2 does as well.
2023-09-12 15:54:34 +02:00
Wim Taymans
42b23bddc3
jack: always emit buffer frames after activate
...
This seems to be what JACK2 does as well.
2023-09-12 15:54:34 +02:00
Wim Taymans
c8c2f5902c
jack: emit connect unregister before port unregister
...
When we deactivate a client, first emit the connection unregister
and then the port unregister callbacks.
2023-09-12 15:54:34 +02:00
Simon Ruderich
615f950c2f
pw-top: add missing options to man page and improve --help output
2023-09-11 18:50:24 +00:00
Stefan Ursella
cacdcc1b62
pw-mon: add filter param to hide props and/or params
2023-09-11 17:42:14 +00:00
Wim Taymans
69d431acd4
node: clarify port_set_io and SPA_IO_Buffers
...
port_set_io with SPA_IO_Buffer can be used to enable/disable a port
when the node is running and so the node should make sure the io update
is synchronized with the processing loop.
Use spa_loop_invoke to make sure the mixers handle the port_io updates
correctly.
Setting buffers or a format also needs the port to be disabled so add
some checks for this in the mixers.
2023-09-11 11:23:25 +02:00
Wim Taymans
9c834427c6
alsa: small cleanup
...
We always try to write when we have data so we can make this code path
common.
2023-09-08 12:19:52 +02:00
Wim Taymans
00a82017a2
stream: fix datatyp on copied object
...
First copy the object and then modify it to avoid changing the user
provided param.
2023-09-08 12:19:05 +02:00
Wim Taymans
016d15e598
ratelimit: missed -> suppressed
...
To avoid confusing with missed samples.
2023-09-08 12:18:23 +02:00
Wim Taymans
1837654a4b
impl-port: only log changes
2023-09-07 17:46:34 +02:00