pipewire: Update PipeWire to v1.0.0 and WirePlumber to v0.4.17 46/29546/3
authorAshok Sidipotu <ashok.sidipotu@collabora.com>
Wed, 20 Dec 2023 00:05:41 +0000 (01:05 +0100)
committerJan-Simon Moeller <jsmoeller@linuxfoundation.org>
Fri, 29 Dec 2023 15:57:56 +0000 (15:57 +0000)
The PipeWire project is immensely proud to announce the 1.0 release
of PipeWire.

Highlights of Pipewire.
- Fix a memfd/dmabuf leak when uploading buffers while shutting down.
- Handle concurrent jack_port_get_buffer() calls because ardour seems to be doing this.
- Improve time reporting (less jitter) in ALSA when using IRQ.
- Many doc improvements

Highlights of wireplumber.
- Fixed a reference counting issue in the object managers that could cause crashes due to memory corruption (#534)
- Fixed an issue with filters linking to wrong targets, often with two sets of links (#536)
- Fixed a crash in the endpoints policy that would show up when log messages were enabled at level 3 or higher

Bug-AGL: SPEC-5022
Change-Id: Ibeff85f7f4b02b8b667e4c6caf6beab4487854bc
Signed-off-by: Ashok Sidipotu <ashok.sidipotu@collabora.com>
Reviewed-on: https://gerrit.automotivelinux.org/gerrit/c/AGL/meta-agl/+/29546
Tested-by: Jenkins Job builder account
ci-image-build: Jenkins Job builder account
ci-image-boot-test: Jenkins Job builder account
Reviewed-by: Jan-Simon Moeller <jsmoeller@linuxfoundation.org>
meta-pipewire/recipes-multimedia/pipewire/pipewire/0002-gst-avoid-reporting-error-twice.patch [deleted file]
meta-pipewire/recipes-multimedia/pipewire/pipewire/0003-gstpipewiresrc-break-out-of-wait_started-also-on-STA.patch [deleted file]
meta-pipewire/recipes-multimedia/pipewire/pipewire_1.0.0.bb [moved from meta-pipewire/recipes-multimedia/pipewire/pipewire_0.3.83.bb with 99% similarity]
meta-pipewire/recipes-multimedia/pipewire/pipewire_1.0.0.bbappend [moved from meta-pipewire/recipes-multimedia/pipewire/pipewire_0.3.83.bbappend with 86% similarity]
meta-pipewire/recipes-multimedia/wireplumber/wireplumber/0001-policy-endpoint-device.lua-fix-dangling-logs-issue.patch [deleted file]
meta-pipewire/recipes-multimedia/wireplumber/wireplumber_git.bb

diff --git a/meta-pipewire/recipes-multimedia/pipewire/pipewire/0002-gst-avoid-reporting-error-twice.patch b/meta-pipewire/recipes-multimedia/pipewire/pipewire/0002-gst-avoid-reporting-error-twice.patch
deleted file mode 100644 (file)
index fa123a0..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-From cbb12450c2f258ef3ac8239889784e1a97dfeaa8 Mon Sep 17 00:00:00 2001
-From: George Kiagiadakis <george.kiagiadakis@collabora.com>
-Date: Wed, 8 Nov 2023 18:12:59 +0200
-Subject: [PATCH 1/2] gst: avoid reporting error twice
-
-First, make the error permanent by calling pw_stream_set_error()
-and when this emits an error state again, report that to GStreamer.
-
-Do the same in pipewiresink, which didn't even have the
-pw_stream_set_error() call before, so the stream wasn't really going
-into an error state at all.
-
-Upstream-Status: Pipewire MR1763 merged
----
- src/gst/gstpipewiresink.c |  9 +++++++--
- src/gst/gstpipewiresrc.c  | 10 +++++++---
- 2 files changed, 14 insertions(+), 5 deletions(-)
-
-diff --git a/src/gst/gstpipewiresink.c b/src/gst/gstpipewiresink.c
-index 36d158095..001ede9d5 100644
---- a/src/gst/gstpipewiresink.c
-+++ b/src/gst/gstpipewiresink.c
-@@ -532,8 +532,13 @@ on_state_changed (void *data, enum pw_stream_state old, enum pw_stream_state sta
-         pw_stream_trigger_process (pwsink->stream);
-       break;
-     case PW_STREAM_STATE_ERROR:
--      GST_ELEMENT_ERROR (pwsink, RESOURCE, FAILED,
--          ("stream error: %s", error), (NULL));
-+      /* make the error permanent, if it is not already;
-+         pw_stream_set_error() will recursively call us again */
-+      if (pw_stream_get_state (pwsink->stream, NULL) != PW_STREAM_STATE_ERROR)
-+        pw_stream_set_error (pwsink->stream, -EPIPE, "%s", error);
-+      else
-+        GST_ELEMENT_ERROR (pwsink, RESOURCE, FAILED,
-+            ("stream error: %s", error), (NULL));
-       break;
-   }
-   pw_thread_loop_signal (pwsink->core->loop, FALSE);
-diff --git a/src/gst/gstpipewiresrc.c b/src/gst/gstpipewiresrc.c
-index 0514e4caa..e473338ba 100644
---- a/src/gst/gstpipewiresrc.c
-+++ b/src/gst/gstpipewiresrc.c
-@@ -681,9 +681,13 @@ on_state_changed (void *data,
-     case PW_STREAM_STATE_STREAMING:
-       break;
-     case PW_STREAM_STATE_ERROR:
--      pw_stream_set_error (pwsrc->stream, -EPIPE, "%s", error);
--      GST_ELEMENT_ERROR (pwsrc, RESOURCE, FAILED,
--          ("stream error: %s", error), (NULL));
-+      /* make the error permanent, if it is not already;
-+         pw_stream_set_error() will recursively call us again */
-+      if (pw_stream_get_state (pwsrc->stream, NULL) != PW_STREAM_STATE_ERROR)
-+        pw_stream_set_error (pwsrc->stream, -EPIPE, "%s", error);
-+      else
-+        GST_ELEMENT_ERROR (pwsrc, RESOURCE, FAILED,
-+            ("stream error: %s", error), (NULL));
-       break;
-   }
-   pw_thread_loop_signal (pwsrc->core->loop, FALSE);
---
-2.41.0
-
diff --git a/meta-pipewire/recipes-multimedia/pipewire/pipewire/0003-gstpipewiresrc-break-out-of-wait_started-also-on-STA.patch b/meta-pipewire/recipes-multimedia/pipewire/pipewire/0003-gstpipewiresrc-break-out-of-wait_started-also-on-STA.patch
deleted file mode 100644 (file)
index 29bc504..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-From 4fb8417b201033ae2de20032b44d52cae1394ff8 Mon Sep 17 00:00:00 2001
-From: George Kiagiadakis <george.kiagiadakis@collabora.com>
-Date: Wed, 8 Nov 2023 18:23:02 +0200
-Subject: [PATCH 2/2] gstpipewiresrc: break out of wait_started() also on
- STATE_UNCONNECTED
-
-When the session manager sends an error to the client, it typically
-also destroys the node after the error, which causes the stream to go
-to STATE_UNCONNECTED via proxy_removed(). In that case, make sure
-we exit the loop early, otherwise it will take 30 seconds to unblock
-gst_element_set_state()
-
-Upstream-Status: Pipewire MR1763 merged
----
- src/gst/gstpipewiresrc.c | 7 +++----
- 1 file changed, 3 insertions(+), 4 deletions(-)
-
-diff --git a/src/gst/gstpipewiresrc.c b/src/gst/gstpipewiresrc.c
-index e473338ba..e3b86b373 100644
---- a/src/gst/gstpipewiresrc.c
-+++ b/src/gst/gstpipewiresrc.c
-@@ -783,10 +783,9 @@ wait_started (GstPipeWireSrc *this)
-     GST_DEBUG_OBJECT (this, "waiting for started signal, state now %s",
-         pw_stream_state_as_string (state));
-
--    if (state == PW_STREAM_STATE_ERROR)
--      break;
--
--    if (this->flushing) {
-+    if (state == PW_STREAM_STATE_ERROR ||
-+        state == PW_STREAM_STATE_UNCONNECTED ||
-+        this->flushing) {
-       state = PW_STREAM_STATE_ERROR;
-       break;
-     }
---
-2.41.0
-
@@ -20,8 +20,8 @@ SECTION = "multimedia"
 
 DEPENDS = "dbus"
 
-# v0.3.83
-SRCREV = "6fd7f39dbec9c3a65aa2de0123c6bfbda7c53a85"
+# v1.0.0(El Presidente)
+SRCREV = "4debdcd40b055b3eaa83a8f4443aa990ea566bfe"
 SRC_URI = "git://gitlab.freedesktop.org/pipewire/pipewire.git;branch=master;protocol=https"
 
 S = "${WORKDIR}/git"
@@ -233,6 +233,7 @@ FILES:${PN} = " \
     ${datadir}/pipewire/filter-chain.conf \
     ${datadir}/pipewire/filter-chain \
     ${systemd_user_unitdir}/pipewire.* \
+    ${systemd_system_unitdir}/pipewire* \
     ${bindir}/pipewire \
     ${datadir}/pipewire/pipewire-avb.conf \
     ${bindir}/pipewire-avb \
@@ -1,7 +1,5 @@
 SRC_URI += "\
     file://0001-systemd-Do-not-override-rootprefix.patch \
-    file://0002-gst-avoid-reporting-error-twice.patch \
-    file://0003-gstpipewiresrc-break-out-of-wait_started-also-on-STA.patch \
 "
 
 PACKAGECONFIG = "\
diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber/0001-policy-endpoint-device.lua-fix-dangling-logs-issue.patch b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber/0001-policy-endpoint-device.lua-fix-dangling-logs-issue.patch
deleted file mode 100644 (file)
index ef71921..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-From d1624b1648512ead7f6b222bc64cda94016fb0c6 Mon Sep 17 00:00:00 2001
-From: Ashok Sidipotu <ashok.sidipotu@collabora.com>
-Date: Fri, 24 Nov 2023 02:45:41 +0100
-Subject: [PATCH] policy-endpoint-device.lua: fix dangling logs issue.
-
-When logs are enabled sometimes the new log msgs added to print the link
-string can assert.
-
-Upstream-Status: WirePlumber MR570 submitted
----
- src/scripts/policy-endpoint-device.lua | 7 ++++---
- 1 file changed, 4 insertions(+), 3 deletions(-)
-
-diff --git a/src/scripts/policy-endpoint-device.lua b/src/scripts/policy-endpoint-device.lua
-index 4440c17c..4c74077b 100644
---- a/src/scripts/policy-endpoint-device.lua
-+++ b/src/scripts/policy-endpoint-device.lua
-@@ -116,7 +116,7 @@ function createLink (si_ep, si_target)
-   local in_item = nil
-   local ep_props = si_ep.properties
-   local target_props = si_target.properties
--
-+  local is_filter = (ep_props["node.link-group"] ~= nil)
-   if target_props["item.node.direction"] == "input" then
-     -- playback
-     out_item = si_ep
-@@ -131,10 +131,10 @@ function createLink (si_ep, si_target)
-     (is_filter and ep_props["node.name"] or ep_props["name"]),
-     target_props["node.name"])
-
--  Log.info(si_link, link_string)
--
-   -- create and configure link
-   local si_link = SessionItem ( "si-standard-link" )
-+
-+  Log.info(si_link, "creating link " .. link_string)
-   if not si_link:configure {
-     ["out.item"] = out_item,
-     ["in.item"] = in_item,
-@@ -146,6 +146,7 @@ function createLink (si_ep, si_target)
-     return
-   end
-
-+
-   -- register
-   si_link:register ()
-
index 0d7e354..698b9a5 100644 (file)
@@ -13,16 +13,15 @@ DEPENDS = "glib-2.0 glib-2.0-native pipewire lua"
 
 SRC_URI = "\
     git://gitlab.freedesktop.org/pipewire/wireplumber.git;protocol=https;branch=master \
-    file://0001-policy-endpoint-device.lua-fix-dangling-logs-issue.patch \
 "
-# v0.4.16
-SRCREV = "0d249b8a13d7168fe54fa6eb1db1c4a5fcc8d3f8"
+# v0.4.17
+SRCREV = "d3eb77b292655cef333a8f4cab4e861415bc37c2"
 
 # patches to be able to compile with lower version of meson that is available in AGL.
 SRC_URI += "\
 "
 
-PV = "0.4.16"
+PV = "0.4.17"
 S  = "${WORKDIR}/git"
 
 WPAPI="0.4"