meta-openembedded: subtree update:7206f7f5bc..98175fd0cc

Adam Miartus (4):
      libcereal: update to newer version
      libcereal: pick up additional licenses of cereal components
      libcereal: add dev package that can be included into toolchain sdk
      cereal: Remove

Alejandro Hernandez Samaniego (2):
      freerdp: Upgrade 2.2.0 -> 2.3.0
      remmina: Upgrade 1.4.10 -> 1.4.11

Anatol Belski (2):
      abseil-cpp: Relax build requirements
      grpc: Upgrade 1.24.3 -> 1.35.0

Andrei Gherzan (1):
      nss: Fix warnings generated by getcwd

Bartosz Golaszewski (1):
      pydbus-manager: new package

Carlos Rafael Giani (2):
      pipewire: Move to meta-multimedia
      pipewire: Rework 0.3 recipe and upgrade to 0.3.22

Christian B. Sørensen (1):
      libgpiod: packageqa problem => static python lib to ${PN}-staticdev

Clément Péron (2):
      grpc: Add PackageConfig to build only required plugins
      grpc: remove gflags dependency

Diego Santa Cruz (1):
      php: split out phpdbg into a separate package

Enrico Jörns (1):
      python3-aiohttp: add missing RDEPENDS on python3-typing-extensions

Gianfranco (1):
      mosquitto: Upgrade 2.0.7 -> 2.0.8

Hongxu Jia (1):
      lvm2/libdevmapper: 2.03.06 -> 2.03.11

Kai Kang (2):
      xfsprogs: 5.9.0 -> 5.10.0
      libinih: install header files without prefix dir inih

Khem Raj (39):
      yelp-xsl: Mark native libxml2 in rdeps
      liburing: Do not build examples on risc/musl
      aom: Disable neon on arm when not present in TUNE_FEATURES
      python3-grpcio: Upgrade to 1.35.0
      python3-grpcio-tools: Upgrade to 1.35.0
      recipes: Update common-licenses references to match new names
      openldap: Refresh patches to remove fuzz
      abseil-cpp: Remove libexecinfo band-aid for musl
      nss: Add powerpc64 little endian support
      luajit: Upgrade to latest on v2.1 release
      influxdb: Generate checksums for term module
      libauthen-sasl-perl,libhtml-tree-perl: allow PERL_USE_UNSAFE_INC
      dvb-apps: Allow insecure inc paths
      glog: Upgrade to 0.4.0
      mpd: Upgrade to 0.22 series
      mbedtls: Fix gcc11 stringop-overflow warning
      v4l-utils: Package systemd fragment for systemd-udevd.service.d
      mpich: Upgrade to 3.4.1
      srt: Backport fix for missing <limits> header
      gerbera: Update to 1.7.0
      nautilus: Drop use of volatile
      vlc: Fix build with gcc 11
      squid: Include <limits> for using std::numeric_limits
      minifi-cpp: include limits header for numeric_limits definition
      opencv: Upgrade to 4.5.1
      mozjs: Drop using JS_VOLATILE_ARM
      opengl-es-cts: Disable -Wuninitialized for external/amber
      grpc: Upgrade to 1.36.1
      mongodb: Include <optional> c++ header
      libyui,libyui-ncurses: Upgrade to 4.0.0
      libyui-ncurses: Disable Werror
      libyui: Adopt to new cmake option to disable Werror
      libyui-ncurses: Pass -DNCURSES_WIDECHAR in CXXFLAGS
      gimp: Add missing dependencies
      gimp: Disable svg icons on arm
      libcamera: Update to latest
      abseil-cpp: Ask for C++14 std explicitly
      opencv: Add packageconfig for building tests
      opencv: Remove duplicate patch

Leon Anavi (30):
      python3-h5py: Upgrade 2.10.0 -> 3.1.0
      python3-transitions: Upgrade 0.8.6 -> 0.8.7
      python3-tabulate: Upgrade 0.8.7 -> 0.8.9
      python3-pyperclip: Upgrade 1.8.1 -> 1.8.2
      python3-elementpath: Upgrade 2.1.3 -> 2.1.4
      python3-mpmath: Upgrade 1.1.0 -> 1.2.1
      python3-prompt-toolkit: Upgrade 3.0.14 -> 3.0.16
      python3-pkgconfig: Upgrade 1.5.1 -> 1.5.2
      python3-mypy: Upgrade 0.800 -> 0.812
      python3-typeguard: Upgrade 2.11.0 -> 2.11.1
      python3-httplib2: Upgrade 0.18.1 -> 0.19.0
      python3-autobahn: Upgrade 20.12.3 -> 21.2.1
      python3-iso8601: Upgrade 0.1.13 -> 0.1.14
      python3-alembic: Upgrade 1.5.4 -> 1.5.5
      python3-txaio: Upgrade 20.12.1 -> 21.2.1
      python3-watchdog: Upgrade 2.0.0 -> 2.0.2
      python3-rsa: Upgrade 4.7 -> 4.7.1
      python3-pandas: Upgrade 1.2.1 -> 1.2.2
      python3-cffi: Upgrade 1.14.4 -> 1.14.5
      python3-pymisp: Upgrade 2.4.137.3 -> 2.4.138
      python3-pytest-runner: Upgrade 5.2 -> 5.3.0
      python3-markdown: Upgrade 3.3.3 -> 3.3.4
      python3-pulsectl: Upgrade 20.5.1 -> 21.2.0
      python3-cvxopt: Upgrade 1.2.5 -> 1.2.6
      python3-rsa: Upgrade 4.7.1 -> 4.7.2
      python3-pyzmq: Upgrade 22.0.2 -> 22.0.3
      python3-tqdm: Upgrade 4.57.0 -> 4.58.0
      python3-autobahn: Upgrade 21.2.1 -> 21.2.2
      python3-aiohttp: Upgrade 3.7.3 -> 3.7.4
      python3-semantic-version: Add recipe

Matteo Croce (1):
      recipes-kernel: add libbpf

Michael Vetter (1):
      jasper: upgrade 2.0.24 -> 2.0.25

Mingli Yu (3):
      crash: add support for lockless ringbuffer
      gtkmm3: use relative path
      mcelog: Upgrade to 175

