Commit graph

6281 commits

Author SHA1 Message Date
Barnabás Pőcze
f82f215bf7 pipewire: modules: add missing "config.h" include in "flatpak-utils.h" 2023-07-03 19:40:25 +02:00
Barnabás Pőcze
54a9b30ed3 pipewire: proxy: remove pw_proxy_get_core()
The above function is not declared in any header files,
nor used by anything, so remove it.
2023-07-03 19:40:25 +02:00
Barnabás Pőcze
aed06dff67 pipewire: thread: include "private.h"
So that the definition of `pw_thread_fill_attr()` is
checked against the declaration.
2023-07-03 19:40:25 +02:00
Barnabás Pőcze
3bb32fb592 pipewire: pw_context_find_export_type(): remove redundant decl
This function is already declared in "context.h".
2023-07-03 19:40:25 +02:00
Barnabás Pőcze
e917dc65a0 pipewire: include "i18n.h"
So that definitions are checked against the declarations.
2023-07-03 19:40:25 +02:00
Barnabás Pőcze
5deb6ccede pipewire: conf: add missing include guard 2023-07-03 19:40:25 +02:00
Wim Taymans
c34a987076 pulse-server: add option to disable fix_ flags
Document the pulse.fix properties.
Add an option to disable handling of the FIX flags when the pulse.fix.
property is set to an invalid value/0.

See #3317
2023-07-03 16:39:32 +02:00
Wim Taymans
4bb85ef6c9 module-rtp: don't use sap port as src port
We bind to the src addr (the interface addr) and so we need a new unused port.
2023-07-03 12:35:36 +02:00
Wim Taymans
eaaa0cd99e modules: improve some docs 2023-06-30 21:44:49 +02:00
Wim Taymans
c13696aca1 filter-chain: simplify biquads 2023-06-30 17:49:29 +02:00
Wim Taymans
d5d8ebeaac pw-cat: only override properties when not already set
This makes it possible to override any of the properties with -P such as
the graph rate.
2023-06-30 16:24:13 +02:00
Wim Taymans
f612ffe8e4 pulse-server: use the fixed rate for graph rate
We need to use the format rate for calculating the buffer size and
latency but the fixated rate for the graph rate.

See #3317
2023-06-30 12:34:25 +02:00
Wim Taymans
91ac3acf3d pulse-server: debug the fixed format/rate/channel 2023-06-30 12:34:25 +02:00
Barnabás Pőcze
0e823d8a0f pipewire: core: static assert member order requirement
The pw_proxy member of pw_core must be the first because the
pw_core object is freed via pw_proxy_destroy() -> pw_proxy_unref().
2023-06-29 23:57:49 +02:00
Barnabás Pőcze
4bec3b56d4 pipewire: pw_proxy_init(): take pointer to core
`pw_proxy::core` must be initialized for `pw_proxy_init()`
to succeed, so take it as a parameter instead of relying
on the caller to initialize that field beforehand.
2023-06-29 23:57:49 +02:00
Barnabás Pőcze
e299534929 pipewire: log: do not generate parentheses around variable decls
It causes "warning: unnecessary parentheses in declaration of ..."
warnings in C++.
2023-06-29 23:57:49 +02:00
Barnabás Pőcze
8847b537a4 pipewire: core: remove redundant member
`pw_core::core` was initialized to point to itself, it
wasn't changed, and nothing really used it. And the only
user already had a pointer to the core object. So remove it.
2023-06-29 23:57:49 +02:00
Barnabás Pőcze
2abd3432b8 pulse-server: module-combine-sink: remove redundant member
`module_combine_sink_data::info` member has not been used
since 782e0dfb1f, so remove it.
2023-06-29 23:57:48 +02:00
Barnabás Pőcze
2efccb3d01 pipewire: impl-metadata: replace open-coded vasprintf()
Simply use `vasprintf()` instead of manual `vsnprintf()` and `malloc()` calls.
2023-06-29 23:57:48 +02:00
Barnabás Pőcze
3506b7534c pipewire: parse_pw_debug_env(): split in place
There is no need to use `pw_split_strv()` since the string
is owned by the function, it can be split in place, so do that.
2023-06-29 23:57:48 +02:00
Barnabás Pőcze
656d8bbc72 pipewire: parse_pw_debug_env(): simplify empty string check 2023-06-29 23:57:48 +02:00
Wim Taymans
98f138dbe0 filter-chain: move sofa and lv2 to external modules
dlopen lv2 and sofa plugin modules instead of hardcoding them into the+
filter-chain. This also makes it possible to add more plugin module
types externally.
2023-06-29 14:04:40 +02:00
Wim Taymans
5d177acc53 meson: clean up echo-cancel sources 2023-06-29 12:12:10 +02:00
Wim Taymans
ab8e67e885 filter-chain: improve error reporting 2023-06-28 17:07:14 +02:00
Wim Taymans
b065899859 filter-chain: only reset rate when suspended
Otherwire we can continue with the graph configuration if the rates
still match.
2023-06-28 16:52:11 +02:00
Wim Taymans
f9efc63a04 pulse-server: make sure we have a card_name
Clients crash if the card name is NULL so make sure we generate
a backup name.
2023-06-28 16:18:44 +02:00
Wim Taymans
bddfc8c46e filter-chain: support notify to control links as well
If we can't find data ports to link, try to find notify/control ports
when making a link.

