Loading hal/audio_hw.c +3 −1 Original line number Diff line number Diff line Loading @@ -551,7 +551,8 @@ int select_devices(struct audio_device *adev, usecase->stream.out->devices); if (usecase->stream.out == adev->primary_output && adev->active_input && adev->active_input->source == AUDIO_SOURCE_VOICE_COMMUNICATION) { adev->active_input->source == AUDIO_SOURCE_VOICE_COMMUNICATION && out_snd_device != usecase->out_snd_device) { select_devices(adev, adev->active_input->usecase); } } Loading @@ -563,6 +564,7 @@ int select_devices(struct audio_device *adev, if (adev->active_input->source == AUDIO_SOURCE_VOICE_COMMUNICATION && adev->primary_output && !adev->primary_output->standby) { out_device = adev->primary_output->devices; platform_set_echo_reference(adev, false, AUDIO_DEVICE_NONE); } else if (usecase->id == USECASE_AUDIO_RECORD_AFE_PROXY) { out_device = AUDIO_DEVICE_OUT_TELEPHONY_TX; } Loading hal/msm8974/platform.c +15 −13 Original line number Diff line number Diff line Loading @@ -87,6 +87,7 @@ struct platform_data { struct csd_data *csd; bool ext_speaker; bool ext_earpiece; char ec_ref_mixer_path[64]; }; static int pcm_device_table[AUDIO_USECASE_MAX][2] = { Loading Loading @@ -409,23 +410,24 @@ bool is_operator_tmus() void platform_set_echo_reference(struct audio_device *adev, bool enable, audio_devices_t out_device) { char mixer_path[50] = { 0 } ; struct platform_data *my_data = (struct platform_data *)adev->platform; snd_device_t snd_device = SND_DEVICE_NONE; struct listnode *node; struct audio_usecase *usecase; strcpy(mixer_path, "echo-reference"); if (strcmp(my_data->ec_ref_mixer_path, "")) { ALOGV("%s: diabling %s", __func__, my_data->ec_ref_mixer_path); audio_route_reset_and_update_path(adev->audio_route, my_data->ec_ref_mixer_path); } if (enable) { strcpy(my_data->ec_ref_mixer_path, "echo-reference"); if (out_device != AUDIO_DEVICE_NONE) { snd_device = platform_get_output_snd_device(adev->platform, out_device); platform_add_backend_name(adev->platform, mixer_path, snd_device); platform_add_backend_name(adev->platform, my_data->ec_ref_mixer_path, snd_device); } if (enable) audio_route_apply_and_update_path(adev->audio_route, mixer_path); else audio_route_reset_and_update_path(adev->audio_route, mixer_path); ALOGV("Setting EC Reference: %d for %s", enable, mixer_path); ALOGD("%s: enabling %s", __func__, my_data->ec_ref_mixer_path); audio_route_apply_and_update_path(adev->audio_route, my_data->ec_ref_mixer_path); } } static struct csd_data *open_csd_client(bool i2s_ext_modem) Loading Loading
hal/audio_hw.c +3 −1 Original line number Diff line number Diff line Loading @@ -551,7 +551,8 @@ int select_devices(struct audio_device *adev, usecase->stream.out->devices); if (usecase->stream.out == adev->primary_output && adev->active_input && adev->active_input->source == AUDIO_SOURCE_VOICE_COMMUNICATION) { adev->active_input->source == AUDIO_SOURCE_VOICE_COMMUNICATION && out_snd_device != usecase->out_snd_device) { select_devices(adev, adev->active_input->usecase); } } Loading @@ -563,6 +564,7 @@ int select_devices(struct audio_device *adev, if (adev->active_input->source == AUDIO_SOURCE_VOICE_COMMUNICATION && adev->primary_output && !adev->primary_output->standby) { out_device = adev->primary_output->devices; platform_set_echo_reference(adev, false, AUDIO_DEVICE_NONE); } else if (usecase->id == USECASE_AUDIO_RECORD_AFE_PROXY) { out_device = AUDIO_DEVICE_OUT_TELEPHONY_TX; } Loading
hal/msm8974/platform.c +15 −13 Original line number Diff line number Diff line Loading @@ -87,6 +87,7 @@ struct platform_data { struct csd_data *csd; bool ext_speaker; bool ext_earpiece; char ec_ref_mixer_path[64]; }; static int pcm_device_table[AUDIO_USECASE_MAX][2] = { Loading Loading @@ -409,23 +410,24 @@ bool is_operator_tmus() void platform_set_echo_reference(struct audio_device *adev, bool enable, audio_devices_t out_device) { char mixer_path[50] = { 0 } ; struct platform_data *my_data = (struct platform_data *)adev->platform; snd_device_t snd_device = SND_DEVICE_NONE; struct listnode *node; struct audio_usecase *usecase; strcpy(mixer_path, "echo-reference"); if (strcmp(my_data->ec_ref_mixer_path, "")) { ALOGV("%s: diabling %s", __func__, my_data->ec_ref_mixer_path); audio_route_reset_and_update_path(adev->audio_route, my_data->ec_ref_mixer_path); } if (enable) { strcpy(my_data->ec_ref_mixer_path, "echo-reference"); if (out_device != AUDIO_DEVICE_NONE) { snd_device = platform_get_output_snd_device(adev->platform, out_device); platform_add_backend_name(adev->platform, mixer_path, snd_device); platform_add_backend_name(adev->platform, my_data->ec_ref_mixer_path, snd_device); } if (enable) audio_route_apply_and_update_path(adev->audio_route, mixer_path); else audio_route_reset_and_update_path(adev->audio_route, mixer_path); ALOGV("Setting EC Reference: %d for %s", enable, mixer_path); ALOGD("%s: enabling %s", __func__, my_data->ec_ref_mixer_path); audio_route_apply_and_update_path(adev->audio_route, my_data->ec_ref_mixer_path); } } static struct csd_data *open_csd_client(bool i2s_ext_modem) Loading