pipewire: remove old meson compatibility patches
authorScott Murray <scott.murray@konsulko.com>
Thu, 3 Feb 2022 22:46:24 +0000 (17:46 -0500)
committerScott Murray <scott.murray@konsulko.com>
Wed, 30 Mar 2022 18:08:33 +0000 (14:08 -0400)
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

15 files changed:
meta-pipewire/recipes-multimedia/pipewire/pipewire/0001-Revert-treewide-meson.build-use-project_-build-sourc.patch [deleted file]
meta-pipewire/recipes-multimedia/pipewire/pipewire/0001-systemd-Do-not-override-rootprefix.patch [new file with mode: 0644]
meta-pipewire/recipes-multimedia/pipewire/pipewire/0002-Revert-loop-remove-destroy-list.patch [moved from meta-pipewire/recipes-multimedia/pipewire/pipewire/0013-Revert-loop-remove-destroy-list.patch with 100% similarity]
meta-pipewire/recipes-multimedia/pipewire/pipewire/0002-Revert-treewide-meson.build-use-feature.allowed.patch [deleted file]
meta-pipewire/recipes-multimedia/pipewire/pipewire/0003-Revert-treewide-meson.build-use-dependency-variable-.patch [deleted file]
meta-pipewire/recipes-multimedia/pipewire/pipewire/0004-Revert-treewide-meson.build-simplify-get_variable-ca.patch [deleted file]
meta-pipewire/recipes-multimedia/pipewire/pipewire/0005-Revert-treewide-meson.build-get-SPA_PLUGIN_DIR-from-.patch [deleted file]
meta-pipewire/recipes-multimedia/pipewire/pipewire/0006-Revert-meson-declare-spa_dep-and-override_dependency.patch [deleted file]
meta-pipewire/recipes-multimedia/pipewire/pipewire/0007-Revert-meson-use-meson-variables-for-the-SMs-uninsta.patch [deleted file]
meta-pipewire/recipes-multimedia/pipewire/pipewire/0008-Revert-meson-declare-spa_dep-and-override_dependency.patch [deleted file]
meta-pipewire/recipes-multimedia/pipewire/pipewire/0009-Revert-test-add-test-for-the-loop.patch [deleted file]
meta-pipewire/recipes-multimedia/pipewire/pipewire/0010-Revert-spa-improve-the-AEC-interface.patch [deleted file]
meta-pipewire/recipes-multimedia/pipewire/pipewire/0011-Revert-module-echo-cancel-Move-backends-to-dynamic-l.patch [deleted file]
meta-pipewire/recipes-multimedia/pipewire/pipewire/0012-Miscellanous-changes-to-account-for-lower-version-of.patch [deleted file]
meta-pipewire/recipes-multimedia/pipewire/pipewire_0.3.47.bbappend

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 (file)
index 89507df..0000000
+++ /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 (file)
index 0000000..45d09e6
--- /dev/null
@@ -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/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 (file)
index eaef35c..0000000
+++ /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 (file)
index 4073542..0000000
+++ /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 (file)
index bd7e380..0000000
+++ /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 (file)
index f2a9d0d..0000000
+++ /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 (file)
index fe44c07..0000000
+++ /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 (file)
index 3fff8eb..0000000
+++ /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 (file)
index 751adbe..0000000
+++ /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 (file)
index 6628c5c..0000000
+++ /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 (file)
index 8bf9454..0000000
+++ /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 (file)
index 4d62abc..0000000
+++ /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 (file)
index 69731a4..0000000
+++ /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
-
index 5c0d065..0b6f3ec 100644 (file)
@@ -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