Commit graph

2818 commits

Author SHA1 Message Date
Wim Taymans
f957435586 module-loopback: use node.name as description fallback
When no description is given, just copy the node.name. This looks
better than the automatically generated description.
2022-09-02 13:55:25 +02:00
Wim Taymans
3f6fe39209 filter-chain: use right lv2 include path 2022-09-02 13:00:07 +02:00
Wim Taymans
9c34a923db pulse-server: simplify latency handling
We don't need to use the minreq field. The fragsize is only updated when
adjust_latency is used.
2022-09-01 16:46:18 +02:00
Wim Taymans
ad214dde2e pulse-server: tweak the fragsize/minreq handling
Only send 2/3 of the fragsize
2022-09-01 16:23:56 +02:00
Wim Taymans
e10305851d pulse-server: send chunks with half the fragsize
PulseAudio configures half of the fragsize as the source latency. It
also sends chunks as soon as they become available.

This means that we also need to configure the source with half of
the fragsize latency and send in chunks of fragsize/2. Keep this in
the unused (for record) minreq field.
2022-09-01 15:46:17 +02:00
Wim Taymans
f48f158566 filter-chain: fix includes 2022-09-01 14:08:38 +02:00
Wim Taymans
c20790c64b pulse-tunnel: destroy the module on errors
When the pulse context or stream is in error, destroy the module.
2022-08-30 16:09:04 +02:00
Wim Taymans
9248ce3c19 pulse-tunnel: fix rate adjustement argument
The sign of the error was wrong, making the rate controller adjust in
the wrong direction and make things worse.

See #2548
2022-08-30 16:01:14 +02:00
Wim Taymans
5ae1c03d77 module-rt: small fixes
could_use_rtkit -> can_use_rtkit.
Only warn when setting nice and there is no rtkit fallback.
Always call set_rtlimit, it does not have an rtkit implementation, if just
has some properties with limits.
Only try to set nice again with rtkit when we required rtkit for some
functions.
2022-08-30 15:15:56 +02:00
Yuxuan Shui
2e9ba289d3 module-rt: retry with RtKit if set_nice or set_rlimit fails
Previously module-rt only checks if the user have the permission to use
realtime scheduling, and will unconditioally disable RtKit if they do,
even when they don't have the permission to set nice or rlimit.
2022-08-30 14:50:48 +02:00
Gleb Popov
ad13681d33 Guard <sys/vfs.h> inclusion with an #ifdef. 2022-08-21 22:42:57 +03:00
Wim Taymans
f9e7fd7c67 avb: free resources on error 2022-08-20 21:41:59 +02:00
Thomas Weißschuh
a969feb3c0 avb: validate random data for xsubi 2022-08-19 07:35:02 +00:00
Wim Taymans
0532d194ad protocol-native: small cleanups
Style fixes.
Use new variable for fd to avoid casts.
Generate an error when  the fd is invalid.
2022-08-17 19:56:52 +02:00
Cameron Nemo
0883a0163b protocol-native: write socket address into fd
Support fork-free readiness notifications.

Without this, a service supervisor that does not implement socket
activation has no way of knowing whether or not pipewire is ready to
accept connections on the socket.

s6 is the most popular service manager that supports this mechanism.
See here: https://skarnet.org/software/s6/notifywhenup.html
2022-08-17 17:41:21 +00:00
Dmitry Sharshakov
3ceb3288ca convolver: fix crash on FFT unload
Co-authored-by: Barnabás Pőcze <pobrn@protonmail.com>
2022-08-17 11:22:05 +00:00
Barnabás Pőcze
68ff3ad841 treewide: meson.build: use host_machine instead of build_machine
At the moment, cross compilation may not work in certain cases because
checks are carried out against the build machine instead of the host machine.
Replace uses of `build_machine` with `host_machine` to fix that.

In native compilation, all three "machine objects" available in meson
are the same, so this change should have no effect in that case.

More: https://mesonbuild.com/Cross-compilation.html
2022-08-17 07:34:20 +00:00
Gleb Popov
4a0395d23e Enable AVB on Linux only. 2022-08-11 17:23:16 +03:00
Wim Taymans
27dcbfc1ee remote-node: don't set activation state and signal_time twice
This is already set by resume_node.
2022-08-11 12:35:51 +02:00
Wim Taymans
1bc1d96f88 node: rename signal to signal_func
To avoid confusion and it is more easily greppable
2022-08-11 12:34:51 +02:00
Wim Taymans
ca8b61e984 protocol-native: improve connection disconnect
The connection is created in new, therefore free it in destroy, not in
disconnect.
Connect sets the fd, so unset the fd in disconnect.
2022-08-11 12:07:59 +02:00
Wim Taymans
78c069ff87 potocol-native: improve error handling
Init the compat types map a little earlier so that it is initialized
when we try to clear it on error.
Add the client listener earlier so that we can use the events to clean
up the map, source and connection.
2022-08-11 12:06:28 +02:00
Wim Taymans
1e71c0e840 meson: also check for roc headers
Fixes #2513
2022-08-10 12:09:54 +02:00
Pauli Virtanen
6d4d77802a pulse-server: give Manager permission for Flatpak apps with devices=all
Some Flatpak apps want to manage sound fully (change default outputs,
move streams from other applications).  Real Pulseaudio always grants
full permissions, but pipewire-pulse doesn't, which breaks some
applications, e.g. Zoom.

