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
diff --git a/hal/audio_extn/utils.c b/hal/audio_extn/utils.c
index 130a6e2..4615de8 100644
--- a/hal/audio_extn/utils.c
+++ b/hal/audio_extn/utils.c
@@ -995,7 +995,8 @@
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)
diff --git a/hal/msm8916/platform.c b/hal/msm8916/platform.c
index 2d05bed..f8c0aba 100644
--- a/hal/msm8916/platform.c
+++ b/hal/msm8916/platform.c
@@ -5607,12 +5607,11 @@
__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)) {
- sample_rate = sample_rate * 4 ;
-
+ (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;
}
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index 9d5ec31..a29aa9d 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -5476,10 +5476,10 @@
__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;
diff --git a/qahw_api/test/qahw_playback_test.c b/qahw_api/test/qahw_playback_test.c
index 6846524..67503c4 100644
--- a/qahw_api/test/qahw_playback_test.c
+++ b/qahw_api/test/qahw_playback_test.c
@@ -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