When applying the link, place the output of the notify as the control
data.
2023-06-28 15:15:07 +02:00
Wim Taymans
c671c46b87 module-loopback: recalc delay when starting
So that we can use the graph rate in case we are configured to follow
the graph rate.
2023-06-28 12:36:42 +02:00
Wim Taymans
e3a41b2c49 filter-chain: instantiate graph when starting
Don't instantiate the graph when negotiated but when starting. This
allows us to get to the target graph rate in case the format rate is
supposed to follow the graph rate.

See #2969
2023-06-28 12:36:19 +02:00
Wim Taymans
e03c3311eb filtet-chain: instatiate only once 2023-06-28 11:53:26 +02:00
Wim Taymans
b160a72018 stream: don't emit process when disconnecting
As part of the disconnect, we will flush out pending process calls. Make
sure we don't emit them because they are quite pointless.

Fixes #3314
2023-06-27 15:08:24 +02:00
Wim Taymans
4b32b1fef0 modules: add example filter 2023-06-27 14:02:38 +02:00
Wim Taymans
39165a8471 modules: add ASYNC flag
Add ASYNC flags for the streams that don't dequeue/queue in the realtime
process function so that an extra buffer is allocated.
2023-06-27 13:11:13 +02:00
Wim Taymans
1466982c60 stream: add ASYNC flag
Add ASYNC flag that sets SPA_NODE_FLAG_ASYNC.

This ensure we allocate at least 2 buffers. We need 2 buffers at least
because we don't dequeue/queue a buffer in the process function when
async and we run out of buffers if we have only 1 buffer.
2023-06-27 13:11:13 +02:00
Niklāvs Koļesņikovs
e4cc63a6dc src/modules/meson: ensure Opus libs were actually found, too
The old way fails, if a distro has the header but not the library,
which can happen on at least Gentoo with multilib deployments,
where the shared header is present but non-native libraries might not.

This could still fail, if a distro had some but not all libraries for
some architectures but hopefully no one did that. In that case, a compile
test would likely be required via cc.check_header() instead but let's try
the faster fix first.

