Merge 2cc132a765140dd64412d9f6578a449322e0dfc5 on remote branch
Change-Id: I644654fca5ff49cf8cf35e908302df4afdaedd52
diff --git a/configs/sdm845/audio_policy_configuration.xml b/configs/sdm845/audio_policy_configuration.xml
index 285ba02..9d726f5 100644
--- a/configs/sdm845/audio_policy_configuration.xml
+++ b/configs/sdm845/audio_policy_configuration.xml
@@ -171,6 +171,7 @@
<profile name="" format="AUDIO_FORMAT_PCM_FLOAT"
samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000,88200,96000,176400,192000"
channelMasks="AUDIO_CHANNEL_IN_5POINT1,AUDIO_CHANNEL_INDEX_MASK_6,AUDIO_CHANNEL_IN_7POINT1,AUDIO_CHANNEL_INDEX_MASK_8"/>
+ </mixPort>
<mixPort name="incall_music_uplink" role="source"
flags="AUDIO_OUTPUT_FLAG_INCALL_MUSIC">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 9b29a21..8fc2961 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -2723,7 +2723,10 @@
(is_single_device_type_equal(&usecase->device_list,
AUDIO_DEVICE_IN_USB_HEADSET) &&
is_single_device_type_equal(&vc_usecase->device_list,
- AUDIO_DEVICE_OUT_USB_HEADSET)))) {
+ AUDIO_DEVICE_OUT_USB_HEADSET))||
+ (is_single_device_type_equal(&usecase->device_list,
+ AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET) &&
+ is_codec_backend_out_device_type(&vc_usecase->device_list)))) {
in_snd_device = vc_usecase->in_snd_device;
out_snd_device = vc_usecase->out_snd_device;
}
@@ -8758,12 +8761,14 @@
struct listnode *node;
list_for_each(node, &adev->usecase_list) {
usecase = node_to_item(node, struct audio_usecase, list);
- if (usecase->stream.in && (usecase->type == PCM_CAPTURE) &&
+ if (usecase->stream.in && (usecase->type == PCM_CAPTURE ||
+ usecase->type == VOICE_CALL) &&
(!is_btsco_device(SND_DEVICE_NONE, usecase->in_snd_device))) {
ALOGD("BT_SCO ON, switch all in use case to it");
select_devices(adev, usecase->id);
}
- if (usecase->stream.out && (usecase->type == PCM_PLAYBACK) &&
+ if (usecase->stream.out && (usecase->type == PCM_PLAYBACK ||
+ usecase->type == VOICE_CALL) &&
(!is_btsco_device(usecase->out_snd_device, SND_DEVICE_NONE))) {
ALOGD("BT_SCO ON, switch all out use case to it");
select_devices(adev, usecase->id);