Commit graph

7365 commits

Author SHA1 Message Date
Wim Taymans
91069ec3d2 0.3.35 2021-09-09 09:52:35 +02:00
Peter Hutterer
0596b388fe doc: fix example for the PIPEWIRE_DEBUG format 2021-09-09 09:31:52 +10:00
Julian Bouzas
7d0a8b68e8 audiomixer: add support for U8, U16, U24, U32, S24_32 and U24_32 formats 2021-09-08 14:24:31 -04:00
Julian Bouzas
20e64b39da fmtconvert: add support for U16, U24, U32 and U24_32 formats 2021-09-08 14:24:26 -04:00
Jonas Holmberg
f22dd9d781 pipewire-alsa: Make it MT safe
Make pipewire-alsa MT safe so that multi threaded programs can use it
without any extra locks.
2021-09-08 16:36:58 +02:00
Wim Taymans
0cf6760ee0 resample: limit the amount of taps
So that we don't allocate too much space but also don't cause an
overflow in the indexes.
2021-09-08 16:28:24 +02:00
Wim Taymans
e4b030fafa jack: add option to disable process lock
Some applications might expect the process function to run concurrently
with the callbacks. PipeWire tries to avoid this by using a lock for the
duration of the process callback. Make an option to disable this.

See #1576
2021-09-08 13:02:04 +02:00
Wim Taymans
2071a14c82 context: only apply lock-quantum for unsuspended nodes
When the node is suspended, don't take into account the lock-quantum
settings or else the graph would not want to change to the requested
quantum of the node.

Say we have a jack node with node.lock-quantum = true and
node.latency=256/48000. When it joins the graph and is suspended, the
lock-quantum is ignored and the node.latency is set on the graph.
After that, the lock-quantum ensures the graph quantum doesn't change
anymore until the node is suspended.
2021-09-08 11:53:08 +02:00
Wim Taymans
9423e8d648 impl-node: move quantum and rate
When we move a node from one driver to another, move the quantum and
rate if the target driver was idle so that we can mostly continue
uninterupted until a quantum/rate change is calculated.
2021-09-08 11:51:09 +02:00
Wim Taymans
a3fe226eac context: don't try to change the quantum when idle
When the driver is going to be idle or not running, avoid updating
the quantum.

This is mostly when a node is moved to another driver. Changing the
quantum of the old driver would have the clients briefly see the useless
quantum before being moved to the new driver.
2021-09-08 11:28:05 +02:00
Wim Taymans
8f88792a9a jack: don't emit bufsize_callback from activate()
We just check the initial size of the buffer and remember that, we
should not emit (or schedule) a bufsize change callback.

Emiting the callback should really only be done after the buffer size
changes after activate completed.

Fixes some jconvolver startup problems.
2021-09-08 11:24:57 +02:00
Wim Taymans
4562ef4ed0 update some docs 2021-09-08 10:31:31 +02:00
Peter Hutterer
055643091f meson: drop default-session-manager, use the first session-manager instead
default-session-manager is only used in the pw-uninstalled.sh developer
script. c25cec230c added the ability to
use the system-installed wireplumber but other than that this option is
largely superfluous.

Drop it and pick whichever the first entry to session-manager is. For
the vast use-case of either MS or WP this will just work fine and for
the niche case of building both SMs one just needs to make sure the
order is as desired.

And in the case of no session manager, the config line to start the SM
is now commented out.
2021-09-08 07:50:48 +00:00
Peter Hutterer
71ee6ec669 daemon: split the session-manager and pipewire-pulse comments
Let them be enabled/disabled individually.
2021-09-08 07:50:48 +00:00
Peter Hutterer
bc2d820b6d meson: make media_session_sources unconditional
The sources are used by the documentation, so rather than duplicating
the checks for whether to build it or not, just define it as
always-present empty array and fill it when needed.

