Commit graph

12126 commits

Author SHA1 Message Date
Pauli Virtanen 86022d32df doc: disable dot graphs in API docs again
Disable graphs in the layout file. Doxygen seems to ignore Doxyfile
settings if they're enabled in layout.
2024-02-19 21:27:17 +02:00
Pauli Virtanen aec9bc5217 doc: add sections to index, clarify discussion of properties
Add some sections to index + fix typos and section levels.

Clarify discussion of device properties.
2024-02-19 21:21:12 +02:00
Wim Taymans 3c27dcd868 pulse-server: Make sure peer_sink name is filled
Use 'unknown' when we can't find the peer_name. Otherwise we will just
get a protocol error when the node.name is missing.
2024-02-19 17:39:39 +01:00
Jonas Holmberg e78e97cb99 pipewire-alsa: Propagate errors from eventfd().
Propagate the error if spa_system_eventfd_create() fails. Also copy
errno before calling spa_log_debug() in spa_system_eventfd_create() to
make sure it is not overwritten.
2024-02-19 14:16:26 +00:00
Wim Taymans b3e3d301c0 alsa: restart the node on hw_param change
When we emit a new EnumFormat, the adapter will renegotiate a new format
that will be applied when we restart.

Fixes #3858
2024-02-19 15:11:30 +01:00
Wim Taymans 2c0bb6ffd2 audioadapter: recheck formats when EnumFormat changes
When the follower has new EnumFormat, make sure we recheck the formats
the next time the node is started.
2024-02-19 15:10:32 +01:00
Wim Taymans 223d016a5e audioadapter: clear buffers when format is reconfigured
Always clear the Buffers when the format is reconfigured because they
depend on the Format.
2024-02-19 15:09:41 +01:00
Wim Taymans 915539e6d4 stream: add n_buffers to debug log 2024-02-19 15:00:04 +01:00
Wim Taymans 871e6da34a audioconvert: fix debug when -UFASTPATH 2024-02-19 12:43:46 +01:00
Wim Taymans 94861eb3d6 doc: remove stray \code 2024-02-19 11:06:45 +01:00
Wim Taymans 52f65ccefc docs: add node.rules and device.rules 2024-02-19 10:57:18 +01:00
Pauli Virtanen 04adbebcb1 doc: move config man pages under config/ 2024-02-19 00:00:27 +02:00
Pauli Virtanen 0734381ead doc: add some more coverage
Fix some copypaste mistakes and other errors.

Add explanations for some more properties.  Explain "drop-in" config
files.  Explain filter-chain.conf.

Move configuration man pages under Configuration in TOC.
2024-02-19 00:00:27 +02:00
Pauli Virtanen fd58eec7f8 doc: add reference docs + index for config and env variables
Add reference documentation for configuration settings & node/device
properties.  We should have boring & exhaustive reference lists of all
the options, and an index where they can be looked up as needed.

The content is mostly stolen from the Wiki.

Add pipewire-client.conf.5, pipewire-jack.conf.5, and pipewire-device.7
that try to explain all available configuration settings for native/ALSA/JACK
clients, and parameters & properties devices.

Expand pipewire.conf.5 and pipewire-pulse.conf.5 with lists of supported
properties. Also explain environment variables.

Doxygen doesn't have an indexing mechanism suitable for configuration
settings, so add a simple one using an input filter and use it here.

Tweak styling a bit.
2024-02-18 15:08:35 +02:00
Pauli Virtanen 715315cbcd doc: fix DoxygenLayout.xml for doxygen 1.10
Run doxygen -l - and make the edits again.
2024-02-18 13:06:08 +02:00
Ruben Gonzalez 15bdab89c3 logger: minor performance improvement to avoid syscall done by isatty 2024-02-17 11:42:12 +00:00
Dimitrios Katsaros a5419ea670 resampler: Only use copy when rate is 1.0
The rate we get from dlls can have a subsample precision. However,
the check for using process_copy is in sample precision. This means
that an adaptive stream will oscillate rather then lock into the
exact rate.
2024-02-16 20:08:18 +00:00
Dimitrios Katsaros 77f6c009c1 resample: use a float phase in update_rate
My making the phase into a float, the resampler can do finer grained
adjustments, which should improve the stability of adaptive
resampling
2024-02-16 20:08:18 +00:00
Wim Taymans 764ae650e2 conf: fix override directory order
We need to load and apply the overrides in the order:

If absolute config path, use only that.
If environment variable, use only that.
Else
 /usr/share/pipewire/*.conf.d/
 /etc/pipewire/*.conf.d/
 $HOME/.config/pipewire/*.conf.d/

Before this patch we would first apply $HOME and then /etc and /usr,
which is not expected.
2024-02-16 18:16:30 +01:00
Wim Taymans c37c6b0789 module-rtp: fix SAP header parsing for IPv6
If the originating source is IPv6, the A bit is set and the source is 16
bytes compared to 4 bytes for IPv4.

Fixes #3851
2024-02-16 12:53:54 +01:00
Wim Taymans e15b9e7f71 module-rtp: fix debug log 2024-02-16 12:37:40 +01:00
Wim Taymans ecd7a88ae8 Update .gitlab-ci.yml file 2024-02-16 09:17:49 +00:00
Wim Taymans 7eaa8c2ccc Update .gitlab-ci.yml file 2024-02-16 09:08:44 +00:00
Wim Taymans 6df96a7ab0 Update .gitlab-ci.yml file 2024-02-16 09:07:13 +00:00
Wim Taymans 09feb8a18c module-rtp: improve ipv5 support
Use the IPV6 versions for loop and ttl. Improve debug.
2024-02-16 09:54:09 +01:00
Wim Taymans af59bf9137 Update .gitlab-ci.yml file 2024-02-16 08:27:06 +00:00
Wim Taymans 136e0b878e Update .gitlab-ci.yml file 2024-02-16 08:25:38 +00:00
Wim Taymans 5082e9f458 module-rtp: only stop timer when it was running 2024-02-15 17:48:58 +01:00
Wim Taymans 49e7e3a0f0 module-rtp-sink: improve source.ip default
Use the default source.ip from the same address family as the
destination.ip.

See #3851
2024-02-15 15:31:54 +01:00
Wim Taymans 320eb935a3 module-rtp: handle ipv6 sap.ip
Make a socket of the same address family as the address we're going to
bind it to.

When the source.ip is not specified, use the default in the same address
family as the sap.ip.

Probe the interface for addresses of the same family as the sap.ip.

Makes pactl load-module module-rtp-recv sap_address=:: work.

See #3851
2024-02-15 15:18:13 +01:00
Wim Taymans f1a6fabb6c meson: add options to set server and client RT priority
Make a rtprio-server and rtprio-client option. Leave the server
priority by default to 88 but lower client priority to 83. JACK
does something similar by setting clients to rtprio-server - 5.

Make module-rt use the client priority by default and bump the server
priority explicitly in the config file.

Leave the pulse-server to the default rtprio-client, there is no reason
to lower this any further because it is really just a regular client.

Bump the ffado packetizer thread to rtprio-server + 5 because that is
also what JACK does.

88 is still much higher than the value of 60 that JACK uses in
Fedora but now this is at least configurable.
2024-02-15 11:53:32 +01:00
Wim Taymans 2833ff1272 alsa: split irq and timer wakeup functions
Because it's easy to do and avoids some runtime checks.
2024-02-14 16:25:20 +01:00
Dimitrios Katsaros 8608c03b76 alsa: Reduce jitter in irq based software timestamping
We would timestamp within an unlikely block, which would introduce
additional jitter to current_time, which would have an impact on
the performance of the timer sensitive code.
2024-02-14 15:03:31 +00:00
Wim Taymans a9c0eb993e jack: add jack.other-connect-mode property
Add a new property that controls how connections between other ports are
handled. This can be used to block jack apps from connecting or
disconnecting port they don't own.
2024-02-14 15:09:55 +01:00
Wim Taymans 2807a1eafd impl-node: add node.rules and device.rules
To be able to modify properties of nodes and devices. This is
interesting in the minimal config to give the nodes better defaults.
2024-02-14 12:33:41 +01:00
Dmitry Sharshakov fcea3eee01 pipewire-aes67: clarify comments 2024-02-13 16:47:56 +00:00
Julian Bouzas 0e5bbea36c pw-dot: group nodes by node.link-group 2024-02-13 16:38:48 +00:00
Julian Bouzas 20de0ab96a pw-dot: truncate escaped string values to 128
This avoids objects in the graph being too big if one of their properties has
a long value (Eg 'pipewire.sec.label' in the client objects).
2024-02-13 16:38:48 +00:00
Wim Taymans d933984ee6 audioadapter: copy original props
We need to pass the follower props and append our own props
2024-02-13 17:36:01 +01:00
Wim Taymans 9fa559948e acp: also install a local error handler 2024-02-13 17:20:18 +01:00
Wim Taymans 61f1aea01f audioconvert: remove some construct time properties
Remove some verbose and construct time properties.
2024-02-13 16:22:33 +01:00
Wim Taymans 59ea4ef897 adapter: move node.params to impl-node.c
Move configuration of initial Params from the adapter to the node to
make it more generally useful.

Add the same device.param config to devices.

This makes it possible to configure the default settings statically
while creating the nodes and devices.
2024-02-13 16:01:10 +01:00
Wim Taymans 4ab3ab6081 impl-device: set quantum-limit correctly
Pass the quantum limit also to the main node.
2024-02-13 15:55:07 +01:00
Wim Taymans 5a37c97f3d alsa: allow setting profile by name 2024-02-13 15:37:10 +01:00
Wim Taymans 1dc822c999 impl-device: add support for adapter
Make it possible to wrap nodes created by a device in a wrapper such
as adapter.

Update the minimal.conf to use udev to detect and configure devices and
nodes. Add a config switch to switch back to hardcoded config.
2024-02-13 12:03:53 +01:00
Wim Taymans c08c335264 impl-device: add device.object.properties
Instead of copying all the device properties to the child object,
only copy the ones in device.object.properties and add the
ones from the object info.

Clean up the object handles when something goes wrong.
2024-02-13 11:37:21 +01:00
Wim Taymans ee5e1a92be impl-device: add device.id to objects
Add the device.id to the objects created from this device.
2024-02-13 10:01:02 +01:00
Wim Taymans 490d540177 modules: avoid invalid properties access
pw_spa_node_load() takes ownership of the properties so we must not
access it it afterwards, so make a copy of it.
2024-02-12 17:53:44 +01:00
Wim Taymans 513e8fa56f adapter: move adapter.auto-port-config to adapter
Move the handling of the default adapter port config to the adapter
itself.
2024-02-12 17:24:22 +01:00
Wim Taymans efd22efff8 pw-link: improve port and node names
don't leave the port and node names blank but fill in some defaults that
include the node/port id.
2024-02-12 17:14:33 +01:00