29 Commits

Author SHA1 Message Date
Markus Volk fd1e70986d wireplumber: update 0.5.14 -> 0.5.15
WirePlumber 0.5.15
Additions & Enhancements:

Added new WpPermissionManager API that centralizes access control for clients, with support for attaching permission managers to clients from Lua scripts; the client access scripts have been completely refactored to use the new API with a select-access event and a priority fallback mechanism: configuration, flatpak, snap, portal, and default (!797, !822, !825)
Added new WpStateMetadata class that mirrors the persistent state into a PipeWire metadata object, allowing users to clear or change saved device profiles at runtime using pw-metadata (!818)
Added set_param(), enum_params_sync() and params-changed signal to WpSpaDevice, and an event signal for SPA device events, allowing monitors to directly interact with SPA devices and react to profile changes without going through the global WpDevice object (!835, !842)
Added list subcommand to wpctl for displaying PipeWire objects in a script-friendly format, with bash completions (!805, !823)
Added reset command to wpctl to reset the state of WirePlumber and PipeWire to installation defaults (!848, !849)
Enhanced wpctl to connect to the manager socket when available, giving the tool unrestricted access to the PipeWire graph (!814)
Added new bluetooth.profile-preference setting to find-preferred-profile for selecting quality or latency A2DP profiles (!819)
Added a cache for camera permission checks in the portal access module to avoid frequent D-Bus calls; also added a 3-second timeout and fixed the Set create parameter in portal-permissionstore (!820, !821)
Fixes:

