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

Commit 4ed97553 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "hal: ensure voip tx update base on the rx path"

parents d09e7e5e dcf967a3
Loading
Loading
Loading
Loading
+15 −6
Original line number Diff line number Diff line
@@ -2131,7 +2131,13 @@ int select_devices(struct audio_device *adev, audio_usecase_t uc_id)
            if (out_snd_device == SND_DEVICE_NONE) {
                out_snd_device = platform_get_output_snd_device(adev->platform,
                                            usecase->stream.out);
                if (usecase->stream.out == adev->primary_output &&
                voip_usecase = get_usecase_from_list(adev, USECASE_AUDIO_PLAYBACK_VOIP);
                if (voip_usecase == NULL)
                    voip_usecase = get_usecase_from_list(adev, adev->primary_output->usecase);

                if ((usecase->stream.out != NULL &&
                     voip_usecase != NULL &&
                     usecase->stream.out->usecase == voip_usecase->id) &&
                    adev->active_input &&
                    out_snd_device != usecase->out_snd_device) {
                    select_devices(adev, adev->active_input->usecase);
@@ -2149,8 +2155,11 @@ int select_devices(struct audio_device *adev, audio_usecase_t uc_id)
                if (adev->active_input &&
                    (adev->active_input->source == AUDIO_SOURCE_VOICE_COMMUNICATION ||
                    (adev->mode == AUDIO_MODE_IN_COMMUNICATION &&
                     adev->active_input->source == AUDIO_SOURCE_MIC)) &&
                     adev->primary_output && !adev->primary_output->standby) {
                     adev->active_input->source == AUDIO_SOURCE_MIC))) {
                    voip_usecase = get_usecase_from_list(adev, USECASE_AUDIO_PLAYBACK_VOIP);
                    if (voip_usecase != NULL && voip_usecase->stream.out != NULL)
                        out_device = voip_usecase->stream.out->devices;
                    else if (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) {
+10 −0
Original line number Diff line number Diff line
@@ -4655,6 +4655,16 @@ snd_device_t platform_get_input_snd_device(void *platform, audio_devices_t out_d
              (mode == AUDIO_MODE_IN_COMMUNICATION)) {
        if (out_device & AUDIO_DEVICE_OUT_SPEAKER)
            in_device = AUDIO_DEVICE_IN_BACK_MIC;
        else if (out_device & AUDIO_DEVICE_OUT_EARPIECE)
            in_device = AUDIO_DEVICE_IN_BUILTIN_MIC;
        else if (out_device & AUDIO_DEVICE_OUT_WIRED_HEADSET)
            in_device = AUDIO_DEVICE_IN_WIRED_HEADSET;
        else if (out_device & AUDIO_DEVICE_OUT_USB_DEVICE)
             in_device = AUDIO_DEVICE_IN_USB_DEVICE;

        in_device = ((out_device == AUDIO_DEVICE_NONE) ?
                      AUDIO_DEVICE_IN_BUILTIN_MIC : in_device) & ~AUDIO_DEVICE_BIT_IN;

        if (adev->active_input) {
            snd_device = get_snd_device_for_voice_comm(my_data, out_device, in_device);
        }
+10 −0
Original line number Diff line number Diff line
@@ -4490,6 +4490,16 @@ snd_device_t platform_get_input_snd_device(void *platform, audio_devices_t out_d
              (mode == AUDIO_MODE_IN_COMMUNICATION)) {
        if (out_device & AUDIO_DEVICE_OUT_SPEAKER)
            in_device = AUDIO_DEVICE_IN_BACK_MIC;
        else if (out_device & AUDIO_DEVICE_OUT_EARPIECE)
            in_device = AUDIO_DEVICE_IN_BUILTIN_MIC;
        else if (out_device & AUDIO_DEVICE_OUT_WIRED_HEADSET)
            in_device = AUDIO_DEVICE_IN_WIRED_HEADSET;
        else if (out_device & AUDIO_DEVICE_OUT_USB_DEVICE)
            in_device = AUDIO_DEVICE_IN_USB_DEVICE;

        in_device = ((out_device == AUDIO_DEVICE_NONE) ?
                      AUDIO_DEVICE_IN_BUILTIN_MIC : in_device) & ~AUDIO_DEVICE_BIT_IN;

        if (adev->active_input) {
            snd_device = get_snd_device_for_voice_comm(my_data, out_device, in_device);
        }