From 46b8ed7b8241ccd211048a91d16dcaf844558919 Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Thu, 26 Aug 2021 13:24:34 -0400 Subject: aac-module-system-audio: 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. This should be revisited when PipeWire is next updated. Bug-AGL: SPEC-4058 Signed-off-by: Scott Murray Change-Id: I558d87fbdb9b0b9d9af72913c865943d5c03c2bb --- .../aac-module-system-audio.bbappend | 4 ++ .../0001-update-pipewire-gstreamer-plugins.patch | 44 ++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 meta-speech-framework/meta-aac/recipes-modules/aac-module-system-audio/files/0001-update-pipewire-gstreamer-plugins.patch diff --git a/meta-speech-framework/meta-aac/recipes-modules/aac-module-system-audio/aac-module-system-audio.bbappend b/meta-speech-framework/meta-aac/recipes-modules/aac-module-system-audio/aac-module-system-audio.bbappend index da046d01..7417b494 100644 --- a/meta-speech-framework/meta-aac/recipes-modules/aac-module-system-audio/aac-module-system-audio.bbappend +++ b/meta-speech-framework/meta-aac/recipes-modules/aac-module-system-audio/aac-module-system-audio.bbappend @@ -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 index 00000000..bc277588 --- /dev/null +++ b/meta-speech-framework/meta-aac/recipes-modules/aac-module-system-audio/files/0001-update-pipewire-gstreamer-plugins.patch @@ -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 +--- + 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); -- cgit 1.2.3-korg