Fixed wpctl set-volume by PID to apply the same volume level to all matching nodes (#944; !829)
Fixed portal clients to be un-gated immediately after permission setup, preventing them from remaining blocked (#941; !826)
Fixed ALSA monitor to set the device profile to Off and restore it when a node enters an error state, forcing a close/reopen of the device to recover from broken ALSA device states (!837)
Fixed voice call profile selection to not skip profiles with unknown availability (!834)
Fixed memory leak in Lua scripting by only holding a strong reference of the Lua state when a script is activated, preventing leaked proxy warning messages on core disconnect (!844)
Fixed state-stream to only use the media.role key when its value is Notification when forming the stream state lookup key (!845)
Fixed pw-obj-mixin to apply the active filter when enumerating cached params and to deduplicate subscribed param IDs (!839, !840)
Fixed m-lua-scripting to validate Bool values in Pod.Choice.Enum (!841)
Fixed shutdown sequence to properly deactivate all objects and plugins before teardown (#881; !833)
Fixed Bluetooth to not set bluez5.autoswitch-routes on BT devices (!811)
Fixed null pointer dereference in permission-manager (!812)
Fixed module destructor ordering to call the parent destructor before finalizing internal state (!813)
Fixed nil value when logging in state-profile (!815)
Fixed gobject-introspection issue on spa-pod to correctly generate Python bindings (!828)
Updated translations: Chinese, Serbian, Serbian Latin

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
2026-06-25 08:42:03 -07:00
Markus Volk cc814c9fd1 wireplumber: update 0.5.13 -> 0.5.14
WirePlumber 0.5.14
~~~~~~~~~~~~~~~~~~

Additions & Enhancements:

  - Added per-device default volume configuration via the
    ``device.routes.default-{source,sink}-volume`` property, allowing device-specific volume
    defaults (e.g. a comfortable default for internal speakers or no attenuation for HDMI) (!772)

  - Added Lua 5.5 support; the bundled Lua subproject wrap has also been updated to 5.5.0
    (!775, !788)

  - Enhanced libcamera monitor to load camera nodes locally within the WirePlumber
    process instead of the PipeWire daemon, eliminating race conditions that could occur
    during initial enumeration and hotplug events (!790)

  - Enhanced Bluetooth loopback nodes to always be created when a device supports both
    A2DP and HSP/HFP profiles, simplifying the logic and making the BT profile autoswitch
    setting take effect immediately without requiring device reconnection (!782)

  - Enhanced Bluetooth loopback nodes to use ``target.object`` property instead of smart
    filters, fixing issues that prevented users from setting them as default nodes and
    also allowing smart filters to be used with them (#898; !792)

  - Enhanced Bluetooth profile autoswitch logic with further robustness improvements,
    including better headset profile detection using profile name patterns and resolving
    race conditions by running profile switching after ``device/apply-profile`` in a
    dedicated event hook (#926, #923; !776, !777, !808)

  - Enhanced wpctl ``set-default`` command to accept virtual nodes (e.g.
    ``Audio/Source/Virtual``) in addition to regular device nodes (#896; !787)

  - Improved stream linking to make the full graph rescan optional when linkable items
    change, saving CPU on low-end systems and reducing audio startup latency when
    connecting multiple streams in quick succession (!800)

  - Allowed installation of systemd service units without libsystemd being present,
    useful for distributions like Alpine Linux that allow systemd service subpackages
    (!793)

  - Allowed the ``mincore`` syscall in the WirePlumber systemd sandbox, required for
    Mesa/EGL (e.g. for the libcamera GPUISP pipeline)

  - Allowed passing ``WIREPLUMBER_CONFIG_DIR`` via the ``wp-uninstalled`` script,
    useful for passing additional configuration paths in an uninstalled environment (!801)

Fixes:

  - Removed Bluetooth sink loopback node, which was causing issues with KDE and GNOME (!794)

  - Fixed default audio source selection to never automatically use ``Audio/Sink`` nodes
    as the default source unless explicitly selected by the user (#886; !781)

  - Fixed crash in ``state-stream`` when the Format parameter has a Choice for the
    number of channels (#903; !795)

  - Fixed BAP Bluetooth device set channel properties, where ``audio.position`` was
    incorrectly serialized as a pointer address instead of the channel array (!786)

  - Fixed memory leaks in ``wp_interest_event_hook_get_matching_event_types`` and in
    the Lua ``LocalModule()`` implementation (!784, !810)

  - Fixed HFP HF stream media class being incorrectly assigned due to
    ``api.bluez5.internal=true`` being set on HFP HF streams (!809)

  - Fixed Lua 5.4 compatibility in ``state-stream`` script

  - Updated translations: Bulgarian, Georgian, Kazakh, Swedish

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
2026-04-20 10:44:41 -07:00
Gyorgy Sarvari f3862b7441 wireplumber: add ptest support
Execution takes <10s.

Sample output:

root@qemux86-64:~# ptest-runner
START: ptest-runner
2025-12-24T19:17
BEGIN: /usr/lib/wireplumber/ptest
PASS: ./wp/test-spa-json
PASS: ./wp/test-spa-pod
PASS: ./wp/test-spa-type
PASS: ./wp/test-properties
PASS: ./wp/test-core
PASS: ./wp/test-session-item
PASS: ./wp/test-json-utils
PASS: ./wp/test-events
PASS: ./wp/test-conf
PASS: ./wp/test-transition
PASS: ./wp/test-object-interest
PASS: ./wp/test-metadata
PASS: ./wp/test-object-manager
PASS: ./wp/test-factory
PASS: ./wp/test-settings
PASS: ./wp/test-proxy
PASS: ./wp/test-state
PASS: ./wp/test-component-loader
PASS: 00-test-linking-non-default-device-node.lua
PASS: 01-test-linking-non-default-device-node-capture.lua
PASS: 02-test-linking-default-device-node.lua
PASS: 03-test-linking-default-device-node-capture.lua
PASS: 04-test-linking-defined-device-node-target-object-string.lua
PASS: 05-test-linking-defined-device-node-target-object-int.lua
PASS: 06-test-linking-defined-device-node-target-object-name.lua
PASS: 07-test-linking-defined-device-node-target-object-string-capture.lua
PASS: 08-test-linking-defined-device-node-target-object-int-capture.lua
PASS: 09-test-linking-defined-device-node-target-object-name-capture.lua
PASS: 10-test-linking-defined-device-node-node-target.lua
PASS: 11-test-linking-defined-device-node-node-target-capture.lua
PASS: 12-test-linking-defined-device-node-target-node-metadata.lua
PASS: 13-test-linking-defined-device-node-target-node-metadata-capture.lua
PASS: 14-test-linking-defined-device-node-target-object-metadata.lua
PASS: 15-test-linking-defined-device-node-target-object-metadata-capture.lua
PASS: 16-test-linking-defined-device-node-target-object-int-metadata.lua
PASS: 17-test-linking-defined-device-node-target-object-int-metadata-capture.lua
PASS: 00-test-default-nodes-initial-metadata-update.lua
/usr/lib/wireplumber/ptest
PASS: pod.lua
PASS: json.lua
PASS: json-utils.lua
PASS: monitor-rules.lua
PASS: require.lua
PASS: async-activation.lua
PASS: settings.lua
PASS: event-hooks.lua
PASS: properties.lua
/usr/lib/wireplumber/ptest
PASS: ./wplua/test-wplua
PASS: ./modules/test-file-monitor
PASS: ./modules/test-si-node
PASS: ./modules/test-si-standard-link
PASS: ./modules/test-dbus-connection
PASS: ./modules/test-si-audio-adapter
PASS: ./modules/test-reserve-device
DURATION: 1
END: /usr/lib/wireplumber/ptest
2025-12-24T19:17
STOP: ptest-runner
TOTAL: 1 FAIL: 0

Signed-off-by: Gyorgy Sarvari <skandigraun@gmail.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2025-12-24 13:19:13 -08:00
Gyorgy Sarvari ca7fe11935 wireplumber: upgrade 0.5.11 -> 0.5.13
Changelog:
0.5.13:
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
- 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
- Added WpIterator Lua API for more efficient parameter enumeration
- Added bash completions for wpctl command
- 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)
- Added experimental HDMI channel detection setting to use HDMI ELD
  information for channel configuration
- Enhanced role-based policy to allow setting preferred target sinks for
  media role loopbacks via policy.role-based.preferred-target
- Enhanced Bluetooth profile autoswitch logic to be more robust and handle
  saved profiles correctly, including support for loopback sink nodes
- Enhanced ALSA monitor to include alsa.* device properties on nodes for
  rule matching
- Optimized stream node linking for common cases to reduce latency when new
  audio/video streams are added
- Improved event dispatcher performance by using hash table registration for
  event hooks, eliminating performance degradation as more hooks are
  registered
- Increased audio headroom for VMware and VirtualBox virtual machines
- Added setting to prevent restoring "Off" profiles via
  session.dont-restore-off-profile property
- Added support for 128 audio channels when compiled with a recent version of
  PipeWire

Fixes:
- Fixed memory leaks and issues in the modem manager module
- Fixed MPRIS module incorrectly treating GHashTable as GObject
- Fixed warning messages when process files in /proc/<pid>/* don't exist,
  particularly when processes are removed quickly
- Fixed MONO audio configuration to only apply to device sink nodes, allowing
  multi-channel mixing in the graph
- Fixed event dispatcher hook registration and removal to avoid spurious
  errors
- Improved logging for standard-link activation failures
- Simplified event-hook interest matching for better performance

0.5.12:
Additions & Enhancements:
- Added mono audio configuration support via node.features.audio.mono
  setting that can be changed at runtime with wpctl
- Added automatic muting of ALSA devices when a running node is removed,
  helping prevent loud audio on speakers when headsets are unplugged
- Added notifications API module for sending system notifications
- Added comprehensive wpctl man page and documentation
- Enhanced object interest handling for PipeWire properties on session items

Fixes:
- Fixed race condition during shutdown in the permissions portal module that
  could cause crashes in GDBus signal handling
- Added device validity check in state-routes handling to prevent issues
  when devices are removed during async operations
- Fixed Log.critical undefined function error in device-info-cache
- Improved device hook documentation and configuration

Signed-off-by: Gyorgy Sarvari <skandigraun@gmail.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2025-12-24 13:19:13 -08:00
Markus Volk 96f7952ec3 wireplumber: update 0.5.10 -> 0.5.11
WirePlumber 0.5.11
~~~~~~~~~~~~~~~~~~
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 (#808)
  - Fixed GObject introspection closure annotation

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2025-09-15 09:55:17 -07:00
Alexander Kanavin fc78d37ff0 meta-openembedded/all: adapt to UNPACKDIR changes
Please see
https://git.yoctoproject.org/poky/commit/?id=4dd321f8b83afecd962393101b2a6861275b5265
for what changes are needed, and sed commands that can be used to make them en masse.

I've verified that bitbake -c patch world works with these, but did not run a world
build; the majority of recipes shouldn't need further fixups, but if there are
some that still fall out, they can be fixed in followups.

Signed-off-by: Alexander Kanavin <alex@linutronix.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2025-06-25 06:44:52 -07:00
Markus Volk 3c4035cf28 wireplumber: update 0.5.8 -> 0.5.10
WirePlumber 0.5.10

Fixed a critical crash in linking-utils.haveAvailableRoutes that was
introduced accidentally in 0.5.9 and caused loss of audio output on affected
systems (#797, #799, #800, !713)

WirePlumber 0.5.9

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)

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2025-05-27 10:33:01 -07:00
Markus Volk 8599105e88 wireplumber: update 0.5.7 -> 0.5.8
WirePlumber 0.5.8
~~~~~~~~~~~~~~~~~

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)

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2025-03-10 09:41:56 -07:00
Markus Volk 38c60656c6 wireplumber: update 0.5.6 -> 0.5.7
WirePlumber 0.5.7
~~~~~~~~~~~~~~~~~

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)

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2024-12-06 20:55:57 -08:00
Markus Volk f92929991d wireplumber: update 0.5.5. -> 0.5.6
WirePlumber 0.5.6
~~~~~~~~~~~~~~~~~

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)

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2024-09-14 08:43:55 -07:00
Markus Volk 66ec2cbb3a wireplumber: update 0.5.3 -> 0.5.5
WirePlumber 0.5.5
Highlights:

Hotfix release to address crashes in the Bluetooth HSP/HFP autoswitch
functionality that were side-effects of some changes that were part
of the role-based linking policy (#682)

Improvements:

wpctl will now properly show a '*' in front of sink filters when they are
selected as the default sink (!660)

Past releases

WirePlumber 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 that could cause
an infinite loop of switching between profiles (!652, #617)
Fixed a rare issue that could cause WirePlumber to crash when dealing with
a device object that didn't have the "device.name" property set (#674)

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2024-07-01 23:38:56 -07:00
Markus Volk 0c93219cf1 wireplumber: update 0.5.2 -> 0.5.3
WirePlumber 0.5.3
~~~~~~~~~~~~~~~~~

Fixes:

  - Fixed a long standing issue that would cause many device nodes to have
    inconsistent naming, with a '.N' suffix (where N is a number >= 2) being
    appended at seemingly random times (#500)

  - Fixed an issue that would cause unavailable device profiles to be selected
    if they were previously stored in the state file, sometimes requiring users
    to manually remove the state file to get things working again (#613)

  - Fixed an occasional crash that could sometimes be triggered by hovering
    the volume icon on the KDE taskbar, and possibly other similar actions
    (#628, !644)

  - Fixed camera device deduplication logic when the same device is available
    through both V4L2 and libcamera, and the libcamera one groups multiple V4L2
    devices together (#623, !636)

  - Fixed applying the default volume on streams that have no volume previously
    stored in the state file (#655)

  - Fixed an issue that would prevent some camera nodes - in some cases -
    from being destroyed when the camera device is removed (#640)

  - Fixed an issue that would cause video stream nodes to be linked with audio
    smart filters, if smart audio filters were configured (!647)

  - Fixed an issue that would cause WP to re-activate device profiles even
    though they were already active (!639)

  - Configuration files in standard JSON format (starting with a '{', among
    other things) are now correctly parsed (#633)

  - Fixed overriding non-container values when merging JSON objects (#653)

  - Functions marked with WP_PRIVATE_API are now also marked as
    non-introspectable in the gobject-introspection metadata (#599)

Improvements:

  - Logging on the systemd journal now includes the log topic and also the log
    level and location directly on the message string when the log level is
    high enough, which is useful for gathering additional context in logs
    submitted by users (!640)

  - Added a video-only profile in wireplumber.conf, for systems where only
    camera & screensharing are to be used (#652)

  - Improved seat state monitoring so that Bluetooth devices are only enabled
    when the user is active on a local seat, instead of allowing remote users
    as well (!641)

  - Improved how main filter nodes are detected for the smart filters (!642)

  - Added Lua method to merge JSON containers (!637)

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2024-06-11 15:40:16 -07:00
Khem Raj ffc64e9c6f recipes: Start WORKDIR -> UNPACKDIR transition
Replace references of WORKDIR with UNPACKDIR where it makes sense to do
so in preparation for changing the default value of UNPACKDIR.

Signed-off-by: Khem Raj <raj.khem@gmail.com>
2024-05-23 08:44:44 -07:00
Markus Volk 79f062bddc wireplumber: update 0.5.1 -> 0.5.2
WirePlumber 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)

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2024-05-21 14:15:11 -07:00
Markus Volk b5ebed99e2 wireplumber: update 0.5.0 -> 0.5.1
WirePlumber 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.

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)

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2024-04-19 14:33:14 -07:00
Markus Volk 05ed141485 wireplumber: update 0.4.17 -> 0.5.0
Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2024-03-22 09:05:47 -07:00
Markus Volk f95ba6d074 wireplumber: update 0.4.15 -> 0.4.17
WirePlumber 0.4.17

Fixes:
Fixed a reference counting issue in the object managers that could cause
crashes due to memory corruption (#534)
Fixed an issue with filters linking to wrong targets, often with two sets
of links (#536)
Fixed a crash in the endpoints policy that would show up when log messages
were enabled at level 3 or higher

WirePlumber 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 only nodes are
marked as passive now

Fixes:
Fixed the wpctl clear-default command to completely clear all the
default nodes state instead of only the last set default
Reduced the amount of globals that initially match the interest in the
object manager
Used an idle callback instead of pw_core_sync() in the object manager to
expose tmp globals

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2023-12-07 14:25:11 -08:00
Markus Fuchs 7bd2cd290c remove unused AUTHOR variable
No longer used in generating packages
Also creates a possible confusion with the recipe maintainer
name.

Signed-off-by: Markus Fuchs <mklntf@gmail.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2023-11-08 22:51:28 -08:00
Markus Volk 56d34f391c wireplumber: Upgrade 0.4.14 -> 0.4.15
Additions:

  - A new "DSP policy" module has been added; its purpose is to automatically
    load a filter-chain when a certain hardware device is present, so that
    audio always goes through this software DSP before reaching the device.
    This is mainly to support Apple M1/M2 devices, which require a software
    DSP to be always present

  - WpImplModule now supports loading module arguments directly from a SPA-JSON
    config file; this is mainly to support DSP configuration for Apple M1/M2
    and will likely be reworked for 0.5

  - Added support for automatically combining Bluetooth LE Audio device sets
    (e.g. pairs of earbuds) (!500)

  - Added command line options in ``wpctl`` to display device/node names and
    nicknames instead of descriptions

  - Added zsh completions file for ``wpctl``

  - The device profile selection policy now respects the ``device.profile``
    property if it is set on the device; this is useful to hand-pick a profile
    based on static configuration rules (alsa_monitor.rules)

Changes/Fixes:

  - Linking policy now sends an error to the client before destroying the node,
    if it determines that the node cannot be linked to any target; this fixes
    error reporting on the client side

  - Fixed a crash in suspend-node that could happen when destroying virtual
    sinks that were loaded from another process such as pw-loopback (#467)

  - Virtual machine default period size has been bumped to 1024 (#507)

  - Updated bluez5 default configuration, using ``bluez5.roles`` instead of
    ``bluez5.headset-roles`` now (!498)

  - Disabled Bluetooth autoconnect by default (!514)

  - Removed ``RestrictNamespaces`` option from the systemd services in order to
    allow libcamera to load sandboxed IPA modules (#466)

  - Fixed a JSON encoding bug with empty strings (#471)

  - Lua code can now parse strings without quotes from SPA-JSON

  - Added some missing `\since` annotations and made them show up in the
    generated gobject-introspection file, to help bindings generators

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2023-10-12 11:13:12 -07:00
Markus Volk 98afa5696b wireplumber: update 0.4.13 -> 0.4.14
WirePlumber 0.4.14
~~~~~~~~~~~~~~~~~~

Additions:

  - Added support for managing Bluetooth-MIDI, complimenting the parts that
    were merged in PipeWire recently (!453)

  - Added a default volume configuration option for streams whose volume
    has never been saved before; that allows starting new streams at a lower
    volume than 100% by default, if desired (!480)

  - Added support for managing link errors and propagating them to the
    client(s) involved. This allows better error handling on the application
    side in case a format cannot be negotiated - useful in video streams
    (see !484, pipewire#2935)

  - snd_aloop devices are now described as being "Loopback" devices
    (pipewire#2214)

  - ALSA nodes in the pro audio profile now get increased graph priority, so
    that they are more likely to become the driver in the graph

  - Added support for disabling libcamera nodes & devices with ``node.disabled``
    and ``device.disabled``, like it works for ALSA and V4L2 (#418)

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2023-03-14 07:42:47 -07:00
Markus Volk 7fc8426c45 wireplumber: dont start systemd system service by default
If wireplumber gets started with user services and socket activation,
what I guess is the regular way, the system service fails to come up at boot

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2022-12-31 10:40:31 -08:00
Markus Volk c6ff552cb7 wireplumber: build with dbus support by default
Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2022-12-27 09:55:19 -08:00
Markus Volk 26b9c29fb8 wireplumber: update 0.4.12 -> 0.4.13
- add PACKAGECONFIG option to enable dbus support

Release 0.4.13

Additions:

    Added bluetooth SCO (HSP/HFP) hardware offload support, together with an example script that enables this functionality on the PinePhone
    Encoded audio (mp3, aac, etc...) can now be passed through, if this mode is supported by both the application and the device
    The v4l2 monitor now also respects the node.disabled and device.disabled properties inside rules
    Added "Firefox Developer Edition" to the list of apps that are allowed to trigger a bluetooth profile auto-switch (#381)
    Added support in the portal access script to allow newly plugged cameras to be immediately visible to the portal apps

Fixes:

    Worked around an issue that would prevent streams from properly linking when using effects software like EasyEffects and JamesDSP (!450)
    Fixed destroying pavucontrol-qt monitor streams after the node that was being monitored is destroyed (#388)
    Fixed a crash in the alsa.lua monitor that could happen when a disabled device was removed and re-added (#361)
    Fixed a rare crash in the metadata object (#382)
    Fixed a bug where a restored node target would override the node target set by the application on the node's properties (#335)

Packaging:

    Added build options to compile wireplumber's library, daemon and tools independently
    Added a build option to disable unit tests that require the dbus daemon
    Stopped using fakesink/fakesrc in the unit tests to be able to run them on default pipewire installations. Compiling the spa test plugin is no longer necessary
    Added pkg-config and header information in the gir file

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2022-12-27 09:55:18 -08:00
Markus Volk 72273d28e2 wireplumber: upgrade 0.4.11 -> 0.4.12
Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2022-10-15 18:24:49 -07:00
Markus Volk e75e0cebac wireplumber: update to v0.4.11
- install systemd-user-service
- install modules to get the binary running

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2022-08-22 14:12:05 -07:00
Carlos Rafael Giani f3a7de2bdf wireplumber: Upgrade to version 0.4.9
ChangeLog can be found here:

https://gitlab.freedesktop.org/pipewire/wireplumber/-/releases/0.4.9

Remove backported fix that is already included in this version.

Signed-off-by: Carlos Rafael Giani <crg7475@mailbox.org>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2022-03-30 12:40:22 -07:00
Peter Bergin 3b4fe17edb wireplumber: backport fix for default device setting
In wireplumber 0.4.8 there is an issue with default device setting.
https://gitlab.freedesktop.org/pipewire/wireplumber/-/issues/194
Backport a fix that solves this issue.

Signed-off-by: Peter Bergin <peter@berginkonsult.se>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2022-03-03 08:50:19 -08:00
Carlos Rafael Giani 6c6b8d97b4 wireplumber: Improve configuration
By default, the WirePlumber lua scripts try to access a session DBus, which
is not available if WirePlumber is run system wide. Add a small script
that turns off the bits that require session DBus. These involve reserving
ALSA devices (only useful in multi-user desktop setups) and Flatpak.

Also, fix the configuration file paths (WirePlumber uses /usr/share instead
of /etc) and add the correct files to CONFFILES:${PN}.

Signed-off-by: Carlos Rafael Giani <crg7475@mailbox.org>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2022-02-17 11:12:44 -08:00
Carlos Rafael Giani f754f4c851 wireplumber: Add recipe
WirePlumber is a session / policy manager for PipeWire with support
for Lua scripting and adding functionality by installing extra modules.

Signed-off-by: Carlos Rafael Giani <crg7475@mailbox.org>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2022-02-08 09:00:19 -08:00