Commit graph

11339 commits

Author SHA1 Message Date
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
Wim Taymans
632f532036 audioconvert: don't use -Ofast on alpha
I can crash when using denormalized floats.

Fixes #3489
2023-09-07 17:44:30 +02:00
Wim Taymans
6eb7eb7df2 modules: fix page ref 2023-09-07 16:30:46 +02:00
Wim Taymans
0da572474f modules: forward tag param 2023-09-07 15:54:28 +02:00
Wim Taymans
ebeae802ad audioconvert: improve tag and latency handling
Don't just forward the tag and latency events to the follower but let
the audioconvert aggregate and emit the updated tag/latency event
that is then configured on the follower.

When using the DSP mode of the audioconvert, this results in an
accumulated latency/tag from all the DSP ports instead of just
the last DSP port param update.

Put properties with media. prefix in tags in pw-cat.
2023-09-07 15:27:21 +02:00
Wim Taymans
c5f188784d impl-node: make sure we always clear params
Always first clear the params before we start enumerating new ones.
Otherwise we only clear them when we see the first result and there
might not be a result.
2023-09-07 14:18:04 +02:00
Wim Taymans
7c7dea890b alsa: redirect dict debug to log 2023-09-07 11:57:43 +02:00
Barnabás Pőcze
3bbccccd05 spa: v4l2: use a separate watch for each device
Instead of watching /dev, use a separate watch for each device.
This is supposed to achieve the same result as the now reverted
88f0dbd6fc ("v4l2: don't set inotify on /dev"):

  Doing inotify on /dev is not a good idea because we will be woken up by
  a lot of unrelated events.

  There is a report of a performance regression on some IO benchmark
  because of lock contention within the fsnotify subsystem due to this.

  Instead, just watch for attribute changes on the /dev/videoX files
  directly. We are only interested in attribute changes, udev should
  notify us when the file is added or removed.

Fixes #3439
2023-09-07 10:17:29 +02:00
Barnabás Pőcze
53ce1ee576 Revert "v4l2: don't set inotify on /dev"
This reverts commit 88f0dbd6fc.
2023-09-07 10:12:35 +02:00
Barnabás Pőcze
1110dbb7c1 Revert "v4l2: handle inotify errors"
This reverts commit 07b8954dc8.
2023-09-07 10:12:30 +02:00
Wim Taymans
d7f7fd258d pw-cat: set default properties after setup
So that we can still set the MEDIA_NAME from the artist/title.
2023-09-07 10:05:15 +02:00
Wim Taymans
805fbd0b34 meson: remove -ffast-math
It can cause crashes in some cases and does not seem to cause much
performance loss on x86.

Fixes #3489
2023-09-06 21:32:48 +02:00
Arun Raghavan
c842ef7071 aec-webrtc: Bump to webrtc-audio-processing-1
Upstream updated drops beamforming, adds a new gain controller and
includes a bunch of updates to the AEC engine (internally AEC3).
2023-09-06 09:31:06 +00:00
Jonas Holmberg
be943ca9db context: scan peers in both directions
Don't stop scanning peers after trying one direction. Try the other
direction too, just like with link groups.

See a821027fb8.
2023-09-06 09:29:33 +00:00
Michael Tretter
9b29bcd4e8 conf: set description for test nodes
`wpctl status` shows the description of device nodes. Therefore, the
videotestsrc and audiotestsrc are listed as "(null)" if the example
configuration of the sources is used.

Set the description in the example for how to configure the audiotestsrc
and the videotestsrc.
2023-09-04 15:46:05 +02:00
Jonas Holmberg
00ca590ff6 node-driver, null-audio-sink: Fix EAGAIN check
spa_system_timerfd_read() returns -EAGAIN.
2023-09-04 13:24:30 +02:00
Carlos Rafael Giani
8e6d070148 alsa-compress-offload: Add device object and udev based autodetection
As part of this, in alsa-udev.c, certain structures and variables referred
to as "device" are renamed to "card". Otherwise, there is ambiguity, since
"device" can mean a udev device, an SPA device, a compress-offload device,
a PCM device etc.

Also, replace "card id" with "card number" to emphasize that these integers
are not actually SPA object IDs.
2023-09-02 08:28:22 +00:00
Carlos Rafael Giani
ae4bff78a3 alsa-pcm-device: Minor logging improvements 2023-09-02 08:28:22 +00:00
Carlos Rafael Giani
61518e71fc alsa: Rename spa_alsa_device_factory to spa_alsa_pcm_device_factory
This makes it clear that this is specifically a factory for PCM nodes.
2023-09-02 08:28:22 +00:00
Carlos Rafael Giani
1e3a39a76e spa: Add node.description key 2023-09-02 08:28:22 +00:00
Dmitry Sharshakov
18b0fe1e05 module-filter-chain: don't use i for single filename
While this shouldn't be broken, it's illogical
2023-09-01 19:30:07 +00:00
Boud Roukema
ffff61e869 Clarify in man page that pipewire-pulse runs its own pipewire process
Prior to this commit, the man page for pipewire-pulse did not
make it clear that although pipewire-pulse is "integrated"
in a general sense with the pipewire system, it runs its own
pipewire process, that is, in some sense, independent. For
example, restarting the pipewire service does not restart
the pipewire-pulse service.

The aim of this commit is to improve people's understanding of the
relation between pipewire-pulse and pipewire in the most obvious
place where they would expect to find it.
2023-09-01 08:06:43 +00:00
Wim Taymans
ccc591ae0f alsa: use target_rate from the position
We need to use the target_rate of the clock in the position io area to
get the next rate of the graph.
2023-09-01 10:02:28 +02:00
Wim Taymans
6fb53fc9f1 alsa: round to next power of 2 for max period_size
Prefer to make the period_size bigger rather than smaller because of
rate conversion.
2023-09-01 09:54:58 +02:00