summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Laurent <elaurent@google.com>2015-10-15 17:44:04 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2015-10-15 17:44:04 +0000
commit26f06c79dd04fba38a97f2548ead140d25edde78 (patch)
treeb1e6f8e969a6eba385f97b19ee2dc58ed3121f21
parentcc3f2e8dbe76ea15472471fa374051273c441035 (diff)
parent50a38ed90672924763c4cb18773fca64588faecc (diff)
downloadhardware_qcom_audio-26f06c79dd04fba38a97f2548ead140d25edde78.tar.gz
hardware_qcom_audio-26f06c79dd04fba38a97f2548ead140d25edde78.tar.bz2
hardware_qcom_audio-26f06c79dd04fba38a97f2548ead140d25edde78.zip
Merge "hal: fix mic selection for IN_COMMUNICATION mode" into mnc-dr-dev
-rw-r--r--hal/audio_hw.c10
-rw-r--r--hal/msm8960/platform.c3
-rw-r--r--hal/msm8974/platform.c3
3 files changed, 11 insertions, 5 deletions
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 9b5a0950..2e954d67 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -643,7 +643,8 @@ int select_devices(struct audio_device *adev,
usecase->stream.out->devices);
if (usecase->stream.out == adev->primary_output &&
adev->active_input &&
- adev->active_input->source == AUDIO_SOURCE_VOICE_COMMUNICATION &&
+ (adev->active_input->source == AUDIO_SOURCE_VOICE_COMMUNICATION ||
+ adev->mode == AUDIO_MODE_IN_COMMUNICATION) &&
out_snd_device != usecase->out_snd_device) {
select_devices(adev, adev->active_input->usecase);
}
@@ -653,7 +654,9 @@ int select_devices(struct audio_device *adev,
out_snd_device = SND_DEVICE_NONE;
if (in_snd_device == SND_DEVICE_NONE) {
audio_devices_t out_device = AUDIO_DEVICE_NONE;
- if (adev->active_input->source == AUDIO_SOURCE_VOICE_COMMUNICATION) {
+ if (adev->active_input &&
+ (adev->active_input->source == AUDIO_SOURCE_VOICE_COMMUNICATION ||
+ adev->mode == AUDIO_MODE_IN_COMMUNICATION)) {
platform_set_echo_reference(adev, false, AUDIO_DEVICE_NONE);
if (usecase->id == USECASE_AUDIO_RECORD_AFE_PROXY) {
out_device = AUDIO_DEVICE_OUT_TELEPHONY_TX;
@@ -2058,7 +2061,8 @@ static int add_remove_audio_effect(const struct audio_stream *stream,
lock_input_stream(in);
pthread_mutex_lock(&in->dev->lock);
- if ((in->source == AUDIO_SOURCE_VOICE_COMMUNICATION) &&
+ if ((in->source == AUDIO_SOURCE_VOICE_COMMUNICATION ||
+ adev->mode == AUDIO_MODE_IN_COMMUNICATION) &&
in->enable_aec != enable &&
(memcmp(&desc.type, FX_IID_AEC, sizeof(effect_uuid_t)) == 0)) {
in->enable_aec = enable;
diff --git a/hal/msm8960/platform.c b/hal/msm8960/platform.c
index c78d9434..0ffe8a98 100644
--- a/hal/msm8960/platform.c
+++ b/hal/msm8960/platform.c
@@ -794,7 +794,8 @@ snd_device_t platform_get_input_snd_device(void *platform, audio_devices_t out_d
snd_device = SND_DEVICE_IN_VOICE_REC_MIC;
}
}
- } else if (source == AUDIO_SOURCE_VOICE_COMMUNICATION) {
+ } else if (source == AUDIO_SOURCE_VOICE_COMMUNICATION ||
+ mode == AUDIO_MODE_IN_COMMUNICATION) {
if (out_device & AUDIO_DEVICE_OUT_SPEAKER)
in_device = AUDIO_DEVICE_IN_BACK_MIC;
if (adev->active_input) {
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index 66da2498..c856bb0a 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -1940,7 +1940,8 @@ snd_device_t platform_get_input_snd_device(void *platform, audio_devices_t out_d
} else if (in_device & AUDIO_DEVICE_IN_WIRED_HEADSET) {
snd_device = SND_DEVICE_IN_VOICE_REC_HEADSET_MIC;
}
- } else if (source == AUDIO_SOURCE_VOICE_COMMUNICATION) {
+ } else if (source == AUDIO_SOURCE_VOICE_COMMUNICATION ||
+ mode == AUDIO_MODE_IN_COMMUNICATION) {
if (out_device & (AUDIO_DEVICE_OUT_SPEAKER | AUDIO_DEVICE_OUT_SPEAKER_SAFE))
in_device = AUDIO_DEVICE_IN_BACK_MIC;
if (adev->active_input) {