hal: configure HDMI channels based on sink capability.
- configure output HDMI channel count based on sink
capability when audio.use.hdmi.sink.cap is set to true
CRs-Fixed: 656308
Change-Id: I3dd3226054c68a69a2c29f8bb2f9c27e429ad2dc
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index e8d0d20..21efa5f 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -1174,6 +1174,8 @@
int start_output_stream(struct stream_out *out)
{
int ret = 0;
+ int sink_channels = 0;
+ char prop_value[PROPERTY_VALUE_MAX] = {0};
struct audio_usecase *uc_info;
struct audio_device *adev = out->dev;
@@ -1197,10 +1199,17 @@
/* This must be called before adding this usecase to the list */
if (out->devices & AUDIO_DEVICE_OUT_AUX_DIGITAL) {
- if (is_offload_usecase(out->usecase))
- check_and_set_hdmi_channels(adev, out->compr_config.codec->ch_in);
- else
- check_and_set_hdmi_channels(adev, out->config.channels);
+ property_get("audio.use.hdmi.sink.cap", prop_value, NULL);
+ if (!strncmp("true", prop_value, 4)) {
+ sink_channels = platform_edid_get_max_channels(out->dev->platform);
+ ALOGD("%s: set HDMI channel count[%d] based on sink capability", __func__, sink_channels);
+ check_and_set_hdmi_channels(adev, sink_channels);
+ } else {
+ if (is_offload_usecase(out->usecase))
+ check_and_set_hdmi_channels(adev, out->compr_config.codec->ch_in);
+ else
+ check_and_set_hdmi_channels(adev, out->config.channels);
+ }
}
list_add_tail(&adev->usecase_list, &uc_info->list);