hal: fix incorrect VOIP input device selection
When VoIP starts, enable_aec flag has been set to
true for input stream. But VoIP tx device still
selects normal input device instead of AEC input
device.
Fix this by adding MODE_IN_COMM condition to ensure
proper device is selected..
CRs-Fixed: 2213163
Change-Id: Ib01b0f418e518f32d414deaacc5ae2df289b76c4
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index c7186d9..e190378 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -5420,7 +5420,8 @@
lock_input_stream(in);
pthread_mutex_lock(&in->dev->lock);
- if ((in->source == AUDIO_SOURCE_VOICE_COMMUNICATION) &&
+ if ((in->source == AUDIO_SOURCE_VOICE_COMMUNICATION ||
+ in->dev->mode == AUDIO_MODE_IN_COMMUNICATION) &&
in->enable_aec != enable &&
(memcmp(&desc.type, FX_IID_AEC, sizeof(effect_uuid_t)) == 0)) {
in->enable_aec = enable;
@@ -5434,7 +5435,8 @@
(memcmp(&desc.type, FX_IID_NS, sizeof(effect_uuid_t)) == 0)) {
in->enable_ns = enable;
if (!in->standby) {
- if (in->source == AUDIO_SOURCE_VOICE_COMMUNICATION) {
+ if (in->source == AUDIO_SOURCE_VOICE_COMMUNICATION ||
+ in->dev->mode == AUDIO_MODE_IN_COMMUNICATION) {
if (enable_disable_effect(in->dev, EFFECT_NS, enable) == ENOSYS)
select_devices(in->dev, in->usecase);
} else
@@ -6673,7 +6675,8 @@
bool valid_ch = audio_channel_count_from_in_mask(in->channel_mask) == 1;
#ifndef COMPRESS_VOIP_ENABLED
- if (valid_rate && valid_ch) {
+ if (valid_rate && valid_ch &&
+ in->dev->mode == AUDIO_MODE_IN_COMMUNICATION) {
in->usecase = USECASE_AUDIO_RECORD_VOIP;
in->config = default_pcm_config_voip_copp;
in->config.period_size = VOIP_IO_BUF_SIZE(in->sample_rate,