Commit graph

5302 commits

Author SHA1 Message Date
Wim Taymans
851bfba6ed pw-cli: add alias in comand help
Add alias to docs and mention alias in help.

Fixes #2552
2022-08-10 10:35:35 +02:00
Wim Taymans
fe5e164876 keys: improve docs a little
Fixes #2563
2022-08-10 10:13:32 +02:00
Wim Taymans
32cf5f312b data-loop: call pw_loop_invoke directly
The loop invoke method will already call the function directly when the
thread has been stopped and will also make sure that pending items are
flushed first.

See #2631
2022-08-09 20:16:33 +02:00
Barnabás Pőcze
9d5f565682 pipewire: extend memfd name with additional information
Knowing the flags, type, and size that were used in
the `pw_mempool_alloc()` call can be useful for
debugging purposes.
2022-08-09 11:24:00 +00:00
Wim Taymans
da86e6fbe1 impl-port: remove io when no port outputs
We set the node port io when we negotiate buffers on the port but never
unset it.
With this patch, the port io is cleared again when no mixers are on the
port. This can make the node a bit more efficient.
2022-08-08 18:08:09 +02:00
Wim Taymans
e784e82b9a conf: allow masking od conf.d/ files
Read the .conf.d/ override files in the same order as the .conf files.
If we already have a .conf override file with the same name, it was one
with a higher priority and we ignore it.

This makes it possible to place a 10-rates.conf file in ~/.config that
will override a 10-rates.conf file in /etc and /usr/share.

Fixes #2629
2022-08-08 16:05:46 +02:00
Wim Taymans
f8d26b96b4 conf: don't error on empty files
mmap of an empty file gives EINVAL. Avoid this and just don't update the
config.
2022-08-08 16:03:11 +02:00
Wim Taymans
04a3f51722 conf: free override 2022-08-06 16:47:18 +02:00
Julian Bouzas
b718dd5046 conf: support overriding context configuration in a different location
Allows placing override configuration files into a different directory. This is
Useful when pipewire clients such as wireplumber want their fully commented
configuration files under /etc/wireplumber, and fully uncommented configuration
files under /usr/share/wireplumber.

The point is solving the issue of users copying files from /usr/share/pipewire,
which contain various critical settings in addition to tweaking the config,
and then encountering problems at upgrade time when new critical settings are
added.
2022-08-05 13:19:15 -04:00
Julian Bouzas
a9cf72932a context: move loading of configuration into conf.c 2022-08-05 12:54:20 -04:00
Wim Taymans
a23d154952 audioconvert: always use DSP rate on DSP ports
Always use the DSP rate on DSP ports for format conversion, not the
previous used rate.

This avoids some resampler reconfiguration as it negotiates a non-passthrough
rate conversion and then switches to passthrough when the rate correction is
done to match the graph rate.

See #2614
2022-08-03 11:32:10 +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
James Hilliard
4c43d39a64 impl-link: only free format in do_negotiate if copied
Fixes:
==716== Invalid free() / delete / delete[] / realloc()
==716==    at 0x4846DED: free (vg_replace_malloc.c:872)
==716==    by 0x48ABF37: do_negotiate (impl-link.c:425)
==716==    by 0x48ACBEF: check_states (impl-link.c:701)
==716==    by 0x48DB34B: process_work_queue (work-queue.c:87)
==716==    by 0x4F8B2B3: source_event_func (loop.c:591)
==716==    by 0x4F8D03F: loop_iterate (loop.c:430)
==716==    by 0x48B1A4B: pw_main_loop_run (main-loop.c:148)
==716==    by 0x10962F: main (pipewire.c:131)
==716==  Address 0x1ffeffd520 is on thread 1's stack
==716==  4112 bytes below stack pointer
==716==

Signed-off-by: James Hilliard <james.hilliard1@gmail.com>
2022-08-01 19:30:54 +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
Pauli Virtanen
b3db13be10 stream: don't do overlapping assignment of union members
Coverity does not like assigning union member to another. Don't use
union here, as it's not needed.
2022-07-21 07:12:22 +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
d030983212 pw-cat: don't print useless error
getopt has already printed a much better error for us.

See #2558
2022-07-17 16:47:24 +02:00
Doğukan Korkmaztürk
87f1979b36 stream: eliminate some implicit type conversions 2022-07-17 16:41:30 +02:00
Doğukan Korkmaztürk
c80c6b79d7 buffers: eliminate an implicit type conversion 2022-07-17 16:41:30 +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
117fb6d697 filter-chain: add example LFE generator 2022-07-13 17:15:14 +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
4062077472 avb: remove wrong cargs
Fix a typo
2022-07-13 13:14:07 +02:00
Wim Taymans
0c24d66dc3 context: add method to get the data loop
Handy for invoking or adding/removing sources.
2022-07-13 11:26:12 +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
jole
404d7e5ed1 fmt: add a space after comment header in config
consitent with the formatting of the other configuration files
2022-07-12 10:58:55 +00: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
Wim Taymans
42a4108c08 avb: add packet filter 2022-07-12 12:27:22 +02:00
Wim Taymans
ba98a2743c avb: add missing file 2022-07-12 12:27:22 +02:00
Wim Taymans
9a26df3478 avb: improve state machine
Emit per attribute callbacks.
Notify events immediately.
2022-07-12 12:27:22 +02:00