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

Commit 0a99fcf6 authored by kunleiz's avatar kunleiz
Browse files

hal: Use default backend sample rate during device switch

When music and VoIP happen concurrently, and music outputs
with 44.1Khz.  During device switch from speaker to handset,
due to handset and speaker are not same backend, backend
sample rate is set to 44.1Khz, not 48Khz. This causes mute
issue happens.

Fix it by adding backend port comparsion to ensure current
audio device is handset or speaker, and then set sample rate
to 48Khz if backend is same as speaker or handset snd_device.

CRs-Fixed: 2257482
Change-Id: Ia2446d797e6d0b21d536ed40da8deeb29b3132d6
parent 2ab55f3c
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -6157,12 +6157,12 @@ static bool platform_check_codec_backend_cfg(struct audio_device* adev,
    }

    /*
     * Check if the device is speaker or handset,assumption handset shares
     * backend with speaker, and these devices are restricited to 48kHz.
     * Handset and speaker may have diffrent backend. Check if the device is speaker or handset,
     * and these devices are restricited to 48kHz.
     */
    if (platform_check_backends_match(SND_DEVICE_OUT_SPEAKER, snd_device) &&
        !(codec_device_supports_native_playback(usecase->devices) &&
          my_data->hifi_audio && !check_hdset_combo_device(snd_device))) {
    if ((platform_get_backend_index(snd_device) == DEFAULT_CODEC_BACKEND) &&
        (platform_check_backends_match(SND_DEVICE_OUT_SPEAKER, snd_device) ||
         platform_check_backends_match(SND_DEVICE_OUT_HANDSET, snd_device))) {
        sample_rate = CODEC_BACKEND_DEFAULT_SAMPLE_RATE;

        if (bit_width >= 24) {
+5 −4
Original line number Diff line number Diff line
@@ -6132,11 +6132,12 @@ static bool platform_check_codec_backend_cfg(struct audio_device* adev,
    }

    /*
     * Check if the device is speaker or handset,assumption handset shares
     * backend with speaker, and these devices are restricited to 48kHz.
     * Handset and speaker may have diffrent backend. Check if the device is speaker or handset,
     * and these devices are restricited to 48kHz.
     */
    if (platform_check_backends_match(SND_DEVICE_OUT_SPEAKER, snd_device)) {

    if ((platform_get_backend_index(snd_device) == DEFAULT_CODEC_BACKEND) &&
        (platform_check_backends_match(SND_DEVICE_OUT_SPEAKER, snd_device) ||
         platform_check_backends_match(SND_DEVICE_OUT_HANDSET, snd_device))) {
        if (bit_width >= 24) {
            bit_width = platform_get_snd_device_bit_width(SND_DEVICE_OUT_SPEAKER);
            ALOGD("%s:becf: afe: reset bitwidth to %d (based on supported"