From e0cc07210086359cea69fd25b6b1af16f5b3cc51 Mon Sep 17 00:00:00 2001 From: Dmitry Sharshakov Date: Sat, 14 Jan 2023 09:23:09 +0300 Subject: [PATCH] filter-chain: use equal rate for capture and playback If only one of rates is provided, propagate it. If both are provided and are inequal, warn. This configuration appears to be broken for obvious reasons --- src/modules/module-filter-chain.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/modules/module-filter-chain.c b/src/modules/module-filter-chain.c index b3b75dd8a..94f102d29 100644 --- a/src/modules/module-filter-chain.c +++ b/src/modules/module-filter-chain.c @@ -2337,6 +2337,18 @@ int pipewire__module_init(struct pw_impl_module *module, const char *args) parse_audio_info(impl->capture_props, &impl->capture_info); parse_audio_info(impl->playback_props, &impl->playback_info); + if (impl->capture_info.rate && !impl->playback_info.rate) + impl->playback_info.rate = impl->capture_info.rate; + else if (impl->playback_info.rate && !impl->capture_info.rate) + impl->capture_info.rate = !impl->playback_info.rate; + else if (impl->capture_info.rate != impl->playback_info.rate) { + pw_log_warn("Both capture and playback rate are set, but" + " they are different. Using the highest of two. This behaviour" + " is deprecated, please use equal rates in the module config"); + impl->playback_info.rate = impl->capture_info.rate = + SPA_MAX(impl->playback_info.rate, impl->capture_info.rate); + } + if ((str = pw_properties_get(props, PW_KEY_NODE_NAME)) == NULL) { pw_properties_setf(props, PW_KEY_NODE_NAME, "filter-chain-%u-%u", pid, id);