Otherwise we get a meson error if media-session is disabled but
documentation is enabled.
2021-09-08 07:44:48 +00:00
Peter Hutterer
852d6fc4b6 media-session: remove a superfluous NULL check
spa_streq() checks for NULL and (through the same function) so does
pw_properties_parse_bool()
2021-09-08 07:44:48 +00:00
Barnabás Pőcze
f288a2b77d libcamera: fix compilation error
Upstream libcamera commit 32635054bc76e2ababd8ea2177fca1f88229541a
changed "planes" on `FrameMetadata` to be a function. Adapt
the plugin code accordingly.
2021-09-08 07:32:48 +00:00
Hugo Carvalho
1595ff37e8 Update Portuguese Translation 2021-09-07 20:13:07 +00:00
Wim Taymans
75f15accd5 filter-chain: add dirac pulse 2021-09-07 20:12:58 +02:00
Wim Taymans
a54fa5f26d jack: improve do_sync
Keep track of the last scheduled sync operation and wake up listeners
when it completes.

The waiters also compare against the last issued sync so that when multiple
syncs are pending from multiple threads, they will all wakeup instead of
just one.

Fixes some lockups with ardour6.
2021-09-07 17:16:01 +02:00
Peter Hutterer
c25cec230c meson: if WP is the default SM but not built, use the system one
If we're not building wireplumber but it is set as the default session
manager, search for one in $PATH and use that.
2021-09-07 14:09:35 +00:00
Peter Hutterer
05759e3bab meson: use 'auto' as default session manager
Right now, meson -Dsession-managers=wireplumber will fail the build
because the default session manager option is set to media-session - and
if that isn't being built we error out.

Use an 'auto' value instead, selecting the first session-manager in the
list as the default one.
2021-09-07 14:09:35 +00:00
Peter Hutterer
86362407c1 meson: improve an error message
We have -Dsession-managers and -Ddefault-session-manager, the latter is
currently only used for pw-uninstalled.sh. Let's adjust the error
message to use "default" so it's a bit easier to understand by this may
fail with -Dsession-managers=wireplumber.
2021-09-07 14:09:35 +00:00
Peter Hutterer
902444ae1a meson: if media-session is to be built but alsa is missing, error out
If -Dsession-managers includes media-session, we should error out if the
dependency is missing instead of just silently skipping the build.
2021-09-07 14:09:35 +00:00
Wim Taymans
f0bc0d068e link: avoid multiple concurrent negotiations
When multiple links are created at the same time for the same port, we
get into a race where multiple links will try to set a format
asynchronously and eventually break the links. Avoid this by marking the
port as busy for as long as an async format or buffer is pending and
avoid starting new link negotiation when one of the ports is busy.

This problem was observed when ardour6 tries to link all device capture
ports to its single monitor port.
2021-09-07 15:48:44 +02:00
Wim Taymans
2d88ad179a jack: update format flags when format is set
So that the introspection of the port will show a format when it is set.
2021-09-07 12:20:36 +02:00
Wim Taymans
882f1aee6c media-session: turn some info in debug 2021-09-07 09:56:50 +02:00
Peter Hutterer
2306124f49 doc: fix listing of the new No DSP media-session module
And copy the text from the comment into the public documentation, better
than just having an empty page there.
2021-09-07 07:52:45 +00:00
Peter Hutterer
959d289bca ci: add a check for modules being linked correctly in the doc
A new module requires a \subpage entry in the respective parent page.
Check for that.
2021-09-07 07:52:45 +00:00
Wim Taymans
7e4d5b142f pulse-server: don't leak format info 2021-09-07 09:51:58 +02:00
Peter Hutterer
8bb0e340c7 protocol-pulse: fix two -Wformat-nonliteral warnings
For the stream group, we break into the three components we write out
and print those.

For the IPv6 address printing inside [], we can make this a condition on
the printf statement.
2021-09-07 08:57:28 +10:00
Peter Hutterer
e55a5441b8 spa: silence two -Wformat-nonliteral warnings
In one we can duplicate the spa_asprintf call without real drawbacks.

