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

Commit 026d97f6 authored by Harsh Bansal's avatar Harsh Bansal Committed by Garmond Leung
Browse files

hal: HDMI samplerate correction for DDP-DD passthru

-for DDP content HDMI sample rate is determined by multiplying
the content rate with four. But it should be avoided for DDP to DD
converter case.
-extending the buffer size to store wav header info. This is needed
for wave-extensible format.

Change-Id: Idbab1bb1551fa4c4531abfd62473b5e219377512
parent 32b96c6e
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -995,7 +995,8 @@ static int send_app_type_cfg_for_device(struct audio_device *adev,
        if (((usecase->stream.out->format == AUDIO_FORMAT_E_AC3) ||
            (usecase->stream.out->format == AUDIO_FORMAT_E_AC3_JOC) ||
            (usecase->stream.out->format == AUDIO_FORMAT_DOLBY_TRUEHD))
            && audio_extn_passthru_is_passthrough_stream(usecase->stream.out)) {
            && audio_extn_passthru_is_passthrough_stream(usecase->stream.out)
            && !audio_extn_passthru_is_convert_supported(adev, usecase->stream.out)) {

            sample_rate = sample_rate * 4;
            if (sample_rate > HDMI_PASSTHROUGH_MAX_SAMPLE_RATE)
+4 −5
Original line number Diff line number Diff line
@@ -5607,12 +5607,11 @@ static void platform_check_hdmi_backend_cfg(struct audio_device* adev,
                  __func__, DEFAULT_HDMI_OUT_CHANNELS);
            channels = DEFAULT_HDMI_OUT_CHANNELS;
        }

        if ((usecase->stream.out->format == AUDIO_FORMAT_E_AC3) ||
        if (((usecase->stream.out->format == AUDIO_FORMAT_E_AC3) ||
            (usecase->stream.out->format == AUDIO_FORMAT_E_AC3_JOC) ||
            (usecase->stream.out->format == AUDIO_FORMAT_DOLBY_TRUEHD)) {
            (usecase->stream.out->format == AUDIO_FORMAT_DOLBY_TRUEHD))
            && (usecase->stream.out->compr_config.codec->compr_passthr == PASSTHROUGH)) {
            sample_rate = sample_rate * 4;

            if (sample_rate > HDMI_PASSTHROUGH_MAX_SAMPLE_RATE)
                sample_rate = HDMI_PASSTHROUGH_MAX_SAMPLE_RATE;
        }
+3 −3
Original line number Diff line number Diff line
@@ -5476,10 +5476,10 @@ static void platform_check_hdmi_backend_cfg(struct audio_device* adev,
                  __func__, DEFAULT_HDMI_OUT_CHANNELS);
            channels = DEFAULT_HDMI_OUT_CHANNELS;
        }
        if ((usecase->stream.out->format == AUDIO_FORMAT_E_AC3) ||
        if (((usecase->stream.out->format == AUDIO_FORMAT_E_AC3) ||
            (usecase->stream.out->format == AUDIO_FORMAT_E_AC3_JOC) ||
            (usecase->stream.out->format == AUDIO_FORMAT_DOLBY_TRUEHD)) {

            (usecase->stream.out->format == AUDIO_FORMAT_DOLBY_TRUEHD))
            && (usecase->stream.out->compr_config.codec->compr_passthr == PASSTHROUGH)) {
            sample_rate = sample_rate * 4;
            if (sample_rate > HDMI_PASSTHROUGH_MAX_SAMPLE_RATE)
                sample_rate = HDMI_PASSTHROUGH_MAX_SAMPLE_RATE;
+1 −1
Original line number Diff line number Diff line
@@ -36,7 +36,7 @@
#define KV_PAIR_MAX_LENGTH  1000

#define FORMAT_PCM 1
#define WAV_HEADER_LENGTH_MAX 46
#define WAV_HEADER_LENGTH_MAX 128

#define MAX_PLAYBACK_STREAMS   105 //This value is changed to suppport 100 clips in playlist
#define PRIMARY_STREAM_INDEX   0