* Highlights:
- Fixed an issue that would cause random profile switching when
an application was trying to capture from non-Bluetooth
devices (#715, #634, !669)
- Fixed an issue that would cause strange profile selection
issues [choices not being remembered or unavailable routes
being selected] (#734)
- Added a timer that delays switching Bluetooth headsets to the
HSP/HFP profile, avoiding needless rapid switching when an
application is trying to probe device capabilities instead of
actually capturing audio (!664)
- Improved libcamera/v4l2 device deduplication logic to work
with more complex devices (!674, !675, #689, #708)
* Fixes:
- Fixed two memory leaks in module-mixer-api and
module-dbus-connection (!672, !673)
- Fixed a crash that could occur in module-reserve-device
(!680, #742)
- Fixed an issue that would cause the warning
"[string "alsa.lua"]:182: attempt to concatenate a nil value
(local 'node_name')" to appear in the logs when an ALSA
device was busy, breaking node name deduplication (!681)
- Fixed an issue that could make find-preferred-profile.lua
crash instead of properly applying profile priority rules
(#751)
- Remove patches that are already included in 0.5.7:
* 0001-autoswitch-bluetooth-profile-switch-only-Bluetooth-devices.patch
* 0002-autoswitch-bluetooth-profile-Switch-to-HSP_HFP-on-timeout.patch
* 0003-m-mixer-api-Fix-memory-in-leak-wp_mixer_api_set_volume.patch
OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/wireplumber?expand=0&rev=89
profile of non-bluetooth devices (boo#1231815):
* 0001-autoswitch-bluetooth-profile-switch-only-Bluetooth-devices.patch
- Add patch from upstream to fix switching automatically the
profile when starting some apps and then switching to the
previous profile:
* 0002-autoswitch-bluetooth-profile-Switch-to-HSP_HFP-on-timeout.patch
- Add patches from upstream to fix a couple of memory leaks:
* 0003-m-mixer-api-Fix-memory-in-leak-wp_mixer_api_set_volume.patch
* 0004-module-dbus-connection-fix-GCancellable-leak.patch
OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/wireplumber?expand=0&rev=88
* Additions:
- Implemented before/after dependencies for components, to
ensure correct load order in custom configurations (#600)
- Implemented profile inheritance in the configuration file.
This allows profiles to inherit all the feature specifications
of other profiles, which is useful to avoid copying long lists
of features just to make small changes
- Added multi-instance configuration profiles, tested and
documented them
- Added a ``main-systemwide`` profile, which is now the default
for instances started via the system-wide systemd service and
disables features that depend on the user session (#608)
- Added a ``wp_core_connect_fd`` method, which allows making a
connection to PipeWire via an existing open socket (useful
for portal-based connections)
* Fixes:
- The Bluetooth auto-switch script now uses the common event
source object managers, which should improve its
stability (!663)
- Fix an issue where switching between Bluetooth profiles
would temporarily link active audio streams to the internal
speakers (!655)
OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/wireplumber?expand=0&rev=86
* l/find-best-target: Allow regular filters to be best targets
* linking-utils: fallback to role priority 0 if none is defined
- Update to version 0.5.4:
* Highlights:
- Refactored the role-based linking policy (previously known
also as "endpoints" or "virtual items" policy) to blend in
with the standard desktop policy. It is now possible use
role-based sinks alongside standard desktop audio operations
and they will only be used for streams that have a
"media.role" defined. It is also possible to force streams to
have a media.role, using a setting. Other features include:
blending with smart filters in the graph and allowing
hardware DSP nodes to be also used easily instead of
requiring software loopbacks for all roles. (#610, !649)
* Improvements:
- Filters that are not declared as smart will now behave again
as normal application streams, instead of being treated
sometimes differently (!657)
* Fixes:
- Fixed an issue that would cause WirePlumber to crash at
startup if an empty configuration file was present in one of
the search paths (#671)
- Fixed Bluetooth profile auto-switching when a filter is
permanently linked to the Bluetooth source (!650)
- Fixed an issue in the software-dsp script that would cause
DSP filters to stay around and cause issues after their
device node was destroyed (!651)
- Fixed an issue in the autoswitch-bluetooth-profile script
OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/wireplumber?expand=0&rev=83
* get-filter-from-target: Don't bypass the hook if the session item is a regular filter
* filter-utils: Allow smart filters to have as target filters that are not smart
* tests: skip some tests when audiotestsrc is unavailable
* scripts/device: avoid crashing if the device.name is not set
* tests/examples: add example on how to set node "params" under Props
* autoswitch-bluetooth-profile: Always destroy the restore timeout source before switching
* node/software-dsp: ensure that filter chains are properly unloaded
* scripts: Fix autoswitch BT profile when using filters
* bluez: Don't create loopback source if autoswitch setting is disabled
* conf: further improve how top-level objects are handled
* conf: skip empty configuration files to avoid crashing
OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/wireplumber?expand=0&rev=82
- Add patch from upstream to fix a json log issue:
* 0001-lua-json-fix-error-ouput.patch
- Add patch from upstream to add a method to merge json containers:
* 0002-lua-json-add-method-to-merge-json-containers.patch
- Add patch from upstream to fix merging a particular case
of configuration options:
* 0003-json-utils-fix-overriding-of-non-container-values-when.patch
- Fix wireplumber not starting successfully when audio support is
not enabled since the main profile now requires it. The best
option would be to use a video-only profile but it's too late
to change the way wireplumber is started in SLE/Leap, so the
solution just makes audio/bluetooth optional for now
(bsc#1223916)
* split-config-file.py
OBS-URL: https://build.opensuse.org/request/show/1172110
OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/wireplumber?expand=0&rev=78
- Update to version 0.5.2:
* Highlights:
- Added support for loading configuration files other than the
default wireplumber.conf within Lua scripts (!629)
- Added support for loading single-section configuration files,
without fragments (!629)
- Updated the node.software-dsp script to be able to load
filter-chain graphs from external configuration files, which
is needed for Asahi Linux audio DSP configuration (!629)
* Fixes:
- Fixed destroying camera nodes when the camera device is
removed (#627, !631)
- Fixed an issue with Bluetooth BAP device set naming (!632)
- Fixed an issue caused by the pipewire event loop not being
"entered" as expected (!634, #638)
- A false positive warning about no modules being loaded is
now suppressed when using libpipewire >= 1.0.5 (#620)
- Default nodes can now be selected using priority.driver when
priority.session is not set (#642)
* Changes:
- The library version is now generated following pipewire's
versioning scheme: libwireplumber-0.5.so.0.5.2 becomes
libwireplumber-0.5.so.0.0502.0 (!633)
- Remove patches from upstream that are already in 0.5.2:
* 0001-core-set-context.modules.allow-empty-to-silence-warning-in.patch
* 0002-monitor-utils-clear-cam-data-after-creating-nodes.patch
* 0003-monitors_bluez-fix-BAP-device-set-node-naming.patch
OBS-URL: https://build.opensuse.org/request/show/1169814
OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/wireplumber?expand=0&rev=77
- Add patch from upstream to silence a warning on pipewire
(since 1.0.5):
* 0001-core-set-context.modules.allow-empty-to-silence-warning-in.patch
- Add patch from upstream to fix a dangling reference to a device:
* 0002-monitor-utils-clear-cam-data-after-creating-nodes.patch
- Add patch from upstream to fix BAP node naming:
* 0003-monitors_bluez-fix-BAP-device-set-node-naming.patch
OBS-URL: https://build.opensuse.org/request/show/1168470
OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/wireplumber?expand=0&rev=76
- Update to version 0.5.1:
* Highlights:
- Added a guide documenting how to migrate configuration from
0.4 to 0.5, also available online at:
https://pipewire.pages.freedesktop.org/wireplumber/daemon/configuration/migration.html
If you are packaging WirePlumber for a distribution, please
consider informing users about this. Installing the
wireplumber-doc subpackage, this file can be read by running:
xdg-open /usr/share/doc/wireplumber/html/daemon/configuration/migration.html
* Fixes:
- Fixed an odd issue where microphones would stop being usable
when a Bluetooth headset was connected in the HSP/HFP profile
(#598, !620)
- Fixed an issue where it was not possible to store the
volume/mute state of system notifications (#604)
- Fixed a rare crash that could occur when a node was destroyed
while the 'select-target' event was still being processed
(!621)
- Fixed deleting all the persistent settings via
wpctl --delete (!622)
- Fixed using Bluetooth autoswitch with A2DP profiles that have
an input route (!624)
- Fixed sending an error to clients when linking fails due to a
format mismatch (!625)
* Additions:
- Added a check that prints a verbose warning when old-style
0.4.x Lua configuration files are found in the system. (#611)
- The "policy-dsp" script, used in Asahi Linux to provide a
software DSP for Apple Sillicon devices, has now been ported
to 0.5 properly and documented (#619, !627)
OBS-URL: https://build.opensuse.org/request/show/1163927
OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/wireplumber?expand=0&rev=75
- Update to version 0.5.0:
* Changes:
- Bumped the minimum required version of PipeWire to 1.0.2,
because we make use of the 'api.bluez5.internal' property of
the BlueZ monitor (!613)
- Improved the naming of Bluetooth nodes when the
auto-switching loopback node is present (!614)
- Updated the documentation on "settings", the Bluetooth
monitor, the Access configuration, the file search locations
and added a document on how to modify the configuration file
(#595, !616)
* Fixes:
- Fixed checking for available routes when selecting the
default node (!609)
- Fixed an issue that was causing an infinite loop storing
routes in the state file (!610)
- Fixed the interpretation of boolean values in the alsa
monitor rules (#586, !611)
- Fixes a Lua crash when we have 2 smart filters, one with a
target and one without (!612)
- Fixed an issue where the default nodes would not be updated
when the currently selected default node became unavailable
(#588, !615)
- Fixed an issue that would cause the Props (volume, mute, etc)
of loopbacks and other filter nodes to not be restored at
startup (#577, !617)
- Fixed how some constants were represented in the
gobject-introspection file, mostly by converting them from
defines to enums (#540, #591)
- Fixed an issue using WirePlumber headers in other projects
OBS-URL: https://build.opensuse.org/request/show/1159099
OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/wireplumber?expand=0&rev=72
- Update to version 0.4.90+git25.95cfa9e:
* wpctl: fix settings --help listing
* docs: conf_file: small updates
* docs: installing: update dependency versions
* si-linkables: do not fully reset when the underlying proxy is
destroyed
* registry: move to a separate file and decouple it from the
object manager
* log: docs: document the log topic definition macros
* monitors/bluez: add 'internal' prefix to internal bluez node
names.
* monitor/bluez: set node.name property when creating combine
stream
* meson: bump min pipewire version to 1.0.2
* scripts: fix regression in state-routes.lua when marking routes
as 'active'
* scripts: improve linking logs
* monitors: use parseBool for boolean properties in rules
* config: add {device|node}.disable
* object-interest: make WP_INTEREST_MATCH_ALL part of the enum
* proxy: make the FEATURES_MINIMAL and FEATURES_ALL constants
part of the enum
* log: fix WP_LOG_LEVEL_TRACE value in the g-i bindings
* base-dirs: wrap flag groups in parenthesis
* log.h: define G_LOG_DOMAIN only if
WP_USE_LOCAL_LOG_TOPIC_IN_G_LOG is defined
* meson: make sure the boolean options have boolean values
* meson: move the common CFLAGS to project-wide scope
* scripts: make sure target is not nil when iterating filters
with matching targets
OBS-URL: https://build.opensuse.org/request/show/1157293
OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/wireplumber?expand=0&rev=71
- Update to version 0.4.90 (0.5.0 RC1)
* Highlights:
- The configuration system has been changed back to load files
from the WirePlumber configuration directories, such as
/etc/wireplumber and $XDG_CONFIG_HOME/wireplumber, unlike in
the pre-releases. This was done because issues were observed
with installations that use a different prefix for pipewire
and wireplumber. If you had a wireplumber.conf file in
/etc/pipewire or $XDG_CONFIG_HOME/pipewire, you should move
it to /etc/wireplumber or $XDG_CONFIG_HOME/wireplumber
respectively (!601)
- The internal base directories lookup system now also respects
the XDG_CONFIG_DIRS and XDG_DATA_DIRS environment variables,
and their default values as per the XDG spec, so it is
possible to install configuration files also in places like
/etc/xdg/wireplumber and override system-wide data paths
(!601)
- wpctl now has a settings subcommand to show, change and
delete settings at runtime. This comes with changes in the
WpSettings system to validate settings using a schema that is
defined in the configuration file. The schema is also
exported on a metadata object, so it is available to any
client that wants to expose WirePlumber settings (!599, !600)
- The WpConf API has changed to not be a singleton and support
opening arbitrary config files. The main config file now
needs to be opened prior to creating a WpCore and passed to
the core using a property. The core uses that without letting
the underlying pw_context open and read the default
client.conf. The core also closes the WpConf after all
components are loaded, which means all the config loading is
OBS-URL: https://build.opensuse.org/request/show/1154974
OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/wireplumber?expand=0&rev=67
- Add patch from upstream to remove the "clear-persistent"
sub-command and add a "settings" sub-command:
* 0001-wpctl-add-settings-subcomand-to-show_-delete-or-change.patch
- Update to version 0.4.82 (0.5.0 pre-release 2)
* Highlights:
- Bluetooth auto-switching is now implemented with a virtual
source node. When an application links to it, the actual
device switches to the HSP/HFP profile to provide the real
audio stream. This is a more robust solution that works with
more applications and is more user-friendly than the previous
application whitelist approach
- Added support for dynamic log level changes via the PipeWire
settings metadata. Also added support for log level patterns
in the configuration file
- The "persistent" (i.e. stored) settings approach has changed
to use two different metadata objects: sm-settings and
persistent-sm-settings. Changes in the former are applied in
the current session but not stored, while changes in the
latter are stored and restored at startup. Some work was also
done to expose a wpctl interface to read and change these
settings, but more is underway
- Several WirePlumber-specific node properties that used to be
called target.* have been renamed to node.* to match the
PipeWire convention of node.dont-reconnect. These are also
now fully documented
* Other changes:
- Many documentation updates
- Added support for SNAP container permissions
- Fixed multiple issues related to restoring the Route
OBS-URL: https://build.opensuse.org/request/show/1147639
OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/wireplumber?expand=0&rev=66
- Update to version 0.4.16:
* Additions:
- Added a new "sm-objects" script that allows loading objects
on demand via metadata entries that describe the object to
load; this can be used to load pipewire modules, such as
filters or network sources/sinks, on demand
- Added a mechanism to override device profile priorities in
the configuration, mainly as a way to re-prioritize Bluetooth
codecs, but this also can be used for other devices
- Added a mechanism in the endpoints policy to allow connecting
filters between a certain endpoint's virtual sink and the
device sink; this is specifically intended to allow plugging
a filter-chain to act as equalizer on the Multimedia endpoint
- Added wp_core_get_own_bound_id() method in WpCore
* Changes:
- PipeWire 0.3.68 is now required
- policy-dsp now has the ability to hide hardware nodes behind
the DSP sink to prevent hardware misuse or damage
- JSON parsing in Lua now allows keys inside objects to be
without quotes
- Added optional argument in the Lua JSON parse() method to
limit recursions, making it possible to partially parse a
JSON object
- It is now possible to pass nil in Lua object constructors
that expect an optional properties object; previously,
omitting the argument was the only way to skip the properties
- The endpoints policy now marks the endpoint nodes as
"passive" instead of marking their links, adjusting for the
behavior change in PipeWire 0.3.68
- Removed the "passive" property from si-standard-link, since
OBS-URL: https://build.opensuse.org/request/show/1128888
OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/wireplumber?expand=0&rev=63
- Add patch from upstream that fixes too many matches for property
interest:
* 0001-object-manager-reduce-the-amount-of-globals-that-initially.patch
- Add patch from upstream that fixes an odd failure of a test after
applying the previous patch:
* 0002-object-manager-use-an-idle-callback-to-expose-tmp-globals.patch
- Add patch from upstream that adds ability to hide parent nodes,
which is useful to prevent hardware misuse or damage by poorly
behaved/configured clients:
* 0001-policy-dsp-add-ability-to-hide-parent-nodes.patch
OBS-URL: https://build.opensuse.org/request/show/1121413
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/wireplumber?expand=0&rev=25
- Add patch from upstream that fixes too many matches for property
interest:
* 0001-object-manager-reduce-the-amount-of-globals-that-initially.patch
- Add patch from upstream that fixes an odd failure of a test after
applying the previous patch:
* 0002-object-manager-use-an-idle-callback-to-expose-tmp-globals.patch
- Add patch from upstream that adds ability to hide parent nodes,
which is useful to prevent hardware misuse or damage by poorly
behaves/configured clients:
* 0001-policy-dsp-add-ability-to-hide-parent-nodes.patch
OBS-URL: https://build.opensuse.org/request/show/1121397
OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/wireplumber?expand=0&rev=61