hal: Fix no audio during voice call with voip in background
- First, ringtone uses audio combo device "speaker-and-headphones".
Then IN_CALL mode is set, voice call useacase starts and selects
device based on primary output. But at this moment APM hasn't
routed output to headset. Voice call usecase starts and
audio device still uses "speaker-and-headphones" combo device.
This would causes no audio issue due to no backends enabled.
And in APM, voice call usecase is not allowed to route to combo
device.
- Add combo device check before voice set up. It forces voice stop
when voice start with combo device.
CRs-Fixed: 2113931
Change-Id: I3f0b6286a2ab473c83e0caa59917de81d56b7df5
diff --git a/hal/voice.c b/hal/voice.c
index b3645be..f9e3562 100644
--- a/hal/voice.c
+++ b/hal/voice.c
@@ -216,8 +216,16 @@
uc_info->id = usecase_id;
uc_info->type = VOICE_CALL;
- uc_info->stream.out = adev->current_call_output ;
- uc_info->devices = adev->current_call_output ->devices;
+ uc_info->stream.out = adev->current_call_output;
+ uc_info->devices = adev->current_call_output->devices;
+
+ if (popcount(uc_info->devices) == 2) {
+ ALOGE("%s: Invalid combo device(%#x) for voice call", __func__,
+ uc_info->devices);
+ ret = -EIO;
+ goto error_start_voice;
+ }
+
uc_info->in_snd_device = SND_DEVICE_NONE;
uc_info->out_snd_device = SND_DEVICE_NONE;