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

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

Merge "hal: Limit multichannel clips >48khz to 48Khz"

parents bbc7dde4 837dc465
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -441,6 +441,7 @@ void audio_extn_utils_update_stream_app_type_cfg(void *platform,
                                  audio_format_t format,
                                  uint32_t sample_rate,
                                  uint32_t bit_width,
                                  audio_channel_mask_t channel_mask,
                                  struct stream_app_type_cfg *app_type_cfg);
int audio_extn_utils_send_app_type_cfg(struct audio_usecase *usecase);
void audio_extn_utils_send_audio_calibration(struct audio_device *adev,
+21 −0
Original line number Diff line number Diff line
@@ -480,12 +480,14 @@ void audio_extn_utils_update_stream_app_type_cfg(void *platform,
                                  audio_format_t format,
                                  uint32_t sample_rate,
                                  uint32_t bit_width,
                                  audio_channel_mask_t channel_mask,
                                  struct stream_app_type_cfg *app_type_cfg)
{
    struct listnode *node_i, *node_j, *node_k;
    struct streams_output_cfg *so_info;
    struct stream_format *sf_info;
    struct stream_sample_rate *ss_info;
    char value[PROPERTY_VALUE_MAX] = {0};

    if ((24 == bit_width) &&
        (devices & AUDIO_DEVICE_OUT_SPEAKER)) {
@@ -496,6 +498,16 @@ void audio_extn_utils_update_stream_app_type_cfg(void *platform,
        ALOGI("%s Allowing 24-bit playback on speaker ONLY at default sampling rate", __func__);
    }

    property_get("audio.playback.mch.downsample",value,"");
    if (!strncmp("true", value, sizeof("true"))) {
        if ((popcount(channel_mask) > 2) &&
                (sample_rate > CODEC_BACKEND_DEFAULT_SAMPLE_RATE) &&
                !(flags & AUDIO_OUTPUT_FLAG_COMPRESS_PASSTHROUGH))  {
                    sample_rate = CODEC_BACKEND_DEFAULT_SAMPLE_RATE;
                    ALOGD("%s: MCH session defaulting sample rate to %d",
                               __func__, sample_rate);
        }
    }
    ALOGV("%s: flags: %x, format: %x sample_rate %d",
           __func__, flags, format, sample_rate);
    list_for_each(node_i, streams_output_cfg_list) {
@@ -537,6 +549,7 @@ int audio_extn_utils_send_app_type_cfg(struct audio_usecase *usecase)
    struct mixer_ctl *ctl;
    int pcm_device_id, acdb_dev_id, snd_device = usecase->out_snd_device;
    int32_t sample_rate = DEFAULT_OUTPUT_SAMPLING_RATE;
    char value[PROPERTY_VALUE_MAX] = {0};

    ALOGV("%s", __func__);

@@ -589,6 +602,14 @@ int audio_extn_utils_send_app_type_cfg(struct audio_usecase *usecase)
    }
    sample_rate = out->app_type_cfg.sample_rate;

    property_get("audio.playback.mch.downsample",value,"");
    if (!strncmp("true", value, sizeof("true"))) {
        if ((popcount(out->channel_mask) > 2) &&
               (out->sample_rate > CODEC_BACKEND_DEFAULT_SAMPLE_RATE) &&
               !(out->flags & AUDIO_OUTPUT_FLAG_COMPRESS_PASSTHROUGH))
           sample_rate = CODEC_BACKEND_DEFAULT_SAMPLE_RATE;
    }

    app_type_cfg[len++] = out->app_type_cfg.app_type;
    app_type_cfg[len++] = acdb_dev_id;
    if (((out->format == AUDIO_FORMAT_E_AC3) ||
+3 −1
Original line number Diff line number Diff line
@@ -1001,6 +1001,7 @@ int select_devices(struct audio_device *adev, audio_usecase_t uc_id)
                                                usecase->stream.out->format,
                                                usecase->stream.out->sample_rate,
                                                usecase->stream.out->bit_width,
                                                usecase->stream.out->channel_mask,
                                                &usecase->stream.out->app_type_cfg);
        ALOGI("%s Selected apptype: %d", __func__, usecase->stream.out->app_type_cfg.app_type);
    }
@@ -3112,7 +3113,8 @@ static int adev_open_output_stream(struct audio_hw_device *dev,
    audio_extn_utils_update_stream_app_type_cfg(adev->platform,
                                                &adev->streams_output_cfg_list,
                                                devices, flags, format, out->sample_rate,
                                                out->bit_width, &out->app_type_cfg);
                                                out->bit_width, out->channel_mask,
                                                &out->app_type_cfg);
    if ((out->usecase == USECASE_AUDIO_PLAYBACK_PRIMARY) ||
        (flags & AUDIO_OUTPUT_FLAG_PRIMARY)) {
        /* Ensure the default output is not selected twice */
+16 −0
Original line number Diff line number Diff line
@@ -4046,6 +4046,22 @@ bool platform_check_codec_backend_cfg(struct audio_device* adev,
    if (!is_external_codec)
        sample_rate = CODEC_BACKEND_DEFAULT_SAMPLE_RATE;

    //check if mulitchannel clip needs to be down sampled to 48k
    property_get("audio.playback.mch.downsample",value,"");
    if (!strncmp("true", value, sizeof("true"))) {
        out = usecase->stream.out;
        if ((popcount(out->channel_mask) > 2) &&
                      (out->sample_rate > CODEC_BACKEND_DEFAULT_SAMPLE_RATE) &&
                      !(out->flags & AUDIO_OUTPUT_FLAG_COMPRESS_PASSTHROUGH)) {
           sample_rate = CODEC_BACKEND_DEFAULT_SAMPLE_RATE;
          /* update out sample rate to reflect current backend sample rate  */
           out->sample_rate = sample_rate;
           ALOGD("%s: MCH session defaulting sample rate to %d",
                        __func__, sample_rate);
         }
    }



    ALOGI("%s Codec selected backend: %d updated bit width: %d and sample rate: %d",
               __func__, backend_idx, bit_width, sample_rate);