Oleksandr Kravchuk (21):
      rfkill: update to 1.0
      python3-idna: update to 3.1
      python3-pika: update to 1.2.0
      python3-protobuf: update to 3.14.0
      python3-pychromecast: update to 8.1.0
      python3-pykickstart: update to 3.32
      python3-watchdog: update to 2.0.0
      wolfssl: updae to 4.7.0
      ncmpc: update to 0.45
      rocksdb: update to 6.15.5
      stm32flash: update to 0.6
      python3-astroid: update to 2.5
      python3-configargparse: update to 1.3
      python3-cryptography-vectors: update to 3.4.6
      python3-periphery: update to 2.3.0
      python3-sentry-sdk: update to 0.20.3
      python3-soupsieve: update to 2.2
      python3-supervisor: update to 4.2.1
      python3-tqdm: update 4.57.0
      python3-typeguard: update to 2.11.0
      python3-xmlschema: update to 1.5.1

Oleksiy Obitotskyy (2):
      wireshark-src: improve reproducibility
      smartmontools: Improve reproducibility

Patrick Williams (2):
      boost-url: update to latest
      catch2: upgrade to 2.13.4

Peter Kjellerstedt (1):
      librcereal: A couple of improvements

Randy MacLeod (2):
      libssh2: remove the recipe since it moved to oe-core
      libgit2: remove the recipe since it moved to oe-core

Ross Burton (1):
      python3-intelhex: add recipe for the intelhex package

Sean Nyekjaer (3):
      nodejs: 12.20.1 -> 12.20.2
      zstd: split bin into separate package
      can-utils: split into more packages

Ulrich ?lmann (1):
      v4l-utils: update to 1.20.0

Wang Mingyu (7):
      stunnel: upgrade 5.57 -> 5.58
      iwd: upgrade 1.11 -> 1.12
      protobuf: upgrade 3.14.0 -> 3.15.2
      redis-plus-plus: upgrade 1.2.1 -> 1.2.2
      tesseract-lang: upgrade 4.0.0 -> 4.1.0
      gphoto2: upgrade 2.5.26 -> 2.5.27
      libgphoto2: upgrade 2.5.26 -> 2.5.27

Yanfei Xu (1):
      lmbench: Install cache command and fix typos in manual page

Yi Fan Yu (4):
      rsyslog: upgrade 8.2006.0->8.2012.0
      tcpdump: update 4.9.3 -> 4.99.0
      rsyslog: Add imhttp to packageconfig
      rsyslog: Update 8.2012.0 -> 8.2102.0

Yi Zhao (1):
      vsftpd: allow newfstatat and pselect6 syscalls in the seccomp sandbox

akuster (1):
      softhsm: update to 2.6.1 and align

zangrc (11):
      fuse3: upgrade 3.10.1 -> 3.10.2
      enca: upgrade 1.9 -> 1.19
      gensio: upgrade 2.2.3 -> 2.2.4
      lcms: upgrade 2.11 -> 2.12
      libburn: upgrade 1.5.2 -> 1.5.4
      opensaf: upgrade 5.20.11 -> 5.21.03
      openvpn: upgrade 2.5.0 -> 2.5.1
      strongswan: upgrade 5.9.1 -> 5.9.2
      wireguard-tools: upgrade 1.0.20200827 -> 1.0.20210223
      hwdata: upgrade 0.343 -> 0.345
      mailcap: upgrade 2.1.49 -> 2.1.52

zhengruoqin (7):
      libjcat: upgrade 0.1.4 -> 0.1.6
      postgresql: upgrade 13.1 -> 13.2
      ser2net: upgrade 4.3.0 -> 4.3.3
      Fix do_package error when enable multilib.
      nano: upgrade 5.5 -> 5.6
      qpdf: upgrade 10.0.4 -> 10.2.0
      sigrok-cli: upgrade 0.7.1 -> 0.7.2

Signed-off-by: Andrew Geissler <geissonator@yahoo.com>
Change-Id: Ibbbafaa846b1dcc3c03ac585e7d5075826e4ee37
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/aom/aom_2.0.0.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/aom/aom_2.0.0.bb
index c5ad1f8..1ad4577 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/aom/aom_2.0.0.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/aom/aom_2.0.0.bb
@@ -18,3 +18,5 @@
 EXTRA_OECMAKE = " -DBUILD_SHARED_LIBS=1 -DENABLE_TESTS=0 \
                   -DPERL_EXECUTABLE=${HOSTTOOLS_DIR}/perl \
                 "
+
+EXTRA_OECMAKE_append_arm = " ${@bb.utils.contains("TUNE_FEATURES","neon","-DENABLE_NEON=ON","-DENABLE_NEON=OFF",d)}"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/dvb-apps/dvb-apps_1.1.1.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/dvb-apps/dvb-apps_1.1.1.bb
index f354ef3..977a9e7 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/dvb-apps/dvb-apps_1.1.1.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/dvb-apps/dvb-apps_1.1.1.bb
@@ -20,6 +20,8 @@
 
 export enable_static="no"
 
+export PERL_USE_UNSAFE_INC = "1"
+
 do_configure() {
     sed -i -e s:/usr/include:${STAGING_INCDIR}:g util/av7110_loadkeys/generate-keynames.sh
 }
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/gerbera/gerbera/0001-include-optional-header.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/gerbera/gerbera/0001-include-optional-header.patch
new file mode 100644
index 0000000..f3197f9
--- /dev/null
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/gerbera/gerbera/0001-include-optional-header.patch
@@ -0,0 +1,32 @@
+From 5719ed8ce9ba60beb9c1670b49296b1c66430dc2 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 2 Mar 2021 12:57:37 -0800
+Subject: [PATCH] include <optional> header
+
+Fixes build with gcc11
+/src/util/tools.h:165:6: error: 'optional' in na
+mespace 'std' does not name a template type
+|   165 | std::optional<std::vector<std::byte>> readBinaryFile(const fs::path& path);
+|       |      ^~~~~~~~
+
+Upstream-Status: Submitted [https://github.com/gerbera/gerbera/pull/1273]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/util/tools.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/util/tools.h b/src/util/tools.h
+index 3a4064e9..e5142966 100644
+--- a/src/util/tools.h
++++ b/src/util/tools.h
+@@ -37,6 +37,7 @@
+ #include <sstream>
+ #include <string>
+ #include <unordered_set>
++#include <optional>
+ #include <vector>
+ namespace fs = std::filesystem;
+ 
+-- 
+2.30.1
+
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/gerbera/gerbera_1.6.0.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/gerbera/gerbera_1.7.0.bb
similarity index 88%
rename from meta-openembedded/meta-multimedia/recipes-multimedia/gerbera/gerbera_1.6.0.bb
rename to meta-openembedded/meta-multimedia/recipes-multimedia/gerbera/gerbera_1.7.0.bb
index 7f26741..d4242aa 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/gerbera/gerbera_1.6.0.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/gerbera/gerbera_1.7.0.bb
@@ -4,9 +4,10 @@
 LIC_FILES_CHKSUM = "file://LICENSE.md;md5=25cdec9afe3f1f26212ead6bd2f7fac8"
 
 SRC_URI = "git://github.com/v00d00/gerbera.git;protocol=https \
-"
+           file://0001-include-optional-header.patch \
+          "
 
-SRCREV = "b219e22f09e346dd048f614a01ca2cbc55edd940"
+SRCREV = "7bc33b98994411e1748d3b3fa9a8424c49e236d6"
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/libcamera/libcamera.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/libcamera/libcamera.bb
index 5505626..b05df32 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/libcamera/libcamera.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/libcamera/libcamera.bb
@@ -10,15 +10,16 @@
 
 SRC_URI = " \
         git://linuxtv.org/libcamera.git;protocol=git \
+        file://0001-uvcvideo-Use-auto-variable-to-avoid-range-loop-warni.patch \
 "
 
-SRCREV = "1e8c91b65695449c5246d17ba7dc439c8058b781"
+SRCREV = "f490a87fd339fc7443f5d8467ba56a35c750a5f7"
 
-PV = "202008+git${SRCPV}"
+PV = "202102+git${SRCPV}"
 
 S = "${WORKDIR}/git"
 
-DEPENDS = "python3-pyyaml-native udev gnutls boost chrpath-native"
+DEPENDS = "python3-pyyaml-native python3-jinja2-native python3-ply-native python3-jinja2-native udev gnutls boost chrpath-native"
 DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'qt', 'qtbase qtbase-native', '', d)}"
 
 PACKAGES =+ "${PN}-gst"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/libcamera/libcamera/0001-uvcvideo-Use-auto-variable-to-avoid-range-loop-warni.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/libcamera/libcamera/0001-uvcvideo-Use-auto-variable-to-avoid-range-loop-warni.patch
