diff options
Diffstat (limited to 'meta-pipewire')
24 files changed, 253 insertions, 354 deletions
diff --git a/meta-pipewire/README b/meta-pipewire/README index 410262e3a..3df3a289c 100644 --- a/meta-pipewire/README +++ b/meta-pipewire/README @@ -1,3 +1,16 @@ -This is meta-pipewire. +meta-pipewire +============= -This layer holds the sound manager 'pipewire' and 'wireplumber'. +This layer holds the sound manager 'pipewire' and session manager 'wireplumber'. + +Maintenance +----------- + +All patches must be submitted via the AGL Gerrit instance at +https://gerrit.automotivelinux.org. See this wiki page for +details: + +https://wiki.automotivelinux.org/agl-distro/contributing + +Layer maintainers: + Jan-Simon Möller <jsmoeller@linuxfoundation.org> diff --git a/meta-pipewire/conf/include/agl-pipewire.inc b/meta-pipewire/conf/include/agl-pipewire.inc index 0c585adb0..03b419c2a 100644 --- a/meta-pipewire/conf/include/agl-pipewire.inc +++ b/meta-pipewire/conf/include/agl-pipewire.inc @@ -1,2 +1 @@ DISTRO_FEATURES:append = " pipewire" -PREFERRED_RPROVIDER_virtual/wireplumber-config = "wireplumber-config-agl" diff --git a/meta-pipewire/conf/layer.conf b/meta-pipewire/conf/layer.conf index aec34d7e4..4a28a4244 100644 --- a/meta-pipewire/conf/layer.conf +++ b/meta-pipewire/conf/layer.conf @@ -9,7 +9,7 @@ BBFILE_COLLECTIONS += "meta-pipewire" BBFILE_PATTERN_meta-pipewire = "^${LAYERDIR}/" BBFILE_PRIORITY_meta-pipewire = "71" -LAYERSERIES_COMPAT_meta-pipewire = "dunfell" +LAYERSERIES_COMPAT_meta-pipewire = "scarthgap" LAYERDEPENDS_meta-pipewire = "openembedded-layer" # diff --git a/meta-pipewire/dynamic-layers/meta-app-framework/recipes-multimedia/pipewire/pipewire/0002-meson-remove-pipewire_module_c_args-as-it-is-no-long.patch b/meta-pipewire/dynamic-layers/meta-app-framework/recipes-multimedia/pipewire/pipewire/0002-meson-remove-pipewire_module_c_args-as-it-is-no-long.patch deleted file mode 100644 index 74e5ba33b..000000000 --- a/meta-pipewire/dynamic-layers/meta-app-framework/recipes-multimedia/pipewire/pipewire/0002-meson-remove-pipewire_module_c_args-as-it-is-no-long.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 3b2935ed044e657b515a07e78638b902baa8157a Mon Sep 17 00:00:00 2001 -From: Ashok Sidipotu <ashok.sidipotu@collabora.com> -Date: Wed, 1 Dec 2021 12:17:52 +0530 -Subject: [PATCH] meson: remove pipewire_module_c_args as it is no longer used. - -Upstream-Status: Inappropriate [smack specific] - ---- - src/modules/meson.build | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/src/modules/meson.build b/src/modules/meson.build -index d1d90bf05..c9f629c08 100644 ---- a/src/modules/meson.build -+++ b/src/modules/meson.build -@@ -114,7 +114,6 @@ pipewire_module_echo_cancel = shared_library('pipewire-module-echo-cancel', - - pipewire_module_access_seclabel = shared_library('pipewire-module-access-seclabel', - [ 'module-access-seclabel.c' ], -- c_args : pipewire_module_c_args, - include_directories : [configinc, spa_inc], - install : true, - install_dir : modules_install_dir, --- -2.33.1 - diff --git a/meta-pipewire/recipes-core/packagegroups/packagegroup-pipewire-base.bb b/meta-pipewire/recipes-core/packagegroups/packagegroup-pipewire-base.bb new file mode 100644 index 000000000..6237dcf80 --- /dev/null +++ b/meta-pipewire/recipes-core/packagegroups/packagegroup-pipewire-base.bb @@ -0,0 +1,17 @@ +SUMMARY = "PipeWire Media Server Base" +DESCRIPTION = "The set of packages required to use PipeWire API in AGL" +LICENSE = "MIT" + +inherit packagegroup + +PACKAGES = "\ + packagegroup-pipewire-base \ + " + +RDEPENDS:${PN} += "\ + pipewire-spa-plugins-meta \ + pipewire-modules-meta \ + ${@bb.utils.contains('DISTRO_FEATURES', 'agl-devel', 'pipewire-tools pipewire-spa-tools alsa-utils', '', d)} \ + pipewire-alsa \ + pipewire-alsa-card-profile \ +" diff --git a/meta-pipewire/recipes-core/packagegroups/packagegroup-pipewire.bb b/meta-pipewire/recipes-core/packagegroups/packagegroup-pipewire.bb index b56723b2b..e7ad14258 100644 --- a/meta-pipewire/recipes-core/packagegroups/packagegroup-pipewire.bb +++ b/meta-pipewire/recipes-core/packagegroups/packagegroup-pipewire.bb @@ -6,6 +6,7 @@ inherit packagegroup PACKAGES = "\ packagegroup-pipewire \ + packagegroup-pipewire-tools \ " RDEPENDS:${PN} += "\ @@ -15,5 +16,9 @@ RDEPENDS:${PN} += "\ pipewire-alsa \ gstreamer1.0-pipewire \ wireplumber \ - ${@bb.utils.contains('DISTRO_FEATURES', 'agl-devel', 'pipewire-tools pipewire-spa-tools', '', d)} \ " + +RDEPENDS:${PN}-tools += "\ + pipewire-tools \ + pipewire-spa-tools \ +"
\ No newline at end of file diff --git a/meta-pipewire/recipes-multimedia/pipewire/pipewire/0001-Revert-meson-declare-spa_dep-and-override_dependency.patch b/meta-pipewire/recipes-multimedia/pipewire/pipewire/0001-Revert-meson-declare-spa_dep-and-override_dependency.patch deleted file mode 100644 index 4488acc65..000000000 --- a/meta-pipewire/recipes-multimedia/pipewire/pipewire/0001-Revert-meson-declare-spa_dep-and-override_dependency.patch +++ /dev/null @@ -1,80 +0,0 @@ -From 70e750804a700b06f62f91411d487b88e7c85fe5 Mon Sep 17 00:00:00 2001 -From: Ashok Sidipotu <ashok.sidipotu@collabora.com> -Date: Fri, 26 Nov 2021 06:18:04 +0530 -Subject: [PATCH] Revert "meson: declare spa_dep and override_dependency() for - spa and pipewire" - -This reverts commit 7ab5c35cadc075bcdf44031f1f7d95352cf9a13b. - -Upstream-Status: Inappropriate[meson version dependent] - ---- - meson.build | 2 +- - spa/meson.build | 7 ------- - src/pipewire/meson.build | 10 ++-------- - 3 files changed, 3 insertions(+), 16 deletions(-) - -diff --git a/meson.build b/meson.build -index 4a572bd42..4af179c87 100644 ---- a/meson.build -+++ b/meson.build -@@ -1,7 +1,7 @@ - project('pipewire', ['c' ], - version : '0.3.40', - license : [ 'MIT', 'LGPL-2.1-or-later', 'GPL-2.0-only' ], -- meson_version : '>= 0.54.0', -+ meson_version : '>= 0.49.0', - default_options : [ 'warning_level=3', - 'c_std=gnu99', - 'b_pie=true', -diff --git a/spa/meson.build b/spa/meson.build -index 483536b54..74ee5a737 100644 ---- a/spa/meson.build -+++ b/spa/meson.build -@@ -63,12 +63,6 @@ if not get_option('examples').disabled() - subdir('examples') - endif - --spa_dep = declare_dependency( -- include_directories : [spa_inc], -- version : spaversion, -- variables : { 'plugindir' : meson.current_build_dir() / 'plugins' } --) -- - pkgconfig.generate(filebase : 'lib@0@'.format(spa_name), - name : 'libspa', - subdirs : spa_name, -@@ -79,4 +73,3 @@ pkgconfig.generate(filebase : 'lib@0@'.format(spa_name), - uninstalled_variables : ['plugindir=${prefix}/spa/plugins'], - ) - --meson.override_dependency('lib@0@'.format(spa_name), spa_dep) -diff --git a/src/pipewire/meson.build b/src/pipewire/meson.build -index f66ce8746..5cfaba3f9 100644 ---- a/src/pipewire/meson.build -+++ b/src/pipewire/meson.build -@@ -109,12 +109,8 @@ libpipewire = shared_library(pipewire_name, pipewire_sources, - ) - - pipewire_dep = declare_dependency(link_with : libpipewire, -- include_directories : [pipewire_inc, configinc], -- dependencies : [pthread_lib, atomic_dep, spa_dep], -- variables : { -- 'moduledir' : meson.current_build_dir() / '..' / 'modules', -- 'confdatadir' : meson.current_build_dir() / '..' / 'daemon', -- } -+ include_directories : [pipewire_inc, configinc, spa_inc], -+ dependencies : [pthread_lib, atomic_dep, ], - ) - - pkgconfig.generate(libpipewire, -@@ -132,6 +128,4 @@ pkgconfig.generate(libpipewire, - ], - ) - --meson.override_dependency('lib@0@'.format(pipewire_name), pipewire_dep) -- - subdir('extensions') --- -2.33.1 - diff --git a/meta-pipewire/recipes-multimedia/pipewire/pipewire/0001-systemd-Do-not-override-rootprefix.patch b/meta-pipewire/recipes-multimedia/pipewire/pipewire/0001-systemd-Do-not-override-rootprefix.patch new file mode 100644 index 000000000..45d09e6b0 --- /dev/null +++ b/meta-pipewire/recipes-multimedia/pipewire/pipewire/0001-systemd-Do-not-override-rootprefix.patch @@ -0,0 +1,35 @@ +From 2501972518a67b1710998452d164cd077a4370f1 Mon Sep 17 00:00:00 2001 +From: Scott Murray <scott.murray@konsulko.com> +Date: Thu, 17 Mar 2022 10:44:00 -0400 +Subject: [PATCH] systemd: Do not override rootprefix + +Do not override rootprefix with the value of prefix when querying +systemdsystemunitdir from the systemd pkgconfig, as doing so forces +the assumption that the system is running with usrmerge, which may +not be the case. Instead, rely on the systemd.pc correctly +representing the desired install locations. + +Reworked version of change in: + +https://git.automotivelinux.org/AGL/meta-agl/tree/meta-pipewire/recipes-multimedia/pipewire/pipewire/0012-Miscellanous-changes-to-account-for-lower-version-of.patch + +Upstream-Status: Pending + +Signed-off-by: Scott Murray <scott.murray@konsulko.com> +--- + src/daemon/systemd/system/meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/daemon/systemd/system/meson.build b/src/daemon/systemd/system/meson.build +index 84ca0b068..6956f2be3 100644 +--- a/src/daemon/systemd/system/meson.build ++++ b/src/daemon/systemd/system/meson.build +@@ -1,4 +1,4 @@ +-systemd_system_services_dir = systemd.get_variable('systemdsystemunitdir', pkgconfig_define : [ 'rootprefix', prefix]) ++systemd_system_services_dir = systemd.get_variable('systemdsystemunitdir') + if get_option('systemd-system-unit-dir') != '' + systemd_system_services_dir = get_option('systemd-system-unit-dir') + endif +-- +2.35.1 + diff --git a/meta-pipewire/recipes-multimedia/pipewire/pipewire_0.3.40.bb b/meta-pipewire/recipes-multimedia/pipewire/pipewire_1.0.0.bb index edab8db4c..6fa851caa 100644 --- a/meta-pipewire/recipes-multimedia/pipewire/pipewire_0.3.40.bb +++ b/meta-pipewire/recipes-multimedia/pipewire/pipewire_1.0.0.bb @@ -20,8 +20,8 @@ SECTION = "multimedia" DEPENDS = "dbus" -# v0.3.40 -SRCREV = "7afd80052b7c49754a13c9ab49c368f95b60e0a7" +# v1.0.0(El Presidente) +SRCREV = "4debdcd40b055b3eaa83a8f4443aa990ea566bfe" SRC_URI = "git://gitlab.freedesktop.org/pipewire/pipewire.git;branch=master;protocol=https" S = "${WORKDIR}/git" @@ -84,7 +84,7 @@ PACKAGECONFIG ??= "\ # is why these two are marked in their respective packageconfigs # as being in conflict. -PACKAGECONFIG[alsa] = "-Dalsa=enabled,-Dalsa=disabled,alsa-lib udev" +PACKAGECONFIG[alsa] = "-Dalsa=enabled,-Dalsa=disabled,alsa-lib udev,,pipewire-alsa-card-profile" PACKAGECONFIG[bluez] = "-Dbluez5=enabled,-Dbluez5=disabled,bluez5 sbc" PACKAGECONFIG[docs] = "-Ddocs=enabled,-Ddocs=disabled,doxygen-native" PACKAGECONFIG[gstreamer] = "-Dgstreamer=enabled,-Dgstreamer=disabled,glib-2.0 gstreamer1.0 gstreamer1.0-plugins-base" @@ -230,9 +230,20 @@ SYSTEMD_SERVICE:${PN} = "pipewire.service" CONFFILES:${PN} += "${datadir}/pipewire/pipewire.conf" FILES:${PN} = " \ ${datadir}/pipewire/pipewire.conf \ + ${datadir}/pipewire/filter-chain.conf \ ${datadir}/pipewire/filter-chain \ ${systemd_user_unitdir}/pipewire.* \ + ${systemd_system_unitdir}/pipewire* \ ${bindir}/pipewire \ + ${datadir}/pipewire/pipewire-avb.conf \ + ${bindir}/pipewire-avb \ + ${datadir}/pipewire/pipewire-aes67.conf \ + ${bindir}/pipewire-aes67 \ + ${datadir}/pipewire/pipewire.conf.avail \ + ${datadir}/pipewire/pipewire-pulse.conf.avail \ + ${datadir}/pipewire/client-rt.conf.avail \ + ${datadir}/pipewire/client.conf.avail \ + ${sysconfdir}/security/limits.d \ " FILES:${PN}-dev += " \ @@ -242,6 +253,8 @@ FILES:${PN}-dev += " \ CONFFILES:libpipewire += "${datadir}/pipewire/client.conf" FILES:libpipewire = " \ ${datadir}/pipewire/client.conf \ + ${datadir}/pipewire/client-rt.conf \ + ${datadir}/pipewire/minimal.conf \ ${libdir}/libpipewire-*.so.* \ " # Add the bare minimum modules and plugins required to be able diff --git a/meta-pipewire/recipes-multimedia/pipewire/pipewire_0.3.40.bbappend b/meta-pipewire/recipes-multimedia/pipewire/pipewire_1.0.0.bbappend index dfe73083b..beb7c0817 100644 --- a/meta-pipewire/recipes-multimedia/pipewire/pipewire_0.3.40.bbappend +++ b/meta-pipewire/recipes-multimedia/pipewire/pipewire_1.0.0.bbappend @@ -1,3 +1,7 @@ +SRC_URI += "\ + file://0001-systemd-Do-not-override-rootprefix.patch \ +" + PACKAGECONFIG = "\ ${@bb.utils.contains('DISTRO_FEATURES', 'bluez5', 'bluez', '', d)} \ ${@bb.utils.contains('DISTRO_FEATURES', 'alsa', 'alsa pipewire-alsa', '', d)} \ @@ -6,15 +10,11 @@ PACKAGECONFIG = "\ gstreamer v4l2 \ " -SRC_URI += "\ - file://0001-Revert-meson-declare-spa_dep-and-override_dependency.patch \ -" - do_install:append() { # install symlinks to alsalib configuration files for i in 50-pipewire.conf 99-pipewire-default.conf; do if [ -f ${D}${datadir}/alsa/alsa.conf.d/${i} ]; then - mkdir -p ${D}${sysconfdir}/alsa/conf.d + install -d ${D}${sysconfdir}/alsa/conf.d ln -s ${datadir}/alsa/alsa.conf.d/${i} ${D}${sysconfdir}/alsa/conf.d/${i} fi done diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/bluetooth.conf b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/bluetooth.conf index ebd0b6004..9077e3f45 100644 --- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/bluetooth.conf +++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/bluetooth.conf @@ -6,7 +6,7 @@ context.properties = { application.name = "WirePlumber Bluetooth" log.level = 2 wireplumber.script-engine = lua-scripting - wireplumber.export-core = false + wireplumber.export-core = true #mem.mlock-all = false #support.dbus = true diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/host.lua.d/30-alsa-monitor.lua b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/host.lua.d/30-alsa-monitor.lua index 75a169675..d07f7ab85 100644 --- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/host.lua.d/30-alsa-monitor.lua +++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/host.lua.d/30-alsa-monitor.lua @@ -8,7 +8,7 @@ alsa_monitor.properties = { } alsa_monitor.rules = { - -- disable ACP (PulseAudio-like profiles) + -- enable ACP (PulseAudio-like profiles) { matches = { { @@ -16,7 +16,7 @@ alsa_monitor.rules = { }, }, apply_properties = { - ["api.alsa.use-acp"] = false, + ["api.alsa.use-acp"] = true, }, }, diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/host.lua.d/40-device-defaults.lua b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/host.lua.d/40-device-defaults.lua index 365bab59a..e0d332422 100644 --- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/host.lua.d/40-device-defaults.lua +++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/host.lua.d/40-device-defaults.lua @@ -14,7 +14,7 @@ function device_defaults.enable() -- Selects appropriate default routes ("ports" in pulseaudio terminology) -- and enables saving and restoring them together with -- their properties (per-route/port volume levels, channel maps, etc) - load_script("default-routes.lua", device_defaults.properties) + load_script("policy-device-routes.lua", device_defaults.properties) if device_defaults.properties["use-persistent-storage"] then -- Enables functionality to save and restore default device profiles diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/host.lua.d/90-enable-all.lua b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/host.lua.d/90-enable-all.lua index f6d73a3f1..ecb7da476 100644 --- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/host.lua.d/90-enable-all.lua +++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/host.lua.d/90-enable-all.lua @@ -4,7 +4,7 @@ load_module("metadata") -- Load devices alsa_monitor.enable() ---v4l2_monitor.enable() +v4l2_monitor.enable() -- Track/store/restore user choices about devices device_defaults.enable() @@ -13,7 +13,7 @@ device_defaults.enable() load_script("suspend-node.lua") -- Automatically sets device profiles to 'On' -load_module("device-activation") +load_script("policy-device-profile.lua") -- Mute ALSA sinks when requested by pipewire-ic-ipc load_module("mixer-api") diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/wireplumber.conf b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/wireplumber.conf index 680a791f3..46ad11302 100644 --- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/wireplumber.conf +++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/wireplumber.conf @@ -57,6 +57,47 @@ context.modules = [ # Provides factories to make session manager objects. { name = libpipewire-module-session-manager } + + { name = libpipewire-module-filter-chain + args = { + node.description = "Equalizer Sink" + media.name = "Equalizer Sink" + filter.graph = { + nodes = [ + { + type = builtin + name = bass + label = bq_lowshelf + # the cut off freq of the bass filter can be adjusted here. + control = { "Freq" = 250.0 "Q" = 1.0 "Gain" = 0.0 } + } + { + type = builtin + name = treble + label = bq_peaking + # the cut off freq of the treble filter can be adjusted here. + control = { "Freq" = 6000.0 "Q" = 1.0 "Gain" = 0.0 } + } + ] + links = [ + { output = "bass:Out" input = "treble:In" } + ] + } + audio.channels = 2 + audio.position = [ FL FR ] + capture.props = { + node.name = "eq-sink" + media.class = Audio/Sink + # select the endpoint to which the node is attached + target.endpoint = "endpoint.multimedia" + node.passive = true + } + playback.props = { + node.name = "eq-output-stream" + node.passive = true + } + } + } ] wireplumber.components = [ 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 839a15fda..22ffe5bf3 100644 --- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl_git.bb +++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl_git.bb @@ -8,11 +8,9 @@ LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda SRC_URI = "\ file://bluetooth.lua.d/ \ file://host.lua.d/ \ - file://policy.lua.d \ file://00-functions.lua \ file://alsa-suspend.lua \ file://bluetooth.conf \ - file://policy.conf \ file://wireplumber.conf \ file://wireplumber-bluetooth.conf \ " @@ -35,12 +33,6 @@ do_install:append() { install -m 0644 ${WORKDIR}/host.lua.d/*.lua ${config_dir}/host.lua.d/ install -m 0644 ${WORKDIR}/wireplumber.conf ${config_dir} - # config of the policy instance - install -d ${config_dir}/policy.lua.d/ - ln -s ../00-functions.lua ${config_dir}/policy.lua.d/00-functions.lua - install -m 0644 ${WORKDIR}/policy.lua.d/*.lua ${config_dir}/policy.lua.d/ - install -m 0644 ${WORKDIR}/policy.conf ${config_dir} - # config of the bluetooth instance install -d ${config_dir}/bluetooth.lua.d/ ln -s ../00-functions.lua ${config_dir}/bluetooth.lua.d/00-functions.lua @@ -57,7 +49,6 @@ do_install:append() { # enable additional systemd services install -d ${systemd_dir} - ln -s ${systemd_system_unitdir}/wireplumber@.service ${systemd_dir}/wireplumber@policy.service ln -s ${systemd_system_unitdir}/wireplumber@.service ${systemd_dir}/wireplumber@bluetooth.service } @@ -68,4 +59,3 @@ FILES:${PN} += "\ CONFFILES:${PN} += "\ ${sysconfdir}/* \ " -RPROVIDES:${PN} += "virtual/wireplumber-config" diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-policy-config-agl/00-functions.lua b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-policy-config-agl/00-functions.lua new file mode 100644 index 000000000..7e1794df0 --- /dev/null +++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-policy-config-agl/00-functions.lua @@ -0,0 +1,27 @@ +components = {} + +function load_module(m) + if not components[m] then + components[m] = { "libwireplumber-module-" .. m, type = "module" } + end +end + +function load_pw_module(m) + if not components[m] then + components[m] = { "libpipewire-module-" .. m, type = "pw_module" } + end +end + +function load_script(s, a) + if not components[s] then + components[s] = { s, type = "script/lua", args = a } + end +end + +function load_monitor(s, a) + load_script("monitors/" .. s .. ".lua", a) +end + +function load_access(s, a) + load_script("access/access-" .. s .. ".lua", a) +end diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/policy.conf b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-policy-config-agl/policy.conf index 42f714849..42f714849 100644 --- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/policy.conf +++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-policy-config-agl/policy.conf diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/policy.lua.d/10-default-policy.lua b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-policy-config-agl/policy.lua.d/10-default-policy.lua index 82f5bb055..6814fce4d 100644 --- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/policy.lua.d/10-default-policy.lua +++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-policy-config-agl/policy.lua.d/10-default-policy.lua @@ -4,7 +4,10 @@ policy_config = {} policy_config.endpoints = { -- [endpoint name] = { endpoint properties } - + ["endpoint.capture"] = { + ["media.class"] = "Audio/Source", + ["role"] = "Capture", + }, ["endpoint.multimedia"] = { ["media.class"] = "Audio/Sink", ["role"] = "Multimedia", @@ -53,10 +56,17 @@ policy_config.policy = { ["duck.level"] = 0.2, ["roles"] = { + ["Capture"] = { + ["alias"] = { "Multimedia", "Music", "Voice", "Capture" }, + ["priority"] = 25, + ["action.default"] = "cork", + ["action.Capture"] = "mix", + ["media.class"] = "Audio/Source", + }, ["Multimedia"] = { ["alias"] = { "Movie", "Music", "Game" }, ["priority"] = 25, - ["action.default"] = "cork", + ["action.default"] = "mix", }, ["Speech-Low"] = { ["priority"] = 30, @@ -113,8 +123,8 @@ load_module("mixer-api") -- Create endpoints statically at startup load_script("static-endpoints.lua", policy_config.endpoints) - -- Create session items for nodes that appear in the graph - load_script("create-item.lua", default_policy.policy) +-- Create session items for nodes that appear in the graph +load_script("create-item.lua", policy_config.policy) -- Link nodes to each other to make media flow in the graph load_script("policy-node.lua", policy_config.policy) diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-policy-config-agl_git.bb b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-policy-config-agl_git.bb new file mode 100644 index 000000000..1a031160e --- /dev/null +++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-policy-config-agl_git.bb @@ -0,0 +1,41 @@ +SUMMARY = "AGL configuration file for wireplumber policy" +HOMEPAGE = "https://gitlab.freedesktop.org/gkiagia/wireplumber" +BUGTRACKER = "https://jira.automotivelinux.org" +AUTHOR = "Ashok Sidipotu <ashok.sidipotu@collabora.com>" +SECTION = "multimedia" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" +SRC_URI = "\ + file://policy.lua.d \ + file://00-functions.lua \ + file://policy.conf \ +" +PACKAGE_ARCH = "${MACHINE_ARCH}" + +do_configure[noexec] = "1" +do_compile[noexec] = "1" +do_install:append() { + config_dir="${D}${sysconfdir}/wireplumber/" + systemd_dir="${D}${sysconfdir}/systemd/system/pipewire.service.wants" + + install -d ${config_dir} + install -m 0644 ${WORKDIR}/00-functions.lua ${config_dir} + + # config of the policy instance + install -d ${config_dir}/policy.lua.d/ + ln -s ../00-functions.lua ${config_dir}/policy.lua.d/00-functions.lua + install -m 0644 ${WORKDIR}/policy.lua.d/*.lua ${config_dir}/policy.lua.d/ + install -m 0644 ${WORKDIR}/policy.conf ${config_dir} + + # enable additional systemd services + install -d ${systemd_dir} + ln -s ${systemd_system_unitdir}/wireplumber@.service ${systemd_dir}/wireplumber@policy.service +} + +FILES:${PN} += "\ + ${sysconfdir}/* \ + ${datadir}/wireplumber/* \ +" +CONFFILES:${PN} += "\ + ${sysconfdir}/* \ +" diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber/0001-Revert-wp-uninstalled-build-this-script-with-the-mes.patch b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber/0001-Revert-wp-uninstalled-build-this-script-with-the-mes.patch deleted file mode 100644 index 37b43571d..000000000 --- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber/0001-Revert-wp-uninstalled-build-this-script-with-the-mes.patch +++ /dev/null @@ -1,63 +0,0 @@ -From 1d39b68d88e967739d6beb3c9be7f4644b5d4077 Mon Sep 17 00:00:00 2001 -From: Ashok Sidipotu <ashok.sidipotu@collabora.com> -Date: Thu, 2 Dec 2021 16:23:09 +0530 -Subject: [PATCH] Revert "wp-uninstalled: build this script with the meson dirs - filled in" - -This reverts commit 52aaf96179584292f493c4b329bc2c409e6d3dee. ---- - meson.build | 18 ------------------ - wp-uninstalled.sh | 11 ++--------- - 2 files changed, 2 insertions(+), 27 deletions(-) - -diff --git a/meson.build b/meson.build -index 1affbc1..f2ca16c 100644 ---- a/meson.build -+++ b/meson.build -@@ -120,21 +120,3 @@ subdir('src') - if get_option('tests') - subdir('tests') - endif -- --conf_uninstalled = configuration_data() --conf_uninstalled.set('MESON', '') --conf_uninstalled.set('MESON_SOURCE_ROOT', meson.project_source_root()) --conf_uninstalled.set('MESON_BUILD_ROOT', meson.project_build_root()) -- --wp_uninstalled = configure_file( -- input : 'wp-uninstalled.sh', -- output : 'wp-uninstalled.sh.in', -- configuration : conf_uninstalled, --) -- --wireplumber_uninstalled = custom_target('wp-uninstalled', -- output : 'wp-uninstalled.sh', -- input : wp_uninstalled, -- build_by_default : true, -- command : ['cp', '@INPUT@', '@OUTPUT@'], --) -diff --git a/wp-uninstalled.sh b/wp-uninstalled.sh -index 79e53f2..d6279ff 100755 ---- a/wp-uninstalled.sh -+++ b/wp-uninstalled.sh -@@ -2,15 +2,8 @@ - - set -e - --# This is unset by meson --# shellcheck disable=SC2157 --if [ -z "@MESON@" ]; then -- SOURCEDIR="@MESON_SOURCE_ROOT@" -- BUILDDIR="@MESON_BUILD_ROOT@" --else -- SOURCEDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" -- BUILDDIR=$(find "${SOURCEDIR}" -maxdepth 2 -name build.ninja -printf "%h\n" -quit 2>/dev/null || echo "${SOURCEDIR}/build") --fi -+SOURCEDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" -+BUILDDIR=${SOURCEDIR}/build - CONFIGDIR=config - - while getopts ":b:c:" opt; do --- -2.33.1 - diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber/0002-Revert-tests-add-pipewire-env-variables-when-running.patch b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber/0002-Revert-tests-add-pipewire-env-variables-when-running.patch deleted file mode 100644 index 07ddb746b..000000000 --- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber/0002-Revert-tests-add-pipewire-env-variables-when-running.patch +++ /dev/null @@ -1,136 +0,0 @@ -From 4ea8ddc256df636208479a5b64bf8bdc6e413aca Mon Sep 17 00:00:00 2001 -From: Ashok Sidipotu <ashok.sidipotu@collabora.com> -Date: Thu, 2 Dec 2021 16:57:54 +0530 -Subject: [PATCH] Revert "tests: add pipewire env variables when running tests, - tidy up common_env" - -This reverts commit c24db9f3539f9b7ebe9e74c991cc3037f28ea22c. ---- - tests/meson.build | 31 ------------------------------- - tests/modules/meson.build | 9 ++++++--- - tests/wp/meson.build | 10 +++++++--- - tests/wplua/meson.build | 15 +++++++++++---- - 4 files changed, 24 insertions(+), 41 deletions(-) - -diff --git a/tests/meson.build b/tests/meson.build -index 0e06568..9238d5b 100644 ---- a/tests/meson.build -+++ b/tests/meson.build -@@ -28,37 +28,6 @@ if valgrind.found() - timeout_multiplier: 2) - endif - --# The common test environment --common_test_env = environment({ -- 'HOME': '/invalid', -- 'XDG_RUNTIME_DIR': '/invalid', -- 'PIPEWIRE_RUNTIME_DIR': '/tmp', -- 'XDG_CONFIG_HOME': meson.current_build_dir() / '.config', -- 'XDG_STATE_HOME': meson.current_build_dir() / '.local' / 'state', -- 'FILE_MONITOR_DIR': meson.current_build_dir() / '.local' / 'file_monitor', -- 'WIREPLUMBER_CONFIG_DIR': '/invalid', -- 'WIREPLUMBER_DATA_DIR': '/invalid', -- 'WIREPLUMBER_MODULE_DIR': meson.current_build_dir() / '..' / 'modules', -- 'WIREPLUMBER_DEBUG': '7', --}) -- --spa_plugindir = spa_dep.get_variable( -- pkgconfig: 'plugindir', internal: 'plugindir', default_value: '') --pipewire_moduledir = pipewire_dep.get_variable( -- pkgconfig: 'moduledir', internal: 'moduledir', default_value: '') --pipewire_confdatadir = pipewire_dep.get_variable( -- pkgconfig: 'confdatadir', internal: 'confdatadir', default_value: '') -- --if spa_plugindir != '' -- common_test_env.set('SPA_PLUGIN_DIR', spa_plugindir) --endif --if pipewire_moduledir != '' -- common_test_env.set('PIPEWIRE_MODULE_DIR', pipewire_moduledir) --endif --if pipewire_confdatadir != '' -- common_test_env.set('PIPEWIRE_CONFIG_DIR', pipewire_confdatadir) --endif -- - subdir('wp') - subdir('wplua') - subdir('modules') -diff --git a/tests/modules/meson.build b/tests/modules/meson.build -index ffab80b..2fc46dc 100644 ---- a/tests/modules/meson.build -+++ b/tests/modules/meson.build -@@ -1,7 +1,10 @@ - common_deps = [gobject_dep, gio_dep, wp_dep, pipewire_dep] --common_env = common_test_env --common_env.set('G_TEST_SRCDIR', meson.current_source_dir()) --common_env.set('G_TEST_BUILDDIR', meson.current_build_dir()) -+common_env = environment({ -+ 'G_TEST_SRCDIR': meson.current_source_dir(), -+ 'G_TEST_BUILDDIR': meson.current_build_dir(), -+ 'WIREPLUMBER_MODULE_DIR': meson.current_build_dir() / '..' / '..' / 'modules', -+ 'WIREPLUMBER_DEBUG': '7', -+}) - common_args = [ - '-DG_LOG_USE_STRUCTURED', - ] -diff --git a/tests/wp/meson.build b/tests/wp/meson.build -index adc9cef..e75640c 100644 ---- a/tests/wp/meson.build -+++ b/tests/wp/meson.build -@@ -1,7 +1,11 @@ - common_deps = [gobject_dep, gio_dep, wp_dep, pipewire_dep] --common_env = common_test_env --common_env.set('G_TEST_SRCDIR', meson.current_source_dir()) --common_env.set('G_TEST_BUILDDIR', meson.current_build_dir()) -+common_env = environment({ -+ 'G_TEST_SRCDIR': meson.current_source_dir(), -+ 'G_TEST_BUILDDIR': meson.current_build_dir(), -+ 'XDG_CONFIG_HOME': meson.current_build_dir() / '.config', -+ 'WIREPLUMBER_MODULE_DIR': meson.current_build_dir() / '..' / '..' / 'modules', -+ 'WIREPLUMBER_DEBUG': '7', -+}) - common_args = [ - '-DG_LOG_USE_STRUCTURED', - ] -diff --git a/tests/wplua/meson.build b/tests/wplua/meson.build -index 128cc30..cd45c1c 100644 ---- a/tests/wplua/meson.build -+++ b/tests/wplua/meson.build -@@ -1,13 +1,18 @@ - common_deps = [wplua_dep, pipewire_dep, wp_dep] --common_env = common_test_env --common_env.set('G_TEST_SRCDIR', meson.current_source_dir()) --common_env.set('G_TEST_BUILDDIR', meson.current_build_dir()) --common_env.set('WIREPLUMBER_DATA_DIR', meson.current_source_dir()) -+common_env = environment({ -+ 'G_TEST_SRCDIR': meson.current_source_dir(), -+ 'G_TEST_BUILDDIR': meson.current_build_dir(), -+ 'WIREPLUMBER_CONFIG_DIR': '/invalid', -+ 'WIREPLUMBER_DATA_DIR': meson.current_source_dir(), -+ 'WIREPLUMBER_MODULE_DIR': meson.current_build_dir() / '..' / '..' / 'modules', -+ 'WIREPLUMBER_DEBUG': '7', -+}) - - test( - 'test-wplua', - executable('test-wplua', 'wplua.c', dependencies: common_deps), - env: common_env, -+ workdir : meson.current_source_dir(), - ) - - script_tester = executable('script-tester', -@@ -20,10 +25,12 @@ test( - script_tester, - args: ['pod.lua'], - env: common_env, -+ workdir : meson.current_source_dir(), - ) - test( - 'test-lua-monitor-rules', - script_tester, - args: ['monitor-rules.lua'], - env: common_env, -+ workdir : meson.current_source_dir(), - ) --- -2.33.1 - diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber_git.bb b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber_git.bb index 7df199e01..a04f115c3 100644 --- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber_git.bb +++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber_git.bb @@ -14,16 +14,14 @@ DEPENDS = "glib-2.0 glib-2.0-native pipewire lua" SRC_URI = "\ git://gitlab.freedesktop.org/pipewire/wireplumber.git;protocol=https;branch=master \ " -# v0.4.5 -SRCREV = "3946457a7942a179c0f61c60de8cb8fc643391dd" +# v0.4.17 +SRCREV = "d3eb77b292655cef333a8f4cab4e861415bc37c2" # patches to be able to compile with lower version of meson that is available in AGL. SRC_URI += "\ - file://0001-Revert-wp-uninstalled-build-this-script-with-the-mes.patch \ - file://0002-Revert-tests-add-pipewire-env-variables-when-running.patch \ " -PV = "0.4.5" +PV = "0.4.17" S = "${WORKDIR}/git" WPAPI="0.4" @@ -60,11 +58,10 @@ FILES:${PN} = "\ ${bindir}/wpctl \ ${bindir}/wpexec \ ${libdir}/wireplumber-${WPAPI}/* \ - ${datadir}/wireplumber/* \ + ${datadir}/wireplumber/scripts/* \ + ${datadir}/zsh/* \ ${systemd_system_unitdir}/* \ " -RPROVIDES:${PN} += "virtual/pipewire-sessionmanager" -RDEPENDS:${PN} += "virtual/wireplumber-config" FILES:lib${PN}-${WPAPI} = "\ ${libdir}/libwireplumber-${WPAPI}.so.* \ @@ -72,8 +69,17 @@ FILES:lib${PN}-${WPAPI} = "\ FILES:${PN}-config += "\ ${sysconfdir}/wireplumber/* \ + ${datadir}/wireplumber/*conf \ + ${datadir}/wireplumber/common/* \ + ${datadir}/wireplumber/main.lua.d/* \ + ${datadir}/wireplumber/bluetooth.lua.d/* \ + ${datadir}/wireplumber/policy.lua.d/* \ " -CONFFILES:${PN}-config += "\ - ${sysconfdir}/wireplumber/* \ -" -RPROVIDES:${PN}-config += "virtual/wireplumber-config" +do_install:append() { + rm -rf ${D}${sysconfdir}/wireplumber/ + rm -f ${D}${datadir}/wireplumber/*conf + rm -rf ${D}${datadir}/wireplumber/common + rm -rf ${D}${datadir}/wireplumber/main.lua.d + rm -rf ${D}${datadir}/wireplumber/bluetooth.lua.d + rm -rf ${D}${datadir}/wireplumber/policy.lua.d +} diff --git a/meta-pipewire/scripts/run-yocto-check-layer.sh b/meta-pipewire/scripts/run-yocto-check-layer.sh index 508d8f749..0e911a145 100755 --- a/meta-pipewire/scripts/run-yocto-check-layer.sh +++ b/meta-pipewire/scripts/run-yocto-check-layer.sh @@ -19,17 +19,24 @@ AGL_FEATURES ?= "" AGL_EXTRA_IMAGE_FSTYPES ?= "" # important settings imported from poky-agl.conf -# we do not import -DISTRO_FEATURES:append = " systemd" +# we cannot import the distro config right away +# as the initial values are poky only till the layer +# is added in + +AGL_DEFAULT_DISTRO_FEATURES = "usrmerge largefile opengl wayland pam bluetooth bluez5 3g polkit" +DISTRO_FEATURES:append = " systemd wayland pam \${AGL_DEFAULT_DISTRO_FEATURES}" DISTRO_FEATURES_BACKFILL_CONSIDERED:append = " sysvinit" VIRTUAL-RUNTIME_init_manager = "systemd" EOF - -yocto-check-layer \ +yocto-check-layer --no-auto-dependency \ + --dependency \ + $AGLROOT/external/meta-openembedded/meta-oe \ -- \ $AGLROOT/meta-agl/meta-pipewire [ $? = 0 ] && rm -rf ${TMPROOT}/testbuild-ycl + +exit 0 |