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

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

Merge "hal: Fix true mode native playback on internal codec" into audio-userspace.lnx.2.2-dev

parents cdaef2a5 4826f6cf
Loading
Loading
Loading
Loading
+4 −12
Original line number Diff line number Diff line
@@ -830,15 +830,6 @@ static int send_app_type_cfg_for_device(struct audio_device *adev,
    }

    if ((usecase->type == PCM_PLAYBACK) && (usecase->stream.out != NULL)) {
        if (usecase->stream.out->devices & AUDIO_DEVICE_OUT_SPEAKER) {
            usecase->stream.out->app_type_cfg.sample_rate = DEFAULT_OUTPUT_SAMPLING_RATE;
        } else if ((usecase->stream.out->app_type_cfg.sample_rate == OUTPUT_SAMPLING_RATE_44100 &&
                     !(audio_is_this_native_usecase(usecase))) ||
                     (usecase->stream.out->sample_rate < OUTPUT_SAMPLING_RATE_44100)) {
                   usecase->stream.out->app_type_cfg.sample_rate = DEFAULT_OUTPUT_SAMPLING_RATE;
        }

        sample_rate = usecase->stream.out->app_type_cfg.sample_rate;

        property_get("audio.playback.mch.downsample",value,"");
        if (!strncmp("true", value, sizeof("true"))) {
@@ -848,8 +839,7 @@ static int send_app_type_cfg_for_device(struct audio_device *adev,
               sample_rate = CODEC_BACKEND_DEFAULT_SAMPLE_RATE;
        }

        if ((24 == usecase->stream.out->bit_width) &&
            (usecase->stream.out->devices & AUDIO_DEVICE_OUT_SPEAKER)) {
        if (usecase->stream.out->devices & AUDIO_DEVICE_OUT_SPEAKER) {
            usecase->stream.out->app_type_cfg.sample_rate = DEFAULT_OUTPUT_SAMPLING_RATE;
        } else if ((snd_device == SND_DEVICE_OUT_HDMI ||
                    snd_device == SND_DEVICE_OUT_USB_HEADSET ||
@@ -863,9 +853,11 @@ static int send_app_type_cfg_for_device(struct audio_device *adev,
              platform_check_and_update_copp_sample_rate(adev->platform, snd_device,
                                      usecase->stream.out->sample_rate,
                                      &usecase->stream.out->app_type_cfg.sample_rate);
        } else if ((snd_device != SND_DEVICE_OUT_HEADPHONES_44_1 &&
        } else if (((snd_device != SND_DEVICE_OUT_HEADPHONES_44_1 &&
                     !audio_is_this_native_usecase(usecase)) &&
            usecase->stream.out->sample_rate == OUTPUT_SAMPLING_RATE_44100) ||
            (usecase->stream.out->sample_rate < OUTPUT_SAMPLING_RATE_44100)) {
            /* Reset to default if no native stream is active*/
            usecase->stream.out->app_type_cfg.sample_rate = DEFAULT_OUTPUT_SAMPLING_RATE;
        }
        sample_rate = usecase->stream.out->app_type_cfg.sample_rate;
+2 −1
Original line number Diff line number Diff line
@@ -1656,7 +1656,8 @@ int select_devices(struct audio_device *adev, audio_usecase_t uc_id)
            platform_check_and_update_copp_sample_rate(adev->platform, out_snd_device,
                    usecase->stream.out->sample_rate,
                    &usecase->stream.out->app_type_cfg.sample_rate);
        } else if ((out_snd_device != SND_DEVICE_OUT_HEADPHONES_44_1 &&
        } else if (((out_snd_device != SND_DEVICE_OUT_HEADPHONES_44_1 &&
                     !audio_is_true_native_stream_active(adev)) &&
                    usecase->stream.out->sample_rate == OUTPUT_SAMPLING_RATE_44100) ||
                    (usecase->stream.out->sample_rate < OUTPUT_SAMPLING_RATE_44100)) {
            usecase->stream.out->app_type_cfg.sample_rate = DEFAULT_OUTPUT_SAMPLING_RATE;
+7 −9
Original line number Diff line number Diff line
@@ -239,7 +239,7 @@ typedef struct codec_backend_cfg {
    char     *channels_mixer_ctl;
} codec_backend_cfg_t;

static native_audio_prop na_props = {0, 0, 0};
static native_audio_prop na_props = {0, 0, NATIVE_AUDIO_MODE_INVALID};
static bool supports_true_32_bit = false;

struct meta_key_list {
@@ -2460,17 +2460,15 @@ acdb_init_fail:
                      __func__);
                platform_set_native_support(NATIVE_AUDIO_MODE_SRC);
            }
        } else {
            platform_set_native_support(NATIVE_AUDIO_MODE_INVALID);
        }
        }

        if (strstr(snd_card_name, "tavil")) {
            ALOGD("%s:DSD playback is supported", __func__);
            my_data->is_dsd_supported = true;
            my_data->is_asrc_supported = true;
            platform_set_native_support(NATIVE_AUDIO_MODE_MULTIPLE_44_1);
        }
    }

    my_data->edid_info = NULL;
    return my_data;
}
+7 −10
Original line number Diff line number Diff line
@@ -214,7 +214,7 @@ typedef struct codec_backend_cfg {
    char     *channels_mixer_ctl;
} codec_backend_cfg_t;

static native_audio_prop na_props = {0, 0, 0};
static native_audio_prop na_props = {0, 0, NATIVE_AUDIO_MODE_INVALID};
static bool supports_true_32_bit = false;
typedef int (*acdb_send_gain_dep_cal_t)(int, int, int, int, int);

@@ -2134,17 +2134,14 @@ acdb_init_fail:
                      __func__);
                platform_set_native_support(NATIVE_AUDIO_MODE_SRC);
            }
        } else {
            platform_set_native_support(NATIVE_AUDIO_MODE_INVALID);
        }
        }

        if (strstr(snd_card_name, "tavil")) {
            ALOGD("%s:DSD playback is supported", __func__);
            my_data->is_dsd_supported = true;
            my_data->is_asrc_supported = true;
            platform_set_native_support(NATIVE_AUDIO_MODE_MULTIPLE_44_1);
        }
    }

    my_data->current_backend_cfg[HEADPHONE_BACKEND].bitwidth_mixer_ctl =
        strdup("SLIM_6_RX Format");