The second one can be split up without losing details. Note that there
is another one in backend-native.c where splitting it up will make the
code harder to understand. The warning for that one remains.
2021-09-07 08:26:54 +10:00
Peter Hutterer
6a18272fed spa: mark the gettext wrappers with __attribute__((format_arg))
This removes the -Wformat-literal warnings for all _("some message")
calls. Remaining warnings are those where we pass in a custom buffer.
2021-09-07 08:26:10 +10:00
Pauli Virtanen
b5ad37c7ac bluez5: make codec loading compatible with old conf files
Change codec factory names to api.codec.bluez5.*, so that they won't
conflict with old config file lib name rules for api.bluez5.*

Specify the fallback library name when loading the codecs, so that it
works without the rules in config files.
2021-09-06 18:04:35 +03:00
Wim Taymans
435de99428 Increase pod buffer size
The props of a 64 channel node are at least 2048 bytes long so make sure
we can build and filter them.

Fixes #1574
2021-09-06 15:09:28 +02:00
Wim Taymans
f9d8bdb9b8 spa: improve param result handling
Check if we actually managed to add the param to the builder before we
try to deref it.
Use a safer deref that checks the sizes of the pod and builder.
2021-09-06 15:09:25 +02:00
Wim Taymans
c54f64cd13 alsa: clean up rate matching code
Remove some useless fields.
Use macros for time<->rate conversions.
2021-09-06 12:55:06 +02:00
Peter Hutterer
8d741d6077 alsa-monitor: document this module in some detail 2021-09-06 07:29:28 +00:00
Peter Hutterer
7cb718833b alsa-monitor: reword the match rule comment in the config file
Each dictionary needs to fully match but out of the dicts we have, only
one needs to match to apply. Reword that for clarity.

Also document regex vs normal string comparison vs the magic null
string.
2021-09-06 07:29:28 +00:00
Peter Hutterer
6f9586bf54 media-session: use more descriptive names for parsing match rules
Easier to understand this way what is being passed around and where
we're at with the parsing.
2021-09-06 07:29:28 +00:00
Peter Hutterer
7d13c7750d doc: document the portal negotation process with graphs
This is a multi-step process involving 4 processes and two modules.
Let's add some graphs to make this slightly easier to comprehend for
those not familiar with how portals work.
2021-09-06 07:29:28 +00:00
Peter Hutterer
6b6f5f3659 doc: mention xdg-desktop-portal in the media-session access-portal module
Makes it slightly easier to connect the dots.
2021-09-06 07:29:28 +00:00
Peter Hutterer
55f01ae679 media-session: document the access-flatpak module 2021-09-06 07:29:28 +00:00
Peter Hutterer
83ed6e0be3 doc: swap two @ doxygen tags for the backslash ones 2021-09-06 07:29:28 +00:00
Peter Hutterer
08be841a9e doc: fix a doxygen undocumented parameter warning 2021-09-06 07:29:28 +00:00
Pauli Virtanen
abc01083d4 context: fixup integer overflow 2021-09-05 06:26:58 +00:00
Pauli Virtanen
18dde01d87 bluez5: minor error handling etc. fixups 2021-09-05 06:26:58 +00:00
Wim Taymans
44f10330e8 alsa: remove AES0 settings
Remove this for now, we should only add this when actually sending
encoded formats.

Fixes #1570
2021-09-05 08:21:07 +02:00
Pauli Virtanen
f85d3907ef bluez5: add a device to hw-volume blocklist 2021-09-03 19:09:16 +00:00
Pauli Virtanen
68e8846096 bluez5: update kernel version blocklist
Patch fixing ALT1 mSBC is in Linux 5.10.62, 5.13.14, 5.14.1, 5.15-rc
2021-09-03 19:09:16 +00:00