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
This commit is contained in:
parent
cbd1905cea
commit
074fa4df34
|
@ -704,13 +704,14 @@ void audio_extn_utils_update_stream_output_app_type_cfg(void *platform,
|
||||||
struct stream_format *sf_info;
|
struct stream_format *sf_info;
|
||||||
char value[PROPERTY_VALUE_MAX] = {0};
|
char value[PROPERTY_VALUE_MAX] = {0};
|
||||||
|
|
||||||
if ((bit_width >= 24) &&
|
if (devices & AUDIO_DEVICE_OUT_SPEAKER) {
|
||||||
(devices & AUDIO_DEVICE_OUT_SPEAKER)) {
|
int bw = platform_get_snd_device_bit_width(SND_DEVICE_OUT_SPEAKER);
|
||||||
int32_t bw = platform_get_snd_device_bit_width(SND_DEVICE_OUT_SPEAKER);
|
if ((-ENOSYS != bw) && (bit_width > (uint32_t)bw))
|
||||||
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;
|
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,"");
|
property_get("vendor.audio.playback.mch.downsample",value,"");
|
||||||
|
|
|
@ -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.
|
* backend with speaker, and these devices are restricited to 48kHz.
|
||||||
*/
|
*/
|
||||||
if (platform_check_backends_match(SND_DEVICE_OUT_SPEAKER, snd_device)) {
|
if (platform_check_backends_match(SND_DEVICE_OUT_SPEAKER, snd_device)) {
|
||||||
|
int bw = platform_get_snd_device_bit_width(SND_DEVICE_OUT_SPEAKER);
|
||||||
if (bit_width >= 24) {
|
if ((-ENOSYS != bw) && (bit_width > (uint32_t)bw)) {
|
||||||
bit_width = platform_get_snd_device_bit_width(SND_DEVICE_OUT_SPEAKER);
|
bit_width = (uint32_t)bw;
|
||||||
ALOGD("%s:becf: afe: reset bitwidth to %d (based on supported"
|
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;
|
sample_rate = CODEC_BACKEND_DEFAULT_SAMPLE_RATE;
|
||||||
ALOGD("%s:becf: afe: playback on codec device not supporting native playback set "
|
ALOGD("%s:becf: afe: playback on codec device not supporting native playback set "
|
||||||
|
|
Loading…
Reference in New Issue