diff options
-rw-r--r-- | configs/sdm845/audio_policy_configuration.xml | 1 | ||||
-rw-r--r-- | hal/audio_hw.c | 11 |
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); |