Merge "hal: avoid audio rerouting to different device when hfp is active"
diff --git a/hal/audio_extn/audio_extn.h b/hal/audio_extn/audio_extn.h
index e17aa6b..72f8642 100644
--- a/hal/audio_extn/audio_extn.h
+++ b/hal/audio_extn/audio_extn.h
@@ -165,4 +165,10 @@
int audio_extn_dolby_set_DMID(struct audio_device *adev);
#endif
+#ifndef HFP_ENABLED
+#define audio_extn_hfp_is_active(adev) (0)
+#else
+bool audio_extn_hfp_is_active(struct audio_device *adev);
+#endif
+
#endif /* AUDIO_EXTN_H */
diff --git a/hal/audio_extn/hfp.c b/hal/audio_extn/hfp.c
index 4eb9d37..aabe804 100644
--- a/hal/audio_extn/hfp.c
+++ b/hal/audio_extn/hfp.c
@@ -217,6 +217,17 @@
return ret;
}
+bool audio_extn_hfp_is_active(struct audio_device *adev)
+{
+ struct audio_usecase *hfp_usecase = NULL;
+ hfp_usecase = get_usecase_from_list(adev, USECASE_AUDIO_HFP_SCO);
+
+ if (hfp_usecase != NULL)
+ return true;
+ else
+ return false;
+}
+
void audio_extn_hfp_set_parameters(struct audio_device *adev, struct str_parms *parms)
{
int ret;
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index ff33b7d..7f4bb7a 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -595,6 +595,7 @@
struct audio_usecase *usecase = NULL;
struct audio_usecase *vc_usecase = NULL;
struct audio_usecase *voip_usecase = NULL;
+ struct audio_usecase *hfp_usecase = NULL;
struct listnode *node;
int status = 0;
@@ -633,6 +634,12 @@
in_snd_device = voip_usecase->in_snd_device;
out_snd_device = voip_usecase->out_snd_device;
}
+ } else if (audio_extn_hfp_is_active(adev)) {
+ hfp_usecase = get_usecase_from_list(adev, USECASE_AUDIO_HFP_SCO);
+ if (hfp_usecase->devices & AUDIO_DEVICE_OUT_ALL_CODEC_BACKEND) {
+ in_snd_device = hfp_usecase->in_snd_device;
+ out_snd_device = hfp_usecase->out_snd_device;
+ }
}
if (usecase->type == PCM_PLAYBACK) {
usecase->devices = usecase->stream.out->devices;