Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Wireplumber 0.5.5 #19

Open
wants to merge 733 commits into
base: master_jammy
Choose a base branch
from
Open

Wireplumber 0.5.5 #19

wants to merge 733 commits into from

Conversation

mmstick
Copy link
Member

@mmstick mmstick commented Jul 17, 2024

May fix regressions in pop-os/pipewire#77

pv and others added 30 commits January 13, 2024 16:33
Use pw_log_set_level_string to set log topic levels also for libpipewire
topics.
bluez5.auto-connect is by default disabled. device.profile does not
exist. MIDI nodes also have node.latency-offset-msec
The 'target.dont_move' property is only meant to be used with 'target.object'
metadata property, not smart filters metadata properties. This was probably
left accidentaly unused when designing a solution for #524 involving smart
filters.

Fixes #558
…match

This fixes the target not being found when setting non-string values in the
JSON matching rules of the 'filter.smart.target' property.
…ack filter

This patch improves the bluetooth profile autoswitch so that it works with any
application that wants to capture from a bluetooth device. To do so, a loopback
source filter is created per connected bluetooth device. If an application wants
to capture audio from such loopback source filter, the profile in the associated
bluetooth device is changed to HSP/HFP. If there isn't any application connected
to the loopback source filter, the profile switches back to A2DP.
Docs for state_changed_callback indicates state being emited as pointer,
but implementation emits it as enum value.
This hides the loopback stream node from applications, making desktop
environments to not show the 'recording from microphone' icon (Eg gnome-panel)
when the bluetooth device is not recording yet.
…in component

When running multi-instance setups or when clients like wpctl want to
access the WpSettings instance, it makes no sense to load the entire
module-settings, which will also create sm-settings metadata instances.
This makes it more consistent with the nomenclature of other settings
Also remove "main.rst", which is to be removed entirely as a file
(but only after its contents are all moved to other files).
Since the loopback bluetooth source node is meant to be always used by
applications, this change hides the actual bluez sco-source node by marking
them as internal. This avoids showing 2 input devices in pavucontrol per BT
device if HSP/HFP profile is enabled.
This is because the associated node does not exist anymore. This change also
logs the session item Id when handling it, so that it is easy to know if the
unhandled session item was handled or not.
The log object should be used with : in order to make sure that the
log handler has the correct topic in context.
Check target is not nil, which sometimes occurs, before trying to access
its .id property.

Fixes lua errors in logs.
…irectory

This is because 'filter-forward-format.lua' only configures nodes, and therefore
does not have anything to do with the linking logic. The setting has also been
renamed to 'node.filter.forward-format'.
gkiagia and others added 23 commits June 26, 2024 15:50
There are 2 cases captured here:

1. The stream has "stream.monitor = true", which is used
by pavucontrol for the vu meters and should probably not be managed
by the role policy, no matter if the target is a Source or a Sink

2. The stream is an Input (capture) stream and is targeting a Sink,
which may be used to target the sink's monitor ports. Even if we
want, we can't manage these links because they have opposite direction
than the one expected. Let's leave them alone...
… hook is enabled

Otherwise we would be left with broken links that are never activated
The previous check was also working, but this is safer
This is now provided by find-media-role-target.lua
Also, move the example from linking.conf to media-role-nodes.conf,
as it's more relevant there, and make sure the setting is constantly
read back in the Lua script, so that runtime changes can work.
Similar to 4868b3c and fa67121, we always want to treat regular filters as
normal stream/device nodes.
This way of definining dependencies ensures that if we remove one
of the find-* hooks from the config, the rest of them will continue
to work in the expected order. Previously, removing one of them
would break the entire chain.
…ased policy

The previous assumption that any target with "device.intended-roles"
should be managed by the role-based policy is wrong, as for example
Bluetooth SCO nodes always have "device.intended-roles = Communication"
and some ALSA devices managed by ACP also do. This is meant to be used
as a hint for the desktop policy (it's been there in PulseAudio as well)
and does not necessarily mean that a role-priority-based policy should
be applied on all links to those devices.

Instead, use a new property to explicitly mark all the targets that
are meant to be managed by the role-based policy and respect that in
all places where we check for a potential role-based policy link.

Fixes: #682
This reverts commit 8012fbd.

There seems to be some underlying bug that sometimes causes a crash
when the Bluetooth monitor uses a loopback for autoswitching between
profiles. Reverting temporarily until the cause is fully determined.

See #682
This will properly show '*' for default sink filters in the status output.
The intention here is to fix a Bluetooth bug where changing between different
profiles momentarily causes streams to be linked to an internal speaker.
Unfortunately, this case is not handled by the event dispatcher because some
signals are emitted using idle callbacks, and therefore we have to rely on
extra logic in rescan.lua to solve the problem.
This patch removes the manually created object managers in the BT profile
autoswitch logic, and instead uses the object managers from the event source,
simplifying the logic a bit.
@mmstick mmstick requested review from a team July 17, 2024 15:43
@jacobgkau jacobgkau self-assigned this Jul 17, 2024
@jacobgkau
Copy link
Member

This failed to build for jammy.

@mmstick
Copy link
Member Author

mmstick commented Jul 17, 2024

Seems to require a newer version of pipewire. I could package a newer pipewire 1.0.X version

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.