summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configs/sdm845/audio_policy_configuration.xml1
-rw-r--r--hal/audio_hw.c11
2 files changed, 9 insertions, 3 deletions
diff --git a/configs/sdm845/audio_policy_configuration.xml b/configs/sdm845/audio_policy_configuration.xml
index 285ba026..9d726f5d 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 9b29a219..8fc29614 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -2723,7 +2723,10 @@ int select_devices(struct audio_device *adev, audio_usecase_t uc_id)
(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 @@ static int adev_set_parameters(struct audio_hw_device *dev, const char *kvpairs)
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);