Work around this by granting the manager permission if the application
also has devices=all access.

To do things properly, this probably should use the Portal media roles,
but this would need further work elsewhere.
2022-08-01 19:36:00 +00:00
Pauli Virtanen
0e12242a1b modules: set pipewire.access.portal.app_id in access & pulse-server
When detecting a access=flatpak application, set also
pipewire.access.portal.app_id, if determined
2022-08-01 19:36:00 +00:00
Pauli Virtanen
3730e54484 modules: support getting app_id in pw_check_flatpak
Support getting the Flatpak application ID from the .flatpak-info file,
similarly as what xdg-desktop-portal does.
2022-08-01 19:36:00 +00:00
Pauli Virtanen
5e5339ce6c modules: refactor check_flatpak to a common place
Move check_flatpak used by module-access and module-protocol-pulse
to a common flatpak-utils.h
2022-08-01 19:36:00 +00:00
Hubert Figuière
f1dfa9797b Issue #2570 - Use the xdg-portal-destkop of rtkit
- If the xdg-desktop-portal is there, use it instead of rtkit
- This allow setting the rt priorities within Flatpak
2022-08-01 19:19:24 +00:00
Barnabás Pőcze
51b5aafeaa pipewire: module-echo-cancel: remove line that does nothing 2022-07-23 08:58:18 +00:00
Wim Taymans
f857fd4626 avb: fix compilation on big endian 2022-07-19 15:59:00 +02:00
Wim Taymans
1a5ec4452f avb: fix compilation on big endian 2022-07-19 13:49:42 +02:00
Wim Taymans
aaeafa49c1 fix some printf arguments 2022-07-18 15:39:06 +02:00
Wim Taymans
7151150802 filter-chain: don't use invalid ports
When the stream has more channels than the filter inputs or outputs,
don't try to connect an invalid filter port but ignore the input and
clear the output.
2022-07-14 11:55:52 +02:00
Doğukan Korkmaztürk
43602911c6 module-rt: handle pthread_getschedparam() errors correctly
pthread_getschedparam() always returns non-negative values, so checking
if its return value is less than zero always evaluates to false.

Also, pthread functions don't set errno. While logging a warning
message, use the return value of pthread_getschedparam() instead of
errno.
2022-07-14 10:55:33 +02:00
Wim Taymans
b2bb2fe028 filter-chain: be more carefull with buffer sizes
Take the min of the input buffer size as the output size. Make sure we
don't process more than the output buffer maxsize as well.
2022-07-13 16:45:57 +02:00
Wim Taymans
7a76e55c36 module-looback: improve data copy between streams
First go over all the input and collect pointers and the size that we
need to copy. Then go over all destinations and copy the source or
clear the buffer memory.

This fixes the problem where extra planes in the destination would get
a 0 size, which would make the converter produce 0 output. It also
ensure that the output size is consistent.
2022-07-13 16:21:25 +02:00
Wim Taymans
35082e4f4b pulse-server: add the delay
Actually add the delay to the buffered amount of time instead of
overwriting.
2022-07-13 10:49:26 +02:00
Wim Taymans
855d17ac1b pulse-server: add some debugging 2022-07-13 10:42:00 +02:00
Wim Taymans
00d18217a6 avb: remove unused line
Probably a leftover from earlier merge..
2022-07-12 15:53:51 +02:00
Wim Taymans
4304a147e9 avb: properties are owned by avb object 2022-07-12 12:37:58 +02:00
Wim Taymans
10e54dc0ee avb: fill in some more values 2022-07-12 12:27:22 +02:00
Wim Taymans
9bfb23f3f8 avb: don't include ethernet header in in packets
Move vlan_id and prio to the stream.
2022-07-12 12:27:22 +02:00
Wim Taymans
dec2bdf241 avb: reply with advertise to discover 2022-07-12 12:27:22 +02:00
Wim Taymans
a34417eed0 avb: handle command errors better
Ignore unknown commands.
Set the right reply message type for unsupported methods.
2022-07-12 12:27:22 +02:00
Wim Taymans
fa9fcbe964 avb: save and load maap state 2022-07-12 12:27:22 +02:00
Wim Taymans
f043922b24 avb: implement maap
Implement the maap state machine.
Use maap for the destination address of talker streams.
2022-07-12 12:27:22 +02:00
Wim Taymans
e0d6b2bb4f avb: implement streams
Add in input/output stream, setup the talker/listeners.
Implement IEC61883 audio packets, send and receive data.
Implement talker encoding.

With this, audio can be sent and received from MOTU M64.
2022-07-12 12:27:22 +02:00
Wim Taymans
460cedbc86 avb: 0 was used for no-event 2022-07-12 12:27:22 +02:00
Wim Taymans
2344ad7869 avb: fix compilation 2022-07-12 12:27:22 +02:00
Wim Taymans
c07e16c728 avb: use separate sockets per mac/type 2022-07-12 12:27:22 +02:00