aboutsummaryrefslogtreecommitdiffstats
path: root/meta-pipewire/recipes-multimedia
diff options
context:
space:
mode:
Diffstat (limited to 'meta-pipewire/recipes-multimedia')
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/30-bluez-monitor.lua45
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/wireplumber.conf74
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl_git.bb3
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber_git.bb5
4 files changed, 119 insertions, 8 deletions
diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/30-bluez-monitor.lua b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/30-bluez-monitor.lua
index 50366d60b..fab9ac0e4 100644
--- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/30-bluez-monitor.lua
+++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/30-bluez-monitor.lua
@@ -3,6 +3,12 @@
bluez_monitor = {}
bluez_monitor.properties = {
+ -- Enable mSBC support, disabled by default. Be aware that
+ -- mSBC is not expected to work on all headset + adapter combinations.
+ -- This can be overloaded for a specific device and native backend
+ -- in rules section.
+ --["bluez5.msbc-support"] = false,
+
--["bluez5.sbc-xq-support"] = true,
-- Enabled headset roles (default: [ hsp_hs hfp_ag ]), this
@@ -18,6 +24,10 @@ bluez_monitor.properties = {
-- Enabled A2DP codecs (default: all).
--["bluez5.codecs"] = "[ sbc aac ldac aptx aptx_hd ]",
+
+ -- Properties for the A2DP codec configuration
+ --["bluez5.default.rate"] = 48000,
+ --["bluez5.default.channels"] = 2,
}
bluez_monitor.rules = {
@@ -34,23 +44,36 @@ bluez_monitor.rules = {
},
-- Apply properties on the matched object.
apply_properties = {
- -- Autoconnect device profiles, disabled by default
- -- if the property is not specified.
- ["bluez5.reconnect-profiles"] = "[ hfp_hf hsp_hs a2dp_sink ]",
+ -- Auto-connect device profiles on start up or when only partial
+ -- profiles have connected. Disabled by default if the property
+ -- is not specified.
+ --["bluez5.auto-connect"] = "[ hfp_hf hsp_hs a2dp_sink hfp_ag hsp_ag a2dp_source ]",
+ ["bluez5.auto-connect"] = "[ hfp_hf hsp_hs a2dp_sink ]",
- -- MSBC is not expected to work on all headset + adapter combinations.
+ -- Overload mSBC support for native backend and a specific device.
--["bluez5.msbc-support"] = false,
+ -- Hardware volume control (default: [ hfp_ag hsp_ag a2dp_source ])
+ --["bluez5.hw-volume"] = "[ hfp_hf hsp_hs a2dp_sink hfp_ag hsp_ag a2dp_source ]",
+
-- LDAC encoding quality
-- Available values: auto (Adaptive Bitrate, default)
-- hq (High Quality, 990/909kbps)
-- sq (Standard Quality, 660/606kbps)
-- mq (Mobile use Quality, 330/303kbps)
--["bluez5.a2dp.ldac.quality"] = "auto",
+
+ -- AAC variable bitrate mode
+ -- Available values: 0 (cbr, default), 1-5 (quality level)
+ --["bluez5.a2dp.aac.bitratemode"] = 0,
+
+ -- Profile connected first
+ -- Available values: a2dp-sink (default), headset-head-unit
+ --["device.profile"] = "a2dp-sink",
},
},
{
- -- Make output stream nodes go through the Communication endpoint
+ -- Make output hsp/hfp stream nodes go through the Communication endpoint
-- Unfortunately we cannot match on "media.class" because this property
-- is not known before the node is created
matches = {
@@ -58,12 +81,22 @@ bluez_monitor.rules = {
{ "api.bluez5.profile", "equals", "headset-audio-gateway" },
{ "factory.name", "matches", "*source*" },
},
+ },
+ apply_properties = {
+ ["media.role"] = "Communication",
+ },
+ },
+ {
+ -- Make output a2dp stream nodes go through the Multimedia endpoint
+ -- Unfortunately we cannot match on "media.class" because this property
+ -- is not known before the node is created
+ matches = {
{
{ "api.bluez5.profile", "equals", "a2dp-source" },
},
},
apply_properties = {
- ["media.role"] = "Communication",
+ ["media.role"] = "Multimedia",
},
},
}
diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/wireplumber.conf b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/wireplumber.conf
new file mode 100644
index 000000000..6f9b0b186
--- /dev/null
+++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/wireplumber.conf
@@ -0,0 +1,74 @@
+# WirePlumber daemon context configuration #
+
+context.properties = {
+ ## Properties to configure the PipeWire context and some modules
+
+ # 1=error/critical, 2=warning, 3=info, 4=debug, 5=trace
+ log.level = 2
+
+ wireplumber.script-engine = lua-scripting
+}
+
+context.spa-libs = {
+ #<factory-name regex> = <library-name>
+ #
+ # Used to find spa factory names. It maps an spa factory name
+ # regular expression to a library name that should contain
+ # that factory.
+ #
+ api.alsa.* = alsa/libspa-alsa
+ api.bluez5.* = bluez5/libspa-bluez5
+ api.v4l2.* = v4l2/libspa-v4l2
+ api.libcamera.* = libcamera/libspa-libcamera
+ audio.convert.* = audioconvert/libspa-audioconvert
+ support.* = support/libspa-support
+}
+
+context.modules = [
+ #{ name = <module-name>
+ # [ args = { <key> = <value> ... } ]
+ # [ flags = [ [ ifexists ] [ nofail ] ]
+ #}
+ #
+ # PipeWire modules to load.
+ # If ifexists is given, the module is ignored when it is not found.
+ # If nofail is given, module initialization failures are ignored.
+ #
+
+ # The native communication protocol.
+ { name = libpipewire-module-protocol-native }
+
+ # Allows creating nodes that run in the context of the
+ # client. Is used by all clients that want to provide
+ # data to PipeWire.
+ { name = libpipewire-module-client-node }
+
+ # Allows creating devices that run in the context of the
+ # client. Is used by the session manager.
+ { name = libpipewire-module-client-device }
+
+ # Makes a factory for wrapping nodes in an adapter with a
+ # converter and resampler.
+ { name = libpipewire-module-adapter }
+
+ # Allows applications to create metadata objects. It creates
+ # a factory for Metadata objects.
+ { name = libpipewire-module-metadata }
+
+ # Provides factories to make session manager objects.
+ { name = libpipewire-module-session-manager }
+]
+
+wireplumber.components = [
+ #{ name = <component-name>, type = <component-type> }
+ #
+ # WirePlumber components to load
+ #
+
+ # The lua scripting engine
+ { name = libwireplumber-module-lua-scripting, type = module }
+
+ # The lua configuration file(s)
+ # Other components are loaded from there
+ { name = config.lua, type = config/lua }
+]
diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl_git.bb b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl_git.bb
index 2f890d6c9..86d77257d 100644
--- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl_git.bb
+++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl_git.bb
@@ -12,6 +12,7 @@ SRC_URI = "\
file://30-alsa-monitor.lua \
file://30-bluez-monitor.lua \
file://99-load-modules.lua \
+ file://wireplumber.conf \
file://wireplumber-bluetooth.conf \
"
PACKAGE_ARCH = "${MACHINE_ARCH}"
@@ -30,6 +31,8 @@ do_install_append() {
install -m 0644 ${WORKDIR}/30-bluez-monitor.lua ${config_dir}
install -m 0644 ${WORKDIR}/99-load-modules.lua ${config_dir}
+ install -m 0644 ${WORKDIR}/wireplumber.conf ${D}${sysconfdir}/wireplumber/
+
install -d ${dbus_config_dir}
install -m 0644 ${WORKDIR}/wireplumber-bluetooth.conf ${dbus_config_dir}
}
diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber_git.bb b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber_git.bb
index 2d1576719..56065db48 100644
--- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber_git.bb
+++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber_git.bb
@@ -14,9 +14,10 @@ DEPENDS = "glib-2.0 glib-2.0-native pipewire lua"
SRC_URI = "\
git://gitlab.freedesktop.org/pipewire/wireplumber.git;protocol=https;branch=master \
"
-SRCREV = "bc1413e1cd718a407630903d9a50dabd6d781498"
+SRCREV = "ecef960b7859b9b24885840453a3ddf4812845f2"
-PV = "0.3.70+git${SRCPV}"
+#PV = "0.3.95+git${SRCPV}"
+PV = "0.3.95"
S = "${WORKDIR}/git"
WPAPI="0.4"