Merge "audio: fix mic mute for SIP calls" into lmp-dev
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 78c8873..7d5456f 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -1831,8 +1831,9 @@
/*
* Instead of writing zeroes here, we could trust the hardware
* to always provide zeroes when muted.
+ * No need to acquire adev->lock to read mic_muted here as we don't change its state.
*/
- if (ret == 0 && voice_get_mic_mute(adev) && !voice_is_in_call(adev))
+ if (ret == 0 && adev->mic_muted && in->usecase != USECASE_AUDIO_RECORD_AFE_PROXY)
memset(buffer, 0, bytes);
exit:
@@ -2302,6 +2303,7 @@
ALOGD("%s: state %d\n", __func__, state);
pthread_mutex_lock(&adev->lock);
ret = voice_set_mic_mute(adev, state);
+ adev->mic_muted = state;
pthread_mutex_unlock(&adev->lock);
return ret;
diff --git a/hal/audio_hw.h b/hal/audio_hw.h
index c45cb74..e742bc7 100644
--- a/hal/audio_hw.h
+++ b/hal/audio_hw.h
@@ -211,6 +211,7 @@
struct voice voice;
unsigned int cur_hdmi_channels;
bool bt_wb_speech_enabled;
+ bool mic_muted;
int snd_card;
void *platform;