diff options
author | Matt Mower <mowerm@gmail.com> | 2016-10-18 01:00:31 -0500 |
---|---|---|
committer | Matt Mower <mowerm@gmail.com> | 2016-10-25 17:14:36 -0500 |
commit | d7a7351153d29ad653842afd86e3a950f09d249c (patch) | |
tree | 9dec23b077b16402ca10717540df15dfc469e34a | |
parent | 2cd66eb4beb1e9cc397f9f129fc74f620205922d (diff) | |
download | android_hardware_qcom_audio-d7a7351153d29ad653842afd86e3a950f09d249c.tar.gz android_hardware_qcom_audio-d7a7351153d29ad653842afd86e3a950f09d249c.tar.bz2 android_hardware_qcom_audio-d7a7351153d29ad653842afd86e3a950f09d249c.zip |
hal: Additional checks for dedicated VOIP input
Enable use of dedicated VOIP input devices under the following
conditions:
SND_DEVICE_IN_VOIP_SPEAKER_MIC: If fluence_in_spkr_mode==true, the
device used for VOIP_SPEAKER_MIC is expected to be dualmic (note there
is no separate VOIP_SPEAKER_DMIC). If instead,
fluence_in_spkr_mode==false and a dedicated voip device is desired,
then an echo reference is set.
SND_DEVICE_IN_VOIP_HANDSET_MIC: If fluence_in_voice_call==true, the
device used for VOIP_HANDSET_MIC is expected to be dualmic (note there
is no separate VOIP_HANDSET_DMIC). If instead
fluence_in_voice_call==false and a dedicated voip device is desired,
then an echo reference is set.
SND_DEVICE_IN_VOIP_HEADSET_MIC: Never uses dualmic, so an echo
reference is always set.
Change-Id: Iba2a33f7520b4f03c5857a0c7bd8a30d3d1caedb
-rw-r--r-- | hal/msm8960/platform.c | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/hal/msm8960/platform.c b/hal/msm8960/platform.c index c5361368..b7fa98ac 100644 --- a/hal/msm8960/platform.c +++ b/hal/msm8960/platform.c @@ -1534,13 +1534,25 @@ snd_device_t platform_get_input_snd_device(void *platform, audio_devices_t out_d snd_device = SND_DEVICE_IN_AANC_HANDSET_MIC; } else if (my_data->fluence_type == FLUENCE_NONE || my_data->fluence_in_voice_call == false) { - snd_device = SND_DEVICE_IN_HANDSET_MIC; + if (voice_extn_compress_voip_is_active(adev) && + voice_extn_dedicated_voip_device_prop_check()) + snd_device = SND_DEVICE_IN_VOIP_HANDSET_MIC; + else + snd_device = SND_DEVICE_IN_HANDSET_MIC; set_echo_reference(adev, true); } else { - snd_device = SND_DEVICE_IN_VOICE_DMIC; + if (voice_extn_compress_voip_is_active(adev) && + voice_extn_dedicated_voip_device_prop_check()) + snd_device = SND_DEVICE_IN_VOIP_HANDSET_MIC; + else + snd_device = SND_DEVICE_IN_VOICE_DMIC; } } else if (out_device & AUDIO_DEVICE_OUT_WIRED_HEADSET) { - snd_device = SND_DEVICE_IN_VOICE_HEADSET_MIC; + if (voice_extn_compress_voip_is_active(adev) && + voice_extn_dedicated_voip_device_prop_check()) + snd_device = SND_DEVICE_IN_VOIP_HEADSET_MIC; + else + snd_device = SND_DEVICE_IN_VOICE_HEADSET_MIC; set_echo_reference(adev, true); } else if (out_device & AUDIO_DEVICE_OUT_ALL_SCO) { if (my_data->btsco_sample_rate == SAMPLE_RATE_16KHZ) @@ -1553,11 +1565,18 @@ snd_device_t platform_get_input_snd_device(void *platform, audio_devices_t out_d my_data->fluence_in_spkr_mode) { if(my_data->fluence_type & FLUENCE_QUAD_MIC) { snd_device = SND_DEVICE_IN_VOICE_SPEAKER_QMIC; + } else if (voice_extn_compress_voip_is_active(adev) && + voice_extn_dedicated_voip_device_prop_check()) { + snd_device = SND_DEVICE_IN_VOIP_SPEAKER_MIC; } else { snd_device = SND_DEVICE_IN_VOICE_SPEAKER_DMIC; } } else { - snd_device = SND_DEVICE_IN_VOICE_SPEAKER_MIC; + if (voice_extn_compress_voip_is_active(adev) && + voice_extn_dedicated_voip_device_prop_check()) + snd_device = SND_DEVICE_IN_VOIP_SPEAKER_MIC; + else + snd_device = SND_DEVICE_IN_VOICE_SPEAKER_MIC; set_echo_reference(adev, true); } } else if (out_device & AUDIO_DEVICE_OUT_TELEPHONY_TX) |