- Update to version 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 (merged), !822 (merged), !825 (merged))
    - 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 (merged))
    - 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 (merged), !842 (merged))
    - Added list subcommand to wpctl for displaying PipeWire
      objects in a script-friendly format, with bash completions
      (!805 (merged), !823 (merged))
    - Added reset command to wpctl to reset the state of
      WirePlumber and PipeWire to installation defaults
      (!848 (merged), !849 (merged))
    - Enhanced wpctl to connect to the manager socket when
      available, giving the tool unrestricted access to the
      PipeWire graph (!814 (merged))
    - Added new bluetooth.profile-preference setting to
      find-preferred-profile for selecting quality or latency A2DP
      profiles (!819 (merged))

OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/wireplumber?expand=0&rev=102
This commit is contained in:
2026-06-19 07:26:42 +00:00
committed by Git OBS Bridge
commit da5b2a644d
17 changed files with 3263 additions and 0 deletions
+2639
View File
File diff suppressed because it is too large Load Diff
+308
View File
@@ -0,0 +1,308 @@
#
# spec file for package wireplumber
#
# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%define pipewire_minimum_version 1.0.2
%define apiver 0.5
%define apiver_str 0_5
%define sover 0
%define libwireplumber libwireplumber-%{apiver_str}-%{sover}
Name: wireplumber
Version: 0.5.15
Release: 0
Summary: Session / policy manager implementation for PipeWire
License: MIT
Group: Development/Libraries/C and C++
URL: https://gitlab.freedesktop.org/pipewire/wireplumber
Source0: wireplumber-%{version}.tar.xz
Source1: wireplumber.env
Patch100: set-profile-in-service.patch
# docs
BuildRequires: doxygen
BuildRequires: graphviz
# /docs
BuildRequires: cmake
BuildRequires: fdupes
BuildRequires: meson >= 0.59.0
BuildRequires: pipewire >= %{pipewire_minimum_version}
BuildRequires: pipewire-spa-plugins-0_2 >= %{pipewire_minimum_version}
BuildRequires: pkgconfig
BuildRequires: python3-base
BuildRequires: python3-lxml
BuildRequires: xmltoman
BuildRequires: pkgconfig(dbus-1)
BuildRequires: pkgconfig(gio-unix-2.0)
BuildRequires: pkgconfig(glib-2.0) >= 2.62.0
BuildRequires: pkgconfig(gmodule-2.0)
BuildRequires: pkgconfig(gobject-2.0) >= 2.62
BuildRequires: pkgconfig(gobject-introspection-1.0)
BuildRequires: pkgconfig(libpipewire-0.3) >= %{pipewire_minimum_version}
BuildRequires: pkgconfig(libsystemd)
BuildRequires: pkgconfig(lua)
BuildRequires: pkgconfig(systemd)
BuildRequires: python3-Sphinx
BuildRequires: python3-sphinx_rtd_theme
BuildRequires: python3-breathe
#!BuildIgnore: pipewire-session-manager
Requires: (%{name}-video-only-profile if pulseaudio)
Requires: pipewire >= %{pipewire_minimum_version}
Provides: pipewire-session-manager
Recommends: pipewire-jack
Recommends: pipewire-pulseaudio
Provides: wireplumber-audio = %{version}-%{release}
Obsoletes: wireplumber-audio < %{version}-%{release}
%if 0%{?suse_version} <= 1500
BuildRequires: gcc9
BuildRequires: gcc9-c++
%else
BuildRequires: c++_compiler
%endif
%{?systemd_ordering}
%description
WirePlumber is a modular session / policy manager for PipeWire and
a GObject-based high-level library that wraps PipeWire's API,
providing convenience for writing the daemon's modules as well as
external tools for managing PipeWire.
%lang_package
%package doc
Summary: Wireplumber Session / policy manager documentation
Group: Development/Libraries/C and C++
BuildArch: noarch
%description doc
This package contains documentation for the WirePlumber
session/policy manager for PipeWire.
%package video-only-profile
Summary: Disable audio support in PipeWire / WirePlumber
Group: Development/Libraries/C and C++
Requires: %{libwireplumber} = %{version}
Requires: %{name} = %{version}
Recommends: pulseaudio
Supplements: pulseaudio
BuildArch: noarch
%description video-only-profile
WirePlumber is a modular session / policy manager for PipeWire and
a GObject-based high-level library that wraps PipeWire's API,
providing convenience for writing the daemon's modules as well as
external tools for managing PipeWire.
This package makes wireplumber use the video-only-profile when
started via the wireplumber user service (the default way to run
it) effectively disabling the use of alsa devices in PipeWire.
%package devel
Summary: Session / policy manager implementation for PipeWire
Group: Development/Libraries/C and C++
Requires: %{libwireplumber} = %{version}
Requires: %{name} = %{version}
%description devel
WirePlumber is a modular session / policy manager for PipeWire and
a GObject-based high-level library that wraps PipeWire's API,
providing convenience for writing the daemon's modules as well as
external tools for managing PipeWire.
This package provides all the necessary files for development with WirePlumber
%package -n %{libwireplumber}
Summary: Session / policy manager implementation for PipeWire
Group: System/Libraries
%description -n %{libwireplumber}
WirePlumber is a modular session / policy manager for PipeWire and
a GObject-based high-level library that wraps PipeWire's API,
providing convenience for writing the daemon's modules as well as
external tools for managing PipeWire.
This package provides the wireplumber shared library.
%package -n typelib-1_0-Wp-%{apiver_str}
Summary: Introspection bindings for libwireplumber
Group: System/Libraries
%description -n typelib-1_0-Wp-%{apiver_str}
WirePlumber is a modular session / policy manager for PipeWire and
a GObject-based high-level library that wraps PipeWire's API,
providing convenience for writing the daemon's modules as well as
external tools for managing PipeWire.
This package provides the GObject Introspection bindings for
the wireplumber shared library.
%package zsh-completion
Summary: Wireplumber zsh completion
Group: System/Shells
Requires: %{name} = %{version}
Requires: zsh
Supplements: (wireplumber and zsh)
BuildArch: noarch
%description zsh-completion
Optional dependency offering zsh completion for various wpctl parameters.
%package bash-completion
Summary: Wireplumber Bash completion
Group: System/Shells
Requires: %{name} = %{version}
Requires: bash-completion
Supplements: (wireplumber and bash-completion)
%description bash-completion
Optional dependency offering bash completion for wpctl.
%prep
%autosetup -p1
%build
%if 0%{?suse_version} <= 1500
export CC=gcc-9
export CXX=g++-9
%endif
%meson -Ddoc=enabled \
-Dsystem-lua=true \
-Delogind=disabled
%meson_build
%install
%meson_install
%if 0%{?suse_version} > 1500
mkdir -p %{buildroot}/%{_distconfdir}
install -m 644 %{S:1} %{buildroot}/%{_distconfdir}/
%else
mkdir -p %{buildroot}/%{_sysconfdir}
install -m 644 %{S:1} %{buildroot}/%{_sysconfdir}/
%endif
%fdupes -s %{buildroot}/%{_datadir}/doc/pipewire/html
%find_lang %{name} %{?no_lang_C}
%ifnarch %ix86 ppc64
%check
export XDG_RUNTIME_DIR=/tmp
%meson_test
%endif
%pre
%systemd_user_pre wireplumber.service
%post
%systemd_user_post wireplumber.service
%if 0%{?suse_version} <= 1500
# If the pipewire.socket user unit is not enabled and the workaround
# for boo#1186561 has never been executed, we need to execute it now
if [ ! -L %{_sysconfdir}/systemd/user/pipewire.service.wants/wireplumber.service \
-a ! -f %{_localstatedir}/lib/pipewire/wireplumber_post_workaround \
-a -x %{_bindir}/systemctl ]; then
for service in wireplumber.service ; do
%{_bindir}/systemctl --global preset "$service" || :
done
mkdir -p %{_localstatedir}/lib/pipewire
cat << EOF > %{_localstatedir}/lib/pipewire/wireplumber_post_workaround
# The existence of this file means that the wireplumber user services were
# enabled at least once. Please don't remove this file as that would
# make the services to be enabled again in the next package update.
#
# Check the following bugs for more information:
# https://bugzilla.opensuse.org/show_bug.cgi?id=1200485
EOF
fi
%endif
%preun
%systemd_user_preun wireplumber.service
%postun
%systemd_user_postun wireplumber.service
%post -n %{libwireplumber} -p /sbin/ldconfig
%postun -n %{libwireplumber} -p /sbin/ldconfig
%files
%{_bindir}/wireplumber
%{_bindir}/wpctl
%{_bindir}/wpexec
%dir %{_libdir}/wireplumber-%{apiver}
%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-dbus-connection.so
%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-default-nodes-api.so
%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-file-monitor-api.so
%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-log-settings.so
%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-logind.so
%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-lua-scripting.so
%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-mixer-api.so
%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-modem-manager.so
%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-mpris.so
%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-notifications-api.so
%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-portal-permissionstore.so
%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-reserve-device.so
%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-settings.so
%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-si-audio-adapter.so
%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-si-node.so
%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-si-standard-link.so
%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-standard-event-source.so
%{_userunitdir}/wireplumber.service
%{_userunitdir}/wireplumber@.service
%dir %{_datadir}/doc/wireplumber
%dir %{_datadir}/doc/wireplumber/examples
%{_datadir}/doc/wireplumber/examples/wireplumber.conf.d
%{_datadir}/wireplumber
%{_mandir}/man1/wpctl.1%{?ext_man}
%files lang -f %{name}.lang
%files video-only-profile
%if 0%{?suse_version} > 1500
%{_distconfdir}/wireplumber.env
%else
%{_sysconfdir}/wireplumber.env
%endif
%files devel
%{_includedir}/wireplumber-%{apiver}
%{_libdir}/libwireplumber-%{apiver}.so
%{_libdir}/pkgconfig/wireplumber-%{apiver}.pc
%{_datadir}/gir-1.0/Wp-%{apiver}.gir
%files doc
%{_datadir}/doc/wireplumber/html/
%exclude %{_datadir}/doc/wireplumber/examples
%files -n typelib-1_0-Wp-%{apiver_str}
%{_libdir}/girepository-1.0/Wp-%{apiver}.typelib
%files -n %{libwireplumber}
%{_libdir}/libwireplumber-%{apiver}.so.%{sover}
%{_libdir}/libwireplumber-%{apiver}.so.%{sover}.*
%files zsh-completion
%dir %{_datarootdir}/zsh
%dir %{_datarootdir}/zsh/site-functions/
%{_datarootdir}/zsh/site-functions/_wpctl
%files bash-completion
%dir %{_datadir}/bash-completion
%dir %{_datadir}/bash-completion/completions
%{_datadir}/bash-completion/completions/wpctl
%changelog
+24
View File
@@ -0,0 +1,24 @@
<?xml version="1.0"?>
<services>
<service name="obs_scm" mode="manual">
<param name="scm">git</param>
<param name="url">https://gitlab.freedesktop.org/pipewire/wireplumber.git</param>
<param name="revision">0.5.15</param>
<param name="versionformat">@PARENT_TAG@</param>
<!--
<param name="revision">master</param>
<param name="versionformat">@PARENT_TAG@+git@TAG_OFFSET@.%h</param>
<param name="changesgenerate">enable</param>
-->
<!--
<param name="revision">master</param>
<param name="versionformat">@PARENT_TAG@+git%cd.%h</param>
-->
</service>
<service name="tar" mode="buildtime"/>
<service name="recompress" mode="buildtime">
<param name="file">*.tar</param>
<param name="compression">xz</param>
</service>
<service name="set_version" mode="manual" />
</services>
+24
View File
@@ -0,0 +1,24 @@
*.changes merge=merge-changes
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tar filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text
+4
View File
@@ -0,0 +1,4 @@
*.obscpio
*.osc
_build.*
.pbuild
@@ -0,0 +1,37 @@
From b60b2f4ece58eb5b08d30d6832ee987c71a52350 Mon Sep 17 00:00:00 2001
From: Pauli Virtanen <pav@iki.fi>
Date: Sun, 4 Jan 2026 23:23:25 +0200
Subject: [PATCH] monitors/bluez: request device ports take loopback nodes into
account
Take the loopback nodes into account also in device Routes.
Some Pulseaudio applications (eg GNOME) determine what to do based on
device ports, so make sure they are consistent with what nodes will be
emitted.
---
src/scripts/monitors/bluez.lua | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/src/scripts/monitors/bluez.lua b/src/scripts/monitors/bluez.lua
index 3acbeb309a19..e58731391e66 100644
--- a/src/scripts/monitors/bluez.lua
+++ b/src/scripts/monitors/bluez.lua
@@ -546,6 +546,14 @@ function checkProfiles (dev)
return
end
+ -- Setup Route/Port correctly for loopback nodes
+ local param = Pod.Object ({
+ "Spa:Pod:Object:Param:Props",
+ "Props",
+ params = Pod.Struct ({ "bluez5.autoswitch-routes", true })
+ })
+ dev:set_param("Props", param)
+
-- Create the source loopback device if never created before
local source_loopback = spa_device:get_managed_object (LOOPBACK_SOURCE_ID)
if source_loopback == nil then
--
2.52.0
@@ -0,0 +1,29 @@
From f088a6f63d0eddbd6db4eefbe55f6b9921ef913d Mon Sep 17 00:00:00 2001
From: Julian Bouzas <julian.bouzas@collabora.com>
Date: Thu, 8 Jan 2026 13:47:21 -0500
Subject: [PATCH] autoswitch-bluetooth-profile: Fix attempt to index a number
value error
The getLinkedBluetoothLoopbackSourceNodeForStream() function expects stream to be
and object and not a stream ID.
---
src/scripts/device/autoswitch-bluetooth-profile.lua | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/src/scripts/device/autoswitch-bluetooth-profile.lua b/src/scripts/device/autoswitch-bluetooth-profile.lua
index 07f8db39cfca..ee41c32e35a1 100644
--- a/src/scripts/device/autoswitch-bluetooth-profile.lua
+++ b/src/scripts/device/autoswitch-bluetooth-profile.lua
@@ -314,8 +314,7 @@ function getLinkedBluetoothLoopbackSourceNodeForStream (stream, node_om, link_om
Constraint { "bluez5.loopback", "!", "true", type = "pw" },
Constraint { "node.link-group", "=", filter_link_group, type = "pw" }
} do
- local filter_stream_id = filter_stream_node["bound-id"]
- local bt_node = getLinkedBluetoothLoopbackSourceNodeForStream (filter_stream_id, node_om, link_om, visited_link_groups)
+ local bt_node = getLinkedBluetoothLoopbackSourceNodeForStream (filter_stream_node, node_om, link_om, visited_link_groups)
if bt_node ~= nil then
return bt_node
end
--
2.52.0
@@ -0,0 +1,54 @@
From 80842cbb965608bd76520af91dad40686f202285 Mon Sep 17 00:00:00 2001
From: Julian Bouzas <julian.bouzas@collabora.com>
Date: Wed, 21 Jan 2026 10:49:13 -0500
Subject: [PATCH] default-nodes: Never consider Audio/Sink nodes as best for
default audio.source node type
Audio/Sink nodes should only be used as default audio source node type if the
user has explicitly selected it. If the user has not explicitly selected it,
we should always ignore it and instead select the highest priority Audio/Source
node.
Fixes #886
---
src/scripts/default-nodes/find-best-default-node.lua | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/src/scripts/default-nodes/find-best-default-node.lua b/src/scripts/default-nodes/find-best-default-node.lua
index a8a1262e..08643e8b 100644
--- a/src/scripts/default-nodes/find-best-default-node.lua
+++ b/src/scripts/default-nodes/find-best-default-node.lua
@@ -18,6 +18,8 @@ SimpleEventHook {
},
},
execute = function (event)
+ local props = event:get_properties ()
+ local def_node_type = props ["default-node.type"]
local available_nodes = event:get_data ("available-nodes")
local selected_prio = event:get_data ("selected-node-priority") or 0
local selected_route_prio = event:get_data ("selected-route-priority") or 0
@@ -37,6 +39,12 @@ SimpleEventHook {
-- Highest priority node wins
local priority = nutils.get_session_priority (node_props)
local route_priority = nutils.get_route_priority (node_props)
+ local media_class = node_props ["media.class"]
+
+ -- Never consider sink nodes as best if audio.source is the def node type
+ if media_class == "Audio/Sink" and def_node_type == "audio.source" then
+ goto skip_node
+ end
if selected_node == nil or
priority > selected_prio or
@@ -46,6 +54,8 @@ SimpleEventHook {
selected_route_prio = route_priority
selected_node = node_props ["node.name"]
end
+
+ ::skip_node::
end
event:set_data ("selected-node-priority", selected_prio)
--
GitLab
@@ -0,0 +1,40 @@
From 11af177902550c24497cf120a5481b0ab5ccc981 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Barnab=C3=A1s=20P=C5=91cze?= <pobrn@protonmail.com>
Date: Fri, 23 Jan 2026 19:44:34 +0100
Subject: [PATCH] event-hook: fix interest hook event type memory leak
In `wp_interest_event_hook_get_matching_event_types()`, the variable
`res` owns the allocated `GPtrArray`, but there is an early return
in the function. Hitting that will leak the allocation, so use
`g_autoptr` to avoid that.
Fixes: b80a0975c747 ("event-dispatcher: Register hooks for defined events in a hash table")
---
lib/wp/event-hook.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/lib/wp/event-hook.c b/lib/wp/event-hook.c
index 921bb934..49db4dcd 100644
--- a/lib/wp/event-hook.c
+++ b/lib/wp/event-hook.c
@@ -367,7 +367,7 @@ wp_interest_event_hook_get_matching_event_types (WpEventHook * hook)
WpInterestEventHook *self = WP_INTEREST_EVENT_HOOK (hook);
WpInterestEventHookPrivate *priv =
wp_interest_event_hook_get_instance_private (self);
- GPtrArray *res = g_ptr_array_new_with_free_func (g_free);
+ g_autoptr (GPtrArray) res = g_ptr_array_new_with_free_func (g_free);
guint i;
for (i = 0; i < priv->interests->len; i++) {
@@ -393,7 +393,7 @@ wp_interest_event_hook_get_matching_event_types (WpEventHook * hook)
}
}
- return res;
+ return g_steal_pointer (&res);
}
static void
--
GitLab
@@ -0,0 +1,39 @@
From de0bca59023ef1cd655ebf5f944f8fd5952df10e Mon Sep 17 00:00:00 2001
From: George Kiagiadakis <george.kiagiadakis@collabora.com>
Date: Fri, 6 Feb 2026 11:28:34 +0200
Subject: [PATCH] state-stream: fix crash in case the Format has a Choice for
the number of channels
Fixes: #903
---
src/scripts/node/state-stream.lua | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/src/scripts/node/state-stream.lua b/src/scripts/node/state-stream.lua
index e2fc7efe..b4537644 100644
--- a/src/scripts/node/state-stream.lua
+++ b/src/scripts/node/state-stream.lua
@@ -348,8 +348,18 @@ function buildDefaultChannelVolumes (node)
for pod in node:iterate_params("Format") do
local pod_parsed = pod:parse()
if pod_parsed ~= nil then
- channels = pod_parsed.properties.channels
- break
+ local t = type(pod_parsed.properties.channels)
+ if t == "number" then
+ channels = pod_parsed.properties.channels
+ break
+ else if t == "table" and #pod_parsed.properties.channels > 0 then
+ -- in some misbehaving clients a non-fixed Format may appear here, which means the number of
+ -- channels will be some kind of choice. If this is the case, pick the first number in the
+ -- choice (which is either the default in an enum or range, or may just happen to be the
+ -- right number in other cases)
+ channels = pod_parsed.properties.channels[1]
+ break
+ end
end
end
--
GitLab
@@ -0,0 +1,26 @@
From 48ed27d11bfd2c952bc9a3138a4df6f81aa01038 Mon Sep 17 00:00:00 2001
From: Julian Bouzas <julian.bouzas@collabora.com>
Date: Fri, 13 Feb 2026 10:17:02 -0500
Subject: [PATCH] state-stream: fix Lua 5.4 compatibility
The 'elseif' and 'else if' keywords are treated differently in Lua 5.4
---
src/scripts/node/state-stream.lua | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/scripts/node/state-stream.lua b/src/scripts/node/state-stream.lua
index b4537644..6587f26b 100644
--- a/src/scripts/node/state-stream.lua
+++ b/src/scripts/node/state-stream.lua
@@ -352,7 +352,7 @@ function buildDefaultChannelVolumes (node)
if t == "number" then
channels = pod_parsed.properties.channels
break
- else if t == "table" and #pod_parsed.properties.channels > 0 then
+ elseif t == "table" and #pod_parsed.properties.channels > 0 then
-- in some misbehaving clients a non-fixed Format may appear here, which means the number of
-- channels will be some kind of choice. If this is the case, pick the first number in the
-- choice (which is either the default in an enum or range, or may just happen to be the
--
GitLab
+19
View File
@@ -0,0 +1,19 @@
Index: wireplumber-0.5.8/src/systemd/user/wireplumber.service.in
===================================================================
--- wireplumber-0.5.8.orig/src/systemd/user/wireplumber.service.in
+++ wireplumber-0.5.8/src/systemd/user/wireplumber.service.in
@@ -11,10 +11,13 @@ NoNewPrivileges=yes
SystemCallArchitectures=native
SystemCallFilter=@system-service mincore
Type=simple
-ExecStart=@WP_BINARY@
+ExecStart=@WP_BINARY@ -p $WIREPLUMBER_PROFILE
Restart=on-failure
Slice=session.slice
Environment=GIO_USE_VFS=local
+Environment=WIREPLUMBER_PROFILE=main
+EnvironmentFile=-/usr/etc/wireplumber.env
+EnvironmentFile=-/etc/wireplumbler.env
[Install]
WantedBy=pipewire.service
Binary file not shown.
Binary file not shown.
Binary file not shown.
+7
View File
@@ -0,0 +1,7 @@
# Name of the wireplumber profile to use when running the default wireplumber
# user service. This is usually either main (when wireplumber manages audio)
# or video-only (when pulseaudio manages the audio).
#
# The default value is set in the service and should be main
#
WIREPLUMBER_PROFILE="video-only"
+4
View File
@@ -0,0 +1,4 @@
name: wireplumber
version: 0.5.15
mtime: 1781785475
commit: bc4fa8f5e84806f86530c97cb35283eecc3ec081