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

Commit 074fa4df authored by Ramu Gottipati's avatar Ramu Gottipati
Browse files

hal: Configure backend with 24-bit for 24-bit playback

- For 24bit stream backend is getting configured to
  32bit which is undesirable.
- To fix this, changes are done to configure backend
  as 24bit for 24bit stream and 32bit for 32bit stream.

Change-Id: If4186d2e476c745f584903edc02818eb0af6ee12
parent cbd1905c
Loading
Loading
Loading
Loading
+6 −5
Original line number Diff line number Diff line
@@ -704,13 +704,14 @@ void audio_extn_utils_update_stream_output_app_type_cfg(void *platform,
    struct stream_format *sf_info;
    char value[PROPERTY_VALUE_MAX] = {0};

    if ((bit_width >= 24) &&
        (devices & AUDIO_DEVICE_OUT_SPEAKER)) {
        int32_t bw = platform_get_snd_device_bit_width(SND_DEVICE_OUT_SPEAKER);
        if (-ENOSYS != bw)
    if (devices & AUDIO_DEVICE_OUT_SPEAKER) {
        int bw = platform_get_snd_device_bit_width(SND_DEVICE_OUT_SPEAKER);
        if ((-ENOSYS != bw) && (bit_width > (uint32_t)bw))
            bit_width = (uint32_t)bw;
        else if (-ENOSYS == bw)
            bit_width = CODEC_BACKEND_DEFAULT_BIT_WIDTH;
        sample_rate = DEFAULT_OUTPUT_SAMPLING_RATE;
        ALOGI("%s Allowing 24-bit playback on speaker ONLY at default sampling rate", __func__);
        ALOGI("%s Allowing 24 and above bits playback on speaker ONLY at default sampling rate", __func__);
    }

    property_get("vendor.audio.playback.mch.downsample",value,"");

hal/msm8974/platform.c

100755 → 100644
+7 −4
Original line number Diff line number Diff line
@@ -6267,11 +6267,14 @@ static bool platform_check_codec_backend_cfg(struct audio_device* adev,
     * backend with speaker, and these devices are restricited to 48kHz.
     */
    if (platform_check_backends_match(SND_DEVICE_OUT_SPEAKER, snd_device)) {

        if (bit_width >= 24) {
            bit_width = platform_get_snd_device_bit_width(SND_DEVICE_OUT_SPEAKER);
        int bw = platform_get_snd_device_bit_width(SND_DEVICE_OUT_SPEAKER);
        if ((-ENOSYS != bw) && (bit_width > (uint32_t)bw)) {
            bit_width = (uint32_t)bw;
            ALOGD("%s:becf: afe: reset bitwidth to %d (based on supported"
                  " value for this platform)", __func__, bit_width);
        } else if (-ENOSYS == bw) {
            bit_width = CODEC_BACKEND_DEFAULT_BIT_WIDTH;
            ALOGD("%s:becf: afe: reset to default bitwidth %d", __func__, bit_width);
        }
        sample_rate = CODEC_BACKEND_DEFAULT_SAMPLE_RATE;
        ALOGD("%s:becf: afe: playback on codec device not supporting native playback set "