From 4552fe15b3578219d7e21cb77018a5f9425cd593 Mon Sep 17 00:00:00 2001 From: Sebastian Krzyszkowiak Date: Thu, 29 Oct 2020 02:11:22 +0100 Subject: [PATCH] filter-apply: Look for filter parameters also in device properties Some filters take parameters that effectively describe the hardware they're being applied to (like echo-cancel allowing to specify the mic array parameters for better noise filtering). This allows system integrators to set default parameters for such modules per-device, which will get used when the stream doesn't specify their own. Part-of: --- src/modules/module-filter-apply.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/modules/module-filter-apply.c b/src/modules/module-filter-apply.c index c9f3f39..1c12782 100644 --- a/src/modules/module-filter-apply.c +++ b/src/modules/module-filter-apply.c @@ -146,15 +146,20 @@ static const char* get_filter_name(pa_object *o, bool is_sink_input) { static const char* get_filter_parameters(pa_object *o, const char *want, bool is_sink_input) { const char *parameters; char *prop_parameters; - pa_proplist *pl; + pa_proplist *pl, *device_pl; - if (is_sink_input) + if (is_sink_input) { pl = PA_SINK_INPUT(o)->proplist; - else + device_pl = PA_SINK_INPUT(o)->sink->proplist; + } else { pl = PA_SOURCE_OUTPUT(o)->proplist; + device_pl = PA_SOURCE_OUTPUT(o)->source->proplist; + } prop_parameters = pa_sprintf_malloc(PA_PROP_FILTER_APPLY_PARAMETERS, want); parameters = pa_proplist_gets(pl, prop_parameters); + if (!parameters) + parameters = pa_proplist_gets(device_pl, prop_parameters); pa_xfree(prop_parameters); return parameters; -- 2.7.4