aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorScott Murray <scott.murray@konsulko.com>2022-02-03 17:46:24 -0500
committerScott Murray <scott.murray@konsulko.com>2022-03-30 14:08:33 -0400
commit9653de99a5452bb419f2f694553cfb66fabfbf01 (patch)
tree9be078bbedfc057d33b0148875cde1dff9f9cbf2
parentd4605cc4d5e3209d29e1ccd357611125e6262242 (diff)
pipewire: remove old meson compatibility patches
Remove accumulated patches to PipeWire that allowed building it with the older meson in dunfell, as they break building it newer meson in poky master/kirkstone. A fix contained in one of those patches for installing the systemd system unit has been reworked and added as a new separate patch. Bug-AGL: SPEC-3819 Signed-off-by: Scott Murray <scott.murray@konsulko.com> Change-Id: I949875339b500c9ccd8590a635f7734158617579
-rw-r--r--meta-pipewire/recipes-multimedia/pipewire/pipewire/0001-Revert-treewide-meson.build-use-project_-build-sourc.patch182
-rw-r--r--meta-pipewire/recipes-multimedia/pipewire/pipewire/0001-systemd-Do-not-override-rootprefix.patch35
-rw-r--r--meta-pipewire/recipes-multimedia/pipewire/pipewire/0002-Revert-loop-remove-destroy-list.patch (renamed from meta-pipewire/recipes-multimedia/pipewire/pipewire/0013-Revert-loop-remove-destroy-list.patch)0
-rw-r--r--meta-pipewire/recipes-multimedia/pipewire/pipewire/0002-Revert-treewide-meson.build-use-feature.allowed.patch277
-rw-r--r--meta-pipewire/recipes-multimedia/pipewire/pipewire/0003-Revert-treewide-meson.build-use-dependency-variable-.patch1141
-rw-r--r--meta-pipewire/recipes-multimedia/pipewire/pipewire/0004-Revert-treewide-meson.build-simplify-get_variable-ca.patch130
-rw-r--r--meta-pipewire/recipes-multimedia/pipewire/pipewire/0005-Revert-treewide-meson.build-get-SPA_PLUGIN_DIR-from-.patch124
-rw-r--r--meta-pipewire/recipes-multimedia/pipewire/pipewire/0006-Revert-meson-declare-spa_dep-and-override_dependency.patch82
-rw-r--r--meta-pipewire/recipes-multimedia/pipewire/pipewire/0007-Revert-meson-use-meson-variables-for-the-SMs-uninsta.patch47
-rw-r--r--meta-pipewire/recipes-multimedia/pipewire/pipewire/0008-Revert-meson-declare-spa_dep-and-override_dependency.patch31
-rw-r--r--meta-pipewire/recipes-multimedia/pipewire/pipewire/0009-Revert-test-add-test-for-the-loop.patch32
-rw-r--r--meta-pipewire/recipes-multimedia/pipewire/pipewire/0010-Revert-spa-improve-the-AEC-interface.patch502
-rw-r--r--meta-pipewire/recipes-multimedia/pipewire/pipewire/0011-Revert-module-echo-cancel-Move-backends-to-dynamic-l.patch1055
-rw-r--r--meta-pipewire/recipes-multimedia/pipewire/pipewire/0012-Miscellanous-changes-to-account-for-lower-version-of.patch166
-rw-r--r--meta-pipewire/recipes-multimedia/pipewire/pipewire_0.3.47.bbappend21
15 files changed, 40 insertions, 3785 deletions
diff --git a/meta-pipewire/recipes-multimedia/pipewire/pipewire/0001-Revert-treewide-meson.build-use-project_-build-sourc.patch b/meta-pipewire/recipes-multimedia/pipewire/pipewire/0001-Revert-treewide-meson.build-use-project_-build-sourc.patch
deleted file mode 100644
index 89507df60..000000000
--- a/meta-pipewire/recipes-multimedia/pipewire/pipewire/0001-Revert-treewide-meson.build-use-project_-build-sourc.patch
+++ /dev/null
@@ -1,182 +0,0 @@
-From 7bf582601f73c5f796b23a7cc2868424b03a0fd1 Mon Sep 17 00:00:00 2001
-From: Ashok Sidipotu <ashok.sidipotu@collabora.com>
-Date: Fri, 14 Jan 2022 16:12:55 +0530
-Subject: [PATCH 01/12] Revert "treewide: meson.build: use
- project_{build,source}_root()"
-
-This reverts commit 8ed46a283fa1f8623b940eaeb9f7cbcc52eebf0e.
-Upstream-Status: Inappropriate[meson version dependent]
----
- doc/meson.build | 34 +++++++++++++++++-----------------
- meson.build | 8 ++++----
- spa/tests/meson.build | 4 ++--
- src/daemon/meson.build | 6 +++---
- test/meson.build | 4 ++--
- 5 files changed, 28 insertions(+), 28 deletions(-)
-
-diff --git a/doc/meson.build b/doc/meson.build
-index 7e876bce5..95fecffc2 100644
---- a/doc/meson.build
-+++ b/doc/meson.build
-@@ -1,8 +1,8 @@
- doxyfile_conf = configuration_data()
- doxyfile_conf.set('PACKAGE_NAME', meson.project_name())
- doxyfile_conf.set('PACKAGE_VERSION', meson.project_version())
--doxyfile_conf.set('top_srcdir', meson.project_source_root())
--doxyfile_conf.set('top_builddir', meson.project_build_root())
-+doxyfile_conf.set('top_srcdir', meson.source_root())
-+doxyfile_conf.set('top_builddir', meson.build_root())
-
- dot_found = find_program('dot', required: false).found()
- summary({'dot (used with doxygen)': dot_found}, bool_yn: true, section: 'Optional programs')
-@@ -48,35 +48,35 @@ extra_docs = [
-
- inputs = []
- foreach extra : extra_docs
-- inputs += meson.project_source_root() / 'doc' / extra
-+ inputs += meson.source_root() / 'doc' / extra
- endforeach
- foreach h : pipewire_headers
-- inputs += meson.project_source_root() / 'src' / 'pipewire' / h
-+ inputs += meson.source_root() / 'src' / 'pipewire' / h
- endforeach
- foreach h : pipewire_ext_headers
-- inputs += meson.project_source_root() / 'src' / 'pipewire' / 'extensions' / h
-+ inputs += meson.source_root() / 'src' / 'pipewire' / 'extensions' / h
- endforeach
- foreach h : pipewire_ext_sm_headers
-- inputs += meson.project_source_root() / 'src' / 'pipewire' / 'extensions' / h
-+ inputs += meson.source_root() / 'src' / 'pipewire' / 'extensions' / h
- endforeach
- foreach h : pipewire_sources
-- inputs += meson.project_source_root() / 'src' / 'pipewire' / h
-+ inputs += meson.source_root() / 'src' / 'pipewire' / h
- endforeach
- foreach h : module_sources
-- inputs += meson.project_source_root() / 'src' / 'modules' / h
-+ inputs += meson.source_root() / 'src' / 'modules' / h
- endforeach
--inputs += meson.project_source_root() / 'test' / 'pwtest.h'
--input_dirs = [ meson.project_source_root() / 'spa' / 'include' / 'spa' ]
-+inputs += meson.source_root() / 'test' / 'pwtest.h'
-+input_dirs = [ meson.source_root() / 'spa' / 'include' / 'spa' ]
-
- path_prefixes = [
-- meson.project_source_root() / 'src',
-- meson.project_source_root() / 'spa' / 'include',
-- meson.project_source_root(),
-+ meson.source_root() / 'src',
-+ meson.source_root() / 'spa' / 'include',
-+ meson.source_root(),
- ]
-
- cssfiles = [
-- meson.project_source_root() / 'doc' / 'doxygen-awesome.css',
-- meson.project_source_root() / 'doc' / 'custom.css'
-+ meson.source_root() / 'doc' / 'doxygen-awesome.css',
-+ meson.source_root() / 'doc' / 'custom.css'
- ]
-
- # Example files (in order from simple to esoteric)
-@@ -141,8 +141,8 @@ input_dirs += [ 'doc/pipewire-tools.dox' ]
- doxyfile_conf.set('inputs', ' '.join(inputs + input_dirs))
- doxyfile_conf.set('cssfiles', ' '.join(cssfiles))
- doxyfile_conf.set('path_prefixes', ' '.join(path_prefixes))
--doxyfile_conf.set('c_input_filter', meson.project_source_root() / 'doc' / 'input-filter.sh')
--doxyfile_conf.set('h_input_filter', meson.project_source_root() / 'doc' / 'input-filter-h.sh')
-+doxyfile_conf.set('c_input_filter', meson.source_root() / 'doc' / 'input-filter.sh')
-+doxyfile_conf.set('h_input_filter', meson.source_root() / 'doc' / 'input-filter-h.sh')
-
- doxyfile = configure_file(input: 'Doxyfile.in',
- output: 'Doxyfile',
-diff --git a/meson.build b/meson.build
-index 440845e37..338192073 100644
---- a/meson.build
-+++ b/meson.build
-@@ -247,9 +247,9 @@ includes_inc = include_directories('include')
- pipewire_inc = include_directories('src')
-
- makedata = configuration_data()
--makedata.set('BUILD_ROOT', meson.project_build_root())
--makedata.set('SOURCE_ROOT', meson.project_source_root())
--makedata.set('VERSION', pipewire_version)
-+ makedata.set('BUILD_ROOT', meson.build_root())
-+ makedata.set('SOURCE_ROOT', meson.source_root())
-+ makedata.set('VERSION', pipewire_version)
- if version_arr.length() == 4
- makedata.set('TAG', 'HEAD')
- else
-@@ -436,7 +436,7 @@ endif
- setenv = find_program('pw-uninstalled.sh')
- run_target('pw-uninstalled',
- command : [setenv,
-- '-b@0@'.format(meson.project_build_root()),
-+ '-b@0@'.format(meson.build_root()),
- '-v@0@'.format(pipewire_version)]
- )
-
-diff --git a/spa/tests/meson.build b/spa/tests/meson.build
-index c73c887f4..9c78dcbd2 100644
---- a/spa/tests/meson.build
-+++ b/spa/tests/meson.build
-@@ -5,7 +5,7 @@ find = find_program('find', required: false)
- summary({'find (for header testing)': find.found()}, bool_yn: true, section: 'Optional programs')
- if find.found()
- spa_headers = run_command(find,
-- meson.project_source_root() / 'spa' / 'include',
-+ meson.source_root() / 'spa' / 'include',
- '-name', '*.h',
- '-not', '-name', 'type-info.h',
- '-type', 'f',
-@@ -41,7 +41,7 @@ foreach a : benchmark_apps
- install_dir : installed_tests_execdir,
- ),
- env : [
-- 'SPA_PLUGIN_DIR=@0@'.format(spa_dep.get_variable('plugindir')),
-+ 'SPA_PLUGIN_DIR=@0@/spa/plugins/'.format(meson.build_root()),
- ]
- )
-
-diff --git a/src/daemon/meson.build b/src/daemon/meson.build
-index a2e4c55e3..647d7393d 100644
---- a/src/daemon/meson.build
-+++ b/src/daemon/meson.build
-@@ -18,9 +18,9 @@ conf_config.set('pulse_comment', '#')
-
- conf_config_uninstalled = conf_config
- conf_config_uninstalled.set('pipewire_path',
-- meson.project_build_root() / 'src' / 'daemon' / 'pipewire')
-+ meson.build_root() / 'src' / 'daemon' / 'pipewire')
- conf_config_uninstalled.set('pipewire_pulse_path',
-- meson.project_build_root() / 'src' / 'daemon' / 'pipewire-pulse')
-+ meson.build_root() / 'src' / 'daemon' / 'pipewire-pulse')
- conf_config_uninstalled.set('pulse_comment', '')
-
- build_ms = 'media-session' in get_option('session-managers')
-@@ -106,7 +106,7 @@ custom_target('pipewire-uninstalled',
- install: false,
- input: pipewire_exec,
- output: 'pipewire-uninstalled',
-- command: [ln, '-fs', meson.project_build_root() + '/@INPUT@', '@OUTPUT@'],
-+ command: [ln, '-fs', meson.build_root() + '/@INPUT@', '@OUTPUT@'],
- )
-
- #desktop_file = i18n.merge_file(
-diff --git a/test/meson.build b/test/meson.build
-index 74908d587..eca92eb24 100644
---- a/test/meson.build
-+++ b/test/meson.build
-@@ -14,8 +14,8 @@ pwtest_deps = [
- ]
-
- pwtest_c_args = [
-- '-DBUILD_ROOT="@0@"'.format(meson.project_build_root()),
-- '-DSOURCE_ROOT="@0@"'.format(meson.project_source_root()),
-+ '-DBUILD_ROOT="@0@"'.format(meson.build_root()),
-+ '-DSOURCE_ROOT="@0@"'.format(meson.source_root()),
- ]
-
- pwtest_inc = [
---
-2.35.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/0013-Revert-loop-remove-destroy-list.patch b/meta-pipewire/recipes-multimedia/pipewire/pipewire/0002-Revert-loop-remove-destroy-list.patch
index 8a988b024..8a988b024 100644
--- a/meta-pipewire/recipes-multimedia/pipewire/pipewire/0013-Revert-loop-remove-destroy-list.patch
+++ b/meta-pipewire/recipes-multimedia/pipewire/pipewire/0002-Revert-loop-remove-destroy-list.patch
diff --git a/meta-pipewire/recipes-multimedia/pipewire/pipewire/0002-Revert-treewide-meson.build-use-feature.allowed.patch b/meta-pipewire/recipes-multimedia/pipewire/pipewire/0002-Revert-treewide-meson.build-use-feature.allowed.patch
deleted file mode 100644
index eaef35c2e..000000000
--- a/meta-pipewire/recipes-multimedia/pipewire/pipewire/0002-Revert-treewide-meson.build-use-feature.allowed.patch
+++ /dev/null
@@ -1,277 +0,0 @@
-From 6dec8c7faf57a1bd0162a4e790ed031945588d98 Mon Sep 17 00:00:00 2001
-From: Ashok Sidipotu <ashok.sidipotu@collabora.com>
-Date: Thu, 24 Feb 2022 11:22:34 +0530
-Subject: [PATCH 02/12] Revert "treewide: meson.build: use feature.allowed()"
-
-This reverts commit cc7305351202424a2800425d86ae9c9b72aefa15.
-Upstream-Status: Inappropriate[meson version dependent]
----
- man/meson.build | 2 +-
- meson.build | 14 +++++++-------
- spa/meson.build | 4 ++--
- spa/plugins/bluez5/meson.build | 18 +++++++++---------
- spa/plugins/meson.build | 18 +++++++++---------
- spa/plugins/support/meson.build | 2 +-
- src/daemon/systemd/meson.build | 4 ++--
- src/gst/meson.build | 2 +-
- src/meson.build | 4 ++--
- src/tools/meson.build | 2 +-
- 10 files changed, 35 insertions(+), 35 deletions(-)
-
-diff --git a/man/meson.build b/man/meson.build
-index 54d1c5eca..8e6e7dbe4 100644
---- a/man/meson.build
-+++ b/man/meson.build
-@@ -19,7 +19,7 @@ manpages = [
- 'pw-profiler.1.rst.in',
- ]
-
--if get_option('pipewire-jack').allowed()
-+if not get_option('pipewire-jack').disabled()
- manpages += 'pw-jack.1.rst.in'
- endif
-
-diff --git a/meson.build b/meson.build
-index 338192073..9d806198a 100644
---- a/meson.build
-+++ b/meson.build
-@@ -336,7 +336,7 @@ endforeach
- gst_dp_found = gst_dep.length() > 0
- summary({'gstreamer-device-provider': gst_dp_found}, bool_yn: true, section: 'Backend')
-
--cdata.set('HAVE_GSTREAMER_DEVICE_PROVIDER', get_option('gstreamer-device-provider').allowed())
-+cdata.set('HAVE_GSTREAMER_DEVICE_PROVIDER', not get_option('gstreamer-device-provider').disabled())
-
- webrtc_dep = dependency('webrtc-audio-processing',
- version : ['>= 0.2', '< 1.0'],
-@@ -382,10 +382,10 @@ cdata.set('HAVE_LILV', lilv_lib.found())
-
- installed_tests_metadir = pipewire_datadir / 'installed-tests' / pipewire_name
- installed_tests_execdir = pipewire_libexecdir / 'installed-tests' / pipewire_name
--installed_tests_enabled = get_option('installed_tests').allowed()
-+installed_tests_enabled = not get_option('installed_tests').disabled()
- installed_tests_template = files('template.test.in')
-
--if get_option('tests').allowed()
-+if not get_option('tests').disabled()
- gstack = find_program('gstack', required : false)
- cdata.set('HAVE_GSTACK', gstack.found())
- endif
-@@ -394,17 +394,17 @@ subdir('po')
- subdir('spa')
- subdir('src')
-
--if get_option('tests').allowed()
-+if not get_option('tests').disabled()
- subdir('test')
- endif
-
- configure_file(output : 'config.h',
- configuration : cdata)
-
--if get_option('pipewire-jack').allowed()
-+if not get_option('pipewire-jack').disabled()
- subdir('pipewire-jack')
- endif
--if get_option('pipewire-v4l2').allowed()
-+if not get_option('pipewire-v4l2').disabled()
- subdir('pipewire-v4l2')
- endif
-
-@@ -415,7 +415,7 @@ if alsa_dep.found()
- endif
-
- generate_manpages = false
--if get_option('man').allowed()
-+if not get_option('man').disabled()
- rst2man = find_program('rst2man', required: false)
- if not rst2man.found()
- rst2man = find_program('rst2man.py', required: get_option('man'))
-diff --git a/spa/meson.build b/spa/meson.build
-index 1931d35b1..2404748df 100644
---- a/spa/meson.build
-+++ b/spa/meson.build
-@@ -31,7 +31,7 @@ pkgconfig.generate(filebase : 'lib@0@'.format(spa_name),
-
- subdir('include')
-
--if get_option('spa-plugins').allowed()
-+if not get_option('spa-plugins').disabled()
- udevrulesdir = get_option('udevrulesdir')
- if udevrulesdir == ''
- # absolute path, otherwise meson prepends the prefix
-@@ -74,6 +74,6 @@ endif
-
- subdir('tools')
- subdir('tests')
--if get_option('examples').allowed()
-+if not get_option('examples').disabled()
- subdir('examples')
- endif
-diff --git a/spa/plugins/bluez5/meson.build b/spa/plugins/bluez5/meson.build
-index 4567b67dd..7a1e12ec7 100644
---- a/spa/plugins/bluez5/meson.build
-+++ b/spa/plugins/bluez5/meson.build
-@@ -6,12 +6,12 @@ foreach dep: bluez5_deps
- endforeach
-
- cdata.set('HAVE_BLUEZ_5_BACKEND_NATIVE',
-- get_option('bluez5-backend-hsp-native').allowed() or
-- get_option('bluez5-backend-hfp-native').allowed())
--cdata.set('HAVE_BLUEZ_5_BACKEND_HSP_NATIVE', get_option('bluez5-backend-hsp-native').allowed())
--cdata.set('HAVE_BLUEZ_5_BACKEND_HFP_NATIVE', get_option('bluez5-backend-hfp-native').allowed())
--cdata.set('HAVE_BLUEZ_5_BACKEND_OFONO', get_option('bluez5-backend-ofono').allowed())
--cdata.set('HAVE_BLUEZ_5_BACKEND_HSPHFPD', get_option('bluez5-backend-hsphfpd').allowed())
-+ not get_option('bluez5-backend-hsp-native').disabled() or
-+ not get_option('bluez5-backend-hfp-native').disabled())
-+cdata.set('HAVE_BLUEZ_5_BACKEND_HSP_NATIVE', not get_option('bluez5-backend-hsp-native').disabled())
-+cdata.set('HAVE_BLUEZ_5_BACKEND_HFP_NATIVE', not get_option('bluez5-backend-hfp-native').disabled())
-+cdata.set('HAVE_BLUEZ_5_BACKEND_OFONO', not get_option('bluez5-backend-ofono').disabled())
-+cdata.set('HAVE_BLUEZ_5_BACKEND_HSPHFPD', not get_option('bluez5-backend-hsphfpd').disabled())
- cdata.set('HAVE_BLUEZ_5_HCI', dependency('bluez', version: '< 6', required: false).found())
-
- bluez5_sources = [
-@@ -34,18 +34,18 @@ bluez5_data = ['bluez-hardware.conf']
-
- install_data(bluez5_data, install_dir : spa_datadir / 'bluez5')
-
--if get_option('bluez5-backend-hsp-native').allowed() or get_option('bluez5-backend-hfp-native').allowed()
-+if not get_option('bluez5-backend-hsp-native').disabled() or not get_option('bluez5-backend-hfp-native').disabled()
- if libusb_dep.found()
- bluez5_deps += libusb_dep
- endif
- bluez5_sources += ['backend-native.c']
- endif
-
--if get_option('bluez5-backend-ofono').allowed()
-+if not get_option('bluez5-backend-ofono').disabled()
- bluez5_sources += ['backend-ofono.c']
- endif
-
--if get_option('bluez5-backend-hsphfpd').allowed()
-+if not get_option('bluez5-backend-hsphfpd').disabled()
- bluez5_sources += ['backend-hsphfpd.c']
- endif
-
-diff --git a/spa/plugins/meson.build b/spa/plugins/meson.build
-index fcf007aa9..0b581b29b 100644
---- a/spa/plugins/meson.build
-+++ b/spa/plugins/meson.build
-@@ -1,16 +1,16 @@
- if alsa_dep.found()
- subdir('alsa')
- endif
--if get_option('audioconvert').allowed()
-+if not get_option('audioconvert').disabled()
- subdir('audioconvert')
- endif
--if get_option('audiomixer').allowed()
-+if not get_option('audiomixer').disabled()
- subdir('audiomixer')
- endif
--if get_option('control').allowed()
-+if not get_option('control').disabled()
- subdir('control')
- endif
--if get_option('audiotestsrc').allowed()
-+if not get_option('audiotestsrc').disabled()
- subdir('audiotestsrc')
- endif
- if bluez_dep.found()
-@@ -22,19 +22,19 @@ endif
- if jack_dep.found()
- subdir('jack')
- endif
--if get_option('support').allowed()
-+if not get_option('support').disabled()
- subdir('support')
- endif
--if get_option('test').allowed()
-+if not get_option('test').disabled()
- subdir('test')
- endif
--if get_option('videoconvert').allowed()
-+if not get_option('videoconvert').disabled()
- subdir('videoconvert')
- endif
--if get_option('videotestsrc').allowed()
-+if not get_option('videotestsrc').disabled()
- subdir('videotestsrc')
- endif
--if get_option('volume').allowed()
-+if not get_option('volume').disabled()
- subdir('volume')
- endif
- if vulkan_headers
-diff --git a/spa/plugins/support/meson.build b/spa/plugins/support/meson.build
-index 1672d38df..b810b283c 100644
---- a/spa/plugins/support/meson.build
-+++ b/spa/plugins/support/meson.build
-@@ -23,7 +23,7 @@ spa_support_lib = shared_library('spa-support',
- install_dir : spa_plugindir / 'support')
- spa_support_dep = declare_dependency(link_with: spa_support_lib)
-
--if get_option('evl').allowed()
-+if not get_option('evl').disabled()
- evl_inc = include_directories('/usr/evl/include')
- evl_lib = cc.find_library('evl',
- dirs: ['/usr/evl/lib/'],
-diff --git a/src/daemon/systemd/meson.build b/src/daemon/systemd/meson.build
-index 482a44c4b..89ad2f6dc 100644
---- a/src/daemon/systemd/meson.build
-+++ b/src/daemon/systemd/meson.build
-@@ -1,6 +1,6 @@
--if get_option('systemd-system-service').allowed()
-+if not get_option('systemd-system-service').disabled()
- subdir('system')
- endif
--if get_option('systemd-user-service').allowed()
-+if not get_option('systemd-user-service').disabled()
- subdir('user')
- endif
-diff --git a/src/gst/meson.build b/src/gst/meson.build
-index fd552f6cb..709dc0f1c 100644
---- a/src/gst/meson.build
-+++ b/src/gst/meson.build
-@@ -8,7 +8,7 @@ pipewire_gst_sources = [
- 'gstpipewiresrc.c',
- ]
-
--if get_option('gstreamer-device-provider').allowed()
-+if not get_option('gstreamer-device-provider').disabled()
- pipewire_gst_sources += [ 'gstpipewiredeviceprovider.c' ]
- endif
-
-diff --git a/src/meson.build b/src/meson.build
-index cefc329eb..2fb73fd59 100644
---- a/src/meson.build
-+++ b/src/meson.build
-@@ -3,10 +3,10 @@ subdir('pipewire')
- subdir('daemon')
- subdir('tools')
- subdir('modules')
--if get_option('examples').allowed()
-+if not get_option('examples').disabled()
- subdir('examples')
- endif
--if get_option('tests').allowed()
-+if not get_option('tests').disabled()
- subdir('tests')
- endif
-
-diff --git a/src/tools/meson.build b/src/tools/meson.build
-index 02514c253..038231fcd 100644
---- a/src/tools/meson.build
-+++ b/src/tools/meson.build
-@@ -34,7 +34,7 @@ if ncurses_dep.found()
- endif
-
- build_pw_cat = false
--if get_option('pw-cat').allowed() and sndfile_dep.found()
-+if not get_option('pw-cat').disabled() and sndfile_dep.found()
- build_pw_cat = true
-
- pwcat_sources = [
---
-2.35.1
-
diff --git a/meta-pipewire/recipes-multimedia/pipewire/pipewire/0003-Revert-treewide-meson.build-use-dependency-variable-.patch b/meta-pipewire/recipes-multimedia/pipewire/pipewire/0003-Revert-treewide-meson.build-use-dependency-variable-.patch
deleted file mode 100644
index 40735422f..000000000
--- a/meta-pipewire/recipes-multimedia/pipewire/pipewire/0003-Revert-treewide-meson.build-use-dependency-variable-.patch
+++ /dev/null
@@ -1,1141 +0,0 @@
-From 8eda9c8d98d14dfc411e22c30e81fa32a5cb2f56 Mon Sep 17 00:00:00 2001
-From: Ashok Sidipotu <ashok.sidipotu@collabora.com>
-Date: Fri, 14 Jan 2022 18:23:54 +0530
-Subject: [PATCH 03/12] Revert "treewide: meson.build: use dependency variable
- for SPA"
-
-This reverts commit 2b110af36683f13f2b55064dec4ae02c1b407561.
-
-Upstream-Status: Inappropriate[meson version dependent]
----
- spa/examples/meson.build | 4 +-
- spa/meson.build | 42 ++++++-------
- spa/plugins/alsa/acp/meson.build | 4 +-
- spa/plugins/alsa/meson.build | 7 ++-
- spa/plugins/audioconvert/meson.build | 34 ++++++-----
- spa/plugins/audiomixer/meson.build | 11 ++--
- spa/plugins/audiotestsrc/meson.build | 3 +-
- spa/plugins/bluez5/meson.build | 24 ++++----
- spa/plugins/control/meson.build | 3 +-
- spa/plugins/ffmpeg/meson.build | 3 +-
- spa/plugins/jack/meson.build | 3 +-
- spa/plugins/libcamera/meson.build | 3 +-
- spa/plugins/support/meson.build | 14 +++--
- spa/plugins/test/meson.build | 3 +-
- spa/plugins/v4l2/meson.build | 3 +-
- spa/plugins/videoconvert/meson.build | 3 +-
- spa/plugins/videotestsrc/meson.build | 3 +-
- spa/plugins/volume/meson.build | 2 +-
- spa/plugins/vulkan/meson.build | 3 +-
- spa/tests/meson.build | 5 +-
- spa/tools/meson.build | 9 ++-
- src/daemon/meson.build | 8 +--
- src/gst/meson.build | 4 +-
- src/modules/meson.build | 88 ++++++++++++++++------------
- src/modules/spa/meson.build | 16 ++---
- src/pipewire/meson.build | 4 +-
- test/meson.build | 11 +---
- 27 files changed, 170 insertions(+), 147 deletions(-)
-
-diff --git a/spa/examples/meson.build b/spa/examples/meson.build
-index 7064a0643..bc04b723c 100644
---- a/spa/examples/meson.build
-+++ b/spa/examples/meson.build
-@@ -23,8 +23,8 @@ foreach c : spa_examples
- executable(
- c,
- c + '.c',
-- include_directories : [configinc],
-- dependencies : [spa_dep, dl_lib, pthread_lib, mathlib] + deps,
-+ include_directories : [configinc, spa_inc],
-+ dependencies : [dl_lib, pthread_lib, mathlib] + deps,
- install : installed_tests_enabled,
- install_dir : installed_tests_execdir / 'examples' / 'spa'
- )
-diff --git a/spa/meson.build b/spa/meson.build
-index 2404748df..2717b86d6 100644
---- a/spa/meson.build
-+++ b/spa/meson.build
-@@ -5,29 +5,7 @@
- #pthread_lib = dependencies('threads')
- #mathlib = cc.find_library('m', required : false)
-
--spa_dep = declare_dependency(
-- include_directories : [
-- include_directories('include'),
-- ],
-- dependencies : [atomic_dep],
-- version : spaversion,
-- variables : {
-- 'plugindir' : meson.current_build_dir() / 'plugins',
-- 'datadir' : meson.current_source_dir() / 'plugins',
-- },
--)
--
--meson.override_dependency('lib@0@'.format(spa_name), spa_dep)
--
--pkgconfig.generate(filebase : 'lib@0@'.format(spa_name),
-- name : 'libspa',
-- subdirs : spa_name,
-- description : 'Simple Plugin API',
-- version : spaversion,
-- extra_cflags : '-D_REENTRANT',
-- variables : ['plugindir=${libdir}/@0@'.format(spa_name)],
-- uninstalled_variables : ['plugindir=${prefix}/spa/plugins'],
--)
-+spa_inc = include_directories('include')
-
- subdir('include')
-
-@@ -77,3 +55,21 @@ subdir('tests')
- 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,
-+ description : 'Simple Plugin API',
-+ version : spaversion,
-+ extra_cflags : '-D_REENTRANT',
-+ variables : ['plugindir=${libdir}/@0@'.format(spa_name)],
-+ uninstalled_variables : ['plugindir=${prefix}/spa/plugins'],
-+)
-+
-+meson.override_dependency('lib@0@'.format(spa_name), spa_dep)
-diff --git a/spa/plugins/alsa/acp/meson.build b/spa/plugins/alsa/acp/meson.build
-index 0ec97e2b4..3686aec82 100644
---- a/spa/plugins/alsa/acp/meson.build
-+++ b/spa/plugins/alsa/acp/meson.build
-@@ -16,7 +16,7 @@ acp_lib = static_library(
- 'acp',
- acp_sources,
- c_args : acp_c_args,
-- include_directories : [configinc, includes_inc ],
-- dependencies : [ spa_dep, alsa_dep, mathlib, ]
-+ include_directories : [configinc, spa_inc, includes_inc ],
-+ dependencies : [ alsa_dep, mathlib, ]
- )
- acp_dep = declare_dependency(link_with: acp_lib)
-diff --git a/spa/plugins/alsa/meson.build b/spa/plugins/alsa/meson.build
-index e3fa6f0d7..402d93486 100644
---- a/spa/plugins/alsa/meson.build
-+++ b/spa/plugins/alsa/meson.build
-@@ -16,8 +16,8 @@ spa_alsa = shared_library(
- 'spa-alsa',
- [ spa_alsa_sources ],
- c_args : acp_c_args,
-- include_directories : [configinc],
-- dependencies : [ spa_dep, alsa_dep, libudev_dep, mathlib, epoll_shim_dep, libinotify_dep ],
-+ include_directories : [spa_inc, configinc],
-+ dependencies : [ alsa_dep, libudev_dep, mathlib, epoll_shim_dep, libinotify_dep ],
- link_with : [ acp_lib ],
- install : true,
- install_dir : spa_plugindir / 'alsa'
-@@ -30,7 +30,8 @@ alsa_udevrules = [
- executable('spa-acp-tool',
- [ 'acp-tool.c' ],
- c_args : acp_c_args,
-- dependencies : [ spa_dep, alsa_dep, mathlib, acp_dep ],
-+ include_directories : [spa_inc ],
-+ dependencies : [ alsa_dep, mathlib, acp_dep ],
- install : true,
- )
-
-diff --git a/spa/plugins/audioconvert/meson.build b/spa/plugins/audioconvert/meson.build
-index 89af12671..55e88ccc4 100644
---- a/spa/plugins/audioconvert/meson.build
-+++ b/spa/plugins/audioconvert/meson.build
-@@ -17,7 +17,7 @@ if have_sse
- 'volume-ops-sse.c',
- 'channelmix-ops-sse.c' ],
- c_args : [sse_args, '-O3', '-DHAVE_SSE'],
-- dependencies : [ spa_dep ],
-+ include_directories : [spa_inc],
- install : false
- )
- simd_cargs += ['-DHAVE_SSE']
-@@ -27,7 +27,7 @@ if have_sse2
- audioconvert_sse2 = static_library('audioconvert_sse2',
- ['fmt-ops-sse2.c' ],
- c_args : [sse2_args, '-O3', '-DHAVE_SSE2'],
-- dependencies : [ spa_dep ],
-+ include_directories : [spa_inc],
- install : false
- )
- simd_cargs += ['-DHAVE_SSE2']
-@@ -38,7 +38,7 @@ if have_ssse3
- ['fmt-ops-ssse3.c',
- 'resample-native-ssse3.c' ],
- c_args : [ssse3_args, '-O3', '-DHAVE_SSSE3'],
-- dependencies : [ spa_dep ],
-+ include_directories : [spa_inc],
- install : false
- )
- simd_cargs += ['-DHAVE_SSSE3']
-@@ -48,7 +48,7 @@ if have_sse41
- audioconvert_sse41 = static_library('audioconvert_sse41',
- ['fmt-ops-sse41.c'],
- c_args : [sse41_args, '-O3', '-DHAVE_SSE41'],
-- dependencies : [ spa_dep ],
-+ include_directories : [spa_inc],
- install : false
- )
- simd_cargs += ['-DHAVE_SSE41']
-@@ -58,7 +58,7 @@ if have_avx and have_fma
- audioconvert_avx = static_library('audioconvert_avx',
- ['resample-native-avx.c'],
- c_args : [avx_args, fma_args, '-O3', '-DHAVE_AVX', '-DHAVE_FMA'],
-- dependencies : [ spa_dep ],
-+ include_directories : [spa_inc],
- install : false
- )
- simd_cargs += ['-DHAVE_AVX', '-DHAVE_FMA']
-@@ -68,7 +68,7 @@ if have_avx2
- audioconvert_avx2 = static_library('audioconvert_avx2',
- ['fmt-ops-avx2.c'],
- c_args : [avx2_args, '-O3', '-DHAVE_AVX2'],
-- dependencies : [ spa_dep ],
-+ include_directories : [spa_inc],
- install : false
- )
- simd_cargs += ['-DHAVE_AVX2']
-@@ -80,7 +80,7 @@ if have_neon
- ['resample-native-neon.c',
- 'fmt-ops-neon.c' ],
- c_args : [neon_args, '-O3', '-DHAVE_NEON'],
-- dependencies : [ spa_dep ],
-+ include_directories : [spa_inc],
- install : false
- )
- simd_cargs += ['-DHAVE_NEON']
-@@ -100,8 +100,7 @@ audioconvert_lib = static_library('audioconvert',
- 'volume-ops-c.c' ],
- c_args : [ simd_cargs, '-O3'],
- link_with : simd_dependencies,
-- include_directories : [configinc],
-- dependencies : [ spa_dep ],
-+ include_directories : [configinc, spa_inc],
- install : false
- )
- audioconvert_dep = declare_dependency(link_with: audioconvert_lib)
-@@ -109,7 +108,8 @@ audioconvert_dep = declare_dependency(link_with: audioconvert_lib)
- spa_audioconvert_lib = shared_library('spa-audioconvert',
- audioconvert_sources,
- c_args : simd_cargs,
-- dependencies : [ spa_dep, mathlib, audioconvert_dep ],
-+ include_directories : [spa_inc],
-+ dependencies : [ mathlib, audioconvert_dep ],
- install : true,
- install_dir : spa_plugindir / 'audioconvert')
- spa_audioconvert_dep = declare_dependency(link_with: spa_audioconvert_lib)
-@@ -117,7 +117,7 @@ spa_audioconvert_dep = declare_dependency(link_with: spa_audioconvert_lib)
- test_lib = static_library('test_lib',
- ['test-source.c' ],
- c_args : ['-O3'],
-- dependencies : [ spa_dep ],
-+ include_directories : [spa_inc],
- install : false
- )
-
-@@ -132,8 +132,8 @@ test_apps = [
- foreach a : test_apps
- test(a,
- executable(a, a + '.c',
-- dependencies : [ spa_dep, dl_lib, pthread_lib, mathlib, audioconvert_dep, spa_audioconvert_dep ],
-- include_directories : [ configinc ],
-+ dependencies : [ dl_lib, pthread_lib, mathlib, audioconvert_dep, spa_audioconvert_dep ],
-+ include_directories : [ configinc, spa_inc ],
- link_with : [ test_lib ],
- install_rpath : spa_plugindir / 'audioconvert',
- c_args : [ simd_cargs ],
-@@ -163,8 +163,8 @@ benchmark_apps = [
- foreach a : benchmark_apps
- benchmark(a,
- executable(a, a + '.c',
-- dependencies : [ spa_dep, dl_lib, pthread_lib, mathlib, audioconvert_dep, spa_audioconvert_dep ],
-- include_directories : [ configinc ],
-+ dependencies : [ dl_lib, pthread_lib, mathlib, audioconvert_dep, spa_audioconvert_dep ],
-+ include_directories : [ configinc, spa_inc ],
- c_args : [ simd_cargs ],
- install_rpath : spa_plugindir / 'audioconvert',
- install : installed_tests_enabled,
-@@ -191,8 +191,10 @@ if sndfile_dep.found()
- ]
- executable('spa-resample',
- sparesample_sources,
-+ c_args : [ simd_cargs ],
-+ include_directories : [spa_inc ],
- link_with : [ test_lib ],
-- dependencies : [ spa_dep, sndfile_dep, mathlib, audioconvert_dep ],
-+ dependencies : [sndfile_dep, mathlib, audioconvert_dep],
- install : true,
- )
- endif
-diff --git a/spa/plugins/audiomixer/meson.build b/spa/plugins/audiomixer/meson.build
-index 9e1d12d59..214c2a887 100644
---- a/spa/plugins/audiomixer/meson.build
-+++ b/spa/plugins/audiomixer/meson.build
-@@ -11,7 +11,7 @@ simd_dependencies = []
- audiomixer_c = static_library('audiomixer_c',
- ['mix-ops-c.c' ],
- c_args : ['-O3'],
-- dependencies : [ spa_dep ],
-+ include_directories : [spa_inc],
- install : false
- )
- simd_dependencies += audiomixer_c
-@@ -20,7 +20,7 @@ if have_sse
- audiomixer_sse = static_library('audiomixer_sse',
- ['mix-ops-sse.c' ],
- c_args : [sse_args, '-O3', '-DHAVE_SSE'],
-- dependencies : [ spa_dep ],
-+ include_directories : [spa_inc],
- install : false
- )
- simd_cargs += ['-DHAVE_SSE']
-@@ -30,7 +30,7 @@ if have_sse2
- audiomixer_sse2 = static_library('audiomixer_sse2',
- ['mix-ops-sse2.c' ],
- c_args : [sse2_args, '-O3', '-DHAVE_SSE2'],
-- dependencies : [ spa_dep ],
-+ include_directories : [spa_inc],
- install : false
- )
- simd_cargs += ['-DHAVE_SSE2']
-@@ -40,7 +40,7 @@ if have_avx and have_fma
- audiomixer_avx = static_library('audiomixer_avx',
- ['mix-ops-avx.c'],
- c_args : [avx_args, fma_args, '-O3', '-DHAVE_AVX', '-DHAVE_FMA'],
-- dependencies : [ spa_dep ],
-+ include_directories : [spa_inc],
- install : false
- )
- simd_cargs += ['-DHAVE_AVX', '-DHAVE_FMA']
-@@ -51,7 +51,8 @@ audiomixerlib = shared_library('spa-audiomixer',
- audiomixer_sources,
- c_args : simd_cargs,
- link_with : simd_dependencies,
-- dependencies : [ spa_dep, mathlib ],
-+ include_directories : [spa_inc],
-+ dependencies : [ mathlib ],
- install : true,
- install_dir : spa_plugindir / 'audiomixer'
- )
-diff --git a/spa/plugins/audiotestsrc/meson.build b/spa/plugins/audiotestsrc/meson.build
-index d1b22428d..8011ee883 100644
---- a/spa/plugins/audiotestsrc/meson.build
-+++ b/spa/plugins/audiotestsrc/meson.build
-@@ -2,6 +2,7 @@ audiotestsrc_sources = ['audiotestsrc.c', 'plugin.c']
-
- audiotestsrclib = shared_library('spa-audiotestsrc',
- audiotestsrc_sources,
-- dependencies : [ spa_dep, mathlib ],
-+ include_directories : [spa_inc],
-+ dependencies : [mathlib, ],
- install : true,
- install_dir : spa_plugindir / 'audiotestsrc')
-diff --git a/spa/plugins/bluez5/meson.build b/spa/plugins/bluez5/meson.build
-index 7a1e12ec7..ae6d8e8e0 100644
---- a/spa/plugins/bluez5/meson.build
-+++ b/spa/plugins/bluez5/meson.build
-@@ -51,8 +51,8 @@ endif
-
- bluez5lib = shared_library('spa-bluez5',
- bluez5_sources,
-- include_directories : [ configinc ],
-- dependencies : [ spa_dep, bluez5_deps ],
-+ include_directories : [ spa_inc, configinc ],
-+ dependencies : bluez5_deps,
- install : true,
- install_dir : spa_plugindir / 'bluez5')
-
-@@ -60,26 +60,26 @@ codec_args = [ '-DCODEC_PLUGIN' ]
-
- bluez_codec_sbc = shared_library('spa-codec-bluez5-sbc',
- [ 'a2dp-codec-sbc.c', 'a2dp-codecs.c' ],
-- include_directories : [ configinc ],
-+ include_directories : [ spa_inc, configinc ],
- c_args : codec_args,
-- dependencies : [ spa_dep, sbc_dep ],
-+ dependencies : sbc_dep,
- install : true,
- install_dir : spa_plugindir / 'bluez5')
-
- bluez_codec_faststream = shared_library('spa-codec-bluez5-faststream',
- [ 'a2dp-codec-faststream.c', 'a2dp-codecs.c' ],
-- include_directories : [ configinc ],
-+ include_directories : [ spa_inc, configinc ],
- c_args : codec_args,
-- dependencies : [ spa_dep, sbc_dep ],
-+ dependencies : sbc_dep,
- install : true,
- install_dir : spa_plugindir / 'bluez5')
-
- if fdk_aac_dep.found()
- bluez_codec_aac = shared_library('spa-codec-bluez5-aac',
- [ 'a2dp-codec-aac.c', 'a2dp-codecs.c' ],
-- include_directories : [ configinc ],
-+ include_directories : [ spa_inc, configinc ],
- c_args : codec_args,
-- dependencies : [ spa_dep, fdk_aac_dep ],
-+ dependencies : fdk_aac_dep,
- install : true,
- install_dir : spa_plugindir / 'bluez5')
- endif
-@@ -87,9 +87,9 @@ endif
- if aptx_dep.found()
- bluez_codec_aptx = shared_library('spa-codec-bluez5-aptx',
- [ 'a2dp-codec-aptx.c', 'a2dp-codecs.c' ],
-- include_directories : [ configinc ],
-+ include_directories : [ spa_inc, configinc ],
- c_args : codec_args,
-- dependencies : [ spa_dep, aptx_dep, sbc_dep ],
-+ dependencies : [ aptx_dep, sbc_dep ],
- install : true,
- install_dir : spa_plugindir / 'bluez5')
- endif
-@@ -103,9 +103,9 @@ if ldac_dep.found()
- endif
- bluez_codec_ldac = shared_library('spa-codec-bluez5-ldac',
- [ 'a2dp-codec-ldac.c', 'a2dp-codecs.c' ],
-- include_directories : [ configinc ],
-+ include_directories : [ spa_inc, configinc ],
- c_args : ldac_args,
-- dependencies : [ spa_dep, ldac_dep ],
-+ dependencies : ldac_dep,
- install : true,
- install_dir : spa_plugindir / 'bluez5')
- endif
-diff --git a/spa/plugins/control/meson.build b/spa/plugins/control/meson.build
-index adabdfab3..10f9cfeda 100644
---- a/spa/plugins/control/meson.build
-+++ b/spa/plugins/control/meson.build
-@@ -5,6 +5,7 @@ control_sources = [
-
- controllib = shared_library('spa-control',
- control_sources,
-- dependencies : [ spa_dep, mathlib ],
-+ include_directories : [spa_inc],
-+ dependencies : [ mathlib ],
- install : true,
- install_dir : spa_plugindir / 'control')
-diff --git a/spa/plugins/ffmpeg/meson.build b/spa/plugins/ffmpeg/meson.build
-index 0e41ecb6e..2aec258da 100644
---- a/spa/plugins/ffmpeg/meson.build
-+++ b/spa/plugins/ffmpeg/meson.build
-@@ -4,6 +4,7 @@ ffmpeg_sources = ['ffmpeg.c',
-
- ffmpeglib = shared_library('spa-ffmpeg',
- ffmpeg_sources,
-- dependencies : [ spa_dep, avcodec_dep ],
-+ include_directories : [spa_inc],
-+ dependencies : [avcodec_dep],
- install : true,
- install_dir : spa_plugindir / 'ffmpeg')
-diff --git a/spa/plugins/jack/meson.build b/spa/plugins/jack/meson.build
-index 312a54061..b1732acd6 100644
---- a/spa/plugins/jack/meson.build
-+++ b/spa/plugins/jack/meson.build
-@@ -7,6 +7,7 @@ spa_jack_sources = [
-
- spa_jack = shared_library('spa-jack',
- spa_jack_sources,
-- dependencies : [ spa_dep, jack_dep, mathlib ],
-+ include_directories : [spa_inc],
-+ dependencies : [ jack_dep, mathlib ],
- install : true,
- install_dir : spa_plugindir / 'jack')
-diff --git a/spa/plugins/libcamera/meson.build b/spa/plugins/libcamera/meson.build
-index abb1a42cf..02ac2d9c2 100644
---- a/spa/plugins/libcamera/meson.build
-+++ b/spa/plugins/libcamera/meson.build
-@@ -11,7 +11,8 @@ summary({'libdrm': libdrm_dep.found()}, bool_yn: true, section: 'Backend')
- if libdrm_dep.found()
- libcameralib = shared_library('spa-libcamera',
- libcamera_sources,
-- dependencies : [ spa_dep, libudev_dep, libcamera_dep, pthread_lib, libdrm_dep ],
-+ include_directories : [ spa_inc ],
-+ dependencies : [ libudev_dep, libcamera_dep, pthread_lib, libdrm_dep ],
- install : true,
- install_dir : spa_plugindir / 'libcamera')
- endif
-diff --git a/spa/plugins/support/meson.build b/spa/plugins/support/meson.build
-index b810b283c..15010a51e 100644
---- a/spa/plugins/support/meson.build
-+++ b/spa/plugins/support/meson.build
-@@ -17,12 +17,14 @@ endif
-
- spa_support_lib = shared_library('spa-support',
- spa_support_sources,
-+ include_directories : [ spa_inc ],
- c_args : [ simd_cargs ],
-- dependencies : [ spa_dep, pthread_lib, epoll_shim_dep ],
-+ dependencies : [ pthread_lib, epoll_shim_dep ],
- install : true,
- install_dir : spa_plugindir / 'support')
- spa_support_dep = declare_dependency(link_with: spa_support_lib)
-
-+
- if not get_option('evl').disabled()
- evl_inc = include_directories('/usr/evl/include')
- evl_lib = cc.find_library('evl',
-@@ -33,8 +35,8 @@ if not get_option('evl').disabled()
-
- spa_evl_lib = shared_library('spa-evl',
- spa_evl_sources,
-- include_directories : [ evl_inc],
-- dependencies : [ spa_dep, pthread_lib, evl_lib ],
-+ include_directories : [ spa_inc, evl_inc],
-+ dependencies : [ pthread_lib, evl_lib],
- install : true,
- install_dir : spa_plugindir / 'support')
- endif
-@@ -44,7 +46,8 @@ if dbus_dep.found()
-
- spa_dbus_lib = shared_library('spa-dbus',
- spa_dbus_sources,
-- dependencies : [ spa_dep, dbus_dep ],
-+ include_directories : [ spa_inc],
-+ dependencies : [dbus_dep, ],
- install : true,
- install_dir : spa_plugindir / 'support')
- spa_dbus_dep = declare_dependency(link_with: spa_dbus_lib)
-@@ -61,7 +64,8 @@ if systemd_dep.found()
-
- spa_journal_lib = shared_library('spa-journal',
- spa_journal_sources,
-- dependencies : [ spa_dep, systemd_dep ],
-+ include_directories : spa_inc,
-+ dependencies : systemd_dep,
- install : true,
- install_dir : spa_plugindir / 'support')
- spa_journal_dep = declare_dependency(link_with: spa_journal_lib)
-diff --git a/spa/plugins/test/meson.build b/spa/plugins/test/meson.build
-index 950ee7c38..e824450f6 100644
---- a/spa/plugins/test/meson.build
-+++ b/spa/plugins/test/meson.build
-@@ -2,6 +2,7 @@ test_sources = ['fakesrc.c', 'fakesink.c', 'plugin.c']
-
- testlib = shared_library('spa-test',
- test_sources,
-- dependencies : [ spa_dep, pthread_lib ],
-+ include_directories : [ spa_inc],
-+ dependencies : [pthread_lib, ],
- install : true,
- install_dir : spa_plugindir / 'test')
-diff --git a/spa/plugins/v4l2/meson.build b/spa/plugins/v4l2/meson.build
-index 648583f32..297a62b16 100644
---- a/spa/plugins/v4l2/meson.build
-+++ b/spa/plugins/v4l2/meson.build
-@@ -5,6 +5,7 @@ v4l2_sources = ['v4l2.c',
-
- v4l2lib = shared_library('spa-v4l2',
- v4l2_sources,
-- dependencies : [ spa_dep, libudev_dep, libinotify_dep ],
-+ include_directories : [ spa_inc ],
-+ dependencies : [ libudev_dep, libinotify_dep ],
- install : true,
- install_dir : spa_plugindir / 'v4l2')
-diff --git a/spa/plugins/videoconvert/meson.build b/spa/plugins/videoconvert/meson.build
-index 24673a541..17d860d5a 100644
---- a/spa/plugins/videoconvert/meson.build
-+++ b/spa/plugins/videoconvert/meson.build
-@@ -9,7 +9,8 @@ simd_dependencies = []
- videoconvertlib = shared_library('spa-videoconvert',
- videoconvert_sources,
- c_args : simd_cargs,
-- dependencies : [ spa_dep, mathlib ],
-+ include_directories : [spa_inc],
-+ dependencies : [ mathlib ],
- link_with : simd_dependencies,
- install : true,
- install_dir : spa_plugindir / 'videoconvert')
-diff --git a/spa/plugins/videotestsrc/meson.build b/spa/plugins/videotestsrc/meson.build
-index 01a33ee29..f6f3dca56 100644
---- a/spa/plugins/videotestsrc/meson.build
-+++ b/spa/plugins/videotestsrc/meson.build
-@@ -2,6 +2,7 @@ videotestsrc_sources = ['videotestsrc.c', 'plugin.c']
-
- videotestsrclib = shared_library('spa-videotestsrc',
- videotestsrc_sources,
-- dependencies : [ spa_dep, pthread_lib ],
-+ include_directories : [ spa_inc],
-+ dependencies : [pthread_lib, ],
- install : true,
- install_dir : spa_plugindir / 'videotestsrc')
-diff --git a/spa/plugins/volume/meson.build b/spa/plugins/volume/meson.build
-index 2445e2bbd..e10f89563 100644
---- a/spa/plugins/volume/meson.build
-+++ b/spa/plugins/volume/meson.build
-@@ -2,6 +2,6 @@ volume_sources = ['volume.c', 'plugin.c']
-
- volumelib = shared_library('spa-volume',
- volume_sources,
-- dependencies : [ spa_dep ],
-+ include_directories : [spa_inc],
- install : true,
- install_dir : spa_plugindir / 'volume')
-diff --git a/spa/plugins/vulkan/meson.build b/spa/plugins/vulkan/meson.build
-index b79bca2cf..9683b41ea 100644
---- a/spa/plugins/vulkan/meson.build
-+++ b/spa/plugins/vulkan/meson.build
-@@ -6,6 +6,7 @@ spa_vulkan_sources = [
-
- spa_vulkan = shared_library('spa-vulkan',
- spa_vulkan_sources,
-- dependencies : [ spa_dep, vulkan_dep, mathlib ],
-+ include_directories : [spa_inc],
-+ dependencies : [ vulkan_dep, mathlib ],
- install : true,
- install_dir : spa_plugindir / 'vulkan')
-diff --git a/spa/tests/meson.build b/spa/tests/meson.build
-index 9c78dcbd2..ea00a2cfe 100644
---- a/spa/tests/meson.build
-+++ b/spa/tests/meson.build
-@@ -21,7 +21,7 @@ if find.found()
- })
- executable('spa-include-test-@0@'.format(spa_header.underscorify()),
- src,
-- dependencies: [ spa_dep ],
-+ include_directories: [spa_inc],
- install: false)
- endif
- endforeach
-@@ -36,7 +36,8 @@ benchmark_apps = [
- foreach a : benchmark_apps
- benchmark('spa-' + a,
- executable('spa-' + a, a + '.c',
-- dependencies : [ spa_dep, dl_lib, pthread_lib, mathlib ],
-+ dependencies : [dl_lib, pthread_lib, mathlib ],
-+ include_directories : [spa_inc ],
- install : installed_tests_enabled,
- install_dir : installed_tests_execdir,
- ),
-diff --git a/spa/tools/meson.build b/spa/tools/meson.build
-index 6f12e9c8f..e4df6c3ac 100644
---- a/spa/tools/meson.build
-+++ b/spa/tools/meson.build
-@@ -1,11 +1,14 @@
- executable('spa-inspect', 'spa-inspect.c',
-- dependencies : [ spa_dep, dl_lib ],
-+ include_directories : [spa_inc],
-+ dependencies : [dl_lib, ],
- install : true)
-
- executable('spa-monitor', 'spa-monitor.c',
-- dependencies : [ spa_dep, dl_lib ],
-+ include_directories : [spa_inc],
-+ dependencies : [dl_lib, ],
- install : true)
-
- executable('spa-json-dump', 'spa-json-dump.c',
-- dependencies : [ spa_dep, dl_lib, ],
-+ include_directories : [spa_inc],
-+ dependencies : [dl_lib, ],
- install : true)
-diff --git a/src/daemon/meson.build b/src/daemon/meson.build
-index 647d7393d..28cbe4467 100644
---- a/src/daemon/meson.build
-+++ b/src/daemon/meson.build
-@@ -87,16 +87,16 @@ pipewire_exec = executable('pipewire',
- pipewire_daemon_sources,
- install: true,
- c_args : pipewire_c_args,
-- include_directories : [ configinc ],
-- dependencies : [ spa_dep, pipewire_dep, ],
-+ include_directories : [configinc, spa_inc],
-+ dependencies : [pipewire_dep, ],
- )
-
- executable('pipewire-pulse',
- pipewire_daemon_sources,
- install: true,
- c_args : pipewire_c_args,
-- include_directories : [ configinc ],
-- dependencies : [ spa_dep, pipewire_dep, ],
-+ include_directories : [configinc, spa_inc],
-+ dependencies : [pipewire_dep, ],
- )
-
- ln = find_program('ln')
-diff --git a/src/gst/meson.build b/src/gst/meson.build
-index 709dc0f1c..b91b33dc9 100644
---- a/src/gst/meson.build
-+++ b/src/gst/meson.build
-@@ -24,8 +24,8 @@ pipewire_gst_headers = [
-
- pipewire_gst = shared_library('gstpipewire',
- pipewire_gst_sources,
-- include_directories : [ configinc ],
-- dependencies : [ spa_dep, gst_dep, pipewire_dep ],
-+ include_directories : [configinc, spa_inc],
-+ dependencies : [gst_dep, pipewire_dep],
- install : true,
- install_dir : '@0@/gstreamer-1.0'.format(get_option('libdir')),
- )
-diff --git a/src/modules/meson.build b/src/modules/meson.build
-index 2d3a800d3..ba30275ab 100644
---- a/src/modules/meson.build
-+++ b/src/modules/meson.build
-@@ -31,20 +31,20 @@ module_sources = [
- ]
-
- pipewire_module_access = shared_library('pipewire-module-access', [ 'module-access.c' ],
-- include_directories : [configinc],
-+ include_directories : [configinc, spa_inc],
- install : true,
- install_dir : modules_install_dir,
- install_rpath: modules_install_dir,
-- dependencies : [spa_dep, mathlib, dl_lib, pipewire_dep],
-+ dependencies : [mathlib, dl_lib, pipewire_dep],
- )
-
- pipewire_module_loopback = shared_library('pipewire-module-loopback',
- [ 'module-loopback.c' ],
-- include_directories : [configinc],
-+ include_directories : [configinc, spa_inc],
- install : true,
- install_dir : modules_install_dir,
- install_rpath: modules_install_dir,
-- dependencies : [spa_dep, mathlib, dl_lib, pipewire_dep],
-+ dependencies : [mathlib, dl_lib, pipewire_dep],
- )
-
- simd_cargs = []
-@@ -54,7 +54,7 @@ if have_sse
- pffft_sse = static_library('pffft_sse',
- ['module-filter-chain/pffft.c' ],
- c_args : [sse_args, '-O3', '-DHAVE_SSE'],
-- dependencies : [ spa_dep ],
-+ include_directories : [spa_inc],
- install : false
- )
- simd_cargs += ['-DHAVE_SSE']
-@@ -64,7 +64,7 @@ if have_neon
- pffft_neon = static_library('pffft_neon',
- ['module-filter-chain/pffft.c' ],
- c_args : [neon_args, '-O3', '-DHAVE_NEON'],
-- dependencies : [ spa_dep ],
-+ include_directories : [spa_inc],
- install : false
- )
- simd_cargs += ['-DHAVE_NEON']
-@@ -74,7 +74,7 @@ endif
- pffft_c = static_library('pffft_c',
- ['module-filter-chain/pffft.c' ],
- c_args : [simd_cargs, '-O3', '-DPFFFT_SIMD_DISABLE'],
-- dependencies : [ spa_dep ],
-+ include_directories : [spa_inc],
- install : false
- )
- simd_dependencies += pffft_c
-@@ -100,7 +100,7 @@ endif
-
- pipewire_module_filter_chain = shared_library('pipewire-module-filter-chain',
- filter_chain_sources,
-- include_directories : [configinc],
-+ include_directories : [configinc, spa_inc],
- install : true,
- install_dir : modules_install_dir,
- install_rpath: modules_install_dir,
-@@ -114,7 +114,7 @@ pipewire_module_echo_cancel_sources = [
-
- pipewire_module_echo_cancel = shared_library('pipewire-module-echo-cancel',
- pipewire_module_echo_cancel_sources,
-- include_directories : [configinc],
-+ include_directories : [configinc, spa_inc],
- install : true,
- install_dir : modules_install_dir,
- install_rpath: modules_install_dir,
-@@ -124,26 +124,36 @@ pipewire_module_echo_cancel = shared_library('pipewire-module-echo-cancel',
- pipewire_module_profiler = shared_library('pipewire-module-profiler',
- [ 'module-profiler.c',
- 'module-profiler/protocol-native.c', ],
-- include_directories : [configinc],
-+ include_directories : [configinc, spa_inc],
- install : true,
- install_dir : modules_install_dir,
- install_rpath: modules_install_dir,
-- dependencies : [spa_dep, mathlib, dl_lib, pipewire_dep],
-+ dependencies : [mathlib, dl_lib, pipewire_dep],
- )
-
- build_module_rt = dbus_dep.found()
- if build_module_rt
- pipewire_module_rt = shared_library('pipewire-module-rt', [ 'module-rt.c' ],
-- include_directories : [configinc],
-+ include_directories : [configinc, spa_inc],
- install : true,
- install_dir : modules_install_dir,
- install_rpath: modules_install_dir,
- dependencies : [dbus_dep, mathlib, dl_lib, pipewire_dep],
- )
-+<<<<<<< HEAD
- # TODO: This serves as a temporary alias to prevent breaking existing setups
- # while `module-rtkit` is being migrated to `module-rt`
- pipewire_module_rtkit = shared_library('pipewire-module-rtkit', [ 'module-rt.c' ],
- include_directories : [configinc],
-+=======
-+endif
-+summary({'rt': build_module_rt}, bool_yn: true, section: 'Optional Modules')
-+
-+build_module_rtkit = dbus_dep.found()
-+if build_module_rtkit
-+pipewire_module_rtkit = shared_library('pipewire-module-rtkit', [ 'module-rtkit.c' ],
-+ include_directories : [configinc, spa_inc],
-+>>>>>>> Revert "treewide: meson.build: use dependency variable for SPA"
- install : true,
- install_dir : modules_install_dir,
- install_rpath: modules_install_dir,
-@@ -155,7 +165,7 @@ summary({'rt': build_module_rt}, bool_yn: true, section: 'Optional Modules')
- build_module_portal = dbus_dep.found()
- if build_module_portal
- pipewire_module_portal = shared_library('pipewire-module-portal', [ 'module-portal.c' ],
-- include_directories : [configinc],
-+ include_directories : [configinc, spa_inc],
- install : true,
- install_dir : modules_install_dir,
- install_rpath: modules_install_dir,
-@@ -169,20 +179,20 @@ pipewire_module_client_device = shared_library('pipewire-module-client-device',
- 'module-client-device/resource-device.c',
- 'module-client-device/proxy-device.c',
- 'module-client-device/protocol-native.c', ],
-- include_directories : [configinc],
-+ include_directories : [configinc, spa_inc],
- install : true,
- install_dir : modules_install_dir,
- install_rpath: modules_install_dir,
-- dependencies : [spa_dep, mathlib, dl_lib, pipewire_dep],
-+ dependencies : [mathlib, dl_lib, pipewire_dep],
- )
-
- pipewire_module_link_factory = shared_library('pipewire-module-link-factory',
- [ 'module-link-factory.c' ],
-- include_directories : [configinc],
-+ include_directories : [configinc, spa_inc],
- install : true,
- install_dir : modules_install_dir,
- install_rpath: modules_install_dir,
-- dependencies : [spa_dep, mathlib, dl_lib, pipewire_dep],
-+ dependencies : [mathlib, dl_lib, pipewire_dep],
- )
-
- pipewire_module_protocol_deps = [mathlib, dl_lib, pipewire_dep]
-@@ -198,7 +208,7 @@ pipewire_module_protocol_native = shared_library('pipewire-module-protocol-nativ
- 'module-protocol-native/protocol-native.c',
- 'module-protocol-native/v0/protocol-native.c',
- 'module-protocol-native/connection.c' ],
-- include_directories : [configinc],
-+ include_directories : [configinc, spa_inc],
- install : true,
- install_dir : modules_install_dir,
- install_rpath: modules_install_dir,
-@@ -273,7 +283,7 @@ endif
-
- pipewire_module_protocol_pulse = shared_library('pipewire-module-protocol-pulse',
- pipewire_module_protocol_pulse_sources,
-- include_directories : [configinc],
-+ include_directories : [configinc, spa_inc],
- install : true,
- install_dir : modules_install_dir,
- install_rpath: modules_install_dir,
-@@ -285,7 +295,7 @@ if build_module_pulse_tunnel
- pipewire_module_pulse_tunnel = shared_library('pipewire-module-pulse-tunnel',
- [ 'module-pulse-tunnel.c',
- 'module-protocol-pulse/format.c' ],
-- include_directories : [configinc],
-+ include_directories : [configinc, spa_inc],
- install : true,
- install_dir : modules_install_dir,
- install_rpath: modules_install_dir,
-@@ -296,7 +306,7 @@ summary({'pulse-tunnel': build_module_pulse_tunnel}, bool_yn: true, section: 'Op
-
- pipewire_module_protocol_simple = shared_library('pipewire-module-protocol-simple',
- [ 'module-protocol-simple.c' ],
-- include_directories : [configinc],
-+ include_directories : [configinc, spa_inc],
- install : true,
- install_dir : modules_install_dir,
- install_rpath: modules_install_dir,
-@@ -305,20 +315,20 @@ pipewire_module_protocol_simple = shared_library('pipewire-module-protocol-simpl
-
- pipewire_module_example_sink = shared_library('pipewire-module-example-sink',
- [ 'module-example-sink.c' ],
-- include_directories : [configinc],
-+ include_directories : [configinc, spa_inc],
- install : false,
- install_dir : modules_install_dir,
- install_rpath: modules_install_dir,
-- dependencies : [spa_dep, mathlib, dl_lib, pipewire_dep],
-+ dependencies : [mathlib, dl_lib, pipewire_dep],
- )
-
- pipewire_module_example_sink = shared_library('pipewire-module-example-source',
- [ 'module-example-source.c' ],
-- include_directories : [configinc],
-+ include_directories : [configinc, spa_inc],
- install : false,
- install_dir : modules_install_dir,
- install_rpath: modules_install_dir,
-- dependencies : [spa_dep, mathlib, dl_lib, pipewire_dep],
-+ dependencies : [mathlib, dl_lib, pipewire_dep],
- )
-
- pipewire_module_client_node = shared_library('pipewire-module-client-node',
-@@ -330,12 +340,12 @@ pipewire_module_client_node = shared_library('pipewire-module-client-node',
- 'module-client-node/v0/transport.c',
- 'module-client-node/v0/protocol-native.c',
- 'spa/spa-node.c', ],
-- include_directories : [configinc],
-+ include_directories : [configinc, spa_inc],
- link_with : pipewire_module_protocol_native,
- install : true,
- install_dir : modules_install_dir,
- install_rpath: modules_install_dir,
-- dependencies : [spa_dep, mathlib, dl_lib, pipewire_dep],
-+ dependencies : [mathlib, dl_lib, pipewire_dep],
- )
-
- pipewire_module_metadata = shared_library('pipewire-module-metadata',
-@@ -343,12 +353,12 @@ pipewire_module_metadata = shared_library('pipewire-module-metadata',
- 'module-metadata/proxy-metadata.c',
- 'module-metadata/metadata.c',
- 'module-metadata/protocol-native.c'],
-- include_directories : [configinc],
-+ include_directories : [configinc, spa_inc],
- link_with : pipewire_module_protocol_native,
- install : true,
- install_dir : modules_install_dir,
- install_rpath: modules_install_dir,
-- dependencies : [spa_dep, mathlib, dl_lib, pipewire_dep],
-+ dependencies : [mathlib, dl_lib, pipewire_dep],
- )
-
- test('pw-test-protocol-native',
-@@ -356,8 +366,8 @@ test('pw-test-protocol-native',
- [ 'module-protocol-native/test-connection.c',
- 'module-protocol-native/connection.c' ],
- c_args : libpipewire_c_args,
-- include_directories : [configinc ],
-- dependencies : [spa_dep, pipewire_dep],
-+ include_directories : [configinc, spa_inc ],
-+ dependencies : [pipewire_dep],
- install : installed_tests_enabled,
- install_dir : installed_tests_execdir,
- ),
-@@ -383,7 +393,7 @@ pipewire_module_adapter = shared_library('pipewire-module-adapter',
- [ 'module-adapter.c',
- 'module-adapter/adapter.c',
- 'spa/spa-node.c' ],
-- include_directories : [configinc],
-+ include_directories : [configinc, spa_inc],
- install : true,
- install_dir : modules_install_dir,
- install_rpath: modules_install_dir,
-@@ -405,11 +415,11 @@ pipewire_module_session_manager = shared_library('pipewire-module-session-manage
- 'module-session-manager/proxy-session-manager.c',
- 'module-session-manager/session.c',
- ],
-- include_directories : [configinc],
-+ include_directories : [configinc, spa_inc],
- install : true,
- install_dir : modules_install_dir,
- install_rpath: modules_install_dir,
-- dependencies : [spa_dep, mathlib, dl_lib, pipewire_dep],
-+ dependencies : [mathlib, dl_lib, pipewire_dep],
- )
-
- build_module_zeroconf_discover = avahi_dep.found()
-@@ -418,7 +428,7 @@ pipewire_module_zeroconf_discover = shared_library('pipewire-module-zeroconf-dis
- [ 'module-zeroconf-discover.c',
- 'module-protocol-pulse/format.c',
- 'module-zeroconf-discover/avahi-poll.c' ],
-- include_directories : [configinc],
-+ include_directories : [configinc, spa_inc],
- install : true,
- install_dir : modules_install_dir,
- install_rpath: modules_install_dir,
-@@ -432,7 +442,7 @@ if build_module_raop_discover
- pipewire_module_raop_discover = shared_library('pipewire-module-raop-discover',
- [ 'module-raop-discover.c',
- 'module-zeroconf-discover/avahi-poll.c' ],
-- include_directories : [configinc],
-+ include_directories : [configinc, spa_inc],
- install : true,
- install_dir : modules_install_dir,
- install_rpath: modules_install_dir,
-@@ -446,7 +456,7 @@ if build_module_raop
- pipewire_module_raop_sink = shared_library('pipewire-module-raop-sink',
- [ 'module-raop-sink.c',
- 'module-raop/rtsp-client.c' ],
-- include_directories : [configinc],
-+ include_directories : [configinc, spa_inc],
- install : true,
- install_dir : modules_install_dir,
- install_rpath: modules_install_dir,
-@@ -462,7 +472,7 @@ build_module_roc = roc_lib.found()
- if build_module_roc
- pipewire_module_roc_sink = shared_library('pipewire-module-roc-sink',
- [ 'module-roc-sink.c' ],
-- include_directories : [configinc],
-+ include_directories : [configinc, spa_inc],
- install : true,
- install_dir : modules_install_dir,
- install_rpath: modules_install_dir,
-@@ -471,7 +481,7 @@ pipewire_module_roc_sink = shared_library('pipewire-module-roc-sink',
-
- pipewire_module_roc_source = shared_library('pipewire-module-roc-source',
- [ 'module-roc-source.c' ],
-- include_directories : [configinc],
-+ include_directories : [configinc, spa_inc],
- install : true,
- install_dir : modules_install_dir,
- install_rpath: modules_install_dir,
-diff --git a/src/modules/spa/meson.build b/src/modules/spa/meson.build
-index 8332910b5..ab4fac18d 100644
---- a/src/modules/spa/meson.build
-+++ b/src/modules/spa/meson.build
-@@ -1,31 +1,31 @@
- pipewire_module_spa_node = shared_library('pipewire-module-spa-node',
- [ 'module-node.c', 'spa-node.c' ],
-- include_directories : [configinc],
-+ include_directories : [configinc, spa_inc],
- install : true,
- install_dir : modules_install_dir,
-- dependencies : [spa_dep, mathlib, dl_lib, pipewire_dep],
-+ dependencies : [mathlib, dl_lib, pipewire_dep],
- )
-
- pipewire_module_spa_device = shared_library('pipewire-module-spa-device',
- [ 'module-device.c', 'spa-device.c' ],
-- include_directories : [configinc],
-+ include_directories : [configinc, spa_inc],
- install : true,
- install_dir : modules_install_dir,
-- dependencies : [spa_dep, mathlib, dl_lib, pipewire_dep],
-+ dependencies : [mathlib, dl_lib, pipewire_dep],
- )
-
- pipewire_module_spa_node_factory = shared_library('pipewire-module-spa-node-factory',
- [ 'module-node-factory.c', 'spa-node.c' ],
-- include_directories : [configinc],
-+ include_directories : [configinc, spa_inc],
- install : true,
- install_dir : modules_install_dir,
-- dependencies : [spa_dep, mathlib, dl_lib, pipewire_dep],
-+ dependencies : [mathlib, dl_lib, pipewire_dep],
- )
-
- pipewire_module_spa_device_factory = shared_library('pipewire-module-spa-device-factory',
- [ 'module-device-factory.c', 'spa-device.c' ],
-- include_directories : [configinc],
-+ include_directories : [configinc, spa_inc],
- install : true,
- install_dir : modules_install_dir,
-- dependencies : [spa_dep, mathlib, dl_lib, pipewire_dep],
-+ dependencies : [mathlib, dl_lib, pipewire_dep],
- )
-diff --git a/src/pipewire/meson.build b/src/pipewire/meson.build
-index 969f50b22..f66ce8746 100644
---- a/src/pipewire/meson.build
-+++ b/src/pipewire/meson.build
-@@ -103,9 +103,9 @@ libpipewire = shared_library(pipewire_name, pipewire_sources,
- version : libversion,
- soversion : soversion,
- c_args : libpipewire_c_args,
-- include_directories : [pipewire_inc, configinc, includes_inc],
-+ include_directories : [pipewire_inc, configinc, spa_inc, includes_inc],
- install : true,
-- dependencies : [spa_dep, dl_lib, mathlib, pthread_lib, libintl_dep, atomic_dep, ],
-+ dependencies : [dl_lib, mathlib, pthread_lib, libintl_dep, atomic_dep, ],
- )
-
- pipewire_dep = declare_dependency(link_with : libpipewire,
-diff --git a/test/meson.build b/test/meson.build
-index eca92eb24..4108ac14b 100644
---- a/test/meson.build
-+++ b/test/meson.build
-@@ -19,6 +19,7 @@ pwtest_c_args = [
- ]
-
- pwtest_inc = [
-+ spa_inc,
- pipewire_inc,
- configinc,
- includes_inc,
-@@ -36,7 +37,6 @@ test('test-pwtest',
- executable('test-pwtest',
- 'test-pwtest.c',
- include_directories: pwtest_inc,
-- dependencies: [ spa_dep ],
- link_with: pwtest_lib)
- )
-
-@@ -45,7 +45,6 @@ test('test-pwtest',
- executable('test-example',
- 'test-example.c',
- include_directories: pwtest_inc,
-- dependencies: [ spa_dep ],
- link_with: pwtest_lib)
-
- test('test-pw-utils',
-@@ -55,7 +54,6 @@ test('test-pw-utils',
- 'test-map.c',
- 'test-utils.c',
- include_directories: pwtest_inc,
-- dependencies: [ spa_dep ],
- link_with: pwtest_lib)
- )
-
-@@ -63,7 +61,6 @@ test('test-lib',
- executable('test-lib',
- 'test-lib.c',
- include_directories: pwtest_inc,
-- dependencies: [ spa_dep ],
- link_with: pwtest_lib)
- )
-
-@@ -71,7 +68,6 @@ test('test-client',
- executable('test-client',
- 'test-client.c',
- include_directories: pwtest_inc,
-- dependencies: [ spa_dep ],
- link_with: pwtest_lib)
- )
-
-@@ -88,7 +84,7 @@ test('test-context',
- 'test-context.c',
- 'test-config.c',
- include_directories: pwtest_inc,
-- dependencies: [spa_dep, spa_support_dep, spa_dbus_dep],
-+ dependencies: [spa_support_dep, spa_dbus_dep],
- link_with: [pwtest_lib,
- pipewire_module_protocol_native,
- pipewire_module_client_node,
-@@ -103,7 +99,7 @@ test('test-support',
- 'test-support.c',
- 'test-logger.c',
- include_directories: pwtest_inc,
-- dependencies: [spa_dep, systemd_dep, spa_support_dep, spa_journal_dep],
-+ dependencies: [systemd_dep, spa_support_dep, spa_journal_dep],
- link_with: [pwtest_lib])
- )
- test('test-spa',
-@@ -115,7 +111,6 @@ test('test-spa',
- 'test-spa-node.c',
- 'test-spa-pod.c',
- include_directories: pwtest_inc,
-- dependencies: [ spa_dep ],
- link_with: pwtest_lib)
- )
-
---
-2.35.1
-
diff --git a/meta-pipewire/recipes-multimedia/pipewire/pipewire/0004-Revert-treewide-meson.build-simplify-get_variable-ca.patch b/meta-pipewire/recipes-multimedia/pipewire/pipewire/0004-Revert-treewide-meson.build-simplify-get_variable-ca.patch
deleted file mode 100644
index bd7e3804f..000000000
--- a/meta-pipewire/recipes-multimedia/pipewire/pipewire/0004-Revert-treewide-meson.build-simplify-get_variable-ca.patch
+++ /dev/null
@@ -1,130 +0,0 @@
-From 82c58fbde3d85465dc4b6e0af460124f67d1e485 Mon Sep 17 00:00:00 2001
-From: Ashok Sidipotu <ashok.sidipotu@collabora.com>
-Date: Thu, 24 Feb 2022 11:36:15 +0530
-Subject: [PATCH 04/12] Revert "treewide: meson.build: simplify
- `get_variable()` calls"
-
-This reverts commit ec465966bcc783203041de09dce5c315bb0a6f76.
-Upstream-Status: Inappropriate[meson version dependent]
----
- meson.build | 8 ++++----
- spa/plugins/audioconvert/meson.build | 4 ++--
- spa/tests/meson.build | 2 +-
- src/daemon/systemd/system/meson.build | 2 +-
- src/daemon/systemd/user/meson.build | 2 +-
- src/modules/meson.build | 6 +++---
- src/tests/meson.build | 6 +++---
- 7 files changed, 15 insertions(+), 15 deletions(-)
-
-diff --git a/meson.build b/meson.build
-index 9d806198a..7040e39ac 100644
---- a/meson.build
-+++ b/meson.build
-@@ -445,11 +445,11 @@ devenv = environment()
- builddir = meson.project_build_root()
- srcdir = meson.project_source_root()
-
--devenv.set('PIPEWIRE_CONFIG_DIR', pipewire_dep.get_variable('confdatadir'))
--devenv.set('PIPEWIRE_MODULE_DIR', pipewire_dep.get_variable('moduledir'))
-+devenv.set('PIPEWIRE_CONFIG_DIR', pipewire_dep.get_variable(internal: 'confdatadir'))
-+devenv.set('PIPEWIRE_MODULE_DIR', pipewire_dep.get_variable(internal: 'moduledir'))
-
--devenv.set('SPA_PLUGIN_DIR', spa_dep.get_variable('plugindir'))
--devenv.set('SPA_DATA_DIR', spa_dep.get_variable('datadir'))
-+devenv.set('SPA_PLUGIN_DIR', spa_dep.get_variable(internal: 'plugindir'))
-+devenv.set('SPA_DATA_DIR', spa_dep.get_variable(internal: 'datadir'))
-
- devenv.set('GST_PLUGIN_PATH', builddir / 'src'/ 'gst')
-
-diff --git a/spa/plugins/audioconvert/meson.build b/spa/plugins/audioconvert/meson.build
-index 55e88ccc4..42332a538 100644
---- a/spa/plugins/audioconvert/meson.build
-+++ b/spa/plugins/audioconvert/meson.build
-@@ -140,7 +140,7 @@ foreach a : test_apps
- install : installed_tests_enabled,
- install_dir : installed_tests_execdir / 'audioconvert'),
- env : [
-- 'SPA_PLUGIN_DIR=@0@'.format(spa_dep.get_variable('plugindir')),
-+ 'SPA_PLUGIN_DIR=@0@'.format(spa_dep.get_variable(internal: 'plugindir')),
- ])
-
- if installed_tests_enabled
-@@ -170,7 +170,7 @@ foreach a : benchmark_apps
- install : installed_tests_enabled,
- install_dir : installed_tests_execdir / 'audioconvert'),
- env : [
-- 'SPA_PLUGIN_DIR=@0@'.format(spa_dep.get_variable('plugindir')),
-+ 'SPA_PLUGIN_DIR=@0@'.format(spa_dep.get_variable(internal: 'plugindir')),
- ])
-
- if installed_tests_enabled
-diff --git a/spa/tests/meson.build b/spa/tests/meson.build
-index ea00a2cfe..0b26fdf02 100644
---- a/spa/tests/meson.build
-+++ b/spa/tests/meson.build
-@@ -42,7 +42,7 @@ foreach a : benchmark_apps
- install_dir : installed_tests_execdir,
- ),
- env : [
-- 'SPA_PLUGIN_DIR=@0@/spa/plugins/'.format(meson.build_root()),
-+ 'SPA_PLUGIN_DIR=@0@'.format(spa_dep.get_variable(internal: 'plugindir')),
- ]
- )
-
-diff --git a/src/daemon/systemd/system/meson.build b/src/daemon/systemd/system/meson.build
-index 84ca0b068..b3e5f1f41 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(pkgconfig: 'systemdsystemunitdir', pkgconfig_define : [ 'rootprefix', prefix])
- if get_option('systemd-system-unit-dir') != ''
- systemd_system_services_dir = get_option('systemd-system-unit-dir')
- endif
-diff --git a/src/daemon/systemd/user/meson.build b/src/daemon/systemd/user/meson.build
-index d17f3794f..a24f9b174 100644
---- a/src/daemon/systemd/user/meson.build
-+++ b/src/daemon/systemd/user/meson.build
-@@ -1,4 +1,4 @@
--systemd_user_services_dir = systemd.get_variable('systemduserunitdir', pkgconfig_define : [ 'prefix', prefix])
-+systemd_user_services_dir = systemd.get_variable(pkgconfig: 'systemduserunitdir', pkgconfig_define : [ 'prefix', prefix])
- if get_option('systemd-user-unit-dir') != ''
- systemd_user_services_dir = get_option('systemd-user-unit-dir')
- endif
-diff --git a/src/modules/meson.build b/src/modules/meson.build
-index ba30275ab..c1225e3e0 100644
---- a/src/modules/meson.build
-+++ b/src/modules/meson.build
-@@ -372,9 +372,9 @@ test('pw-test-protocol-native',
- install_dir : installed_tests_execdir,
- ),
- env : [
-- 'SPA_PLUGIN_DIR=@0@'.format(spa_dep.get_variable('plugindir')),
-- 'PIPEWIRE_CONFIG_DIR=@0@'.format(pipewire_dep.get_variable('confdatadir')),
-- 'PIPEWIRE_MODULE_DIR=@0@'.format(pipewire_dep.get_variable('moduledir')),
-+ 'SPA_PLUGIN_DIR=@0@'.format(spa_dep.get_variable(internal: 'plugindir')),
-+ 'PIPEWIRE_CONFIG_DIR=@0@'.format(pipewire_dep.get_variable(internal: 'confdatadir')),
-+ 'PIPEWIRE_MODULE_DIR=@0@'.format(pipewire_dep.get_variable(internal: 'moduledir')),
- ]
- )
-
-diff --git a/src/tests/meson.build b/src/tests/meson.build
-index 3e03a4c75..3e8d05012 100644
---- a/src/tests/meson.build
-+++ b/src/tests/meson.build
-@@ -13,9 +13,9 @@ foreach a : test_apps
- install : installed_tests_enabled,
- install_dir : installed_tests_execdir),
- env : [
-- 'SPA_PLUGIN_DIR=@0@'.format(spa_dep.get_variable('plugindir')),
-- 'PIPEWIRE_CONFIG_DIR=@0@'.format(pipewire_dep.get_variable('confdatadir')),
-- 'PIPEWIRE_MODULE_DIR=@0@'.format(pipewire_dep.get_variable('moduledir')),
-+ 'SPA_PLUGIN_DIR=@0@'.format(spa_dep.get_variable(internal: 'plugindir')),
-+ 'PIPEWIRE_CONFIG_DIR=@0@'.format(pipewire_dep.get_variable(internal: 'confdatadir')),
-+ 'PIPEWIRE_MODULE_DIR=@0@'.format(pipewire_dep.get_variable(internal: 'moduledir')),
- ])
-
- if installed_tests_enabled
---
-2.35.1
-
diff --git a/meta-pipewire/recipes-multimedia/pipewire/pipewire/0005-Revert-treewide-meson.build-get-SPA_PLUGIN_DIR-from-.patch b/meta-pipewire/recipes-multimedia/pipewire/pipewire/0005-Revert-treewide-meson.build-get-SPA_PLUGIN_DIR-from-.patch
deleted file mode 100644
index f2a9d0d09..000000000
--- a/meta-pipewire/recipes-multimedia/pipewire/pipewire/0005-Revert-treewide-meson.build-get-SPA_PLUGIN_DIR-from-.patch
+++ /dev/null
@@ -1,124 +0,0 @@
-From cf7b3a0db10cf0bcd140800ef547199703fdf16e Mon Sep 17 00:00:00 2001
-From: Ashok Sidipotu <ashok.sidipotu@collabora.com>
-Date: Thu, 24 Feb 2022 11:54:54 +0530
-Subject: [PATCH 05/12] Revert "treewide: meson.build: get SPA_PLUGIN_DIR from
- dependency"
-
-This reverts commit 26eb66fb5b56bb5534745a8e223bd099cf5fe4fa.
-Upstream-Status: Inappropriate[meson version dependent]
----
- meson.build | 4 ++--
- spa/plugins/audioconvert/meson.build | 4 ++--
- spa/tests/meson.build | 2 +-
- src/modules/meson.build | 13 +++----------
- src/tests/meson.build | 6 +++---
- 5 files changed, 11 insertions(+), 18 deletions(-)
-
-diff --git a/meson.build b/meson.build
-index 7040e39ac..1b87bd004 100644
---- a/meson.build
-+++ b/meson.build
-@@ -448,8 +448,8 @@ srcdir = meson.project_source_root()
- devenv.set('PIPEWIRE_CONFIG_DIR', pipewire_dep.get_variable(internal: 'confdatadir'))
- devenv.set('PIPEWIRE_MODULE_DIR', pipewire_dep.get_variable(internal: 'moduledir'))
-
--devenv.set('SPA_PLUGIN_DIR', spa_dep.get_variable(internal: 'plugindir'))
--devenv.set('SPA_DATA_DIR', spa_dep.get_variable(internal: 'datadir'))
-+ devenv.set('SPA_PLUGIN_DIR', builddir / 'spa' / 'plugins')
-+ devenv.set('SPA_DATA_DIR', srcdir / 'spa' / 'plugins')
-
- devenv.set('GST_PLUGIN_PATH', builddir / 'src'/ 'gst')
-
-diff --git a/spa/plugins/audioconvert/meson.build b/spa/plugins/audioconvert/meson.build
-index 42332a538..3aa0f3846 100644
---- a/spa/plugins/audioconvert/meson.build
-+++ b/spa/plugins/audioconvert/meson.build
-@@ -140,7 +140,7 @@ foreach a : test_apps
- install : installed_tests_enabled,
- install_dir : installed_tests_execdir / 'audioconvert'),
- env : [
-- 'SPA_PLUGIN_DIR=@0@'.format(spa_dep.get_variable(internal: 'plugindir')),
-+ 'SPA_PLUGIN_DIR=@0@/spa/plugins/'.format(meson.project_build_root()),
- ])
-
- if installed_tests_enabled
-@@ -170,7 +170,7 @@ foreach a : benchmark_apps
- install : installed_tests_enabled,
- install_dir : installed_tests_execdir / 'audioconvert'),
- env : [
-- 'SPA_PLUGIN_DIR=@0@'.format(spa_dep.get_variable(internal: 'plugindir')),
-+ 'SPA_PLUGIN_DIR=@0@/spa/plugins/'.format(meson.project_build_root()),
- ])
-
- if installed_tests_enabled
-diff --git a/spa/tests/meson.build b/spa/tests/meson.build
-index 0b26fdf02..d995cfaa4 100644
---- a/spa/tests/meson.build
-+++ b/spa/tests/meson.build
-@@ -42,7 +42,7 @@ foreach a : benchmark_apps
- install_dir : installed_tests_execdir,
- ),
- env : [
-- 'SPA_PLUGIN_DIR=@0@'.format(spa_dep.get_variable(internal: 'plugindir')),
-+ 'SPA_PLUGIN_DIR=@0@/spa/plugins/'.format(meson.project_build_root()),
- ]
- )
-
-diff --git a/src/modules/meson.build b/src/modules/meson.build
-index c1225e3e0..bd7d3f711 100644
---- a/src/modules/meson.build
-+++ b/src/modules/meson.build
-@@ -140,12 +140,6 @@ pipewire_module_rt = shared_library('pipewire-module-rt', [ 'module-rt.c' ],
- install_rpath: modules_install_dir,
- dependencies : [dbus_dep, mathlib, dl_lib, pipewire_dep],
- )
--<<<<<<< HEAD
--# TODO: This serves as a temporary alias to prevent breaking existing setups
--# while `module-rtkit` is being migrated to `module-rt`
--pipewire_module_rtkit = shared_library('pipewire-module-rtkit', [ 'module-rt.c' ],
-- include_directories : [configinc],
--=======
- endif
- summary({'rt': build_module_rt}, bool_yn: true, section: 'Optional Modules')
-
-@@ -153,7 +147,6 @@ build_module_rtkit = dbus_dep.found()
- if build_module_rtkit
- pipewire_module_rtkit = shared_library('pipewire-module-rtkit', [ 'module-rtkit.c' ],
- include_directories : [configinc, spa_inc],
-->>>>>>> Revert "treewide: meson.build: use dependency variable for SPA"
- install : true,
- install_dir : modules_install_dir,
- install_rpath: modules_install_dir,
-@@ -372,9 +365,9 @@ test('pw-test-protocol-native',
- install_dir : installed_tests_execdir,
- ),
- env : [
-- 'SPA_PLUGIN_DIR=@0@'.format(spa_dep.get_variable(internal: 'plugindir')),
-- 'PIPEWIRE_CONFIG_DIR=@0@'.format(pipewire_dep.get_variable(internal: 'confdatadir')),
-- 'PIPEWIRE_MODULE_DIR=@0@'.format(pipewire_dep.get_variable(internal: 'moduledir')),
-+ 'SPA_PLUGIN_DIR=@0@/spa/plugins/'.format(meson.project_build_root()),
-+ 'PIPEWIRE_CONFIG_DIR=@0@/src/daemon/'.format(meson.project_build_root()),
-+ 'PIPEWIRE_MODULE_DIR=@0@/src/modules/'.format(meson.project_build_root())
- ]
- )
-
-diff --git a/src/tests/meson.build b/src/tests/meson.build
-index 3e8d05012..9a595d431 100644
---- a/src/tests/meson.build
-+++ b/src/tests/meson.build
-@@ -13,9 +13,9 @@ foreach a : test_apps
- install : installed_tests_enabled,
- install_dir : installed_tests_execdir),
- env : [
-- 'SPA_PLUGIN_DIR=@0@'.format(spa_dep.get_variable(internal: 'plugindir')),
-- 'PIPEWIRE_CONFIG_DIR=@0@'.format(pipewire_dep.get_variable(internal: 'confdatadir')),
-- 'PIPEWIRE_MODULE_DIR=@0@'.format(pipewire_dep.get_variable(internal: 'moduledir')),
-+ 'SPA_PLUGIN_DIR=@0@/spa/plugins/'.format(meson.project_build_root()),
-+ 'PIPEWIRE_CONFIG_DIR=@0@/src/daemon/'.format(meson.project_build_root()),
-+ 'PIPEWIRE_MODULE_DIR=@0@/src/modules/'.format(meson.project_build_root())
- ])
-
- if installed_tests_enabled
---
-2.35.1
-
diff --git a/meta-pipewire/recipes-multimedia/pipewire/pipewire/0006-Revert-meson-declare-spa_dep-and-override_dependency.patch b/meta-pipewire/recipes-multimedia/pipewire/pipewire/0006-Revert-meson-declare-spa_dep-and-override_dependency.patch
deleted file mode 100644
index fe44c07ed..000000000
--- a/meta-pipewire/recipes-multimedia/pipewire/pipewire/0006-Revert-meson-declare-spa_dep-and-override_dependency.patch
+++ /dev/null
@@ -1,82 +0,0 @@
-From 869e53ac9ded351ce6cb47b5ce04ef345c673b48 Mon Sep 17 00:00:00 2001
-From: Ashok Sidipotu <ashok.sidipotu@collabora.com>
-Date: Thu, 24 Feb 2022 12:16:03 +0530
-Subject: [PATCH 06/12] 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 | 13 +------------
- src/pipewire/meson.build | 10 ++--------
- 3 files changed, 4 insertions(+), 21 deletions(-)
-
-diff --git a/meson.build b/meson.build
-index 1b87bd004..af60472f8 100644
---- a/meson.build
-+++ b/meson.build
-@@ -1,7 +1,7 @@
- project('pipewire', ['c' ],
- version : '0.3.47',
- license : [ 'MIT', 'LGPL-2.1-or-later', 'GPL-2.0-only' ],
-- meson_version : '>= 0.59.0',
-+ meson_version : '>= 0.49.0',
- default_options : [ 'warning_level=3',
- 'c_std=gnu99',
- 'cpp_std=c++17',
-diff --git a/spa/meson.build b/spa/meson.build
-index 2717b86d6..4e0f96727 100644
---- a/spa/meson.build
-+++ b/spa/meson.build
-@@ -56,20 +56,9 @@ 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,
- description : 'Simple Plugin API',
- version : spaversion,
-- extra_cflags : '-D_REENTRANT',
-- variables : ['plugindir=${libdir}/@0@'.format(spa_name)],
-- uninstalled_variables : ['plugindir=${prefix}/spa/plugins'],
--)
--
--meson.override_dependency('lib@0@'.format(spa_name), spa_dep)
-+ extra_cflags : '-D_REENTRANT')
-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.35.1
-
diff --git a/meta-pipewire/recipes-multimedia/pipewire/pipewire/0007-Revert-meson-use-meson-variables-for-the-SMs-uninsta.patch b/meta-pipewire/recipes-multimedia/pipewire/pipewire/0007-Revert-meson-use-meson-variables-for-the-SMs-uninsta.patch
deleted file mode 100644
index 3fff8eb27..000000000
--- a/meta-pipewire/recipes-multimedia/pipewire/pipewire/0007-Revert-meson-use-meson-variables-for-the-SMs-uninsta.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 4e8241675e68d5fb082d42ff597e681955eabbc4 Mon Sep 17 00:00:00 2001
-From: Ashok Sidipotu <ashok.sidipotu@collabora.com>
-Date: Thu, 24 Feb 2022 12:37:27 +0530
-Subject: [PATCH 07/12] Revert "meson: use meson variables for the SMs'
- uninstalled scripts"
-
-This reverts commit d5825b8551c34cefabf278a6b5ed04bc6ab0f301.
-Upstream-Status: Inappropriate[meson version dependent]
----
- src/daemon/meson.build | 16 ++++++++++------
- 1 file changed, 10 insertions(+), 6 deletions(-)
-
-diff --git a/src/daemon/meson.build b/src/daemon/meson.build
-index 28cbe4467..cd17d23c3 100644
---- a/src/daemon/meson.build
-+++ b/src/daemon/meson.build
-@@ -46,17 +46,21 @@ elif default_sm == 'media-session'
- ms_bindir = ms_proj.get_variable('media_session_bin_dir', pipewire_bindir)
- conf_config.set('session_manager_path', ms_bindir / 'pipewire-media-session')
-
-- ms_uninstalled = ms_proj.get_variable('media_session_uninstalled')
-- conf_config_uninstalled.set('session_manager_path', ms_uninstalled.full_path())
-- conf_config_uninstalled.set('session_manager_args', 'pipewire-media-session')
-+ conf_config_uninstalled.set('session_manager_path',
-+ meson.source_root() / 'subprojects' / 'media-session' / 'media-session-uninstalled.sh')
-+ conf_config_uninstalled.set('session_manager_args',
-+ '-b ' + meson.build_root() / 'subprojects' / 'media-session' + ' pipewire-media-session')
- conf_config_uninstalled.set('sm_comment', '')
- elif default_sm == 'wireplumber'
- wp_bindir = wp_proj.get_variable('wireplumber_bin_dir', pipewire_bindir)
-+
- conf_config.set('session_manager_path', wp_bindir / 'wireplumber')
-
-- wp_uninstalled = wp_proj.get_variable('wireplumber_uninstalled')
-- conf_config_uninstalled.set('session_manager_path', wp_uninstalled.full_path())
-- conf_config_uninstalled.set('session_manager_args', 'wireplumber')
-+ # wp-uninstalled.sh -b path/to/wp/build/root wireplumber
-+ conf_config_uninstalled.set('session_manager_path',
-+ meson.source_root() / 'subprojects' / 'wireplumber' / 'wp-uninstalled.sh')
-+ conf_config_uninstalled.set('session_manager_args',
-+ '-b ' + meson.build_root() / 'subprojects' / 'wireplumber' + ' wireplumber')
- conf_config_uninstalled.set('sm_comment', '')
- else
- conf_config_uninstalled.set('session_manager_path', default_sm)
---
-2.35.1
-
diff --git a/meta-pipewire/recipes-multimedia/pipewire/pipewire/0008-Revert-meson-declare-spa_dep-and-override_dependency.patch b/meta-pipewire/recipes-multimedia/pipewire/pipewire/0008-Revert-meson-declare-spa_dep-and-override_dependency.patch
deleted file mode 100644
index 751adbe5b..000000000
--- a/meta-pipewire/recipes-multimedia/pipewire/pipewire/0008-Revert-meson-declare-spa_dep-and-override_dependency.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From c5b9c082dafe2ad2ac118ffd39c5b88307f3357f Mon Sep 17 00:00:00 2001
-From: Ashok Sidipotu <ashok.sidipotu@collabora.com>
-Date: Thu, 24 Feb 2022 16:12:23 +0530
-Subject: [PATCH 08/12] Revert "meson: declare spa_dep and
- override_dependency() for spa and pipewire"
-
-This reverts commit 7ab5c35cadc075bcdf44031f1f7d95352cf9a13b.
----
- src/pipewire/meson.build | 7 +------
- 1 file changed, 1 insertion(+), 6 deletions(-)
-
-diff --git a/src/pipewire/meson.build b/src/pipewire/meson.build
-index 5cfaba3f9..2dd5d790e 100644
---- a/src/pipewire/meson.build
-+++ b/src/pipewire/meson.build
-@@ -121,11 +121,6 @@ pkgconfig.generate(libpipewire,
- description : 'PipeWire Interface',
- version : pipewire_version,
- extra_cflags : '-D_REENTRANT',
-- variables : ['moduledir=${libdir}/@0@'.format(pipewire_name)],
-- uninstalled_variables : [
-- 'moduledir=${prefix}/src/modules',
-- 'confdatadir=${prefix}/src/daemon',
-- ],
--)
-+ variables : ['moduledir=${libdir}/@0@'.format(pipewire_name)])
-
- subdir('extensions')
---
-2.35.1
-
diff --git a/meta-pipewire/recipes-multimedia/pipewire/pipewire/0009-Revert-test-add-test-for-the-loop.patch b/meta-pipewire/recipes-multimedia/pipewire/pipewire/0009-Revert-test-add-test-for-the-loop.patch
deleted file mode 100644
index 6628c5c34..000000000
--- a/meta-pipewire/recipes-multimedia/pipewire/pipewire/0009-Revert-test-add-test-for-the-loop.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From bf29285fb6e534b754a3b0c7b33d2a0ed3b98b79 Mon Sep 17 00:00:00 2001
-From: Ashok Sidipotu <ashok.sidipotu@collabora.com>
-Date: Thu, 24 Feb 2022 16:13:54 +0530
-Subject: [PATCH 09/12] Revert "test: add test for the loop"
-
-This reverts commit 5ac5ebfe19618f303c2bb4f0f9295baba0299961.
----
- test/meson.build | 8 --------
- 1 file changed, 8 deletions(-)
-
-diff --git a/test/meson.build b/test/meson.build
-index 4108ac14b..87e211431 100644
---- a/test/meson.build
-+++ b/test/meson.build
-@@ -71,14 +71,6 @@ test('test-client',
- link_with: pwtest_lib)
- )
-
--test('test-loop',
-- executable('test-loop',
-- 'test-loop.c',
-- include_directories: pwtest_inc,
-- dependencies: [ spa_dep ],
-- link_with: pwtest_lib)
--)
--
- test('test-context',
- executable('test-context',
- 'test-context.c',
---
-2.35.1
-
diff --git a/meta-pipewire/recipes-multimedia/pipewire/pipewire/0010-Revert-spa-improve-the-AEC-interface.patch b/meta-pipewire/recipes-multimedia/pipewire/pipewire/0010-Revert-spa-improve-the-AEC-interface.patch
deleted file mode 100644
index 8bf945479..000000000
--- a/meta-pipewire/recipes-multimedia/pipewire/pipewire/0010-Revert-spa-improve-the-AEC-interface.patch
+++ /dev/null
@@ -1,502 +0,0 @@
-From 3ac842085c60a0c745bd3f8f0d8419e98220675b Mon Sep 17 00:00:00 2001
-From: Ashok Sidipotu <ashok.sidipotu@collabora.com>
-Date: Thu, 24 Feb 2022 18:02:29 +0530
-Subject: [PATCH 10/12] Revert "spa: improve the AEC interface"
-
-This reverts commit c5c9ecdd87225ecd4978e9f6176a8a6d1fdd4252.
-Upstream-Status: Inappropriate[meson version dependent]
-
-This patch had to be reverted as it is dependent on
-9386c70b3a2cc2df6aabfd7b6a6bc1d7ec873bd1 which needs
-higher meson version.
-
----
- spa/include/spa/interfaces/audio/aec.h | 71 +++-----------------
- spa/plugins/aec/aec-null.c | 62 +++++++++--------
- spa/plugins/aec/aec-webrtc.cpp | 56 ++++++++-------
- src/modules/module-echo-cancel.c | 39 +++++------
- src/modules/module-echo-cancel/echo-cancel.h | 34 ++++++++++
- 5 files changed, 130 insertions(+), 132 deletions(-)
- create mode 100644 src/modules/module-echo-cancel/echo-cancel.h
-
-diff --git a/spa/include/spa/interfaces/audio/aec.h b/spa/include/spa/interfaces/audio/aec.h
-index 17e4e4e46..e1fcda563 100644
---- a/spa/include/spa/interfaces/audio/aec.h
-+++ b/spa/include/spa/interfaces/audio/aec.h
-@@ -25,71 +25,20 @@
-
- #include <spa/utils/dict.h>
- #include <spa/utils/hook.h>
-+#include <spa/pod/pod.h>
- #include <spa/param/audio/raw.h>
-+#include <spa/support/plugin.h>
-
--#ifndef SPA_AUDIO_AEC_H
--#define SPA_AUDIO_AEC_H
-+#define SPA_TYPE_INTERFACE_AEC SPA_TYPE_INFO_INTERFACE_BASE "AEC"
-+#define SPA_VERSION_AUDIO_AEC 1
-
--#ifdef __cplusplus
--extern "C" {
--#endif
--
--#define SPA_TYPE_INTERFACE_AUDIO_AEC SPA_TYPE_INFO_INTERFACE_BASE "Audio:AEC"
--
--#define SPA_VERSION_AUDIO_AEC 0
--struct spa_audio_aec {
-+struct echo_cancel_info {
- struct spa_interface iface;
- const char *name;
-- const struct spa_dict *info;
-+ const struct spa_dict info;
- const char *latency;
-+ int (*create) (struct spa_handle *handle, const struct spa_dict *args, const struct spa_audio_info_raw *info);
-+ int (*run) (struct spa_handle *handle, const float *rec[], const float *play[], float *out[], uint32_t n_samples);
-+ struct spa_dict *(*get_properties) (struct spa_handle *handle);
-+ int (*set_properties) (struct spa_handle *handle, const struct spa_dict *args);
- };
--
--struct spa_audio_aec_info {
--#define SPA_AUDIO_AEC_CHANGE_MASK_PROPS (1u<<0)
-- uint64_t change_mask;
--
-- const struct spa_dict *props;
--};
--
--struct spa_audio_aec_events {
--#define SPA_VERSION_AUDIO_AEC_EVENTS 0
-- uint32_t version; /**< version of this structure */
--
-- /** Emitted when info changes */
-- void (*info) (void *data, const struct spa_audio_aec_info *info);
--};
--
--struct spa_audio_aec_methods {
--#define SPA_VERSION_AUDIO_AEC_METHODS 0
-- uint32_t version;
--
-- int (*add_listener) (void *object,
-- struct spa_hook *listener,
-- const struct spa_audio_aec_events *events,
-- void *data);
--
-- int (*init) (void *data, const struct spa_dict *args, const struct spa_audio_info_raw *info);
-- int (*run) (void *data, const float *rec[], const float *play[], float *out[], uint32_t n_samples);
-- int (*set_props) (void *data, const struct spa_dict *args);
--};
--
--#define spa_audio_aec_method(o,method,version,...) \
--({ \
-- int _res = -ENOTSUP; \
-- struct spa_audio_aec *_o = o; \
-- spa_interface_call_res(&_o->iface, \
-- struct spa_audio_aec_methods, _res, \
-- method, version, ##__VA_ARGS__); \
-- _res; \
--})
--
--#define spa_audio_aec_add_listener(o,...) spa_audio_aec_method(o, add_listener, 0, __VA_ARGS__)
--#define spa_audio_aec_init(o,...) spa_audio_aec_method(o, init, 0, __VA_ARGS__)
--#define spa_audio_aec_run(o,...) spa_audio_aec_method(o, run, 0, __VA_ARGS__)
--#define spa_audio_aec_set_props(o,...) spa_audio_aec_method(o, set_props, 0, __VA_ARGS__)
--
--#ifdef __cplusplus
--} /* extern "C" */
--#endif
--
--#endif /* SPA_AUDIO_AEC_H */
-diff --git a/spa/plugins/aec/aec-null.c b/spa/plugins/aec/aec-null.c
-index 2909eb213..3168a6b36 100644
---- a/spa/plugins/aec/aec-null.c
-+++ b/spa/plugins/aec/aec-null.c
-@@ -30,11 +30,7 @@
-
- struct impl {
- struct spa_handle handle;
-- struct spa_audio_aec aec;
- struct spa_log *log;
--
-- struct spa_hook_list hooks_list;
--
- uint32_t channels;
- };
-
-@@ -42,38 +38,54 @@ static struct spa_log_topic log_topic = SPA_LOG_TOPIC(0, "spa.aec.null");
- #undef SPA_LOG_TOPIC_DEFAULT
- #define SPA_LOG_TOPIC_DEFAULT &log_topic
-
--static int null_init(void *data, const struct spa_dict *args, const struct spa_audio_info_raw *info)
-+static int null_create(struct spa_handle *handle, const struct spa_dict *args, const struct spa_audio_info_raw *info)
- {
-- struct impl *impl = data;
-+ struct impl *impl;
-+ impl = (struct impl *) handle;
- impl->channels = info->channels;
-+
- return 0;
- }
-
--static int null_run(void *data, const float *rec[], const float *play[], float *out[], uint32_t n_samples)
-+static int null_run(struct spa_handle *handle, const float *rec[], const float *play[], float *out[], uint32_t n_samples)
- {
-- struct impl *impl = data;
-+ struct impl *impl = (struct impl *) handle;
- uint32_t i;
- for (i = 0; i < impl->channels; i++)
- memcpy(out[i], rec[i], n_samples * sizeof(float));
- return 0;
- }
-
--static struct spa_audio_aec_methods impl_aec = {
-- .init = null_init,
-+struct spa_dict *null_get_properties(SPA_UNUSED struct spa_handle *handle)
-+{
-+ /* Not supported */
-+ return NULL;
-+}
-+
-+int null_set_properties(SPA_UNUSED struct spa_handle *handle, SPA_UNUSED const struct spa_dict *args)
-+{
-+ /* Not supported */
-+ return -1;
-+}
-+
-+static struct echo_cancel_info echo_cancel_null_impl = {
-+ .name = "null",
-+ .info = SPA_DICT_INIT(NULL, 0),
-+ .latency = NULL,
-+ .create = null_create,
- .run = null_run,
-+ .get_properties = null_get_properties,
-+ .set_properties = null_set_properties,
- };
-
- static int impl_get_interface(struct spa_handle *handle, const char *type, void **interface)
- {
-- struct impl *impl;
-
- spa_return_val_if_fail(handle != NULL, -EINVAL);
- spa_return_val_if_fail(interface != NULL, -EINVAL);
-
-- impl = (struct impl *) handle;
--
-- if (spa_streq(type, SPA_TYPE_INTERFACE_AUDIO_AEC))
-- *interface = &impl->aec;
-+ if (spa_streq(type, SPA_TYPE_INTERFACE_AEC))
-+ *interface = &echo_cancel_null_impl;
- else
- return -ENOENT;
-
-@@ -106,29 +118,23 @@ impl_init(const struct spa_handle_factory *factory,
- spa_return_val_if_fail(factory != NULL, -EINVAL);
- spa_return_val_if_fail(handle != NULL, -EINVAL);
-
-+ echo_cancel_null_impl.iface = SPA_INTERFACE_INIT(
-+ SPA_TYPE_INTERFACE_AEC,
-+ SPA_VERSION_AUDIO_AEC,
-+ NULL,
-+ NULL);
-+
- handle->get_interface = impl_get_interface;
- handle->clear = impl_clear;
--
- impl = (struct impl *) handle;
--
-- impl->aec.iface = SPA_INTERFACE_INIT(
-- SPA_TYPE_INTERFACE_AUDIO_AEC,
-- SPA_VERSION_AUDIO_AEC,
-- &impl_aec, impl);
-- impl->aec.name = "null";
-- impl->aec.info = NULL;
-- impl->aec.latency = NULL;
--
- impl->log = (struct spa_log*)spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Log);
- spa_log_topic_init(impl->log, &log_topic);
-
-- spa_hook_list_init(&impl->hooks_list);
--
- return 0;
- }
-
- static const struct spa_interface_info impl_interfaces[] = {
-- {SPA_TYPE_INTERFACE_AUDIO_AEC,},
-+ {SPA_TYPE_INTERFACE_AEC,},
- };
-
- static int
-diff --git a/spa/plugins/aec/aec-webrtc.cpp b/spa/plugins/aec/aec-webrtc.cpp
-index f519189c7..d44fa6e30 100644
---- a/spa/plugins/aec/aec-webrtc.cpp
-+++ b/spa/plugins/aec/aec-webrtc.cpp
-@@ -38,8 +38,6 @@
-
- struct impl_data {
- struct spa_handle handle;
-- struct spa_audio_aec aec;
--
- struct spa_log *log;
- std::unique_ptr<webrtc::AudioProcessing> apm;
- spa_audio_info_raw info;
-@@ -60,9 +58,9 @@ static bool webrtc_get_spa_bool(const struct spa_dict *args, const char *key, bo
- return value;
- }
-
--static int webrtc_init(void *data, const struct spa_dict *args, const struct spa_audio_info_raw *info)
-+static int webrtc_create(struct spa_handle *handle, const struct spa_dict *args, const struct spa_audio_info_raw *info)
- {
-- auto impl = reinterpret_cast<struct impl_data*>(data);
-+ auto impl = reinterpret_cast<struct impl_data*>(handle);
-
- bool extended_filter = webrtc_get_spa_bool(args, "webrtc.extended_filter", true);
- bool delay_agnostic = webrtc_get_spa_bool(args, "webrtc.delay_agnostic", true);
-@@ -122,9 +120,9 @@ static int webrtc_init(void *data, const struct spa_dict *args, const struct spa
- return 0;
- }
-
--static int webrtc_run(void *data, const float *rec[], const float *play[], float *out[], uint32_t n_samples)
-+static int webrtc_run(struct spa_handle *handle, const float *rec[], const float *play[], float *out[], uint32_t n_samples)
- {
-- auto impl = reinterpret_cast<struct impl_data*>(data);
-+ auto impl = reinterpret_cast<struct impl_data*>(handle);
- webrtc::StreamConfig config =
- webrtc::StreamConfig(impl->info.rate, impl->info.channels, false);
- unsigned int num_blocks = n_samples * 1000 / impl->info.rate / 10;
-@@ -160,22 +158,36 @@ static int webrtc_run(void *data, const float *rec[], const float *play[], float
- return 0;
- }
-
--static struct spa_audio_aec_methods impl_aec = {
-- SPA_VERSION_AUDIO_AEC_METHODS,
-- .add_listener = NULL,
-- .init = webrtc_init,
-+struct spa_dict *webrtc_get_properties(SPA_UNUSED struct spa_handle *handle)
-+{
-+ /* Not supported */
-+ return NULL;
-+}
-+
-+int webrtc_set_properties(SPA_UNUSED struct spa_handle *handle, SPA_UNUSED const struct spa_dict *args)
-+{
-+ /* Not supported */
-+ return -1;
-+}
-+
-+static struct echo_cancel_info echo_cancel_webrtc_impl = {
-+ .name = "webrtc",
-+ .info = SPA_DICT_INIT(NULL, 0),
-+ .latency = "480/48000",
-+ .create = webrtc_create,
- .run = webrtc_run,
-+ .get_properties = webrtc_get_properties,
-+ .set_properties = webrtc_set_properties,
- };
-
- static int impl_get_interface(struct spa_handle *handle, const char *type, void **interface)
- {
-- auto impl = reinterpret_cast<struct impl_data*>(handle);
-
- spa_return_val_if_fail(handle != NULL, -EINVAL);
- spa_return_val_if_fail(interface != NULL, -EINVAL);
-
-- if (spa_streq(type, SPA_TYPE_INTERFACE_AUDIO_AEC))
-- *interface = &impl->aec;
-+ if (spa_streq(type, SPA_TYPE_INTERFACE_AEC))
-+ *interface = &echo_cancel_webrtc_impl;
- else
- return -ENOENT;
-
-@@ -207,19 +219,15 @@ impl_init(const struct spa_handle_factory *factory,
- spa_return_val_if_fail(factory != NULL, -EINVAL);
- spa_return_val_if_fail(handle != NULL, -EINVAL);
-
-- auto impl = new (handle) impl_data();
-+ echo_cancel_webrtc_impl.iface = SPA_INTERFACE_INIT(
-+ SPA_TYPE_INTERFACE_AEC,
-+ SPA_VERSION_AUDIO_AEC,
-+ NULL,
-+ NULL);
-
-+ auto impl = new (handle) impl_data();
- impl->handle.get_interface = impl_get_interface;
- impl->handle.clear = impl_clear;
--
-- impl->aec.iface = SPA_INTERFACE_INIT(
-- SPA_TYPE_INTERFACE_AUDIO_AEC,
-- SPA_VERSION_AUDIO_AEC,
-- &impl_aec, impl);
-- impl->aec.name = "webrtc",
-- impl->aec.info = NULL;
-- impl->aec.latency = "480/48000",
--
- impl->log = (struct spa_log*)spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Log);
- spa_log_topic_init(impl->log, &log_topic);
-
-@@ -227,7 +235,7 @@ impl_init(const struct spa_handle_factory *factory,
- }
-
- static const struct spa_interface_info impl_interfaces[] = {
-- {SPA_TYPE_INTERFACE_AUDIO_AEC,},
-+ {SPA_TYPE_INTERFACE_AEC,},
- };
-
- static int
-diff --git a/src/modules/module-echo-cancel.c b/src/modules/module-echo-cancel.c
-index c933a9376..728325938 100644
---- a/src/modules/module-echo-cancel.c
-+++ b/src/modules/module-echo-cancel.c
-@@ -24,6 +24,7 @@
- */
-
- #include "config.h"
-+#include "module-echo-cancel/echo-cancel.h"
-
- #include <errno.h>
- #include <fcntl.h>
-@@ -187,7 +188,7 @@ struct impl {
- uint32_t out_ringsize;
- struct spa_ringbuffer out_ring;
-
-- struct spa_audio_aec *aec;
-+ const struct echo_cancel_info *aec_info;
- uint32_t aec_blocksize;
-
- unsigned int capture_ready:1;
-@@ -287,7 +288,7 @@ static void process(struct impl *impl)
- pw_stream_queue_buffer(impl->playback, pout);
-
- /* Now run the canceller */
-- spa_audio_aec_run(impl->aec, rec, play_delayed, out, size / sizeof(float));
-+ echo_cancel_run(impl->aec_info, impl->spa_handle, rec, play_delayed, out, size / sizeof(float));
-
- /* Next, copy over the output to the output ringbuffer */
- avail = spa_ringbuffer_get_write_index(&impl->out_ring, &oindex);
-@@ -651,8 +652,8 @@ static int setup_streams(struct impl *impl)
- pw_properties_set(props, PW_KEY_NODE_LINK_GROUP, str);
- if ((str = pw_properties_get(impl->source_props, PW_KEY_NODE_LATENCY)) != NULL)
- pw_properties_set(props, PW_KEY_NODE_LATENCY, str);
-- else if (impl->aec->latency)
-- pw_properties_set(props, PW_KEY_NODE_LATENCY, impl->aec->latency);
-+ else if (impl->aec_info->latency)
-+ pw_properties_set(props, PW_KEY_NODE_LATENCY, impl->aec_info->latency);
-
- impl->capture = pw_stream_new(impl->core,
- "Echo-Cancel Capture", props);
-@@ -684,8 +685,8 @@ static int setup_streams(struct impl *impl)
- pw_properties_set(props, PW_KEY_NODE_LINK_GROUP, str);
- if ((str = pw_properties_get(impl->sink_props, PW_KEY_NODE_LATENCY)) != NULL)
- pw_properties_set(props, PW_KEY_NODE_LATENCY, str);
-- else if (impl->aec->latency)
-- pw_properties_set(props, PW_KEY_NODE_LATENCY, impl->aec->latency);
-+ else if (impl->aec_info->latency)
-+ pw_properties_set(props, PW_KEY_NODE_LATENCY, impl->aec_info->latency);
-
- impl->playback = pw_stream_new(impl->core,
- "Echo-Cancel Playback", props);
-@@ -998,42 +999,42 @@ int pipewire__module_init(struct pw_impl_module *module, const char *args)
- return -ENOENT;
- }
-
-- if ((res = spa_handle_get_interface(handle, SPA_TYPE_INTERFACE_AUDIO_AEC, &iface)) < 0) {
-- pw_log_error("can't get %s interface %d", SPA_TYPE_INTERFACE_AUDIO_AEC, res);
-+ if ((res = spa_handle_get_interface(handle, SPA_TYPE_INTERFACE_AEC, &iface)) < 0) {
-+ pw_log_error("can't get %s interface %d", SPA_TYPE_INTERFACE_AEC, res);
- return res;
- }
-- impl->aec = iface;
-+ impl->aec_info = iface;
- impl->spa_handle = handle;
-- if (impl->aec->iface.version != SPA_VERSION_AUDIO_AEC) {
-+ if (impl->aec_info->iface.version != SPA_VERSION_AUDIO_AEC) {
- pw_log_error("codec plugin %s has incompatible ABI version (%d != %d)",
-- SPA_NAME_AEC, impl->aec->iface.version, SPA_VERSION_AUDIO_AEC);
-+ SPA_NAME_AEC, impl->aec_info->iface.version, SPA_VERSION_AUDIO_AEC);
- res = -ENOENT;
- goto error;
- }
-
-- (void)SPA_SUPPORT_INIT(SPA_TYPE_INTERFACE_AUDIO_AEC, (struct spa_audio_aec *)impl->aec);
-+ (void)SPA_SUPPORT_INIT(SPA_TYPE_INTERFACE_AEC, (struct echo_cancel_info *)impl->aec_info);
-
-- pw_log_info("Using plugin AEC %s", impl->aec->name);
-+ pw_log_info("Using plugin AEC %s", impl->aec_info->name);
-
- if ((str = pw_properties_get(props, "aec.args")) != NULL)
- aec_props = pw_properties_new_string(str);
- else
- aec_props = pw_properties_new(NULL, NULL);
-
-- if (spa_audio_aec_init(impl->aec, &aec_props->dict, &impl->info)) {
-- pw_log_error("codec plugin %s create failed", impl->aec->name);
-+ if (echo_cancel_create(impl->aec_info, impl->spa_handle, &aec_props->dict, &impl->info)) {
-+ pw_log_error("codec plugin %s create failed", impl->aec_info->name);
- res = -ENOENT;
- goto error;
- }
-
- pw_properties_free(aec_props);
-
-- if (impl->aec->latency) {
-+ if (impl->aec_info->latency) {
- unsigned int num, denom, req_num, req_denom;
- unsigned int factor = 0;
- unsigned int new_num = 0;
-
-- spa_assert_se(sscanf(impl->aec->latency, "%u/%u", &num, &denom) == 2);
-+ spa_assert_se(sscanf(impl->aec_info->latency, "%u/%u", &num, &denom) == 2);
-
- if ((str = pw_properties_get(props, PW_KEY_NODE_LATENCY)) != NULL) {
- sscanf(str, "%u/%u", &req_num, &req_denom);
-@@ -1042,8 +1043,8 @@ int pipewire__module_init(struct pw_impl_module *module, const char *args)
- }
-
- if (factor == 0 || new_num == 0) {
-- pw_log_info("Setting node latency to %s", impl->aec->latency);
-- pw_properties_set(props, PW_KEY_NODE_LATENCY, impl->aec->latency);
-+ pw_log_info("Setting node latency to %s", impl->aec_info->latency);
-+ pw_properties_set(props, PW_KEY_NODE_LATENCY, impl->aec_info->latency);
- impl->aec_blocksize = sizeof(float) * impl->info.rate * num / denom;
- } else {
- pw_log_info("Setting node latency to %u/%u", new_num, req_denom);
-diff --git a/src/modules/module-echo-cancel/echo-cancel.h b/src/modules/module-echo-cancel/echo-cancel.h
-new file mode 100644
-index 000000000..ac83f70e4
---- /dev/null
-+++ b/src/modules/module-echo-cancel/echo-cancel.h
-@@ -0,0 +1,34 @@
-+/* PipeWire
-+ *
-+ * Copyright © 2021 Wim Taymans <wim.taymans@gmail.com>
-+ *
-+ * Permission is hereby granted, free of charge, to any person obtaining a
-+ * copy of this software and associated documentation files (the "Software"),
-+ * to deal in the Software without restriction, including without limitation
-+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
-+ * and/or sell copies of the Software, and to permit persons to whom the
-+ * Software is furnished to do so, subject to the following conditions:
-+ *
-+ * The above copyright notice and this permission notice (including the next
-+ * paragraph) shall be included in all copies or substantial portions of the
-+ * Software.
-+ *
-+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-+ * DEALINGS IN THE SOFTWARE.
-+ */
-+
-+
-+#include <spa/utils/dict.h>
-+#include <spa/utils/hook.h>
-+#include <spa/param/audio/raw.h>
-+#include <spa/support/plugin.h>
-+
-+#include <pipewire/properties.h>
-+
-+#define echo_cancel_create(i,...) (i)->create(__VA_ARGS__)
-+#define echo_cancel_run(i,...) (i)->run(__VA_ARGS__)
---
-2.35.1
-
diff --git a/meta-pipewire/recipes-multimedia/pipewire/pipewire/0011-Revert-module-echo-cancel-Move-backends-to-dynamic-l.patch b/meta-pipewire/recipes-multimedia/pipewire/pipewire/0011-Revert-module-echo-cancel-Move-backends-to-dynamic-l.patch
deleted file mode 100644
index 4d62abcfc..000000000
--- a/meta-pipewire/recipes-multimedia/pipewire/pipewire/0011-Revert-module-echo-cancel-Move-backends-to-dynamic-l.patch
+++ /dev/null
@@ -1,1055 +0,0 @@
-From 7f14334d055da433521c32c622682f89fe2dd1c5 Mon Sep 17 00:00:00 2001
-From: Ashok Sidipotu <ashok.sidipotu@collabora.com>
-Date: Thu, 24 Feb 2022 18:02:48 +0530
-Subject: [PATCH 11/12] Revert "module-echo-cancel: Move backends to dynamic
- libaries"
-
-This reverts commit 9386c70b3a2cc2df6aabfd7b6a6bc1d7ec873bd1.
-Upstream-Status: Inappropriate[meson version dependent]
----
- spa/include/meson.build | 1 -
- spa/include/spa/utils/names.h | 2 -
- spa/plugins/aec/aec-null.c | 185 -----------
- spa/plugins/aec/aec-webrtc.cpp | 286 ------------------
- spa/plugins/aec/meson.build | 16 -
- spa/plugins/meson.build | 2 -
- src/modules/meson.build | 9 +-
- src/modules/module-echo-cancel.c | 83 ++---
- .../modules/module-echo-cancel/aec-null.c | 56 ++--
- src/modules/module-echo-cancel/aec-webrtc.cpp | 163 ++++++++++
- src/modules/module-echo-cancel/echo-cancel.h | 20 +-
- 11 files changed, 247 insertions(+), 576 deletions(-)
- delete mode 100644 spa/plugins/aec/aec-null.c
- delete mode 100644 spa/plugins/aec/aec-webrtc.cpp
- delete mode 100644 spa/plugins/aec/meson.build
- rename spa/include/spa/interfaces/audio/aec.h => src/modules/module-echo-cancel/aec-null.c (58%)
- create mode 100644 src/modules/module-echo-cancel/aec-webrtc.cpp
-
-diff --git a/spa/include/meson.build b/spa/include/meson.build
-index 443db7dca..0566b025d 100644
---- a/spa/include/meson.build
-+++ b/spa/include/meson.build
-@@ -3,7 +3,6 @@ spa_sections = [
- 'control',
- 'debug',
- 'graph',
-- 'interfaces',
- 'monitor',
- 'node',
- 'param',
-diff --git a/spa/include/spa/utils/names.h b/spa/include/spa/utils/names.h
-index 3ece5a861..1e570d098 100644
---- a/spa/include/spa/utils/names.h
-+++ b/spa/include/spa/utils/names.h
-@@ -82,8 +82,6 @@ extern "C" {
- #define SPA_NAME_AUDIO_ADAPT "audio.adapt" /**< combination of a node and an
- * audio.convert. Does clock slaving */
-
--#define SPA_NAME_AEC "audio.aec" /**< Echo canceling */
--
- /** video processing */
- #define SPA_NAME_VIDEO_PROCESS_FORMAT "video.process.format" /**< processes raw video from one format
- * to another */
-diff --git a/spa/plugins/aec/aec-null.c b/spa/plugins/aec/aec-null.c
-deleted file mode 100644
-index 3168a6b36..000000000
---- a/spa/plugins/aec/aec-null.c
-+++ /dev/null
-@@ -1,185 +0,0 @@
--/* PipeWire
-- *
-- * Copyright © 2021 Wim Taymans <wim.taymans@gmail.com>
-- *
-- * Permission is hereby granted, free of charge, to any person obtaining a
-- * copy of this software and associated documentation files (the "Software"),
-- * to deal in the Software without restriction, including without limitation
-- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
-- * and/or sell copies of the Software, and to permit persons to whom the
-- * Software is furnished to do so, subject to the following conditions:
-- *
-- * The above copyright notice and this permission notice (including the next
-- * paragraph) shall be included in all copies or substantial portions of the
-- * Software.
-- *
-- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-- * DEALINGS IN THE SOFTWARE.
-- */
--
--#include <spa/interfaces/audio/aec.h>
--#include <spa/support/log.h>
--#include <spa/utils/string.h>
--#include <spa/utils/names.h>
--#include <spa/support/plugin.h>
--
--struct impl {
-- struct spa_handle handle;
-- struct spa_log *log;
-- uint32_t channels;
--};
--
--static struct spa_log_topic log_topic = SPA_LOG_TOPIC(0, "spa.aec.null");
--#undef SPA_LOG_TOPIC_DEFAULT
--#define SPA_LOG_TOPIC_DEFAULT &log_topic
--
--static int null_create(struct spa_handle *handle, const struct spa_dict *args, const struct spa_audio_info_raw *info)
--{
-- struct impl *impl;
-- impl = (struct impl *) handle;
-- impl->channels = info->channels;
--
-- return 0;
--}
--
--static int null_run(struct spa_handle *handle, const float *rec[], const float *play[], float *out[], uint32_t n_samples)
--{
-- struct impl *impl = (struct impl *) handle;
-- uint32_t i;
-- for (i = 0; i < impl->channels; i++)
-- memcpy(out[i], rec[i], n_samples * sizeof(float));
-- return 0;
--}
--
--struct spa_dict *null_get_properties(SPA_UNUSED struct spa_handle *handle)
--{
-- /* Not supported */
-- return NULL;
--}
--
--int null_set_properties(SPA_UNUSED struct spa_handle *handle, SPA_UNUSED const struct spa_dict *args)
--{
-- /* Not supported */
-- return -1;
--}
--
--static struct echo_cancel_info echo_cancel_null_impl = {
-- .name = "null",
-- .info = SPA_DICT_INIT(NULL, 0),
-- .latency = NULL,
-- .create = null_create,
-- .run = null_run,
-- .get_properties = null_get_properties,
-- .set_properties = null_set_properties,
--};
--
--static int impl_get_interface(struct spa_handle *handle, const char *type, void **interface)
--{
--
-- spa_return_val_if_fail(handle != NULL, -EINVAL);
-- spa_return_val_if_fail(interface != NULL, -EINVAL);
--
-- if (spa_streq(type, SPA_TYPE_INTERFACE_AEC))
-- *interface = &echo_cancel_null_impl;
-- else
-- return -ENOENT;
--
-- return 0;
--}
--
--static int impl_clear(struct spa_handle *handle)
--{
-- spa_return_val_if_fail(handle != NULL, -EINVAL);
--
-- return 0;
--}
--
--static size_t
--impl_get_size(const struct spa_handle_factory *factory,
-- const struct spa_dict *params)
--{
-- return sizeof(struct impl);
--}
--
--static int
--impl_init(const struct spa_handle_factory *factory,
-- struct spa_handle *handle,
-- const struct spa_dict *info,
-- const struct spa_support *support,
-- uint32_t n_support)
--{
-- struct impl *impl;
--
-- spa_return_val_if_fail(factory != NULL, -EINVAL);
-- spa_return_val_if_fail(handle != NULL, -EINVAL);
--
-- echo_cancel_null_impl.iface = SPA_INTERFACE_INIT(
-- SPA_TYPE_INTERFACE_AEC,
-- SPA_VERSION_AUDIO_AEC,
-- NULL,
-- NULL);
--
-- handle->get_interface = impl_get_interface;
-- handle->clear = impl_clear;
-- impl = (struct impl *) handle;
-- impl->log = (struct spa_log*)spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Log);
-- spa_log_topic_init(impl->log, &log_topic);
--
-- return 0;
--}
--
--static const struct spa_interface_info impl_interfaces[] = {
-- {SPA_TYPE_INTERFACE_AEC,},
--};
--
--static int
--impl_enum_interface_info(const struct spa_handle_factory *factory,
-- const struct spa_interface_info **info,
-- uint32_t *index)
--{
-- spa_return_val_if_fail(factory != NULL, -EINVAL);
-- spa_return_val_if_fail(info != NULL, -EINVAL);
-- spa_return_val_if_fail(index != NULL, -EINVAL);
--
-- switch (*index) {
-- case 0:
-- *info = &impl_interfaces[*index];
-- break;
-- default:
-- return 0;
-- }
-- (*index)++;
-- return 1;
--}
--
--const struct spa_handle_factory spa_aec_exaudio_factory = {
-- SPA_VERSION_HANDLE_FACTORY,
-- SPA_NAME_AEC,
-- NULL,
-- impl_get_size,
-- impl_init,
-- impl_enum_interface_info,
--};
--
--
--SPA_EXPORT
--int spa_handle_factory_enum(const struct spa_handle_factory **factory, uint32_t *index)
--{
-- spa_return_val_if_fail(factory != NULL, -EINVAL);
-- spa_return_val_if_fail(index != NULL, -EINVAL);
--
-- switch (*index) {
-- case 0:
-- *factory = &spa_aec_exaudio_factory;
-- break;
-- default:
-- return 0;
-- }
-- (*index)++;
-- return 1;
--}
-diff --git a/spa/plugins/aec/aec-webrtc.cpp b/spa/plugins/aec/aec-webrtc.cpp
-deleted file mode 100644
-index d44fa6e30..000000000
---- a/spa/plugins/aec/aec-webrtc.cpp
-+++ /dev/null
-@@ -1,286 +0,0 @@
--/* PipeWire
-- *
-- * Copyright © 2021 Wim Taymans <wim.taymans@gmail.com>
-- * © 2021 Arun Raghavan <arun@asymptotic.io>
-- *
-- * Permission is hereby granted, free of charge, to any person obtaining a
-- * copy of this software and associated documentation files (the "Software"),
-- * to deal in the Software without restriction, including without limitation
-- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
-- * and/or sell copies of the Software, and to permit persons to whom the
-- * Software is furnished to do so, subject to the following conditions:
-- *
-- * The above copyright notice and this permission notice (including the next
-- * paragraph) shall be included in all copies or substantial portions of the
-- * Software.
-- *
-- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-- * DEALINGS IN THE SOFTWARE.
-- */
--
--#include <memory>
--#include <utility>
--
--#include <spa/interfaces/audio/aec.h>
--#include <spa/support/log.h>
--#include <spa/utils/string.h>
--#include <spa/utils/names.h>
--#include <spa/support/plugin.h>
--
--#include <webrtc/modules/audio_processing/include/audio_processing.h>
--#include <webrtc/modules/interface/module_common_types.h>
--#include <webrtc/system_wrappers/include/trace.h>
--
--struct impl_data {
-- struct spa_handle handle;
-- struct spa_log *log;
-- std::unique_ptr<webrtc::AudioProcessing> apm;
-- spa_audio_info_raw info;
-- std::unique_ptr<float *[]> play_buffer, rec_buffer, out_buffer;
--};
--
--static struct spa_log_topic log_topic = SPA_LOG_TOPIC(0, "spa.eac.webrtc");
--#undef SPA_LOG_TOPIC_DEFAULT
--#define SPA_LOG_TOPIC_DEFAULT &log_topic
--
--static bool webrtc_get_spa_bool(const struct spa_dict *args, const char *key, bool default_value) {
-- const char *str_val;
-- bool value = default_value;
-- str_val = spa_dict_lookup(args, key);
-- if (str_val != NULL)
-- value =spa_atob(str_val);
--
-- return value;
--}
--
--static int webrtc_create(struct spa_handle *handle, const struct spa_dict *args, const struct spa_audio_info_raw *info)
--{
-- auto impl = reinterpret_cast<struct impl_data*>(handle);
--
-- bool extended_filter = webrtc_get_spa_bool(args, "webrtc.extended_filter", true);
-- bool delay_agnostic = webrtc_get_spa_bool(args, "webrtc.delay_agnostic", true);
-- bool high_pass_filter = webrtc_get_spa_bool(args, "webrtc.high_pass_filter", true);
-- bool noise_suppression = webrtc_get_spa_bool(args, "webrtc.noise_suppression", true);
-- bool voice_detection = webrtc_get_spa_bool(args, "webrtc.voice_detection", true);
--
-- // Note: AGC seems to mess up with Agnostic Delay Detection, especially with speech,
-- // result in very poor performance, disable by default
-- bool gain_control = webrtc_get_spa_bool(args, "webrtc.gain_control", false);
--
-- // Disable experimental flags by default
-- bool experimental_agc = webrtc_get_spa_bool(args, "webrtc.experimental_agc", false);
-- bool experimental_ns = webrtc_get_spa_bool(args, "webrtc.experimental_ns", false);
--
-- // FIXME: Intelligibility enhancer is not currently supported
-- // This filter will modify playback buffer (when calling ProcessReverseStream), but now
-- // playback buffer modifications are discarded.
--
-- webrtc::Config config;
-- config.Set<webrtc::ExtendedFilter>(new webrtc::ExtendedFilter(extended_filter));
-- config.Set<webrtc::DelayAgnostic>(new webrtc::DelayAgnostic(delay_agnostic));
-- config.Set<webrtc::ExperimentalAgc>(new webrtc::ExperimentalAgc(experimental_agc));
-- config.Set<webrtc::ExperimentalNs>(new webrtc::ExperimentalNs(experimental_ns));
--
-- webrtc::ProcessingConfig pconfig = {{
-- webrtc::StreamConfig(info->rate, info->channels, false), /* input stream */
-- webrtc::StreamConfig(info->rate, info->channels, false), /* output stream */
-- webrtc::StreamConfig(info->rate, info->channels, false), /* reverse input stream */
-- webrtc::StreamConfig(info->rate, info->channels, false), /* reverse output stream */
-- }};
--
-- auto apm = std::unique_ptr<webrtc::AudioProcessing>(webrtc::AudioProcessing::Create(config));
-- if (apm->Initialize(pconfig) != webrtc::AudioProcessing::kNoError) {
-- spa_log_error(impl->log, "Error initialising webrtc audio processing module");
-- return -1;
-- }
--
-- apm->high_pass_filter()->Enable(high_pass_filter);
-- // Always disable drift compensation since it requires drift sampling
-- apm->echo_cancellation()->enable_drift_compensation(false);
-- apm->echo_cancellation()->Enable(true);
-- // TODO: wire up supression levels to args
-- apm->echo_cancellation()->set_suppression_level(webrtc::EchoCancellation::kHighSuppression);
-- apm->noise_suppression()->set_level(webrtc::NoiseSuppression::kHigh);
-- apm->noise_suppression()->Enable(noise_suppression);
-- apm->voice_detection()->Enable(voice_detection);
-- // TODO: wire up AGC parameters to args
-- apm->gain_control()->set_analog_level_limits(0, 255);
-- apm->gain_control()->set_mode(webrtc::GainControl::kAdaptiveDigital);
-- apm->gain_control()->Enable(gain_control);
-- impl->apm = std::move(apm);
-- impl->info = *info;
-- impl->play_buffer = std::make_unique<float *[]>(info->channels);
-- impl->rec_buffer = std::make_unique<float *[]>(info->channels);
-- impl->out_buffer = std::make_unique<float *[]>(info->channels);
-- return 0;
--}
--
--static int webrtc_run(struct spa_handle *handle, const float *rec[], const float *play[], float *out[], uint32_t n_samples)
--{
-- auto impl = reinterpret_cast<struct impl_data*>(handle);
-- webrtc::StreamConfig config =
-- webrtc::StreamConfig(impl->info.rate, impl->info.channels, false);
-- unsigned int num_blocks = n_samples * 1000 / impl->info.rate / 10;
--
-- if (n_samples * 1000 / impl->info.rate % 10 != 0) {
-- spa_log_error(impl->log, "Buffers must be multiples of 10ms in length (currently %u samples)", n_samples);
-- return -1;
-- }
--
-- for (size_t i = 0; i < num_blocks; i ++) {
-- for (size_t j = 0; j < impl->info.channels; j++) {
-- impl->play_buffer[j] = const_cast<float *>(play[j]) + config.num_frames() * i;
-- impl->rec_buffer[j] = const_cast<float *>(rec[j]) + config.num_frames() * i;
-- impl->out_buffer[j] = out[j] + config.num_frames() * i;
-- }
-- /* FIXME: ProcessReverseStream may change the playback buffer, in which
-- * case we should use that, if we ever expose the intelligibility
-- * enhancer */
-- if (impl->apm->ProcessReverseStream(impl->play_buffer.get(), config, config, impl->play_buffer.get()) !=
-- webrtc::AudioProcessing::kNoError) {
-- spa_log_error(impl->log, "Processing reverse stream failed");
-- }
--
-- // Extra delay introduced by multiple frames
-- impl->apm->set_stream_delay_ms((num_blocks - 1) * 10);
--
-- if (impl->apm->ProcessStream(impl->rec_buffer.get(), config, config, impl->out_buffer.get()) !=
-- webrtc::AudioProcessing::kNoError) {
-- spa_log_error(impl->log, "Processing stream failed");
-- }
-- }
--
-- return 0;
--}
--
--struct spa_dict *webrtc_get_properties(SPA_UNUSED struct spa_handle *handle)
--{
-- /* Not supported */
-- return NULL;
--}
--
--int webrtc_set_properties(SPA_UNUSED struct spa_handle *handle, SPA_UNUSED const struct spa_dict *args)
--{
-- /* Not supported */
-- return -1;
--}
--
--static struct echo_cancel_info echo_cancel_webrtc_impl = {
-- .name = "webrtc",
-- .info = SPA_DICT_INIT(NULL, 0),
-- .latency = "480/48000",
-- .create = webrtc_create,
-- .run = webrtc_run,
-- .get_properties = webrtc_get_properties,
-- .set_properties = webrtc_set_properties,
--};
--
--static int impl_get_interface(struct spa_handle *handle, const char *type, void **interface)
--{
--
-- spa_return_val_if_fail(handle != NULL, -EINVAL);
-- spa_return_val_if_fail(interface != NULL, -EINVAL);
--
-- if (spa_streq(type, SPA_TYPE_INTERFACE_AEC))
-- *interface = &echo_cancel_webrtc_impl;
-- else
-- return -ENOENT;
--
-- return 0;
--}
--
--static int impl_clear(struct spa_handle *handle)
--{
-- spa_return_val_if_fail(handle != NULL, -EINVAL);
-- auto impl = reinterpret_cast<struct impl_data*>(handle);
-- impl->~impl_data();
-- return 0;
--}
--
--static size_t
--impl_get_size(const struct spa_handle_factory *factory,
-- const struct spa_dict *params)
--{
-- return sizeof(struct impl_data);
--}
--
--static int
--impl_init(const struct spa_handle_factory *factory,
-- struct spa_handle *handle,
-- const struct spa_dict *info,
-- const struct spa_support *support,
-- uint32_t n_support)
--{
-- spa_return_val_if_fail(factory != NULL, -EINVAL);
-- spa_return_val_if_fail(handle != NULL, -EINVAL);
--
-- echo_cancel_webrtc_impl.iface = SPA_INTERFACE_INIT(
-- SPA_TYPE_INTERFACE_AEC,
-- SPA_VERSION_AUDIO_AEC,
-- NULL,
-- NULL);
--
-- auto impl = new (handle) impl_data();
-- impl->handle.get_interface = impl_get_interface;
-- impl->handle.clear = impl_clear;
-- impl->log = (struct spa_log*)spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Log);
-- spa_log_topic_init(impl->log, &log_topic);
--
-- return 0;
--}
--
--static const struct spa_interface_info impl_interfaces[] = {
-- {SPA_TYPE_INTERFACE_AEC,},
--};
--
--static int
--impl_enum_interface_info(const struct spa_handle_factory *factory,
-- const struct spa_interface_info **info,
-- uint32_t *index)
--{
-- spa_return_val_if_fail(factory != NULL, -EINVAL);
-- spa_return_val_if_fail(info != NULL, -EINVAL);
-- spa_return_val_if_fail(index != NULL, -EINVAL);
--
-- switch (*index) {
-- case 0:
-- *info = &impl_interfaces[*index];
-- break;
-- default:
-- return 0;
-- }
-- (*index)++;
-- return 1;
--}
--
--const struct spa_handle_factory spa_aec_exaudio_factory = {
-- SPA_VERSION_HANDLE_FACTORY,
-- SPA_NAME_AEC,
-- NULL,
-- impl_get_size,
-- impl_init,
-- impl_enum_interface_info,
--};
--
--
--SPA_EXPORT
--int spa_handle_factory_enum(const struct spa_handle_factory **factory, uint32_t *index)
--{
-- spa_return_val_if_fail(factory != NULL, -EINVAL);
-- spa_return_val_if_fail(index != NULL, -EINVAL);
--
-- switch (*index) {
-- case 0:
-- *factory = &spa_aec_exaudio_factory;
-- break;
-- default:
-- return 0;
-- }
-- (*index)++;
-- return 1;
--}
-diff --git a/spa/plugins/aec/meson.build b/spa/plugins/aec/meson.build
-deleted file mode 100644
-index 2b1a2c05a..000000000
---- a/spa/plugins/aec/meson.build
-+++ /dev/null
-@@ -1,16 +0,0 @@
--aec_null = shared_library('spa-aec-null',
-- [ 'aec-null.c' ],
-- include_directories : [ configinc ],
-- dependencies : [ spa_dep ],
-- install : true,
-- install_dir : spa_plugindir / 'aec')
--
--if webrtc_dep.found()
-- aec_webrtc = shared_library('spa-aec-webrtc',
-- [ 'aec-webrtc.cpp' ],
-- include_directories : [ configinc ],
-- dependencies : [ spa_dep, webrtc_dep ],
-- install : true,
-- install_dir : spa_plugindir / 'aec')
--endif
--
-diff --git a/spa/plugins/meson.build b/spa/plugins/meson.build
-index 0b581b29b..fd229d460 100644
---- a/spa/plugins/meson.build
-+++ b/spa/plugins/meson.build
-@@ -51,5 +51,3 @@ endif
- if libcamera_dep.found()
- subdir('libcamera')
- endif
--
--subdir('aec')
-\ No newline at end of file
-diff --git a/src/modules/meson.build b/src/modules/meson.build
-index bd7d3f711..568b32c50 100644
---- a/src/modules/meson.build
-+++ b/src/modules/meson.build
-@@ -110,15 +110,22 @@ pipewire_module_filter_chain = shared_library('pipewire-module-filter-chain',
-
- pipewire_module_echo_cancel_sources = [
- 'module-echo-cancel.c',
-+ 'module-echo-cancel/aec-null.c',
- ]
-
-+if webrtc_dep.found()
-+ pipewire_module_echo_cancel_sources += [
-+ 'module-echo-cancel/aec-webrtc.cpp'
-+ ]
-+endif
-+
- pipewire_module_echo_cancel = shared_library('pipewire-module-echo-cancel',
- pipewire_module_echo_cancel_sources,
- include_directories : [configinc, spa_inc],
- install : true,
- install_dir : modules_install_dir,
- install_rpath: modules_install_dir,
-- dependencies : [mathlib, dl_lib, pipewire_dep],
-+ dependencies : [mathlib, dl_lib, pipewire_dep, webrtc_dep],
- )
-
- pipewire_module_profiler = shared_library('pipewire-module-profiler',
-diff --git a/src/modules/module-echo-cancel.c b/src/modules/module-echo-cancel.c
-index 728325938..00adbbfc5 100644
---- a/src/modules/module-echo-cancel.c
-+++ b/src/modules/module-echo-cancel.c
-@@ -24,7 +24,6 @@
- */
-
- #include "config.h"
--#include "module-echo-cancel/echo-cancel.h"
-
- #include <errno.h>
- #include <fcntl.h>
-@@ -44,14 +43,10 @@
- #include <spa/param/audio/raw.h>
- #include <spa/param/profiler.h>
- #include <spa/pod/builder.h>
--#include <spa/support/plugin.h>
- #include <spa/utils/json.h>
--#include <spa/utils/names.h>
- #include <spa/utils/result.h>
- #include <spa/utils/ringbuffer.h>
- #include <spa/utils/string.h>
--#include <spa/support/plugin-loader.h>
--#include <spa/interfaces/audio/aec.h>
-
- #include <pipewire/private.h>
- #include <pipewire/impl.h>
-@@ -59,6 +54,8 @@
-
- #include <pipewire/extensions/profiler.h>
-
-+#include "module-echo-cancel/echo-cancel.h"
-+
- /** \page page_module_echo_cancel PipeWire Module: Echo Cancel
- *
- * The `echo-cancel` module performs echo cancellation. The module creates
-@@ -71,8 +68,8 @@
- *
- * - `source.props = {}`: properties to be passed to the source stream
- * - `sink.props = {}`: properties to be passed to the sink stream
-- * - `library.name = <str>`: the echo cancellation library Currently supported:
-- * `aec/libspa-aec-exaudio`. Leave unset to use the default method (`aec/libspa-aec-exaudio`).
-+ * - `aec.method = <str>`: the echo cancellation method. Currently supported:
-+ * `webrtc`. Leave unset to use the default method (`webrtc`).
- * - `aec.args = <str>`: arguments to pass to the echo cancellation method
- *
- * ## General options
-@@ -97,7 +94,7 @@
- * context.modules = [
- * { name = libpipewire-module-echo-cancel
- * args = {
-- * # library.name = aec/libspa-aec-exaudio
-+ * # aec.method = webrtc
- * # node.latency = 1024/48000
- * source.props = {
- * node.name = "Echo Cancellation Source"
-@@ -141,7 +138,7 @@ static const struct spa_dict_item module_props[] = {
- "[ audio.position=<channel map> ] "
- "[ buffer.max_size=<max buffer size in ms> ] "
- "[ buffer.play_delay=<play delay in ms> ] "
-- "[ library.name =<library name> ] "
-+ "[ aec.method=<aec method> ] "
- "[ aec.args=<aec arguments> ] "
- "[ source.props=<properties> ] "
- "[ sink.props=<properties> ] " },
-@@ -189,6 +186,7 @@ struct impl {
- struct spa_ringbuffer out_ring;
-
- const struct echo_cancel_info *aec_info;
-+ void *aec;
- uint32_t aec_blocksize;
-
- unsigned int capture_ready:1;
-@@ -199,9 +197,6 @@ struct impl {
-
- uint32_t max_buffer_size;
- uint32_t buffer_delay;
--
-- struct spa_handle *spa_handle;
-- struct spa_plugin_loader *loader;
- };
-
- static void do_unload_module(void *obj, void *data, int res, uint32_t id)
-@@ -288,7 +283,7 @@ static void process(struct impl *impl)
- pw_stream_queue_buffer(impl->playback, pout);
-
- /* Now run the canceller */
-- echo_cancel_run(impl->aec_info, impl->spa_handle, rec, play_delayed, out, size / sizeof(float));
-+ echo_cancel_run(impl->aec_info, impl->aec, rec, play_delayed, out, size / sizeof(float));
-
- /* Next, copy over the output to the output ringbuffer */
- avail = spa_ringbuffer_get_write_index(&impl->out_ring, &oindex);
-@@ -808,8 +803,8 @@ static void impl_destroy(struct impl *impl)
- pw_stream_destroy(impl->sink);
- if (impl->core && impl->do_disconnect)
- pw_core_disconnect(impl->core);
-- if (impl->spa_handle)
-- spa_plugin_loader_unload(impl->loader, impl->spa_handle);
-+ if (impl->aec)
-+ echo_cancel_destroy(impl->aec_info, impl->aec);
- pw_properties_free(impl->source_props);
- pw_properties_free(impl->sink_props);
-
-@@ -898,10 +893,7 @@ int pipewire__module_init(struct pw_impl_module *module, const char *args)
- struct impl *impl;
- uint32_t id = pw_global_get_id(pw_impl_module_get_global(module));
- const char *str;
-- const char *path;
-- int res = 0;
-- struct spa_handle *handle = NULL;
-- void *iface;
-+ int res;
-
- PW_LOG_TOPIC_INIT(mod_topic);
-
-@@ -975,57 +967,22 @@ int pipewire__module_init(struct pw_impl_module *module, const char *args)
- if (pw_properties_get(impl->sink_props, PW_KEY_MEDIA_CLASS) == NULL)
- pw_properties_set(impl->sink_props, PW_KEY_MEDIA_CLASS, "Audio/Sink");
-
-- if ((str = pw_properties_get(props, "aec.method")) != NULL)
-- pw_log_warn("aec.method is not supported anymore use library.name");
--
-- /* Use webrtc as default */
-- if ((path = pw_properties_get(props, "library.name")) == NULL)
-- path = "aec/libspa-aec-webrtc";
--
-- struct spa_dict_item info_items[] = {
-- { SPA_KEY_LIBRARY_NAME, path },
-- };
-- struct spa_dict info = SPA_DICT_INIT_ARRAY(info_items);
--
-- impl->loader = spa_support_find(context->support, context->n_support, SPA_TYPE_INTERFACE_PluginLoader);
-- if (impl->loader == NULL) {
-- pw_log_error("a plugin loader is needed");
-- return -EINVAL;
-- }
--
-- handle = spa_plugin_loader_load(impl->loader, SPA_NAME_AEC, &info);
-- if (handle == NULL) {
-- pw_log_error("AEC codec plugin %s not available library.name %s", SPA_NAME_AEC, path);
-- return -ENOENT;
-- }
--
-- if ((res = spa_handle_get_interface(handle, SPA_TYPE_INTERFACE_AEC, &iface)) < 0) {
-- pw_log_error("can't get %s interface %d", SPA_TYPE_INTERFACE_AEC, res);
-- return res;
-- }
-- impl->aec_info = iface;
-- impl->spa_handle = handle;
-- if (impl->aec_info->iface.version != SPA_VERSION_AUDIO_AEC) {
-- pw_log_error("codec plugin %s has incompatible ABI version (%d != %d)",
-- SPA_NAME_AEC, impl->aec_info->iface.version, SPA_VERSION_AUDIO_AEC);
-- res = -ENOENT;
-- goto error;
-- }
--
-- (void)SPA_SUPPORT_INIT(SPA_TYPE_INTERFACE_AEC, (struct echo_cancel_info *)impl->aec_info);
-+ if ((str = pw_properties_get(props, "aec.method")) == NULL)
-+ str = "webrtc";
-
-- pw_log_info("Using plugin AEC %s", impl->aec_info->name);
-+#ifdef HAVE_WEBRTC
-+ if (spa_streq(str, "webrtc"))
-+ impl->aec_info = echo_cancel_webrtc;
-+ else
-+#endif
-+ impl->aec_info = echo_cancel_null;
-
- if ((str = pw_properties_get(props, "aec.args")) != NULL)
- aec_props = pw_properties_new_string(str);
- else
- aec_props = pw_properties_new(NULL, NULL);
-
-- if (echo_cancel_create(impl->aec_info, impl->spa_handle, &aec_props->dict, &impl->info)) {
-- pw_log_error("codec plugin %s create failed", impl->aec_info->name);
-- res = -ENOENT;
-- goto error;
-- }
-+ impl->aec = echo_cancel_create(impl->aec_info, aec_props, &impl->info);
-
- pw_properties_free(aec_props);
-
-diff --git a/spa/include/spa/interfaces/audio/aec.h b/src/modules/module-echo-cancel/aec-null.c
-similarity index 58%
-rename from spa/include/spa/interfaces/audio/aec.h
-rename to src/modules/module-echo-cancel/aec-null.c
-index e1fcda563..4ee9ac6d7 100644
---- a/spa/include/spa/interfaces/audio/aec.h
-+++ b/src/modules/module-echo-cancel/aec-null.c
-@@ -22,23 +22,43 @@
- * DEALINGS IN THE SOFTWARE.
- */
-
-+#include "echo-cancel.h"
-
--#include <spa/utils/dict.h>
--#include <spa/utils/hook.h>
--#include <spa/pod/pod.h>
--#include <spa/param/audio/raw.h>
--#include <spa/support/plugin.h>
--
--#define SPA_TYPE_INTERFACE_AEC SPA_TYPE_INFO_INTERFACE_BASE "AEC"
--#define SPA_VERSION_AUDIO_AEC 1
--
--struct echo_cancel_info {
-- struct spa_interface iface;
-- const char *name;
-- const struct spa_dict info;
-- const char *latency;
-- int (*create) (struct spa_handle *handle, const struct spa_dict *args, const struct spa_audio_info_raw *info);
-- int (*run) (struct spa_handle *handle, const float *rec[], const float *play[], float *out[], uint32_t n_samples);
-- struct spa_dict *(*get_properties) (struct spa_handle *handle);
-- int (*set_properties) (struct spa_handle *handle, const struct spa_dict *args);
-+struct impl {
-+ uint32_t channels;
- };
-+
-+static void *null_create(const struct pw_properties *args, const struct spa_audio_info_raw *info)
-+{
-+ struct impl *impl;
-+ impl = calloc(1, sizeof(struct impl));
-+ impl->channels = info->channels;
-+ return impl;
-+}
-+
-+static void null_destroy(void *ec)
-+{
-+ free(ec);
-+}
-+
-+static int null_run(void *ec, const float *rec[], const float *play[], float *out[], uint32_t n_samples)
-+{
-+ struct impl *impl = ec;
-+ uint32_t i;
-+ for (i = 0; i < impl->channels; i++)
-+ memcpy(out[i], rec[i], n_samples * sizeof(float));
-+ return 0;
-+}
-+
-+static const struct echo_cancel_info echo_cancel_null_impl = {
-+ .name = "null",
-+ .info = SPA_DICT_INIT(NULL, 0),
-+ .latency = NULL,
-+
-+ .create = null_create,
-+ .destroy = null_destroy,
-+
-+ .run = null_run,
-+};
-+
-+const struct echo_cancel_info *echo_cancel_null = &echo_cancel_null_impl;
-diff --git a/src/modules/module-echo-cancel/aec-webrtc.cpp b/src/modules/module-echo-cancel/aec-webrtc.cpp
-new file mode 100644
-index 000000000..77b569a22
---- /dev/null
-+++ b/src/modules/module-echo-cancel/aec-webrtc.cpp
-@@ -0,0 +1,163 @@
-+/* PipeWire
-+ *
-+ * Copyright © 2021 Wim Taymans <wim.taymans@gmail.com>
-+ * © 2021 Arun Raghavan <arun@asymptotic.io>
-+ *
-+ * Permission is hereby granted, free of charge, to any person obtaining a
-+ * copy of this software and associated documentation files (the "Software"),
-+ * to deal in the Software without restriction, including without limitation
-+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
-+ * and/or sell copies of the Software, and to permit persons to whom the
-+ * Software is furnished to do so, subject to the following conditions:
-+ *
-+ * The above copyright notice and this permission notice (including the next
-+ * paragraph) shall be included in all copies or substantial portions of the
-+ * Software.
-+ *
-+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-+ * DEALINGS IN THE SOFTWARE.
-+ */
-+
-+#include <memory>
-+#include <utility>
-+
-+#include "echo-cancel.h"
-+
-+#include <pipewire/pipewire.h>
-+
-+#include <webrtc/modules/audio_processing/include/audio_processing.h>
-+#include <webrtc/modules/interface/module_common_types.h>
-+#include <webrtc/system_wrappers/include/trace.h>
-+
-+struct impl {
-+ std::unique_ptr<webrtc::AudioProcessing> apm;
-+ spa_audio_info_raw info;
-+ std::unique_ptr<float *[]> play_buffer, rec_buffer, out_buffer;
-+
-+ impl(std::unique_ptr<webrtc::AudioProcessing> apm, const spa_audio_info_raw& info)
-+ : apm(std::move(apm)),
-+ info(info),
-+ play_buffer(std::make_unique<float *[]>(info.channels)),
-+ rec_buffer(std::make_unique<float *[]>(info.channels)),
-+ out_buffer(std::make_unique<float *[]>(info.channels))
-+ { }
-+};
-+
-+static void *webrtc_create(const struct pw_properties *args, const spa_audio_info_raw *info)
-+{
-+ bool extended_filter = pw_properties_get_bool(args, "webrtc.extended_filter", true);
-+ bool delay_agnostic = pw_properties_get_bool(args, "webrtc.delay_agnostic", true);
-+ bool high_pass_filter = pw_properties_get_bool(args, "webrtc.high_pass_filter", true);
-+ bool noise_suppression = pw_properties_get_bool(args, "webrtc.noise_suppression", true);
-+ bool voice_detection = pw_properties_get_bool(args, "webrtc.voice_detection", true);
-+
-+ // Note: AGC seems to mess up with Agnostic Delay Detection, especially with speech,
-+ // result in very poor performance, disable by default
-+ bool gain_control = pw_properties_get_bool(args, "webrtc.gain_control", false);
-+
-+ // Disable experimental flags by default
-+ bool experimental_agc = pw_properties_get_bool(args, "webrtc.experimental_agc", false);
-+ bool experimental_ns = pw_properties_get_bool(args, "webrtc.experimental_ns", false);
-+
-+ // FIXME: Intelligibility enhancer is not currently supported
-+ // This filter will modify playback buffer (when calling ProcessReverseStream), but now
-+ // playback buffer modifications are discarded.
-+
-+ webrtc::Config config;
-+ config.Set<webrtc::ExtendedFilter>(new webrtc::ExtendedFilter(extended_filter));
-+ config.Set<webrtc::DelayAgnostic>(new webrtc::DelayAgnostic(delay_agnostic));
-+ config.Set<webrtc::ExperimentalAgc>(new webrtc::ExperimentalAgc(experimental_agc));
-+ config.Set<webrtc::ExperimentalNs>(new webrtc::ExperimentalNs(experimental_ns));
-+
-+ webrtc::ProcessingConfig pconfig = {{
-+ webrtc::StreamConfig(info->rate, info->channels, false), /* input stream */
-+ webrtc::StreamConfig(info->rate, info->channels, false), /* output stream */
-+ webrtc::StreamConfig(info->rate, info->channels, false), /* reverse input stream */
-+ webrtc::StreamConfig(info->rate, info->channels, false), /* reverse output stream */
-+ }};
-+
-+ auto apm = std::unique_ptr<webrtc::AudioProcessing>(webrtc::AudioProcessing::Create(config));
-+ if (apm->Initialize(pconfig) != webrtc::AudioProcessing::kNoError) {
-+ pw_log_error("Error initialising webrtc audio processing module");
-+ return nullptr;
-+ }
-+
-+ apm->high_pass_filter()->Enable(high_pass_filter);
-+ // Always disable drift compensation since it requires drift sampling
-+ apm->echo_cancellation()->enable_drift_compensation(false);
-+ apm->echo_cancellation()->Enable(true);
-+ // TODO: wire up supression levels to args
-+ apm->echo_cancellation()->set_suppression_level(webrtc::EchoCancellation::kHighSuppression);
-+ apm->noise_suppression()->set_level(webrtc::NoiseSuppression::kHigh);
-+ apm->noise_suppression()->Enable(noise_suppression);
-+ apm->voice_detection()->Enable(voice_detection);
-+ // TODO: wire up AGC parameters to args
-+ apm->gain_control()->set_analog_level_limits(0, 255);
-+ apm->gain_control()->set_mode(webrtc::GainControl::kAdaptiveDigital);
-+ apm->gain_control()->Enable(gain_control);
-+
-+ return new impl(std::move(apm), *info);
-+}
-+
-+static void webrtc_destroy(void *ec)
-+{
-+ auto impl = static_cast<struct impl *>(ec);
-+
-+ delete impl;
-+}
-+
-+static int webrtc_run(void *ec, const float *rec[], const float *play[], float *out[], uint32_t n_samples)
-+{
-+ auto impl = static_cast<struct impl *>(ec);
-+ webrtc::StreamConfig config =
-+ webrtc::StreamConfig(impl->info.rate, impl->info.channels, false);
-+ unsigned int num_blocks = n_samples * 1000 / impl->info.rate / 10;
-+
-+ if (n_samples * 1000 / impl->info.rate % 10 != 0) {
-+ pw_log_error("Buffers must be multiples of 10ms in length (currently %u samples)", n_samples);
-+ return -1;
-+ }
-+
-+ for (size_t i = 0; i < num_blocks; i ++) {
-+ for (size_t j = 0; j < impl->info.channels; j++) {
-+ impl->play_buffer[j] = const_cast<float *>(play[j]) + config.num_frames() * i;
-+ impl->rec_buffer[j] = const_cast<float *>(rec[j]) + config.num_frames() * i;
-+ impl->out_buffer[j] = out[j] + config.num_frames() * i;
-+ }
-+ /* FIXME: ProcessReverseStream may change the playback buffer, in which
-+ * case we should use that, if we ever expose the intelligibility
-+ * enhancer */
-+ if (impl->apm->ProcessReverseStream(impl->play_buffer.get(), config, config, impl->play_buffer.get()) !=
-+ webrtc::AudioProcessing::kNoError) {
-+ pw_log_error("Processing reverse stream failed");
-+ }
-+
-+ // Extra delay introduced by multiple frames
-+ impl->apm->set_stream_delay_ms((num_blocks - 1) * 10);
-+
-+ if (impl->apm->ProcessStream(impl->rec_buffer.get(), config, config, impl->out_buffer.get()) !=
-+ webrtc::AudioProcessing::kNoError) {
-+ pw_log_error("Processing stream failed");
-+ }
-+ }
-+
-+ return 0;
-+}
-+
-+static const struct echo_cancel_info echo_cancel_webrtc_impl = {
-+ .name = "webrtc",
-+ .info = SPA_DICT_INIT(NULL, 0),
-+ .latency = "480/48000",
-+
-+ .create = webrtc_create,
-+ .destroy = webrtc_destroy,
-+
-+ .run = webrtc_run,
-+};
-+
-+const struct echo_cancel_info *echo_cancel_webrtc = &echo_cancel_webrtc_impl;
-diff --git a/src/modules/module-echo-cancel/echo-cancel.h b/src/modules/module-echo-cancel/echo-cancel.h
-index ac83f70e4..fe011b962 100644
---- a/src/modules/module-echo-cancel/echo-cancel.h
-+++ b/src/modules/module-echo-cancel/echo-cancel.h
-@@ -22,13 +22,29 @@
- * DEALINGS IN THE SOFTWARE.
- */
-
-+#include "config.h"
-
- #include <spa/utils/dict.h>
--#include <spa/utils/hook.h>
- #include <spa/param/audio/raw.h>
--#include <spa/support/plugin.h>
-
- #include <pipewire/properties.h>
-
-+struct echo_cancel_info {
-+ const char *name;
-+ const struct spa_dict info;
-+ const char *latency;
-+
-+ void *(*create) (const struct pw_properties *args, const struct spa_audio_info_raw *info);
-+ void (*destroy) (void *ec);
-+
-+ int (*run) (void *ec, const float *rec[], const float *play[], float *out[], uint32_t n_samples);
-+};
-+
- #define echo_cancel_create(i,...) (i)->create(__VA_ARGS__)
-+#define echo_cancel_destroy(i,...) (i)->destroy(__VA_ARGS__)
- #define echo_cancel_run(i,...) (i)->run(__VA_ARGS__)
-+
-+#ifdef HAVE_WEBRTC
-+extern const struct echo_cancel_info *echo_cancel_webrtc;
-+#endif
-+extern const struct echo_cancel_info *echo_cancel_null;
---
-2.35.1
-
diff --git a/meta-pipewire/recipes-multimedia/pipewire/pipewire/0012-Miscellanous-changes-to-account-for-lower-version-of.patch b/meta-pipewire/recipes-multimedia/pipewire/pipewire/0012-Miscellanous-changes-to-account-for-lower-version-of.patch
deleted file mode 100644
index 69731a4f1..000000000
--- a/meta-pipewire/recipes-multimedia/pipewire/pipewire/0012-Miscellanous-changes-to-account-for-lower-version-of.patch
+++ /dev/null
@@ -1,166 +0,0 @@
-From b781a4dbb45191a4b2746d5fe12d6f907681441c Mon Sep 17 00:00:00 2001
-From: Ashok Sidipotu <ashok.sidipotu@collabora.com>
-Date: Thu, 24 Feb 2022 12:28:59 +0530
-Subject: [PATCH 12/12] Miscellanous changes to account for lower version of
- meson in agl
-
-Upstream-Status: Inappropriate[meson version dependent]
----
- meson.build | 30 ++++++++++++++-------------
- spa/plugins/audioconvert/meson.build | 4 ++--
- spa/tests/meson.build | 2 +-
- src/daemon/systemd/system/meson.build | 5 +----
- src/modules/meson.build | 18 +++-------------
- src/tests/meson.build | 6 +++---
- 6 files changed, 26 insertions(+), 39 deletions(-)
-
-diff --git a/meson.build b/meson.build
-index af60472f8..7106eeaad 100644
---- a/meson.build
-+++ b/meson.build
-@@ -440,25 +440,27 @@ run_target('pw-uninstalled',
- '-v@0@'.format(pipewire_version)]
- )
-
--devenv = environment()
-+if meson.version().version_compare('>=0.58.0')
-+ devenv = environment()
-
--builddir = meson.project_build_root()
--srcdir = meson.project_source_root()
-+ builddir = meson.build_root()
-+ srcdir = meson.source_root()
-
--devenv.set('PIPEWIRE_CONFIG_DIR', pipewire_dep.get_variable(internal: 'confdatadir'))
--devenv.set('PIPEWIRE_MODULE_DIR', pipewire_dep.get_variable(internal: 'moduledir'))
-+ devenv.set('PIPEWIRE_CONFIG_DIR', pipewire_dep.get_variable(internal: 'confdatadir'))
-+ devenv.set('PIPEWIRE_MODULE_DIR', pipewire_dep.get_variable(internal: 'moduledir'))
-
-- devenv.set('SPA_PLUGIN_DIR', builddir / 'spa' / 'plugins')
-- devenv.set('SPA_DATA_DIR', srcdir / 'spa' / 'plugins')
-+ devenv.set('SPA_PLUGIN_DIR', builddir / 'spa' / 'plugins')
-+ devenv.set('SPA_DATA_DIR', srcdir / 'spa' / 'plugins')
-
--devenv.set('GST_PLUGIN_PATH', builddir / 'src'/ 'gst')
-+ devenv.set('GST_PLUGIN_PATH', builddir / 'src'/ 'gst')
-
--devenv.set('ALSA_PLUGIN_DIR', builddir / 'pipewire-alsa' / 'alsa-plugins')
--devenv.set('ACP_PATHS_DIR', srcdir / 'spa' / 'plugins' / 'alsa' / 'mixer' / 'paths')
--devenv.set('ACP_PROFILES_DIR', srcdir / 'spa' / 'plugins' / 'alsa' / 'mixer' / 'profile-sets')
-+ devenv.set('ALSA_PLUGIN_DIR', builddir / 'pipewire-alsa' / 'alsa-plugins')
-+ devenv.set('ACP_PATHS_DIR', srcdir / 'spa' / 'plugins' / 'alsa' / 'mixer' / 'paths')
-+ devenv.set('ACP_PROFILES_DIR', srcdir / 'spa' / 'plugins' / 'alsa' / 'mixer' / 'profile-sets')
-
--devenv.set('LD_LIBRARY_PATH', builddir / 'pipewire-jack' / 'src')
-+ devenv.set('LD_LIBRARY_PATH', builddir / 'pipewire-jack' / 'src')
-
--devenv.set('PW_UNINSTALLED', '1')
-+ devenv.set('PW_UNINSTALLED', '1')
-
--meson.add_devenv(devenv)
-+ meson.add_devenv(devenv)
-+endif
-diff --git a/spa/plugins/audioconvert/meson.build b/spa/plugins/audioconvert/meson.build
-index 3aa0f3846..6f4fd968b 100644
---- a/spa/plugins/audioconvert/meson.build
-+++ b/spa/plugins/audioconvert/meson.build
-@@ -140,7 +140,7 @@ foreach a : test_apps
- install : installed_tests_enabled,
- install_dir : installed_tests_execdir / 'audioconvert'),
- env : [
-- 'SPA_PLUGIN_DIR=@0@/spa/plugins/'.format(meson.project_build_root()),
-+ 'SPA_PLUGIN_DIR=@0@/spa/plugins/'.format(meson.build_root()),
- ])
-
- if installed_tests_enabled
-@@ -170,7 +170,7 @@ foreach a : benchmark_apps
- install : installed_tests_enabled,
- install_dir : installed_tests_execdir / 'audioconvert'),
- env : [
-- 'SPA_PLUGIN_DIR=@0@/spa/plugins/'.format(meson.project_build_root()),
-+ 'SPA_PLUGIN_DIR=@0@/spa/plugins/'.format(meson.build_root()),
- ])
-
- if installed_tests_enabled
-diff --git a/spa/tests/meson.build b/spa/tests/meson.build
-index d995cfaa4..ea00a2cfe 100644
---- a/spa/tests/meson.build
-+++ b/spa/tests/meson.build
-@@ -42,7 +42,7 @@ foreach a : benchmark_apps
- install_dir : installed_tests_execdir,
- ),
- env : [
-- 'SPA_PLUGIN_DIR=@0@/spa/plugins/'.format(meson.project_build_root()),
-+ 'SPA_PLUGIN_DIR=@0@/spa/plugins/'.format(meson.build_root()),
- ]
- )
-
-diff --git a/src/daemon/systemd/system/meson.build b/src/daemon/systemd/system/meson.build
-index b3e5f1f41..4d942c1ab 100644
---- a/src/daemon/systemd/system/meson.build
-+++ b/src/daemon/systemd/system/meson.build
-@@ -1,7 +1,4 @@
--systemd_system_services_dir = systemd.get_variable(pkgconfig: 'systemdsystemunitdir', pkgconfig_define : [ 'rootprefix', prefix])
--if get_option('systemd-system-unit-dir') != ''
-- systemd_system_services_dir = get_option('systemd-system-unit-dir')
--endif
-+systemd_system_services_dir = systemd.get_variable(pkgconfig: 'systemdsystemunitdir', pkgconfig_define : [ 'prefix', prefix])
-
- install_data(sources : 'pipewire.socket',
- install_dir : systemd_system_services_dir)
-diff --git a/src/modules/meson.build b/src/modules/meson.build
-index 568b32c50..8cf4f781d 100644
---- a/src/modules/meson.build
-+++ b/src/modules/meson.build
-@@ -150,18 +150,6 @@ pipewire_module_rt = shared_library('pipewire-module-rt', [ 'module-rt.c' ],
- endif
- summary({'rt': build_module_rt}, bool_yn: true, section: 'Optional Modules')
-
--build_module_rtkit = dbus_dep.found()
--if build_module_rtkit
--pipewire_module_rtkit = shared_library('pipewire-module-rtkit', [ 'module-rtkit.c' ],
-- include_directories : [configinc, spa_inc],
-- install : true,
-- install_dir : modules_install_dir,
-- install_rpath: modules_install_dir,
-- dependencies : [dbus_dep, mathlib, dl_lib, pipewire_dep],
--)
--endif
--summary({'rt': build_module_rt}, bool_yn: true, section: 'Optional Modules')
--
- build_module_portal = dbus_dep.found()
- if build_module_portal
- pipewire_module_portal = shared_library('pipewire-module-portal', [ 'module-portal.c' ],
-@@ -372,9 +360,9 @@ test('pw-test-protocol-native',
- install_dir : installed_tests_execdir,
- ),
- env : [
-- 'SPA_PLUGIN_DIR=@0@/spa/plugins/'.format(meson.project_build_root()),
-- 'PIPEWIRE_CONFIG_DIR=@0@/src/daemon/'.format(meson.project_build_root()),
-- 'PIPEWIRE_MODULE_DIR=@0@/src/modules/'.format(meson.project_build_root())
-+ 'SPA_PLUGIN_DIR=@0@/spa/plugins/'.format(meson.build_root()),
-+ 'PIPEWIRE_CONFIG_DIR=@0@/src/daemon/'.format(meson.build_root()),
-+ 'PIPEWIRE_MODULE_DIR=@0@/src/modules/'.format(meson.build_root())
- ]
- )
-
-diff --git a/src/tests/meson.build b/src/tests/meson.build
-index 9a595d431..1b03967fb 100644
---- a/src/tests/meson.build
-+++ b/src/tests/meson.build
-@@ -13,9 +13,9 @@ foreach a : test_apps
- install : installed_tests_enabled,
- install_dir : installed_tests_execdir),
- env : [
-- 'SPA_PLUGIN_DIR=@0@/spa/plugins/'.format(meson.project_build_root()),
-- 'PIPEWIRE_CONFIG_DIR=@0@/src/daemon/'.format(meson.project_build_root()),
-- 'PIPEWIRE_MODULE_DIR=@0@/src/modules/'.format(meson.project_build_root())
-+ 'SPA_PLUGIN_DIR=@0@/spa/plugins/'.format(meson.build_root()),
-+ 'PIPEWIRE_CONFIG_DIR=@0@/src/daemon/'.format(meson.build_root()),
-+ 'PIPEWIRE_MODULE_DIR=@0@/src/modules/'.format(meson.build_root())
- ])
-
- if installed_tests_enabled
---
-2.35.1
-
diff --git a/meta-pipewire/recipes-multimedia/pipewire/pipewire_0.3.47.bbappend b/meta-pipewire/recipes-multimedia/pipewire/pipewire_0.3.47.bbappend
index 5c0d065b7..0b6f3ec1c 100644
--- a/meta-pipewire/recipes-multimedia/pipewire/pipewire_0.3.47.bbappend
+++ b/meta-pipewire/recipes-multimedia/pipewire/pipewire_0.3.47.bbappend
@@ -1,3 +1,8 @@
+SRC_URI += "\
+ file://0001-systemd-Do-not-override-rootprefix.patch \
+ file://0002-Revert-loop-remove-destroy-list.patch \
+"
+
PACKAGECONFIG = "\
${@bb.utils.contains('DISTRO_FEATURES', 'bluez5', 'bluez', '', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'alsa', 'alsa pipewire-alsa', '', d)} \
@@ -6,22 +11,6 @@ PACKAGECONFIG = "\
gstreamer v4l2 \
"
-SRC_URI += "\
- file://0001-Revert-treewide-meson.build-use-project_-build-sourc.patch \
- file://0002-Revert-treewide-meson.build-use-feature.allowed.patch \
- file://0003-Revert-treewide-meson.build-use-dependency-variable-.patch \
- file://0004-Revert-treewide-meson.build-simplify-get_variable-ca.patch \
- file://0005-Revert-treewide-meson.build-get-SPA_PLUGIN_DIR-from-.patch \
- file://0006-Revert-meson-declare-spa_dep-and-override_dependency.patch \
- file://0007-Revert-meson-use-meson-variables-for-the-SMs-uninsta.patch \
- file://0008-Revert-meson-declare-spa_dep-and-override_dependency.patch \
- file://0009-Revert-test-add-test-for-the-loop.patch \
- file://0010-Revert-spa-improve-the-AEC-interface.patch \
- file://0011-Revert-module-echo-cancel-Move-backends-to-dynamic-l.patch \
- file://0012-Miscellanous-changes-to-account-for-lower-version-of.patch \
- file://0013-Revert-loop-remove-destroy-list.patch \
-"
-
do_install:append() {
# install symlinks to alsalib configuration files
for i in 50-pipewire.conf 99-pipewire-default.conf; do