Merge "hal: add checks for calibration buffer allocation failures"
diff --git a/hal/audio_extn/fm.c b/hal/audio_extn/fm.c
index b6f8689..ed3776c 100644
--- a/hal/audio_extn/fm.c
+++ b/hal/audio_extn/fm.c
@@ -34,6 +34,7 @@
#ifdef FM_ENABLED
#define AUDIO_PARAMETER_KEY_HANDLE_FM "handle_fm"
#define AUDIO_PARAMETER_KEY_FM_VOLUME "fm_volume"
+#define AUDIO_PARAMETER_KEY_REC_PLAY_CONC "rec_play_conc_on"
static struct pcm_config pcm_config_fm = {
.channels = 2,
@@ -280,6 +281,21 @@
fm_set_volume(adev, vol);
}
+#ifdef RECORD_PLAY_CONCURRENCY
+ ret = str_parms_get_str(parms, AUDIO_PARAMETER_KEY_REC_PLAY_CONC,
+ value, sizeof(value));
+ if ((ret >= 0)
+ && (fmmod.is_fm_running == true)) {
+
+ if (!strncmp("true", value, sizeof("true")))
+ ALOGD("Record play concurrency ON Forcing FM device reroute");
+ else
+ ALOGD("Record play concurrency OFF Forcing FM device reroute");
+
+ select_devices(adev, USECASE_AUDIO_PLAYBACK_FM);
+ fm_set_volume(adev,fmmod.fm_volume);
+ }
+#endif
exit:
ALOGV("%s: exit", __func__);
}
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 4e33dfb..ce26388 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -795,8 +795,7 @@
out_snd_device = platform_get_output_snd_device(adev->platform,
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) {
select_devices(adev, adev->active_input->usecase);
}
}
@@ -805,8 +804,10 @@
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 &&
- adev->primary_output && !adev->primary_output->standby) {
+ if ((adev->active_input->source == AUDIO_SOURCE_VOICE_COMMUNICATION ||
+ (adev->mode == AUDIO_MODE_IN_COMMUNICATION &&
+ adev->active_input->source == AUDIO_SOURCE_MIC)) &&
+ adev->primary_output && !adev->primary_output->standby) {
out_device = adev->primary_output->devices;
} else if (usecase->id == USECASE_AUDIO_RECORD_AFE_PROXY) {
out_device = AUDIO_DEVICE_OUT_TELEPHONY_TX;
diff --git a/hal/msm8916/platform.c b/hal/msm8916/platform.c
index 943a43d..ca6d79b 100644
--- a/hal/msm8916/platform.c
+++ b/hal/msm8916/platform.c
@@ -1861,7 +1861,8 @@
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) {
@@ -2244,7 +2245,6 @@
ALOGD("setting record playback concurrency to false");
my_data->rec_play_conc_set = false;
}
- str_parms_del(parms, AUDIO_PARAMETER_KEY_REC_PLAY_CONC);
}
#endif
ALOGV("%s: exit with code(%d)", __func__, ret);