aboutsummaryrefslogtreecommitdiffstats
path: root/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl
diff options
context:
space:
mode:
authorGeorge Kiagiadakis <george.kiagiadakis@collabora.com>2021-05-11 11:34:16 +0300
committerJan-Simon Moeller <jsmoeller@linuxfoundation.org>2021-05-12 19:06:24 +0000
commitfa55216e21c8a63f9f9b9309edc005ed2bea2485 (patch)
tree9eaa143f013da1a523c3d4ccf43a1f89044d7e24 /meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl
parent3e1240465983d3a7f551819ad3dcc21b2eea6c36 (diff)
wireplumber: update to 0.4 rc1
* Update the bluetooth config to be aligned with the default upstream config * Make a2dp streams use the Multimedia role instead of Communication * Add wireplumber.conf in the agl config, which is now required Bug-AGL: SPEC-3844 Change-Id: Ifdc61065593b7cbd366dd490689135f0973ebf66 Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com> Reviewed-on: https://gerrit.automotivelinux.org/gerrit/c/AGL/meta-agl/+/26340 Tested-by: Jenkins Job builder account ci-image-build: Jenkins Job builder account ci-image-boot-test: Jenkins Job builder account Reviewed-by: Jan-Simon Moeller <jsmoeller@linuxfoundation.org>
Diffstat (limited to 'meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl')
-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
2 files changed, 113 insertions, 6 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 }
+]