Loading hal/audio_hw.c +12 −8 Original line number Diff line number Diff line Loading @@ -2158,12 +2158,15 @@ static int add_remove_audio_effect(const struct audio_stream *stream, lock_input_stream(in); pthread_mutex_lock(&in->dev->lock); if ((in->source == AUDIO_SOURCE_VOICE_COMMUNICATION || in->source == AUDIO_SOURCE_VOICE_RECOGNITION || adev->mode == AUDIO_MODE_IN_COMMUNICATION) && in->enable_aec != enable && (memcmp(&desc.type, FX_IID_AEC, sizeof(effect_uuid_t)) == 0)) { in->enable_aec = enable; if (!enable) platform_set_echo_reference(in->dev, enable, AUDIO_DEVICE_NONE); if (in->source == AUDIO_SOURCE_VOICE_COMMUNICATION || adev->mode == AUDIO_MODE_IN_COMMUNICATION) { adev->enable_voicerx = enable; struct audio_usecase *usecase; struct listnode *node; Loading @@ -2174,6 +2177,7 @@ static int add_remove_audio_effect(const struct audio_stream *stream, break; } } } if (!in->standby) select_devices(in->dev, in->usecase); } Loading hal/msm8974/platform.c +25 −4 Original line number Diff line number Diff line Loading @@ -258,6 +258,7 @@ static const char * const device_table[SND_DEVICE_MAX] = { [SND_DEVICE_IN_VOICE_REC_MIC] = "voice-rec-mic", [SND_DEVICE_IN_VOICE_REC_MIC_NS] = "voice-rec-mic", [SND_DEVICE_IN_VOICE_REC_MIC_AEC] = "voice-rec-mic", [SND_DEVICE_IN_VOICE_REC_DMIC_STEREO] = "voice-rec-dmic-ef", [SND_DEVICE_IN_VOICE_REC_DMIC_FLUENCE] = "voice-rec-dmic-ef-fluence", [SND_DEVICE_IN_VOICE_REC_HEADSET_MIC] = "headset-mic", Loading @@ -272,6 +273,8 @@ static const char * const device_table[SND_DEVICE_MAX] = { [SND_DEVICE_IN_CAPTURE_VI_FEEDBACK] = "vi-feedback", [SND_DEVICE_IN_HANDSET_TMIC] = "three-mic", [SND_DEVICE_IN_HANDSET_QMIC] = "quad-mic", [SND_DEVICE_IN_HANDSET_TMIC_AEC] = "three-mic", [SND_DEVICE_IN_HANDSET_QMIC_AEC] = "quad-mic", }; /* ACDB IDs (audio DSP path configuration IDs) for each sound device */ Loading Loading @@ -347,6 +350,7 @@ static int acdb_device_table[SND_DEVICE_MAX] = { [SND_DEVICE_IN_VOICE_REC_MIC] = ACDB_ID_VOICE_REC_MIC, [SND_DEVICE_IN_VOICE_REC_MIC_NS] = 113, [SND_DEVICE_IN_VOICE_REC_MIC_AEC] = 112, [SND_DEVICE_IN_VOICE_REC_DMIC_STEREO] = 35, [SND_DEVICE_IN_VOICE_REC_DMIC_FLUENCE] = 43, [SND_DEVICE_IN_VOICE_REC_HEADSET_MIC] = ACDB_ID_HEADSET_MIC_AEC, Loading @@ -361,6 +365,8 @@ static int acdb_device_table[SND_DEVICE_MAX] = { [SND_DEVICE_IN_CAPTURE_VI_FEEDBACK] = 102, [SND_DEVICE_IN_HANDSET_TMIC] = 125, [SND_DEVICE_IN_HANDSET_QMIC] = 125, [SND_DEVICE_IN_HANDSET_TMIC_AEC] = 125, /* override this for new target to 140 */ [SND_DEVICE_IN_HANDSET_QMIC_AEC] = 125, /* override this for new target to 140 */ }; struct name_to_index { Loading Loading @@ -443,6 +449,7 @@ static const struct name_to_index snd_device_name_index[SND_DEVICE_MAX] = { {TO_NAME_INDEX(SND_DEVICE_IN_VOICE_REC_MIC)}, {TO_NAME_INDEX(SND_DEVICE_IN_VOICE_REC_MIC_NS)}, {TO_NAME_INDEX(SND_DEVICE_IN_VOICE_REC_MIC_AEC)}, {TO_NAME_INDEX(SND_DEVICE_IN_VOICE_REC_DMIC_STEREO)}, {TO_NAME_INDEX(SND_DEVICE_IN_VOICE_REC_DMIC_FLUENCE)}, {TO_NAME_INDEX(SND_DEVICE_IN_VOICE_REC_HEADSET_MIC)}, Loading @@ -455,6 +462,8 @@ static const struct name_to_index snd_device_name_index[SND_DEVICE_MAX] = { {TO_NAME_INDEX(SND_DEVICE_IN_CAPTURE_VI_FEEDBACK)}, {TO_NAME_INDEX(SND_DEVICE_IN_HANDSET_TMIC)}, {TO_NAME_INDEX(SND_DEVICE_IN_HANDSET_QMIC)}, {TO_NAME_INDEX(SND_DEVICE_IN_HANDSET_TMIC_AEC)}, {TO_NAME_INDEX(SND_DEVICE_IN_HANDSET_QMIC_AEC)}, }; static char * backend_tag_table[SND_DEVICE_MAX] = {0}; Loading Loading @@ -2052,13 +2061,22 @@ snd_device_t platform_get_input_snd_device(void *platform, audio_devices_t out_d if (my_data->fluence_in_voice_rec && channel_count == 1) { if ((my_data->fluence_type == FLUENCE_PRO_ENABLE) && (my_data->source_mic_type & SOURCE_QUAD_MIC)) { if (adev->active_input->enable_aec) snd_device = SND_DEVICE_IN_HANDSET_QMIC_AEC; else snd_device = SND_DEVICE_IN_HANDSET_QMIC; } else if ((my_data->fluence_type == FLUENCE_PRO_ENABLE) && (my_data->source_mic_type & SOURCE_THREE_MIC)) { if (adev->active_input->enable_aec) snd_device = SND_DEVICE_IN_HANDSET_TMIC_AEC; else snd_device = SND_DEVICE_IN_HANDSET_TMIC; } else if (((my_data->fluence_type == FLUENCE_PRO_ENABLE) || (my_data->fluence_type == FLUENCE_ENABLE)) && (my_data->source_mic_type & SOURCE_DUAL_MIC)) { if (adev->active_input->enable_aec) snd_device = SND_DEVICE_IN_HANDSET_DMIC_AEC; else snd_device = SND_DEVICE_IN_VOICE_REC_DMIC_FLUENCE; } platform_set_echo_reference(adev, true, out_device); Loading @@ -2075,7 +2093,10 @@ snd_device_t platform_get_input_snd_device(void *platform, audio_devices_t out_d if (snd_device == SND_DEVICE_NONE) { if (adev->active_input->enable_ns) snd_device = SND_DEVICE_IN_VOICE_REC_MIC_NS; else else if (adev->active_input->enable_aec) { snd_device = SND_DEVICE_IN_VOICE_REC_MIC_AEC; platform_set_echo_reference(adev, true, out_device); } else snd_device = SND_DEVICE_IN_VOICE_REC_MIC; } } else if (in_device & AUDIO_DEVICE_IN_WIRED_HEADSET) { Loading hal/msm8974/platform.h +3 −0 Original line number Diff line number Diff line Loading @@ -128,6 +128,7 @@ enum { SND_DEVICE_IN_VOICE_REC_MIC, SND_DEVICE_IN_VOICE_REC_MIC_NS, SND_DEVICE_IN_VOICE_REC_MIC_AEC, SND_DEVICE_IN_VOICE_REC_DMIC_STEREO, SND_DEVICE_IN_VOICE_REC_DMIC_FLUENCE, SND_DEVICE_IN_VOICE_REC_HEADSET_MIC, Loading @@ -143,6 +144,8 @@ enum { SND_DEVICE_IN_HANDSET_TMIC, SND_DEVICE_IN_HANDSET_QMIC, SND_DEVICE_IN_HANDSET_TMIC_AEC, SND_DEVICE_IN_HANDSET_QMIC_AEC, SND_DEVICE_IN_END, SND_DEVICE_MAX = SND_DEVICE_IN_END, Loading Loading
hal/audio_hw.c +12 −8 Original line number Diff line number Diff line Loading @@ -2158,12 +2158,15 @@ static int add_remove_audio_effect(const struct audio_stream *stream, lock_input_stream(in); pthread_mutex_lock(&in->dev->lock); if ((in->source == AUDIO_SOURCE_VOICE_COMMUNICATION || in->source == AUDIO_SOURCE_VOICE_RECOGNITION || adev->mode == AUDIO_MODE_IN_COMMUNICATION) && in->enable_aec != enable && (memcmp(&desc.type, FX_IID_AEC, sizeof(effect_uuid_t)) == 0)) { in->enable_aec = enable; if (!enable) platform_set_echo_reference(in->dev, enable, AUDIO_DEVICE_NONE); if (in->source == AUDIO_SOURCE_VOICE_COMMUNICATION || adev->mode == AUDIO_MODE_IN_COMMUNICATION) { adev->enable_voicerx = enable; struct audio_usecase *usecase; struct listnode *node; Loading @@ -2174,6 +2177,7 @@ static int add_remove_audio_effect(const struct audio_stream *stream, break; } } } if (!in->standby) select_devices(in->dev, in->usecase); } Loading
hal/msm8974/platform.c +25 −4 Original line number Diff line number Diff line Loading @@ -258,6 +258,7 @@ static const char * const device_table[SND_DEVICE_MAX] = { [SND_DEVICE_IN_VOICE_REC_MIC] = "voice-rec-mic", [SND_DEVICE_IN_VOICE_REC_MIC_NS] = "voice-rec-mic", [SND_DEVICE_IN_VOICE_REC_MIC_AEC] = "voice-rec-mic", [SND_DEVICE_IN_VOICE_REC_DMIC_STEREO] = "voice-rec-dmic-ef", [SND_DEVICE_IN_VOICE_REC_DMIC_FLUENCE] = "voice-rec-dmic-ef-fluence", [SND_DEVICE_IN_VOICE_REC_HEADSET_MIC] = "headset-mic", Loading @@ -272,6 +273,8 @@ static const char * const device_table[SND_DEVICE_MAX] = { [SND_DEVICE_IN_CAPTURE_VI_FEEDBACK] = "vi-feedback", [SND_DEVICE_IN_HANDSET_TMIC] = "three-mic", [SND_DEVICE_IN_HANDSET_QMIC] = "quad-mic", [SND_DEVICE_IN_HANDSET_TMIC_AEC] = "three-mic", [SND_DEVICE_IN_HANDSET_QMIC_AEC] = "quad-mic", }; /* ACDB IDs (audio DSP path configuration IDs) for each sound device */ Loading Loading @@ -347,6 +350,7 @@ static int acdb_device_table[SND_DEVICE_MAX] = { [SND_DEVICE_IN_VOICE_REC_MIC] = ACDB_ID_VOICE_REC_MIC, [SND_DEVICE_IN_VOICE_REC_MIC_NS] = 113, [SND_DEVICE_IN_VOICE_REC_MIC_AEC] = 112, [SND_DEVICE_IN_VOICE_REC_DMIC_STEREO] = 35, [SND_DEVICE_IN_VOICE_REC_DMIC_FLUENCE] = 43, [SND_DEVICE_IN_VOICE_REC_HEADSET_MIC] = ACDB_ID_HEADSET_MIC_AEC, Loading @@ -361,6 +365,8 @@ static int acdb_device_table[SND_DEVICE_MAX] = { [SND_DEVICE_IN_CAPTURE_VI_FEEDBACK] = 102, [SND_DEVICE_IN_HANDSET_TMIC] = 125, [SND_DEVICE_IN_HANDSET_QMIC] = 125, [SND_DEVICE_IN_HANDSET_TMIC_AEC] = 125, /* override this for new target to 140 */ [SND_DEVICE_IN_HANDSET_QMIC_AEC] = 125, /* override this for new target to 140 */ }; struct name_to_index { Loading Loading @@ -443,6 +449,7 @@ static const struct name_to_index snd_device_name_index[SND_DEVICE_MAX] = { {TO_NAME_INDEX(SND_DEVICE_IN_VOICE_REC_MIC)}, {TO_NAME_INDEX(SND_DEVICE_IN_VOICE_REC_MIC_NS)}, {TO_NAME_INDEX(SND_DEVICE_IN_VOICE_REC_MIC_AEC)}, {TO_NAME_INDEX(SND_DEVICE_IN_VOICE_REC_DMIC_STEREO)}, {TO_NAME_INDEX(SND_DEVICE_IN_VOICE_REC_DMIC_FLUENCE)}, {TO_NAME_INDEX(SND_DEVICE_IN_VOICE_REC_HEADSET_MIC)}, Loading @@ -455,6 +462,8 @@ static const struct name_to_index snd_device_name_index[SND_DEVICE_MAX] = { {TO_NAME_INDEX(SND_DEVICE_IN_CAPTURE_VI_FEEDBACK)}, {TO_NAME_INDEX(SND_DEVICE_IN_HANDSET_TMIC)}, {TO_NAME_INDEX(SND_DEVICE_IN_HANDSET_QMIC)}, {TO_NAME_INDEX(SND_DEVICE_IN_HANDSET_TMIC_AEC)}, {TO_NAME_INDEX(SND_DEVICE_IN_HANDSET_QMIC_AEC)}, }; static char * backend_tag_table[SND_DEVICE_MAX] = {0}; Loading Loading @@ -2052,13 +2061,22 @@ snd_device_t platform_get_input_snd_device(void *platform, audio_devices_t out_d if (my_data->fluence_in_voice_rec && channel_count == 1) { if ((my_data->fluence_type == FLUENCE_PRO_ENABLE) && (my_data->source_mic_type & SOURCE_QUAD_MIC)) { if (adev->active_input->enable_aec) snd_device = SND_DEVICE_IN_HANDSET_QMIC_AEC; else snd_device = SND_DEVICE_IN_HANDSET_QMIC; } else if ((my_data->fluence_type == FLUENCE_PRO_ENABLE) && (my_data->source_mic_type & SOURCE_THREE_MIC)) { if (adev->active_input->enable_aec) snd_device = SND_DEVICE_IN_HANDSET_TMIC_AEC; else snd_device = SND_DEVICE_IN_HANDSET_TMIC; } else if (((my_data->fluence_type == FLUENCE_PRO_ENABLE) || (my_data->fluence_type == FLUENCE_ENABLE)) && (my_data->source_mic_type & SOURCE_DUAL_MIC)) { if (adev->active_input->enable_aec) snd_device = SND_DEVICE_IN_HANDSET_DMIC_AEC; else snd_device = SND_DEVICE_IN_VOICE_REC_DMIC_FLUENCE; } platform_set_echo_reference(adev, true, out_device); Loading @@ -2075,7 +2093,10 @@ snd_device_t platform_get_input_snd_device(void *platform, audio_devices_t out_d if (snd_device == SND_DEVICE_NONE) { if (adev->active_input->enable_ns) snd_device = SND_DEVICE_IN_VOICE_REC_MIC_NS; else else if (adev->active_input->enable_aec) { snd_device = SND_DEVICE_IN_VOICE_REC_MIC_AEC; platform_set_echo_reference(adev, true, out_device); } else snd_device = SND_DEVICE_IN_VOICE_REC_MIC; } } else if (in_device & AUDIO_DEVICE_IN_WIRED_HEADSET) { Loading
hal/msm8974/platform.h +3 −0 Original line number Diff line number Diff line Loading @@ -128,6 +128,7 @@ enum { SND_DEVICE_IN_VOICE_REC_MIC, SND_DEVICE_IN_VOICE_REC_MIC_NS, SND_DEVICE_IN_VOICE_REC_MIC_AEC, SND_DEVICE_IN_VOICE_REC_DMIC_STEREO, SND_DEVICE_IN_VOICE_REC_DMIC_FLUENCE, SND_DEVICE_IN_VOICE_REC_HEADSET_MIC, Loading @@ -143,6 +144,8 @@ enum { SND_DEVICE_IN_HANDSET_TMIC, SND_DEVICE_IN_HANDSET_QMIC, SND_DEVICE_IN_HANDSET_TMIC_AEC, SND_DEVICE_IN_HANDSET_QMIC_AEC, SND_DEVICE_IN_END, SND_DEVICE_MAX = SND_DEVICE_IN_END, Loading