Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3eddbdba authored by Matt Mower's avatar Matt Mower Committed by Arne Coucheron
Browse files

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
parent a7528511
Loading
Loading
Loading
Loading
+23 −4
Original line number Diff line number Diff line
@@ -1634,12 +1634,24 @@ 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) {
                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 {
                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) {
            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) {
@@ -1653,10 +1665,17 @@ 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 {
                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);
            }