diff options
author | Scott Murray <scott.murray@konsulko.com> | 2021-08-26 13:24:34 -0400 |
---|---|---|
committer | Scott Murray <scott.murray@konsulko.com> | 2021-08-26 13:35:49 -0400 |
commit | 46b8ed7b8241ccd211048a91d16dcaf844558919 (patch) | |
tree | fe021d68014850563dcafc02c68d72972731a2c9 /meta-speech-framework/meta-aac | |
parent | 37d3b1b316470fdcfebc59d5522bfbfefc025ff6 (diff) |
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 <scott.murray@konsulko.com>
Change-Id: I558d87fbdb9b0b9d9af72913c865943d5c03c2bb
Diffstat (limited to 'meta-speech-framework/meta-aac')
2 files changed, 48 insertions, 0 deletions
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 <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); |