From: Arun Raghavan Date: Wed, 20 Apr 2011 12:15:26 +0000 (+0530) Subject: filter-heuristics: Only apply AEC if we're not already on a phone sink X-Git-Tag: 1.0_branch~615 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=42b378b13028751cbdd607cb6b7c840b9fb28876;p=profile%2Fivi%2Fpulseaudio.git filter-heuristics: Only apply AEC if we're not already on a phone sink This makes sure that we don't apply AEC on sinks that are already connected to a "phone" device, the assumptiong being that anything marked as such either doesn't have need it, or handles it itself. --- diff --git a/src/modules/module-filter-heuristics.c b/src/modules/module-filter-heuristics.c index bd8a600..a385ff2 100644 --- a/src/modules/module-filter-heuristics.c +++ b/src/modules/module-filter-heuristics.c @@ -50,7 +50,7 @@ struct userdata { }; static pa_hook_result_t sink_input_put_cb(pa_core *core, pa_sink_input *i, struct userdata *u) { - const char *role; + const char *sink_role, *si_role; pa_core_assert_ref(core); pa_sink_input_assert_ref(i); @@ -60,7 +60,10 @@ static pa_hook_result_t sink_input_put_cb(pa_core *core, pa_sink_input *i, struc if (pa_proplist_gets(i->proplist, PA_PROP_FILTER_WANT)) return PA_HOOK_OK; - if ((role = pa_proplist_gets(i->proplist, PA_PROP_MEDIA_ROLE)) && pa_streq(role, "phone")) + if ((sink_role = pa_proplist_gets(i->sink->proplist, PA_PROP_DEVICE_INTENDED_ROLES)) && strstr(sink_role, "phone")) + return PA_HOOK_OK; + + if ((si_role = pa_proplist_gets(i->proplist, PA_PROP_MEDIA_ROLE)) && pa_streq(si_role, "phone")) pa_proplist_sets(i->proplist, PA_PROP_FILTER_WANT, "echo-cancel"); return PA_HOOK_OK;