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
diff --git a/hal/audio_extn/utils.c b/hal/audio_extn/utils.c
index 6aab347..7426b33 100644
--- a/hal/audio_extn/utils.c
+++ b/hal/audio_extn/utils.c
@@ -704,13 +704,14 @@
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,"");
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
old mode 100755
new mode 100644
index 313c067..69b3f62
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -6267,11 +6267,14 @@
* 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);
+ " 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 "