new file mode 100644
index 0000000..4ca412c
--- /dev/null
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/libcamera/libcamera/0001-uvcvideo-Use-auto-variable-to-avoid-range-loop-warni.patch
@@ -0,0 +1,38 @@
+From 767267ef69c001870d41caf9c60dd7fec89b0a13 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 3 Mar 2021 15:11:46 -0800
+Subject: [PATCH] uvcvideo: Use auto variable to avoid range loop warnings
+
+With c++17 loop range bases are defined where copy is obvious since
+iterator returns a copy and not reference, gcc11 will emit a warning
+about this
+
+uvcvideo.cpp:432:33: error: loop variable 'name' of type 'const string&' {aka 'const std::__cxx11::basic_string<cha
+r>&'} binds to a temporary constructed from type 'const char* const' [-Werror=range-loop-construct]
+|   432 |         for (const std::string &name : { "idVendor", "idProduct" }) {
+|       |                                 ^~~~
+
+Therefore making it explicit is better
+
+Upstream-Status: Submitted [https://lists.libcamera.org/pipermail/libcamera-devel/2021-March/017966.html]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/libcamera/pipeline/uvcvideo/uvcvideo.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp
+index 031f96e2..ef23ece7 100644
+--- a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp
++++ b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp
+@@ -429,7 +429,7 @@ std::string PipelineHandlerUVC::generateId(const UVCCameraData *data)
+ 
+ 	/* Creata a device ID from the USB devices vendor and product ID. */
+ 	std::string deviceId;
+-	for (const std::string &name : { "idVendor", "idProduct" }) {
++	for (const auto name : { "idVendor", "idProduct" }) {
+ 		std::ifstream file(path + "/../" + name);
+ 
+ 		if (!file.is_open())
+-- 
+2.30.1
+
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/mpd/0001-StringBuffer-Include-cstddef-for-size_t.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/mpd/0001-StringBuffer-Include-cstddef-for-size_t.patch
deleted file mode 100644
index 1d869aa..0000000
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/mpd/0001-StringBuffer-Include-cstddef-for-size_t.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From c14877071f14b218835f7fb034dea11bd1ba56f5 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 25 Dec 2019 09:40:16 -0800
-Subject: [PATCH] StringBuffer: Include cstddef for size_t
-
-Fixes
-a.cpp:3:1: error: 'size_t' does not name a type
-    3 | size_t s;
-      | ^~~~~~
-a.cpp:2:1: note: 'size_t' is defined in header '<cstddef>'; did you forget to '#include <cstddef>'?
-
-Upstream-Status: Submitted [https://github.com/MusicPlayerDaemon/MPD/pull/697]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/util/StringBuffer.hxx | 1 +
- 1 file changed, 1 insertion(+)
-
---- a/src/util/StringBuffer.hxx
-+++ b/src/util/StringBuffer.hxx
-@@ -31,6 +31,7 @@
- #define STRING_BUFFER_HPP
- 
- #include <array>
-+#include <cstddef>
- 
- /**
-  * A statically allocated string buffer.
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/mpd/0002-Include-stdexcept-for-runtime_error.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/mpd/0002-Include-stdexcept-for-runtime_error.patch
deleted file mode 100644
index 1f11867..0000000
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/mpd/0002-Include-stdexcept-for-runtime_error.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 06f78ced45f6622a2e02cd09e6a2c0c22a98b89e Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 25 Dec 2019 09:41:55 -0800
-Subject: [PATCH 2/2] Include <stdexcept> for runtime_error
-
-Fixes
-
-../git/src/LocateUri.cxx:65:14: error: 'runtime_error' is not a member of 'std'
-   65 |   throw std::runtime_error("Unsupported URI scheme");
-      |              ^~~~~~~~~~~~~
-
-Upstream-Status: Inappropriate [ Fixed differently upstream ]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/LocateUri.cxx      | 1 +
- src/pcm/PcmConvert.cxx | 1 +
- 2 files changed, 2 insertions(+)
-
---- a/src/LocateUri.cxx
-+++ b/src/LocateUri.cxx
-@@ -17,6 +17,7 @@
-  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-  */
- 
-+#include <stdexcept>
- #include "config.h"
- #include "LocateUri.hxx"
- #include "client/Client.hxx"
---- a/src/pcm/PcmConvert.cxx
-+++ b/src/pcm/PcmConvert.cxx
-@@ -17,6 +17,7 @@
-  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-  */
- 
-+#include <stdexcept>
- #include "config.h"
- #include "PcmConvert.hxx"
- #include "ConfiguredResampler.hxx"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/mpd_0.20.22.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/mpd_0.20.22.bb
deleted file mode 100644
index b214672..0000000
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/mpd_0.20.22.bb
+++ /dev/null
@@ -1,103 +0,0 @@
-SUMMARY = "Music Player Daemon"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
-
-LICENSE_FLAGS = "${@bb.utils.contains_any('PACKAGECONFIG', ['ffmpeg', 'aac'], 'commercial', '', d)}"
-
-HOMEPAGE ="http://www.musicpd.org"
-
-inherit autotools useradd systemd pkgconfig
-
-DEPENDS += " \
-    curl \
-    sqlite3 \
-    ${@bb.utils.filter('DISTRO_FEATURES', 'pulseaudio', d)} \
-    yajl \
-    boost \
-    icu \
-    dbus \
-    expat \
-"
-
-SRC_URI = " \
-    git://github.com/MusicPlayerDaemon/MPD;branch=v0.20.x \
-    file://mpd.conf.in \
-    file://0001-StringBuffer-Include-cstddef-for-size_t.patch \
-    file://0002-Include-stdexcept-for-runtime_error.patch \
-"
-SRCREV = "9274bc15bc41bbe490fde847f8422468cc20375d"
-S = "${WORKDIR}/git"
-
-EXTRA_OECONF += "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '--with-systemdsystemunitdir=${systemd_unitdir}/system/', '--without-systemdsystemunitdir', d)}"
-
-PACKAGECONFIG ??= "aac alsa ao bzip2 daemon ffmpeg fifo flac fluidsynth iso9660 jack libsamplerate libwrap httpd mms mpg123 modplug sndfile upnp openal opus oss recorder vorbis wavpack zlib"
-
-PACKAGECONFIG[aac] = "--enable-aac,--disable-aac,faad2"
-PACKAGECONFIG[alsa] = "--enable-alsa,--disable-alsa,alsa-lib"
-PACKAGECONFIG[ao] = "--enable-ao,--disable-ao,libao"
-PACKAGECONFIG[audiofile] = "--enable-audiofile,--disable-audiofile,audiofile"
-PACKAGECONFIG[bzip2] = "--enable-bzip2,--disable-bzip2,bzip2"
-PACKAGECONFIG[cdioparanoia] = "--enable-cdio-paranoia,--disable-cdio-paranoia,libcdio-paranoia"
-PACKAGECONFIG[daemon] = "--enable-daemon,--disable-daemon"
-PACKAGECONFIG[ffmpeg] = "--enable-ffmpeg,--disable-ffmpeg,ffmpeg"
-PACKAGECONFIG[fifo] = "--enable-fifo,--disable-fifo"
-PACKAGECONFIG[flac] = "--enable-flac,--disable-flac,flac"
-PACKAGECONFIG[fluidsynth] = "--enable-fluidsynth,--disable-fluidsynth,fluidsynth"
-PACKAGECONFIG[httpd] = "--enable-httpd-output,--disable-httpd-output"
-PACKAGECONFIG[id3tag] = "--enable-id3,--disable-id3,libid3tag"
-PACKAGECONFIG[iso9660] = "--enable-iso9660,--disable-iso9660,libcdio"
-PACKAGECONFIG[jack] = "--enable-jack,--disable-jack,jack"
-PACKAGECONFIG[lame] = "--enable-lame-encoder,--disable-lame-encoder,lame"
-PACKAGECONFIG[libsamplerate] = "--enable-lsr,--disable-lsr,libsamplerate0"
-PACKAGECONFIG[libwrap] = "--enable-libwrap,--disable-libwrap,tcp-wrappers"
-PACKAGECONFIG[mad] = "--enable-mad,--disable-mad,libmad"
-PACKAGECONFIG[mms] = "--enable-mms,--disable-mms,libmms"
-PACKAGECONFIG[modplug] = "--enable-modplug,--disable-modplug,libmodplug"
-PACKAGECONFIG[mpg123] = "--enable-mpg123,--disable-mpg123,mpg123"
-PACKAGECONFIG[openal] = "--enable-openal,--disable-openal,openal-soft"
-PACKAGECONFIG[opus] = "--enable-opus,--disable-opus,libopus libogg"
-PACKAGECONFIG[oss] = "--enable-oss,--disable-oss,"
-PACKAGECONFIG[recorder] = "--enable-recorder-output,--disable-recorder-output"
-PACKAGECONFIG[smb] = "--enable-smbclient,--disable-smbclient,samba"
-PACKAGECONFIG[sndfile] = "--enable-sndfile,--disable-sndfile,libsndfile1"
-PACKAGECONFIG[upnp] = "--enable-upnp,--disable-upnp,libupnp"
-PACKAGECONFIG[vorbis] = "--enable-vorbis,--disable-vorbis,libvorbis libogg"
-PACKAGECONFIG[wavpack] = "--enable-wavpack,--disable-wavpack,wavpack"
-PACKAGECONFIG[zlib] = "--enable-zlib,--disable-zlib,zlib"
-
-do_configure_prepend() {
-    sed -i -e 's|libsystemd-daemon|libsystemd|' ${S}/configure.ac
-}
-
-do_install_append() {
-    install -o mpd -d \
-        ${D}/${localstatedir}/lib/mpd \
-        ${D}/${localstatedir}/lib/mpd/playlists
-    install -m775 -o mpd -g mpd -d \
-        ${D}/${localstatedir}/lib/mpd/music
-
-    install -d ${D}/${sysconfdir}
-    install -m 644 ${WORKDIR}/mpd.conf.in ${D}/${sysconfdir}/mpd.conf
-    sed -i \
-        -e 's|%music_directory%|${localstatedir}/lib/mpd/music|' \
-        -e 's|%playlist_directory%|${localstatedir}/lib/mpd/playlists|' \
-        -e 's|%db_file%|${localstatedir}/lib/mpd/mpd.db|' \
-        -e 's|%log_file%|${localstatedir}/log/mpd.log|' \
-        -e 's|%state_file%|${localstatedir}/lib/mpd/state|' \
-        ${D}/${sysconfdir}/mpd.conf
-
-    # we don't need the icon
-    rm -rf ${D}${datadir}/icons
-}
-
-RPROVIDES_${PN} += "${PN}-systemd"
-RREPLACES_${PN} += "${PN}-systemd"
-RCONFLICTS_${PN} += "${PN}-systemd"
-SYSTEMD_SERVICE_${PN} = "mpd.socket"
-
-USERADD_PACKAGES = "${PN}"
-USERADD_PARAM_${PN} = " \
-    --system --no-create-home \
-    --home ${localstatedir}/lib/mpd \
-    --groups audio \
-    --user-group mpd"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/mpd_0.22.6.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/mpd_0.22.6.bb
new file mode 100644
index 0000000..e91bb5d
--- /dev/null
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/mpd_0.22.6.bb
@@ -0,0 +1,96 @@
+SUMMARY = "Music Player Daemon"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+
+LICENSE_FLAGS = "${@bb.utils.contains_any('PACKAGECONFIG', ['ffmpeg', 'aac'], 'commercial', '', d)}"
+
+HOMEPAGE ="http://www.musicpd.org"
+
+inherit meson useradd systemd pkgconfig
+
+DEPENDS += " \
+    curl \
+    sqlite3 \
+    ${@bb.utils.filter('DISTRO_FEATURES', 'pulseaudio', d)} \
+    yajl \
+    boost \
+    icu \
+    dbus \
+    expat \
+"
+
+SRC_URI = " \
+    git://github.com/MusicPlayerDaemon/MPD;branch=v0.22.x \
+    file://mpd.conf.in \
+"
+SRCREV = "938728820b11d4544a071994fe3c63c6ab710e8e"
+S = "${WORKDIR}/git"
+
+EXTRA_OEMESON += "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '-Dsystemd=enabled -Dsystemd_system_unit_dir=${systemd_system_unitdir} -Dsystemd_user_unit_dir=${systemd_system_unitdir}', '-Dsystemd=disabled', d)}"
+
+PACKAGECONFIG ??= "aac alsa ao bzip2 daemon ffmpeg fifo flac fluidsynth iso9660 jack libsamplerate httpd mms mpg123 modplug sndfile upnp openal opus oss recorder vorbis wavpack zlib"
+
+PACKAGECONFIG[aac] = "-Dfaad=enabled,-Dfaad=disabled,faad2"
+PACKAGECONFIG[alsa] = "-Dalsa=enabled,-Dalsa=disabled,alsa-lib"
+PACKAGECONFIG[ao] = "-Dao=enabled,-Dao=disabled,libao"
+PACKAGECONFIG[audiofile] = "-Daudiofile=enabled,-Daudiofile=disabled,audiofile"
+PACKAGECONFIG[bzip2] = "-Dbzip2=enabled,-Dbzip2=disabled,bzip2"
+PACKAGECONFIG[cdioparanoia] = "-Dcdio_paranoia=enabled,-Dcdio_paranoia=disabled,libcdio-paranoia"
+PACKAGECONFIG[daemon] = "-Ddaemon=true,-Ddaemon=false"
+PACKAGECONFIG[ffmpeg] = "-Dffmpeg=enabled,-Dffmpeg=disabled,ffmpeg"
+PACKAGECONFIG[fifo] = "-Dfifo=true,-Dfifo=false"
+PACKAGECONFIG[flac] = "-Dflac=enabled,-Dflac=disabled,flac"
+PACKAGECONFIG[fluidsynth] = "-Dfluidsynth=enabled,-Dfluidsynth=disabled,fluidsynth"
+PACKAGECONFIG[httpd] = "-Dhttpd=true,-Dhttpd=false"
+PACKAGECONFIG[id3tag] = "-Did3tag=enabled,-Did3tag=disabled,libid3tag"
+PACKAGECONFIG[iso9660] = "-Diso9660=enabled,-Diso9660=disabled,libcdio"
+PACKAGECONFIG[jack] = "-Djack=enabled,-Djack=disabled,jack"
+PACKAGECONFIG[lame] = "-Dlame=enabled,-Dlame=disabled,lame"
+PACKAGECONFIG[libsamplerate] = "-Dlibsamplerate=enabled,-Dlibsamplerate=disabled,libsamplerate0"
+PACKAGECONFIG[mad] = "-Dmad=enabled,-Dmad=disabled,libmad"
+PACKAGECONFIG[mms] = "-Dmms=enabled,-Dmms=disabled,libmms"
+PACKAGECONFIG[modplug] = "-Dmodplug=enabled,-Dmodplug=disabled,libmodplug"
+PACKAGECONFIG[mpg123] = "-Dmpg123=enabled,-Dmpg123=disabled,mpg123"
+PACKAGECONFIG[openal] = "-Dopenal=enabled,-Dopenal=disabled,openal-soft"
+PACKAGECONFIG[opus] = "-Dopus=enabled,-Dopus=disabled,libopus libogg"
+PACKAGECONFIG[oss] = "-Doss=enabled,-Doss=disabled,"
+PACKAGECONFIG[recorder] = "-Drecorder=true,-Drecorder=false"
+PACKAGECONFIG[smb] = "-Dsmbclient=enabled,-Dsmbclient=disabled,samba"
+PACKAGECONFIG[sndfile] = "-Dsndfile=enabled,-Dsndfile=disabled,libsndfile1"
+PACKAGECONFIG[upnp] = "-Dupnp=enabled,-Dupnp=disabled,libupnp"
+PACKAGECONFIG[vorbis] = "-Dvorbis=enabled,-Dvorbis=disabled,libvorbis libogg"
+PACKAGECONFIG[wavpack] = "-Dwavpack=enabled,-Dwavpack=disabled,wavpack"
+PACKAGECONFIG[zlib] = "-Dzlib=enabled,-Dzlib=disabled,zlib"
+
+do_install_append() {
+    install -o mpd -d \
+        ${D}/${localstatedir}/lib/mpd \
+        ${D}/${localstatedir}/lib/mpd/playlists
+    install -m775 -o mpd -g mpd -d \
+        ${D}/${localstatedir}/lib/mpd/music
+
+    install -d ${D}/${sysconfdir}
+    install -m 644 ${WORKDIR}/mpd.conf.in ${D}/${sysconfdir}/mpd.conf
+    sed -i \
+        -e 's|%music_directory%|${localstatedir}/lib/mpd/music|' \
+        -e 's|%playlist_directory%|${localstatedir}/lib/mpd/playlists|' \
+        -e 's|%db_file%|${localstatedir}/lib/mpd/mpd.db|' \
+        -e 's|%log_file%|${localstatedir}/log/mpd.log|' \
+        -e 's|%state_file%|${localstatedir}/lib/mpd/state|' \
+        ${D}/${sysconfdir}/mpd.conf
+
+    # we don't need the icon
+    rm -rf ${D}${datadir}/icons
+}
+
+RPROVIDES_${PN} += "${PN}-systemd"
+RREPLACES_${PN} += "${PN}-systemd"
+RCONFLICTS_${PN} += "${PN}-systemd"
+SYSTEMD_SERVICE_${PN} = "mpd.socket"
+
+USERADD_PACKAGES = "${PN}"
+USERADD_PARAM_${PN} = " \
+    --system --no-create-home \
+    --home ${localstatedir}/lib/mpd \
+    --groups audio \
+    --user-group mpd"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/ncmpc_0.38.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/ncmpc_0.45.bb
similarity index 94%
rename from meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/ncmpc_0.38.bb
rename to meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/ncmpc_0.45.bb
index ebf5d29..c089b64 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/ncmpc_0.38.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/ncmpc_0.45.bb
@@ -11,6 +11,8 @@
     libmpdclient \
 "
 
+RDEPENDS_${PN} += "python3-core"
+
 PACKAGECONFIG ??= "colors locale mouse nls regex help_screen library_screen search_screen song_screen key_screen lyrics_screen outputs_screen"
 
 PACKAGECONFIG[colors] = "-Dcolors=true,-Dcolors=false"
@@ -33,5 +35,5 @@
 SRC_URI = " \
     git://github.com/MusicPlayerDaemon/ncmpc \
 "
-SRCREV = "2c71add42152072c5e0490de2870315dfb3b71e1"
+SRCREV = "6780ec072f1d314f44ed77efdc58d03c6fbcc96b"
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/pipewire/pipewire-0.2_git.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/pipewire/pipewire-0.2_git.bb
new file mode 100644
index 0000000..bcb3015
--- /dev/null
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/pipewire/pipewire-0.2_git.bb
@@ -0,0 +1,65 @@
+SUMMARY = "Multimedia processing server for Linux"
+AUTHOR = "Wim Taymans <wtaymans@redhat.com>"
+HOMEPAGE = "https://pipewire.org"
+SECTION = "multimedia"
+LICENSE = "LGPL-2.1"
+LIC_FILES_CHKSUM = " \
+    file://LICENSE;md5=d8153c6e65986f862a0550ca74a3ed73 \
+    file://LGPL;md5=2d5025d4aa3495befef8f17206a5b0a1 \
+"
+DEPENDS = "alsa-lib dbus udev"
+SRCREV = "14c11c0fe4d366bad4cfecdee97b6652ff9ed63d"
+PV = "0.2.7"
+
+SRC_URI = "git://github.com/PipeWire/pipewire"
+
+S = "${WORKDIR}/git"
+
+inherit meson pkgconfig systemd manpages
+
+PACKAGECONFIG ??= "\
+    ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)} \
+    gstreamer \
+"
+
+PACKAGECONFIG[systemd] = "-Dsystemd=true,-Dsystemd=false,systemd"
+PACKAGECONFIG[gstreamer] = "-Dgstreamer=enabled,-Dgstreamer=disabled,glib-2.0 gstreamer1.0 gstreamer1.0-plugins-base"
+PACKAGECONFIG[manpages] = "-Dman=true,-Dman=false,libxml-parser-perl-native"
+
+PACKAGES =+ "\
+    ${PN}-spa-plugins \
+    ${PN}-alsa \
+    ${PN}-config \
+    gstreamer1.0-${PN} \
+    lib${PN} \
+    lib${PN}-modules \
+"
+
+RDEPENDS_lib${PN} += "lib${PN}-modules ${PN}-spa-plugins"
+
+FILES_${PN} = "\
+    ${sysconfdir}/pipewire/pipewire.conf \
+    ${bindir}/pipewire* \
+    ${systemd_user_unitdir}/* \
+"
+FILES_lib${PN} = "\
+    ${libdir}/libpipewire-*.so.* \
+"
+FILES_lib${PN}-modules = "\
+    ${libdir}/pipewire-*/* \
+"
+FILES_${PN}-spa-plugins = "\
+    ${bindir}/spa-* \
+    ${libdir}/spa/* \
+"
+FILES_${PN}-alsa = "\
+    ${libdir}/alsa-lib/* \
+    ${datadir}/alsa/alsa.conf.d/50-pipewire.conf \
+"
+FILES_gstreamer1.0-${PN} = "\
+    ${libdir}/gstreamer-1.0/* \
+"
+
+CONFFILES_${PN} = "\
+    ${sysconfdir}/pipewire/pipewire.conf \
+"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/pipewire/pipewire_0.3.22.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/pipewire/pipewire_0.3.22.bb
new file mode 100644
index 0000000..b54be7f
--- /dev/null
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/pipewire/pipewire_0.3.22.bb
@@ -0,0 +1,273 @@
+SUMMARY = "Multimedia processing server for Linux"
+DESCRIPTION = "Linux server for handling and routing audio and video streams between applications and multimedia I/O devices"
+HOMEPAGE = "https://pipewire.org/"
+BUGTRACKER  = "https://gitlab.freedesktop.org/pipewire/pipewire/issues"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = " \
+    file://LICENSE;md5=e2c0b7d86d04e716a3c4c9ab34260e69 \
+    file://COPYING;md5=97be96ca4fab23e9657ffa590b931c1a \
+"
+SECTION = "multimedia"
+
+DEPENDS = "dbus"
+
+SRCREV = "22d563720a7f6ba7bdf59950f8c14488d80dfa95"
+SRC_URI = "git://gitlab.freedesktop.org/pipewire/pipewire.git;branch=master;protocol=https"
+
+S = "${WORKDIR}/git"
+
+inherit meson pkgconfig systemd manpages gettext useradd
+
+USERADD_PACKAGES = "${PN}"
+
+GROUPADD_PARAM_${PN} = "--system pipewire"
+
+USERADD_PARAM_${PN} = "--system --home / --no-create-home \
+                       --comment 'PipeWire multimedia daemon' \
+                       --gid pipewire --groups audio,video \
+                       pipewire"
+
+# For "EVL", look up https://evlproject.org/ . It involves
+# a specially prepared kernel, and is currently unavailable
+# in Yocto.
+# FFmpeg and Vulkan aren't really supported - at the current
+# stage (version 0.3.22), these are just experiments, not
+# actual features.
+# libcamera support currently does not build successfully.
+# systemd user service files are disabled because per-user
+# PipeWire instances aren't really something that makes
+# much sense in an embedded environment. A system-wide
+# instance does.
+EXTRA_OEMESON += " \
+    -Daudiotestsrc=true \
+    -Devl=false \
+    -Dsystemd-user-service=false \
+    -Dtests=false \
+    -Dudevrulesdir=${nonarch_base_libdir}/udev/rules.d/ \
+    -Dvideotestsrc=true \
+    -Dffmpeg=false \
+    -Dvulkan=false \
+    -Dlibcamera=false \
+"
+
+PACKAGECONFIG ??= "\
+    ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez', '', d)} \
+    ${@bb.utils.filter('DISTRO_FEATURES', 'alsa systemd', d)} \
+    gstreamer jack v4l2 \
+"
+
+# "jack" and "pipewire-jack" packageconfigs cannot be both enabled,
+# since "jack" imports libjack, and "pipewire-jack" generates
+# libjack.so* files, thus colliding with the libpack package. This
+# is why these two are marked in their respective packageconfigs
+# as being in conflict.
+
+PACKAGECONFIG[alsa] = "-Dalsa=true,-Dalsa=false,alsa-lib udev"
+PACKAGECONFIG[bluez] = "-Dbluez5=true,-Dbluez5=false,bluez5 sbc"
+PACKAGECONFIG[docs] = "-Ddocs=true,-Ddocs=false,doxygen"
+PACKAGECONFIG[gstreamer] = "-Dgstreamer=true,-Dgstreamer=false,glib-2.0 gstreamer1.0 gstreamer1.0-plugins-base"
+PACKAGECONFIG[jack] = "-Djack=true,-Djack=false,jack,,,pipewire-jack"
+PACKAGECONFIG[manpages] = "-Dman=true,-Dman=false,libxml-parser-perl-native"
+PACKAGECONFIG[sdl2] = "-Dsdl2=enabled,-Dsdl2=disabled,virtual/libsdl2"
+PACKAGECONFIG[sndfile] = "-Dsndfile=enabled,-Dsndfile=disabled,libsndfile1"
+PACKAGECONFIG[systemd] = "-Dsystemd=true -Dsystemd-system-service=true ,-Dsystemd=false -Dsystemd-system-service=false,systemd"
+PACKAGECONFIG[v4l2] = "-Dv4l2=true,-Dv4l2=false,udev"
+PACKAGECONFIG[pipewire-alsa] = "-Dpipewire-alsa=true,-Dpipewire-alsa=false,alsa-lib"
+PACKAGECONFIG[pipewire-jack] = "-Dpipewire-jack=true -Dlibjack-path=${libdir}/${PW_MODULE_SUBDIR}/jack,-Dpipewire-jack=false,jack,,,jack"
+
+PACKAGESPLITFUNCS_prepend = " split_dynamic_packages "
+PACKAGESPLITFUNCS_append = " set_dynamic_metapkg_rdepends "
+
+SPA_SUBDIR = "spa-0.2"
+PW_MODULE_SUBDIR = "pipewire-0.3"
+
+remove_unused_installed_files() {
+    # jack.conf is used by pipewire-jack (not the JACK SPA plugin).
+    # Remove it if pipewire-jack is not built to avoid creating the
+    # pipewire-jack package.
+    if ${@bb.utils.contains('PACKAGECONFIG', 'pipewire-jack', 'false', 'true', d)}; then
+        rm -f "${D}${sysconfdir}/pipewire/jack.conf"
+    fi
+}
+
+do_install[postfuncs] += "remove_unused_installed_files"
+
+python split_dynamic_packages () {
+    # Create packages for each SPA plugin. These plugins are located
+    # in individual subdirectories, so a recursive search is needed.
+    spa_libdir = d.expand('${libdir}/${SPA_SUBDIR}')
+    do_split_packages(d, spa_libdir, r'^libspa-(.*)\.so$', d.expand('${PN}-spa-plugins-%s'), 'PipeWire SPA plugin for %s', extra_depends='', recursive=True)
+
+    # Create packages for each PipeWire module.
+    pw_module_libdir = d.expand('${libdir}/${PW_MODULE_SUBDIR}')
+    do_split_packages(d, pw_module_libdir, r'^libpipewire-module-(.*)\.so$', d.expand('${PN}-modules-%s'), 'PipeWire %s module', extra_depends='', recursive=False)
+}
+
+python set_dynamic_metapkg_rdepends () {
+    import os
+    import oe.utils
+
+    # Go through all generated SPA plugin and PipeWire module packages
+    # (excluding the main package and the -meta package itself) and
+    # add them to the -meta package as RDEPENDS.
+
+    base_pn = d.getVar('PN')
+
+    spa_pn = base_pn + '-spa-plugins'
+    spa_metapkg =  spa_pn + '-meta'
+
+    pw_module_pn = base_pn + '-modules'
+    pw_module_metapkg =  pw_module_pn + '-meta'
+
+    d.setVar('ALLOW_EMPTY_' + spa_metapkg, "1")
+    d.setVar('FILES_' + spa_metapkg, "")
+
+    d.setVar('ALLOW_EMPTY_' + pw_module_metapkg, "1")
+    d.setVar('FILES_' + pw_module_metapkg, "")
+
+    blacklist = [ spa_pn, spa_metapkg, pw_module_pn, pw_module_metapkg ]
+    spa_metapkg_rdepends = []
+    pw_module_metapkg_rdepends = []
+    pkgdest = d.getVar('PKGDEST')
+
+    for pkg in oe.utils.packages_filter_out_system(d):
+        if pkg in blacklist:
+            continue
+
+        is_spa_pkg = pkg.startswith(spa_pn)
+        is_pw_module_pkg = pkg.startswith(pw_module_pn)
+        if not is_spa_pkg and not is_pw_module_pkg:
+            continue
+
+        if pkg in spa_metapkg_rdepends or pkg in pw_module_metapkg_rdepends:
+            continue
+
+        # See if the package is empty by looking at the contents of its
+        # PKGDEST subdirectory. If this subdirectory is empty, then then
+        # package is empty as well. Empty packages do not get added to
+        # the meta package's RDEPENDS.
+        pkgdir = os.path.join(pkgdest, pkg)
+        if os.path.exists(pkgdir):
+            dir_contents = os.listdir(pkgdir) or []
+        else:
+            dir_contents = []
+        is_empty = len(dir_contents) == 0
+        if not is_empty:
+            if is_spa_pkg:
+                spa_metapkg_rdepends.append(pkg)
+            if is_pw_module_pkg:
+                pw_module_metapkg_rdepends.append(pkg)
+
+    d.setVar('RDEPENDS_' + spa_metapkg, ' '.join(spa_metapkg_rdepends))
+    d.setVar('DESCRIPTION_' + spa_metapkg, spa_pn + ' meta package')
+
+    d.setVar('RDEPENDS_' + pw_module_metapkg, ' '.join(pw_module_metapkg_rdepends))
+    d.setVar('DESCRIPTION_' + pw_module_metapkg, pw_module_pn + ' meta package')
+}
+
+PACKAGES =+ "\
+    libpipewire \
+    ${PN}-tools \
+    ${PN}-pulse \
+    ${PN}-alsa \
+    ${PN}-jack \
+    ${PN}-media-session \
+    ${PN}-spa-plugins \
+    ${PN}-spa-plugins-meta \
+    ${PN}-spa-tools \
+    ${PN}-modules \
+    ${PN}-modules-meta \
+    ${PN}-alsa-card-profile \
+    gstreamer1.0-pipewire \
+"
+
+PACKAGES_DYNAMIC = "^${PN}-spa-plugins.* ^${PN}-modules.*"
+
+SYSTEMD_SERVICE_${PN} = "pipewire.service"
+CONFFILES_${PN} += "${sysconfdir}/pipewire/pipewire.conf"
+FILES_${PN} = " \
+    ${sysconfdir}/pipewire/pipewire.conf \
+    ${systemd_user_unitdir}/pipewire.* \
+    ${bindir}/pipewire \
+"
+
+FILES_${PN}-dev += " \
+    ${libdir}/${PW_MODULE_SUBDIR}/jack/libjack*.so \
+"
+
+CONFFILES_libpipewire += "${sysconfdir}/pipewire/client.conf"
+FILES_libpipewire = " \
+    ${sysconfdir}/pipewire/client.conf \
+    ${libdir}/libpipewire-*.so.* \
+"
+# Add the bare minimum modules and plugins required to be able
+# to use libpipewire. Without these, it is essentially unusable.
+RDEPENDS_libpipewire += " \
+    ${PN}-modules-client-node \
+    ${PN}-modules-protocol-native \
+    ${PN}-spa-plugins-support \
+"
+
+FILES_${PN}-tools = " \
+    ${bindir}/pw-* \
+"
+
+# This is a shim daemon that is intended to be used as a
+# drop-in PulseAudio replacement, providing a pulseaudio-compatible
+# socket that can be used by applications that use libpulse.
+CONFFILES_${PN}-pulse += "${sysconfdir}/pipewire/pipewire-pulse.conf"
+FILES_${PN}-pulse = " \
+    ${sysconfdir}/pipewire/pipewire-pulse.conf \
+    ${systemd_user_unitdir}/pipewire-pulse.* \
+    ${bindir}/pipewire-pulse \
+"
+RDEPENDS_${PN}-pulse += " \
+    ${PN}-modules-protocol-pulse \
+"
+
+# alsa plugin to redirect audio to pipewire
+FILES_${PN}-alsa = "\
+    ${libdir}/alsa-lib/* \
+    ${datadir}/alsa/alsa.conf.d/* \
+"
+
+# jack drop-in libraries to redirect audio to pipewire
+CONFFILES_${PN}-jack = "${sysconfdir}/pipewire/jack.conf"
+FILES_${PN}-jack = "\
+    ${sysconfdir}/pipewire/jack.conf \
+    ${libdir}/${PW_MODULE_SUBDIR}/jack/libjack*.so.* \
+"
+
+# Example session manager. Not intended for use in production.
+CONFFILES_${PN}-media-session = "${sysconfdir}/pipewire/media-session.d/*"
+FILES_${PN}-media-session = " \
+    ${bindir}/pipewire-media-session \
+    ${sysconfdir}/pipewire/media-session.d/* \
+"
+RPROVIDES_${PN}-media-session = "virtual/pipewire-sessionmanager"
+
+# Dynamic packages (see set_dynamic_metapkg_rdepends).
+FILES_${PN}-spa-plugins = ""
+RRECOMMENDS_${PN}-spa-plugins += "${PN}-spa-plugins-meta"
+
+FILES_${PN}-spa-tools = " \
+    ${bindir}/spa-* \
+"
+
+# Dynamic packages (see set_dynamic_metapkg_rdepends).
+FILES_${PN}-modules = ""
+RRECOMMENDS_${PN}-modules += "${PN}-modules-meta"
+
+CONFFILES_${PN}-modules-rtkit = "${sysconfdir}/pipewire/client-rt.conf"
+FILES_${PN}-modules-rtkit += " \
+    ${sysconfdir}/pipewire/client-rt.conf \
+    "
+
+FILES_${PN}-alsa-card-profile = " \
+    ${datadir}/alsa-card-profile/* \
+    ${nonarch_base_libdir}/udev/rules.d/90-pipewire-alsa.rules \
+"
+
+FILES_gstreamer1.0-pipewire = " \
+    ${libdir}/gstreamer-1.0/* \
+"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0001-include-limits-header.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0001-include-limits-header.patch
new file mode 100644
index 0000000..e1383c8
--- /dev/null
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0001-include-limits-header.patch
@@ -0,0 +1,43 @@
+From 1068c7451855c3f9acde9af265b5a790073b1641 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 2 Mar 2021 14:28:27 -0800
+Subject: [PATCH] include <limits> header
+
+Fixes
+SegmentInformation.cpp:397:49: error: '::max' has not been declared; d
+id you mean 'std::max'?
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ modules/demux/adaptive/playlist/SegmentInformation.cpp | 1 +
+ modules/demux/hls/playlist/Parser.cpp                  | 1 +
+ 2 files changed, 2 insertions(+)
+
+diff --git a/modules/demux/adaptive/playlist/SegmentInformation.cpp b/modules/demux/adaptive/playlist/SegmentInformation.cpp
+index 344e155..8eeb054 100644
+--- a/modules/demux/adaptive/playlist/SegmentInformation.cpp
++++ b/modules/demux/adaptive/playlist/SegmentInformation.cpp
+@@ -34,6 +34,7 @@
+ 
+ #include <algorithm>
+ #include <cassert>
++#include <limits>
+ 
+ using namespace adaptive::playlist;
+ 
+diff --git a/modules/demux/hls/playlist/Parser.cpp b/modules/demux/hls/playlist/Parser.cpp
+index 67110e4..7439699 100644
+--- a/modules/demux/hls/playlist/Parser.cpp
++++ b/modules/demux/hls/playlist/Parser.cpp
+@@ -42,6 +42,7 @@
+ #include <map>
+ #include <cctype>
+ #include <algorithm>
++#include <limits>
+ 
+ using namespace adaptive;
+ using namespace adaptive::playlist;
+-- 
+2.30.1
+
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc_3.0.12.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc_3.0.12.bb
index 046c059..c0074aa 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc_3.0.12.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc_3.0.12.bb
@@ -25,6 +25,7 @@
            file://0003-fix-luaL-checkint.patch \
            file://0004-Use-packageconfig-to-detect-mmal-support.patch \
            file://0005-linux-thread-Use-SYS_futex-instead-of-__NR_futex.patch \
+           file://0001-include-limits-header.patch \
 "
 SRC_URI[sha256sum] = "eff458f38a92126094f44f2263c2bf2c7cdef271b48192d0fe7b1726388cf879"