Reported-by: Sam James <sam@gentoo.org>
Thanks-to: Barnabás Pőcze <pobrn@protonmail.com>
Thanks-to: Xavier Claessens <xavier.claessens@collabora.com>
Signed-off-by: Niklāvs Koļesņikovs <89q1r14hd@relay.firefox.com>
2023-06-26 15:21:49 +00:00
Wim Taymans
4df753d0d7 context: avoid segfault when no fallback driver
In some cases, there might not be a fallback driver. Handle this without
segfaulting.
2023-06-26 16:11:33 +02:00
Wim Taymans
0156d63109 audioconvert: don't negottiate rate when resample is disabled
This will leave the negotiated rate 0 when parsed and instructs the
stream to follow the graph rate.
2023-06-26 11:23:29 +02:00
Wim Taymans
5a30d82d7e impl-port: avoid doing port calls when destroying
When we are destroying a port, don't try to clear io and format, the
port is already gone.
2023-06-23 15:05:39 +02:00
Wim Taymans
5578afa7de stream: don't call process when we have no buffers 2023-06-23 11:43:05 +02:00
Wim Taymans
0fb99d4421 impl-port: clear port Format when no mixers
Bring the state to CONFIGURE by actually setting the FORMAT to NULL when
we remove the last mixer. Otherwise the buffers and formats are still on
the port and we might try to use them while negotiating a new format
later.

Avoids some crashes.
2023-06-23 11:13:45 +02:00
Wim Taymans
b464d2145d pulse-server: don't override initial volume/mute
When we are asked to apply the initial volume/mute, don't overwrite it
with the default volume.

Fixes #3306
2023-06-23 09:51:09 +02:00
Wim Taymans
20434e8669 module-jack: init latency correctly 2023-06-22 17:57:49 +02:00
Wim Taymans
34077187db impl-port: renegotiate format after a port was unused
Bring the port to the CONFIGURE state after all the mixer ports are
removed.

Fixes #3266
2023-06-22 15:37:09 +02:00
Wim Taymans
1ce94628ee client-node: rework mix_info
Use the port_set_mix_info to add and remove mix info information to the
client.

Previously it was impossible to clean up mix_info.

With this change we can also simplify the jack peer port detection.
Because the mix info is always sent before the link appears we can
simply look up the info when the link appears.
2023-06-22 11:59:39 +02:00
Wim Taymans
ad5ac964af module: disable resample when following graph rate
When we don't set a rate, assume both input and output streams are
following the graph rate and so disable the resampler.

This mostly works around an issue where the input and output could
negotiate to different rates in some cases. With the resampler disabled
this would still result in the same amount of samples going in as
comming out instead of a stuttering mismatch.

See #2969
2023-06-22 11:18:04 +02:00
Wim Taymans
3db3e6dacf Revert "module-loopback: request renegotiation when suspended"
This reverts commit 2c5a3e9593.

Causes problems when switching devices because it doesn't renegotiate
properly.
2023-06-22 10:09:16 +02:00
Wim Taymans
74b6ab4288 remote-node: remove IO_Buffers before releasing the mix
This is usually done by the link but because we are a remote node, we
manage the links ourselves.
2023-06-21 18:38:21 +02:00
Wim Taymans
2c5a3e9593 module-loopback: request renegotiation when suspended
When one side of the loopback suspends, do a EnumFormat params to force
renegotiation on the other side as well.

Suppose this:

1. sink/filter/pw-play plays at 48000Hz
2. pw-play goes away, sink and filter-sink suspend, filter-playback
   idles
3. pw-play starts with 44100Hz
4. sink/filter-sink renegotiate to 44100Hz, filter-playback is still
   at 48000Hz and pitch shifted.

We might want to manually suspend the IDLE nodes instead but for now
this is a good workaround.

Fixes #2969
2023-06-21 16:29:45 +02:00
Wim Taymans
c4c6a3fd1b Revert "module-loopback: request renegotiation when suspended"
This reverts commit bbf8f1a0c8.

This causes all kinds of things to go wrong, mostly failure to
renegotiate buffers. Needs more testing.
2023-06-21 15:58:49 +02:00
Wim Taymans
d24c8da5d2 stream: keep calling process when there is data
Don't only call the process function when we have a new buffer but also
when we still have something in the queue to process.
2023-06-21 15:34:16 +02:00