aac-module-system-audio: Update PipeWire gstreamer plugins 98/26598/1 12.0.1 lamprey/12.0.1 lamprey_12.0.1
authorScott Murray <scott.murray@konsulko.com>
Thu, 26 Aug 2021 17:24:34 +0000 (13:24 -0400)
committerScott Murray <scott.murray@konsulko.com>
Thu, 26 Aug 2021 17:42:54 +0000 (13:42 -0400)
Update PipeWire sink and source to handle drop of pwaudiosink and
pwaudiosrc in favor of pipewire* replacements.  However, testing
has found that Alexa does not work with pipewiresrc (input hangs
after first interaction), so for now use "alsasrc device=pipewire"
as a workaround as recommended by upstream.  This should be
revisited when PipeWire is next updated.

Bug-AGL: SPEC-4058

Signed-off-by: Scott Murray <scott.murray@konsulko.com>
Change-Id: I5f0ebbe80bbafa656dd8e6c542bab666cb481395

meta-speech-framework/meta-aac/recipes-modules/aac-module-system-audio/aac-module-system-audio.bbappend
meta-speech-framework/meta-aac/recipes-modules/aac-module-system-audio/files/0001-update-pipewire-gstreamer-plugins.patch [new file with mode: 0644]

index 3584717..94e9f94 100644 (file)
@@ -1,6 +1,10 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
+
 # Needed for the required gstreamer-app-1.0 pkgconfig bits
 DEPENDS += "gstreamer1.0-plugins-base"
 
+AAC_PATCHES += "file://0001-update-pipewire-gstreamer-plugins.patch"
+
 # Need to enable PipeWire support
 EXTRA_OECMAKE += "-DUSE_PIPEWIRE=1"
 
diff --git a/meta-speech-framework/meta-aac/recipes-modules/aac-module-system-audio/files/0001-update-pipewire-gstreamer-plugins.patch b/meta-speech-framework/meta-aac/recipes-modules/aac-module-system-audio/files/0001-update-pipewire-gstreamer-plugins.patch
new file mode 100644 (file)
index 0000000..bc27758
--- /dev/null
@@ -0,0 +1,44 @@
+Update PipeWire gstreamer plugins
+
+Update PipeWire sink and source to handle drop of pwaudiosink and
+pwaudiosrc in favor of pipewire* replacements.  However, testing
+has found that Alexa does not work with pipewiresrc (input hangs
+after first interaction), so for now use "alsasrc device=pipewire"
+as a workaround as recommended by upstream.
+
+Given that Amazon has dropped AGL support, this patch will need to
+be carried locally.
+
+Upstream-Status: Inappropriate [no upstream]
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+---
+ lib/aal/src/gstreamer/player.c   | 2 +-
+ lib/aal/src/gstreamer/recorder.c | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/lib/aal/src/gstreamer/player.c b/lib/aal/src/gstreamer/player.c
+index 5dd6627..5ff9402 100644
+--- a/lib/aal/src/gstreamer/player.c
++++ b/lib/aal/src/gstreamer/player.c
+@@ -142,7 +142,7 @@ static aal_handle_t gstreamer_player_create(const aal_attributes_t* attr, aal_au
+     } else {
+ #ifdef USE_PIPEWIRE
+         g_info("Using Pipewire device: %s\n", attr->device);
+-        sink = gstreamer_create_and_add_element(bin, "pwaudiosink", "sink");
++        sink = gstreamer_create_and_add_element(bin, "pipewiresink", "sink");
+         if (sink) {
+             GstStructure* s = gst_structure_new("properties", "media.role", G_TYPE_STRING, attr->device, NULL);
+             g_object_set(G_OBJECT(sink), "stream-properties", s, NULL);
+diff --git a/lib/aal/src/gstreamer/recorder.c b/lib/aal/src/gstreamer/recorder.c
+index ff6d464..a13b000 100644
+--- a/lib/aal/src/gstreamer/recorder.c
++++ b/lib/aal/src/gstreamer/recorder.c
+@@ -69,7 +69,7 @@ static aal_handle_t gstreamer_recorder_create(const aal_attributes_t* attr, aal_
+         strncpy(src_desc, "autoaudiosrc", sizeof(src_desc) - 1);
+     } else {
+ #ifdef USE_PIPEWIRE
+-        snprintf(src_desc, sizeof(src_desc), "pwaudiosrc stream-properties=\"properties,media.role=%s\"", attr->device);
++        snprintf(src_desc, sizeof(src_desc), "alsasrc device=pipewire");
+ #else
+         g_info("Using ALSA device: %s\n", attr->device);
+         snprintf(src_desc, sizeof(src_desc), "alsasrc device=%s", attr->device);