From 78b1c4c2e80949b600e19fe97379ab50b8848204 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Wed, 13 Apr 2022 11:15:10 +0200 Subject: [PATCH] module-echo-cancel: put audio.position on properties So that a default channel layout is set and the volume can be set before the streams are negotiated. --- src/modules/module-echo-cancel.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/modules/module-echo-cancel.c b/src/modules/module-echo-cancel.c index 424f29afe..1aa142ed1 100644 --- a/src/modules/module-echo-cancel.c +++ b/src/modules/module-echo-cancel.c @@ -610,6 +610,10 @@ static int setup_streams(struct impl *impl) pw_properties_set(props, PW_KEY_NODE_LATENCY, str); else if (impl->aec->latency) pw_properties_set(props, PW_KEY_NODE_LATENCY, impl->aec->latency); + if ((str = pw_properties_get(impl->source_props, SPA_KEY_AUDIO_CHANNELS)) != NULL) + pw_properties_set(props, SPA_KEY_AUDIO_CHANNELS, str); + if ((str = pw_properties_get(impl->source_props, SPA_KEY_AUDIO_POSITION)) != NULL) + pw_properties_set(props, SPA_KEY_AUDIO_POSITION, str); impl->capture = pw_stream_new(impl->core, "Echo-Cancel Capture", props); @@ -643,6 +647,10 @@ static int setup_streams(struct impl *impl) pw_properties_set(props, PW_KEY_NODE_LATENCY, str); else if (impl->aec->latency) pw_properties_set(props, PW_KEY_NODE_LATENCY, impl->aec->latency); + if ((str = pw_properties_get(impl->sink_props, SPA_KEY_AUDIO_CHANNELS)) != NULL) + pw_properties_set(props, SPA_KEY_AUDIO_CHANNELS, str); + if ((str = pw_properties_get(impl->sink_props, SPA_KEY_AUDIO_POSITION)) != NULL) + pw_properties_set(props, SPA_KEY_AUDIO_POSITION, str); impl->playback = pw_stream_new(impl->core, "Echo-Cancel Playback", props); @@ -1024,6 +1032,8 @@ int pipewire__module_init(struct pw_impl_module *module, const char *args) copy_props(impl, props, PW_KEY_NODE_LINK_GROUP); copy_props(impl, props, PW_KEY_NODE_VIRTUAL); copy_props(impl, props, PW_KEY_NODE_LATENCY); + copy_props(impl, props, SPA_KEY_AUDIO_CHANNELS); + copy_props(impl, props, SPA_KEY_AUDIO_POSITION); impl->max_buffer_size = pw_properties_get_uint32(props,"buffer.max_size", MAX_BUFSIZE_MS);