Loading hal/msm8974/platform.c +11 −2 Original line number Diff line number Diff line Loading @@ -238,6 +238,7 @@ static char * device_table[SND_DEVICE_MAX] = { [SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES] = "speaker-and-headphones", [SND_DEVICE_OUT_SPEAKER_AND_LINE] = "speaker-and-line", [SND_DEVICE_OUT_VOICE_HANDSET] = "voice-handset", [SND_DEVICE_OUT_VOICE_HAC_HANDSET] = "voice-hac-handset", [SND_DEVICE_OUT_VOICE_SPEAKER] = "voice-speaker", [SND_DEVICE_OUT_VOICE_HEADPHONES] = "voice-headphones", [SND_DEVICE_OUT_VOICE_LINE] = "voice-line", Loading Loading @@ -324,6 +325,7 @@ static int acdb_device_table[SND_DEVICE_MAX] = { [SND_DEVICE_OUT_SPEAKER_AND_LINE] = 77, [SND_DEVICE_OUT_VOICE_HANDSET] = 7, [SND_DEVICE_OUT_VOICE_SPEAKER] = 14, [SND_DEVICE_OUT_VOICE_HAC_HANDSET] = 53, [SND_DEVICE_OUT_VOICE_HEADPHONES] = 10, [SND_DEVICE_OUT_VOICE_LINE] = 77, [SND_DEVICE_OUT_HDMI] = 18, Loading Loading @@ -414,6 +416,7 @@ static struct name_to_index snd_device_name_index[SND_DEVICE_MAX] = { {TO_NAME_INDEX(SND_DEVICE_OUT_SPEAKER_AND_HDMI)}, {TO_NAME_INDEX(SND_DEVICE_OUT_BT_SCO)}, {TO_NAME_INDEX(SND_DEVICE_OUT_BT_SCO_WB)}, {TO_NAME_INDEX(SND_DEVICE_OUT_VOICE_HAC_HANDSET)}, {TO_NAME_INDEX(SND_DEVICE_OUT_VOICE_TTY_FULL_HEADPHONES)}, {TO_NAME_INDEX(SND_DEVICE_OUT_VOICE_TTY_VCO_HEADPHONES)}, {TO_NAME_INDEX(SND_DEVICE_OUT_VOICE_TTY_HCO_HANDSET)}, Loading Loading @@ -1553,7 +1556,9 @@ snd_device_t platform_get_output_snd_device(void *platform, audio_devices_t devi snd_device = SND_DEVICE_OUT_TRANSMISSION_FM; #endif } else if (devices & AUDIO_DEVICE_OUT_EARPIECE) { if (audio_extn_should_use_handset_anc(channel_count)) if (adev->voice.hac) snd_device = SND_DEVICE_OUT_VOICE_HAC_HANDSET; else if (audio_extn_should_use_handset_anc(channel_count)) snd_device = SND_DEVICE_OUT_ANC_HANDSET; else if (voice_extn_compress_voip_is_active(adev) && voice_extn_dedicated_voip_device_prop_check()) Loading Loading @@ -1603,6 +1608,10 @@ snd_device_t platform_get_output_snd_device(void *platform, audio_devices_t devi snd_device = SND_DEVICE_OUT_TRANSMISSION_FM; #endif } else if (devices & AUDIO_DEVICE_OUT_EARPIECE) { /*HAC support for voice-ish audio (eg visual voicemail)*/ if (adev->voice.hac) snd_device = SND_DEVICE_OUT_VOICE_HAC_HANDSET; else snd_device = SND_DEVICE_OUT_HANDSET; #ifdef AFE_PROXY_ENABLED } else if (devices & AUDIO_DEVICE_OUT_PROXY) { Loading hal/msm8974/platform.h +1 −0 Original line number Diff line number Diff line Loading @@ -75,6 +75,7 @@ enum { SND_DEVICE_OUT_VOICE_TTY_FULL_HEADPHONES, SND_DEVICE_OUT_VOICE_TTY_VCO_HEADPHONES, SND_DEVICE_OUT_VOICE_TTY_HCO_HANDSET, SND_DEVICE_OUT_VOICE_HAC_HANDSET, SND_DEVICE_OUT_VOICE_TX, SND_DEVICE_OUT_AFE_PROXY, SND_DEVICE_OUT_USB_HEADSET, Loading hal/voice.c +16 −0 Original line number Diff line number Diff line Loading @@ -481,6 +481,21 @@ int voice_set_parameters(struct audio_device *adev, struct str_parms *parms) } } err = str_parms_get_str(parms, AUDIO_PARAMETER_KEY_HAC, value, sizeof(value)); if (err >= 0) { bool hac = false; str_parms_del(parms, AUDIO_PARAMETER_KEY_HAC); if (strcmp(value, AUDIO_PARAMETER_VALUE_HAC_ON) == 0) hac = true; if (hac != adev->voice.hac) { adev->voice.hac = hac; if (voice_is_call_state_active(adev)) voice_update_devices_for_all_voice_usecases(adev); } } err = str_parms_get_str(parms, AUDIO_PARAMETER_KEY_INCALLMUSIC, value, sizeof(value)); if (err >= 0) { Loading @@ -503,6 +518,7 @@ void voice_init(struct audio_device *adev) memset(&adev->voice, 0, sizeof(adev->voice)); adev->voice.tty_mode = TTY_MODE_OFF; adev->voice.hac = false; adev->voice.volume = 1.0f; adev->voice.mic_mute = false; adev->voice.in_call = false; Loading hal/voice.h +1 −0 Original line number Diff line number Diff line Loading @@ -58,6 +58,7 @@ struct voice_session { struct voice { struct voice_session session[MAX_VOICE_SESSIONS]; int tty_mode; bool hac; bool mic_mute; float volume; bool is_in_call; Loading Loading
hal/msm8974/platform.c +11 −2 Original line number Diff line number Diff line Loading @@ -238,6 +238,7 @@ static char * device_table[SND_DEVICE_MAX] = { [SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES] = "speaker-and-headphones", [SND_DEVICE_OUT_SPEAKER_AND_LINE] = "speaker-and-line", [SND_DEVICE_OUT_VOICE_HANDSET] = "voice-handset", [SND_DEVICE_OUT_VOICE_HAC_HANDSET] = "voice-hac-handset", [SND_DEVICE_OUT_VOICE_SPEAKER] = "voice-speaker", [SND_DEVICE_OUT_VOICE_HEADPHONES] = "voice-headphones", [SND_DEVICE_OUT_VOICE_LINE] = "voice-line", Loading Loading @@ -324,6 +325,7 @@ static int acdb_device_table[SND_DEVICE_MAX] = { [SND_DEVICE_OUT_SPEAKER_AND_LINE] = 77, [SND_DEVICE_OUT_VOICE_HANDSET] = 7, [SND_DEVICE_OUT_VOICE_SPEAKER] = 14, [SND_DEVICE_OUT_VOICE_HAC_HANDSET] = 53, [SND_DEVICE_OUT_VOICE_HEADPHONES] = 10, [SND_DEVICE_OUT_VOICE_LINE] = 77, [SND_DEVICE_OUT_HDMI] = 18, Loading Loading @@ -414,6 +416,7 @@ static struct name_to_index snd_device_name_index[SND_DEVICE_MAX] = { {TO_NAME_INDEX(SND_DEVICE_OUT_SPEAKER_AND_HDMI)}, {TO_NAME_INDEX(SND_DEVICE_OUT_BT_SCO)}, {TO_NAME_INDEX(SND_DEVICE_OUT_BT_SCO_WB)}, {TO_NAME_INDEX(SND_DEVICE_OUT_VOICE_HAC_HANDSET)}, {TO_NAME_INDEX(SND_DEVICE_OUT_VOICE_TTY_FULL_HEADPHONES)}, {TO_NAME_INDEX(SND_DEVICE_OUT_VOICE_TTY_VCO_HEADPHONES)}, {TO_NAME_INDEX(SND_DEVICE_OUT_VOICE_TTY_HCO_HANDSET)}, Loading Loading @@ -1553,7 +1556,9 @@ snd_device_t platform_get_output_snd_device(void *platform, audio_devices_t devi snd_device = SND_DEVICE_OUT_TRANSMISSION_FM; #endif } else if (devices & AUDIO_DEVICE_OUT_EARPIECE) { if (audio_extn_should_use_handset_anc(channel_count)) if (adev->voice.hac) snd_device = SND_DEVICE_OUT_VOICE_HAC_HANDSET; else if (audio_extn_should_use_handset_anc(channel_count)) snd_device = SND_DEVICE_OUT_ANC_HANDSET; else if (voice_extn_compress_voip_is_active(adev) && voice_extn_dedicated_voip_device_prop_check()) Loading Loading @@ -1603,6 +1608,10 @@ snd_device_t platform_get_output_snd_device(void *platform, audio_devices_t devi snd_device = SND_DEVICE_OUT_TRANSMISSION_FM; #endif } else if (devices & AUDIO_DEVICE_OUT_EARPIECE) { /*HAC support for voice-ish audio (eg visual voicemail)*/ if (adev->voice.hac) snd_device = SND_DEVICE_OUT_VOICE_HAC_HANDSET; else snd_device = SND_DEVICE_OUT_HANDSET; #ifdef AFE_PROXY_ENABLED } else if (devices & AUDIO_DEVICE_OUT_PROXY) { Loading
hal/msm8974/platform.h +1 −0 Original line number Diff line number Diff line Loading @@ -75,6 +75,7 @@ enum { SND_DEVICE_OUT_VOICE_TTY_FULL_HEADPHONES, SND_DEVICE_OUT_VOICE_TTY_VCO_HEADPHONES, SND_DEVICE_OUT_VOICE_TTY_HCO_HANDSET, SND_DEVICE_OUT_VOICE_HAC_HANDSET, SND_DEVICE_OUT_VOICE_TX, SND_DEVICE_OUT_AFE_PROXY, SND_DEVICE_OUT_USB_HEADSET, Loading
hal/voice.c +16 −0 Original line number Diff line number Diff line Loading @@ -481,6 +481,21 @@ int voice_set_parameters(struct audio_device *adev, struct str_parms *parms) } } err = str_parms_get_str(parms, AUDIO_PARAMETER_KEY_HAC, value, sizeof(value)); if (err >= 0) { bool hac = false; str_parms_del(parms, AUDIO_PARAMETER_KEY_HAC); if (strcmp(value, AUDIO_PARAMETER_VALUE_HAC_ON) == 0) hac = true; if (hac != adev->voice.hac) { adev->voice.hac = hac; if (voice_is_call_state_active(adev)) voice_update_devices_for_all_voice_usecases(adev); } } err = str_parms_get_str(parms, AUDIO_PARAMETER_KEY_INCALLMUSIC, value, sizeof(value)); if (err >= 0) { Loading @@ -503,6 +518,7 @@ void voice_init(struct audio_device *adev) memset(&adev->voice, 0, sizeof(adev->voice)); adev->voice.tty_mode = TTY_MODE_OFF; adev->voice.hac = false; adev->voice.volume = 1.0f; adev->voice.mic_mute = false; adev->voice.in_call = false; Loading
hal/voice.h +1 −0 Original line number Diff line number Diff line Loading @@ -58,6 +58,7 @@ struct voice_session { struct voice { struct voice_session session[MAX_VOICE_SESSIONS]; int tty_mode; bool hac; bool mic_mute; float volume; bool is_in_call; Loading