From: Ashok Sidipotu Date: Wed, 20 Dec 2023 00:05:41 +0000 (+0100) Subject: pipewire: Update PipeWire to v1.0.0 and WirePlumber to v0.4.17 X-Git-Tag: 16.93.0~5 X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=commitdiff_plain;h=4b6d23485d23dad66b2e5572cdedacca5c1f6362;p=AGL%2Fmeta-agl.git pipewire: Update PipeWire to v1.0.0 and WirePlumber to v0.4.17 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 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 --- 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 index fa123a07f..000000000 --- a/meta-pipewire/recipes-multimedia/pipewire/pipewire/0002-gst-avoid-reporting-error-twice.patch +++ /dev/null @@ -1,62 +0,0 @@ -From cbb12450c2f258ef3ac8239889784e1a97dfeaa8 Mon Sep 17 00:00:00 2001 -From: George Kiagiadakis -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 index 29bc50472..000000000 --- a/meta-pipewire/recipes-multimedia/pipewire/pipewire/0003-gstpipewiresrc-break-out-of-wait_started-also-on-STA.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 4fb8417b201033ae2de20032b44d52cae1394ff8 Mon Sep 17 00:00:00 2001 -From: George Kiagiadakis -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 - diff --git a/meta-pipewire/recipes-multimedia/pipewire/pipewire_0.3.83.bb b/meta-pipewire/recipes-multimedia/pipewire/pipewire_1.0.0.bb similarity index 99% rename from meta-pipewire/recipes-multimedia/pipewire/pipewire_0.3.83.bb rename to meta-pipewire/recipes-multimedia/pipewire/pipewire_1.0.0.bb index 0ac4d0937..641c97e8f 100644 --- a/meta-pipewire/recipes-multimedia/pipewire/pipewire_0.3.83.bb +++ b/meta-pipewire/recipes-multimedia/pipewire/pipewire_1.0.0.bb @@ -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 \ diff --git a/meta-pipewire/recipes-multimedia/pipewire/pipewire_0.3.83.bbappend b/meta-pipewire/recipes-multimedia/pipewire/pipewire_1.0.0.bbappend similarity index 86% rename from meta-pipewire/recipes-multimedia/pipewire/pipewire_0.3.83.bbappend rename to meta-pipewire/recipes-multimedia/pipewire/pipewire_1.0.0.bbappend index 6b920abd3..beb7c0817 100644 --- a/meta-pipewire/recipes-multimedia/pipewire/pipewire_0.3.83.bbappend +++ b/meta-pipewire/recipes-multimedia/pipewire/pipewire_1.0.0.bbappend @@ -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 index ef7192192..000000000 --- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber/0001-policy-endpoint-device.lua-fix-dangling-logs-issue.patch +++ /dev/null @@ -1,47 +0,0 @@ -From d1624b1648512ead7f6b222bc64cda94016fb0c6 Mon Sep 17 00:00:00 2001 -From: Ashok Sidipotu -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 () - diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber_git.bb b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber_git.bb index 0d7e354fb..698b9a534 100644 --- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber_git.bb +++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber_git.bb @@ -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"