hal: Permit device switch for primary output in a voip call
The device switch from speaker to earpiece or vice versa fails
during a QQ voip call. Currently, we use the same devices for
all usecases as that of voice/voip call and avoid switching the
same for other usecases when a voip/voice call is active. At
times, voip call has primary output which uses deep buffer path.
With current design in place, we do not permit device switch on
deep buffer path since voip call is active despite the rx on
primary output.
Do not select voip usecase devices if the output stream uses
primary output or in effect permit switching.
Change-Id: Ie61a7d7d8f27d55a393d173a724697045f66e1d6
CRs-Fixed: 685222
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index a357e98..d5c61f8 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -666,7 +666,8 @@
} else if (voice_extn_compress_voip_is_active(adev)) {
voip_usecase = get_usecase_from_list(adev, USECASE_COMPRESS_VOIP_CALL);
if ((voip_usecase->devices & AUDIO_DEVICE_OUT_ALL_CODEC_BACKEND) &&
- (usecase->devices & AUDIO_DEVICE_OUT_ALL_CODEC_BACKEND)) {
+ (usecase->devices & AUDIO_DEVICE_OUT_ALL_CODEC_BACKEND) &&
+ (voip_usecase->stream.out != adev->primary_output)) {
in_snd_device = voip_usecase->in_snd_device;
out_snd_device = voip_usecase->out_snd_device;
}