* Additions & Enhancements:
- Added internal filter graph support for audio nodes, allowing
users to create audio preprocessing and postprocessing chains
without exposing filters to applications, useful for software
DSP (!743 (merged))
- Added new Lua Properties API that significantly improves
performance by avoiding constant serialization between
WpProperties and Lua tables, resulting in approximately 40%
faster node linking (!757 (merged))
- Added WpIterator Lua API for more efficient parameter
enumeration (!746 (merged))
- Added bash completions for wpctl command (!762 (merged))
- Added script to find suitable volume control when using
role-based policy, allowing volume sliders to automatically
adjust the volume of the currently active role (e.g.,
ringing, call, media) (!711 (merged))
- Added experimental HDMI channel detection setting to use HDMI
ELD information for channel configuration (!749 (merged))
- Enhanced role-based policy to allow setting preferred target
sinks for media role loopbacks via
policy.role-based.preferred-target (!754 (merged))
- Enhanced Bluetooth profile autoswitch logic to be more robust
and handle saved profiles correctly, including support for
loopback sink nodes (!739 (merged))
- Enhanced ALSA monitor to include alsa.* device properties on
nodes for rule matching (!761 (merged))
- Optimized stream node linking for common cases to reduce
latency when new audio/video streams are added (!760)
- Improved event dispatcher performance by using hash table
OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/wireplumber?expand=0&rev=98
* Additions & Enhancements:
- Added mono audio configuration support via
node.features.audio.mono setting that can be changed at
runtime with wpctl (!721)
- Added automatic muting of ALSA devices when a running node
is removed, helping prevent loud audio on speakers when
headsets are unplugged (!734)
- Added notifications API module for sending system
notifications (!734)
- Added comprehensive wpctl man page and documentation
(!735, #825)
- Enhanced object interest handling for PipeWire properties
on session items (!738)
* Fixes:
- Fixed race condition during shutdown in the permissions
portal module that could cause crashes in GDBus signal
handling (!748).
- Added device validity check in state-routes handling to
prevent issues when devices are removed during async
operations (!737, #844)
- Fixed Log.critical undefined function error in
device-info-cache (!733)
- Improved device hook documentation and configuration (!736)
- Add patch from upstream to avoid dispatcher errors in the log
when registering/removing hooks that were already
registered/removed before:
* 0001-automute-alsa-routes.lua-Dont-register_remove-hooks-if.patch
OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/wireplumber?expand=0&rev=97
* Additions & Enhancements:
- Added modem manager module for tracking voice call status and
voice call device profile selection hooks to improve phone
call audio routing on mobile devices (!722, !729, #819)
- Added MPRIS media player pause functionality that
automatically pauses media playback when the audio target
(e.g. headphones) is removed (!699, #764)
- Added support for human-readable names and localization of
settings in wireplumber.conf with wpctl displaying localized
setting descriptions (!712)
- Improved default node selection logic to use both session and
route priorities when nodes have equal session priorities
(!720)
- Increased USB device priority in the ALSA monitor (!719)
* Fixes:
- Fixed multiple Lua runtime issues including type confusion
bugs, stack overflow prevention, and SPA POD array/choice
builders (!723, !728)
- Fixed proxy object lifecycle management by properly clearing
the OWNED_BY_PROXY flag when proxies are destroyed to prevent
dangling pointers (!732)
- Fixed state-routes handling to prevent saving unavailable
routes and eliminate race conditions during profile switching
(!730, #762)
- Fixed some memory leaks in the script tester and the settings
iterator (!727, !726)
- Fixed a potential crash caused by module-loopback destroying
itself when the pipewire connection is closed (#812)
- Fixed profile saving behavior in wpctl set-profile command
OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/wireplumber?expand=0&rev=96
- Update to version 0.5.9:
* Additions & Enhancements:
- Added a new audio node grouping functionality using an
external command line tool (!646)
- The libcamera monitor now supports devices that are not
associated with device ids (!701)
- The wireplumber user systemd service is now associated with
dbus.service to avoid strange warnings when dbus exits (!702)
- Added "SYSLOG_IDENTIFIER", "SYSLOG_FACILITY", "SYSLOG_PID"
and "TID" to log messages that are sent to the journal (!709)
* Fixes:
- Fixed a crash of wpctl set-default on 32-bit architectures
(#773)
- Fixed a crash when a configuration component had no
'provides' field (#771)
- Reduced the log level of some messages that didn't need
to be as high (!695)
- Fixed another nil reference issue in the alsa.lua monitor
script (!704)
- Fixed name deduplication of v4l2 and libcamera devices (!705)
- Fixed an issue with wpctl not being able to save settings
sometimes (!708, #749)
- Drop patches that are already included in this version:
* 0001-internal-comp-loader-generate-a-provides-for-components.patch
* 0002-wpctl-fix-default-device-name-leak.patch
* 0003-wpctl-fix-types-in-variadic-arguments.patch
* 0004-monitor-utils-Support-devices-without-any-device-ids.patch
* 0005-v4l2_monitor-scripts-fix-for-deduplicate-devices-with-the.patch
* 0006-monitors_libcamera-fix-deduplicating-devices-with-the-same.patch
* 0007-monitors_alsa-fix-nil-table-indexing.patch
OBS-URL: https://build.opensuse.org/request/show/1278392
OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/wireplumber?expand=0&rev=94
pipewire/wireplumber to use upstream provided profiles instead
of custom config files modifications. We now support audio with
the default wireplumber package and only when the
wireplumber-video-only-profile package is installed, wireplumber
will not use audio (allowing to use pulseaudio instead). This
means we now set the profile using an environment variable in
the wireplumber user service that has a default value of "main"
and is set in /usr/etc/wireplumber.conf to "video-only" by the
mentioned package . A user can override the value in
/etc/wireplumber.conf.
* set-profile-in-service.patch
- Add patches from upstream to fix various issues.
* 0001-internal-comp-loader-generate-a-"provides"-for-components.patch
* 0002-wpctl-fix-default-device-name-leak.patch
* 0003-wpctl-fix-types-in-variadic-arguments.patch
* 0004-monitor-utils-Support-devices-without-any-device-ids.patch
* 0005-v4l2_monitor-scripts-fix-for-deduplicate-devices-with-the.patch
* 0006-monitors_libcamera-fix-deduplicating-devices-with-the-same.patch
* 0007-monitors_alsa-fix-nil-table-indexing.patch
OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/wireplumber?expand=0&rev=91
* Additions & Enhancements:
- Added support for handling UCM SplitPCM nodes in the ALSA
monitor, which allows native PipeWire channel remapping using
loopbacks for devices that use this feature (!685)
- Introduced new functions to mark WpSpaDevice child objects as
pending. This allows properly associating asynchronously
created loopback nodes with their parent WpSpaDevice without
losing ObjectConfig events (!687, !689)
- Improved the node name deduplication logic in the ALSA
monitor to prevent node names with .2, .3, etc appended to
them in some more cases (!688)
- Added a new script to populate session.services. This is a
step towards implementing detection of features that PipeWire
can service (!686)
* Fixes:
- Fixed an issue that was causing duplicate Bluetooth SCO
(HSP/HFP) source nodes to be shown in UIs (#701, !683)
- In the BlueZ monitor, marked the source loopback node as
non-virtual, addressing how it appears on UIs (#729)
- Disabled stream-restore for device loopback nodes to
prevent unwanted property changes (!691)
- Fixed wp_lua_log_topic_copy() to correctly copy topic names
(#757)
- Updated script tests to handle differences in object
identifiers (object.serial vs node.id), ensuring proper test
behavior (#761)
OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/wireplumber?expand=0&rev=90
* 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