audio-hal: enable low latency support for playback usecase and primary output support for HFP
Enable low latency playback support for 8, 16, 24 and 32 KHz sample rates
and primary output support for HFP.
Suggested-by: Shital Jadhav (Temp) <shitjadh@qti.qualcomm.com>
Change-Id: I45bb5155b2eb794af7a25502d391fc7fde28d7e6
Signed-off-by: nkogara <nkogara@qti.qualcomm.com>
Signed-off-by: sasevs <quic_sasevs@quicinc.com>
diff --git a/configs/common_au/audio_policy_configuration.xml b/configs/common_au/audio_policy_configuration.xml
index 27923e7..567ab43 100644
--- a/configs/common_au/audio_policy_configuration.xml
+++ b/configs/common_au/audio_policy_configuration.xml
@@ -75,7 +75,8 @@
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="carplay_48k_media" role="source">
+ <mixPort name="carplay_48k_media" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
@@ -113,73 +114,86 @@
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="carplay_8k_navi" role="source">
+ <mixPort name="carplay_8k_navi" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="8000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="carplay_16k_navi" role="source">
+ <mixPort name="carplay_16k_navi" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="16000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="carplay_24k_navi" role="source">
+ <mixPort name="carplay_24k_navi" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="24000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="carplay_32k_navi" role="source">
+ <mixPort name="carplay_32k_navi" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="32000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="carplay_48k_navi" role="source">
+ <mixPort name="carplay_48k_navi" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="phone" role="source"
- flags="AUDIO_OUTPUT_FLAG_PRIMARY">
+ <mixPort name="phone" role="source">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="carplay_8k_phone" role="source">
+ <mixPort name="carplay_8k_phone" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="8000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="carplay_16k_phone" role="source">
+ <mixPort name="carplay_16k_phone" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="16000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="carplay_24k_phone" role="source">
+ <mixPort name="carplay_24k_phone" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="24000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="carplay_32k_phone" role="source">
+ <mixPort name="carplay_32k_phone" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="32000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="carplay_48k_phone" role="source">
+ <mixPort name="carplay_48k_phone" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="alerts" role="source"
- flags="AUDIO_OUTPUT_FLAG_PRIMARY">
+ <mixPort name="alerts" role="source">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="carplay_8k_alerts" role="source">
+ <mixPort name="carplay_8k_alerts" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="8000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="carplay_16k_alerts" role="source">
+ <mixPort name="carplay_16k_alerts" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="16000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="carplay_24k_alerts" role="source">
+ <mixPort name="carplay_24k_alerts" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="24000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="carplay_32k_alerts" role="source">
+ <mixPort name="carplay_32k_alerts" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="32000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="carplay_48k_alerts" role="source">
+ <mixPort name="carplay_48k_alerts" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
diff --git a/configs/msmnile_au/audio_platform_info.xml b/configs/msmnile_au/audio_platform_info.xml
index 8bcd062..1b45798 100644
--- a/configs/msmnile_au/audio_platform_info.xml
+++ b/configs/msmnile_au/audio_platform_info.xml
@@ -148,7 +148,7 @@
<usecase name="USECASE_AUDIO_RECORD_COMPRESS2" type="in" id="31" fe="16"/>
<usecase name="USECASE_AUDIO_RECORD2" type="in" id="61" fe="32"/>
<usecase name="USECASE_AUDIO_RECORD3" type="in" id="62" fe="33"/>
- <usecase name="USECASE_AUDIO_RECORD_LOW_LATENCY2" type="in" id="63" fe="34" />
+ <usecase name="USECASE_AUDIO_RECORD_LOW_LATENCY2" type="in" id="63" fe="34"/>
</pcm_ids>
<soft_volume_params>
diff --git a/configs/msmnile_au/audio_policy_configuration.xml b/configs/msmnile_au/audio_policy_configuration.xml
old mode 100755
new mode 100644
index 71c9fcf..e40b397
--- a/configs/msmnile_au/audio_policy_configuration.xml
+++ b/configs/msmnile_au/audio_policy_configuration.xml
@@ -75,7 +75,8 @@
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="carplay_48k_media" role="source">
+ <mixPort name="carplay_48k_media" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
@@ -103,78 +104,90 @@
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="nav_guidance" role="source"
- flags="AUDIO_OUTPUT_FLAG_PRIMARY">
+ <mixPort name="nav_guidance" role="source">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="carplay_8k_navi" role="source">
+ <mixPort name="carplay_8k_navi" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="8000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="carplay_16k_navi" role="source">
+ <mixPort name="carplay_16k_navi" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="16000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="carplay_24k_navi" role="source">
+ <mixPort name="carplay_24k_navi" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="24000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="carplay_32k_navi" role="source">
+ <mixPort name="carplay_32k_navi" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="32000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="carplay_48k_navi" role="source">
+ <mixPort name="carplay_48k_navi" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="phone" role="source"
- flags="AUDIO_OUTPUT_FLAG_PRIMARY">
+ <mixPort name="phone" role="source">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="carplay_8k_phone" role="source">
+ <mixPort name="carplay_8k_phone" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="8000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="carplay_16k_phone" role="source">
+ <mixPort name="carplay_16k_phone" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="16000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="carplay_24k_phone" role="source">
+ <mixPort name="carplay_24k_phone" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="24000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="carplay_32k_phone" role="source">
+ <mixPort name="carplay_32k_phone" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="32000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="carplay_48k_phone" role="source">
+ <mixPort name="carplay_48k_phone" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="alerts" role="source"
- flags="AUDIO_OUTPUT_FLAG_PRIMARY">
+ <mixPort name="alerts" role="source">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="carplay_8k_alerts" role="source">
+ <mixPort name="carplay_8k_alerts" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="8000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="carplay_16k_alerts" role="source">
+ <mixPort name="carplay_16k_alerts" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="16000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="carplay_24k_alerts" role="source">
+ <mixPort name="carplay_24k_alerts" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="24000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="carplay_32k_alerts" role="source">
+ <mixPort name="carplay_32k_alerts" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="32000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="carplay_48k_alerts" role="source">
+ <mixPort name="carplay_48k_alerts" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
diff --git a/configs/msmsteppe_au/audio_platform_info.xml b/configs/msmsteppe_au/audio_platform_info.xml
index a9d65d1..142012f 100644
--- a/configs/msmsteppe_au/audio_platform_info.xml
+++ b/configs/msmsteppe_au/audio_platform_info.xml
@@ -148,7 +148,7 @@
<usecase name="USECASE_AUDIO_RECORD_COMPRESS2" type="in" id="31" fe="16"/>
<usecase name="USECASE_AUDIO_RECORD2" type="in" id="61" fe="32"/>
<usecase name="USECASE_AUDIO_RECORD3" type="in" id="62" fe="33"/>
- <usecase name="USECASE_AUDIO_RECORD_LOW_LATENCY2" type="in" id="63" fe="34" />
+ <usecase name="USECASE_AUDIO_RECORD_LOW_LATENCY2" type="in" id="63" fe="34"/>
</pcm_ids>
<config_params>
diff --git a/configs/msmsteppe_au/audio_policy_configuration.xml b/configs/msmsteppe_au/audio_policy_configuration.xml
index feedc98..cb46979 100644
--- a/configs/msmsteppe_au/audio_policy_configuration.xml
+++ b/configs/msmsteppe_au/audio_policy_configuration.xml
@@ -75,7 +75,8 @@
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="carplay_48k_media" role="source">
+ <mixPort name="carplay_48k_media" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
@@ -103,78 +104,90 @@
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="nav_guidance" role="source"
- flags="AUDIO_OUTPUT_FLAG_PRIMARY">
+ <mixPort name="nav_guidance" role="source">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="carplay_8k_navi" role="source">
+ <mixPort name="carplay_8k_navi" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="8000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="carplay_16k_navi" role="source">
+ <mixPort name="carplay_16k_navi" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="16000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="carplay_24k_navi" role="source">
+ <mixPort name="carplay_24k_navi" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="24000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="carplay_32k_navi" role="source">
+ <mixPort name="carplay_32k_navi" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="32000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="carplay_48k_navi" role="source">
+ <mixPort name="carplay_48k_navi" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="phone" role="source"
- flags="AUDIO_OUTPUT_FLAG_PRIMARY">
+ <mixPort name="phone" role="source">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="carplay_8k_phone" role="source">
+ <mixPort name="carplay_8k_phone" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="8000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="carplay_16k_phone" role="source">
+ <mixPort name="carplay_16k_phone" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="16000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="carplay_24k_phone" role="source">
+ <mixPort name="carplay_24k_phone" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="24000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="carplay_32k_phone" role="source">
+ <mixPort name="carplay_32k_phone" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="32000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="carplay_48k_phone" role="source">
+ <mixPort name="carplay_48k_phone" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="alerts" role="source"
- flags="AUDIO_OUTPUT_FLAG_PRIMARY">
+ <mixPort name="alerts" role="source">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="carplay_8k_alerts" role="source">
+ <mixPort name="carplay_8k_alerts" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="8000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="carplay_16k_alerts" role="source">
+ <mixPort name="carplay_16k_alerts" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="16000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="carplay_24k_alerts" role="source">
+ <mixPort name="carplay_24k_alerts" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="24000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="carplay_32k_alerts" role="source">
+ <mixPort name="carplay_32k_alerts" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="32000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="carplay_48k_alerts" role="source">
+ <mixPort name="carplay_48k_alerts" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
diff --git a/hal/audio_extn/auto_hal.c b/hal/audio_extn/auto_hal.c
index c90d536..6f0a5d4 100644
--- a/hal/audio_extn/auto_hal.c
+++ b/hal/audio_extn/auto_hal.c
@@ -391,8 +391,9 @@
goto error;
}
}
- else {
+ else if (out->flags == AUDIO_OUTPUT_FLAG_FAST) {
out->usecase = USECASE_AUDIO_PLAYBACK_MEDIA_LL;
+ out->flags = AUDIO_OUTPUT_FLAG_MEDIA;
switch(out->sample_rate)
{
case 48000:
@@ -402,6 +403,11 @@
out->config=pcm_config_system_48KHz;
}
}
+ else {
+ ALOGE("%s: Output profile flag(%#x) is not valid", __func__,out->flags);
+ ret = -EINVAL;
+ goto error;
+ }
if (out->flags == AUDIO_OUTPUT_FLAG_NONE ||
out->flags == AUDIO_OUTPUT_FLAG_PRIMARY)
out->flags |= AUDIO_OUTPUT_FLAG_MEDIA;
@@ -435,7 +441,7 @@
out->volume_l = out->volume_r = MAX_VOLUME_GAIN;
break;
case CAR_AUDIO_STREAM_NAV_GUIDANCE:
- if (out->flags == AUDIO_OUTPUT_FLAG_PRIMARY) {
+ if (out->flags == AUDIO_OUTPUT_FLAG_NONE) {
out->usecase = USECASE_AUDIO_PLAYBACK_NAV_GUIDANCE;
out->config = pcm_config_media;
out->config.period_size = fp_get_output_period_size(out->sample_rate, out->format,
@@ -447,7 +453,7 @@
}
out->flags |= AUDIO_OUTPUT_FLAG_NAV_GUIDANCE;
}
- else {
+ else if (out->flags == AUDIO_OUTPUT_FLAG_FAST) {
out->usecase = USECASE_AUDIO_PLAYBACK_NAV_GUIDANCE_LL;
switch(out->sample_rate)
{
@@ -476,18 +482,30 @@
goto error;
}
}
+ out->flags = AUDIO_OUTPUT_FLAG_NAV_GUIDANCE;
+ }
+ else {
+ ALOGE("%s: Output profile flag(%#x) is not valid", __func__,out->flags);
+ ret = -EINVAL;
+ goto error;
}
if (out->flags == AUDIO_OUTPUT_FLAG_NONE)
out->flags |= AUDIO_OUTPUT_FLAG_NAV_GUIDANCE;
out->volume_l = out->volume_r = MAX_VOLUME_GAIN;
break;
case CAR_AUDIO_STREAM_PHONE:
- if (out->flags == AUDIO_OUTPUT_FLAG_PRIMARY) {
+ if (out->flags == AUDIO_OUTPUT_FLAG_NONE) {
out->usecase = USECASE_AUDIO_PLAYBACK_PHONE;
out->flags = AUDIO_OUTPUT_FLAG_PHONE;
}
- else if (out->flags == AUDIO_OUTPUT_FLAG_NONE) {
+ else if (out->flags == AUDIO_OUTPUT_FLAG_FAST) {
out->usecase = USECASE_AUDIO_PLAYBACK_PHONE_LL;
+ out->flags = AUDIO_OUTPUT_FLAG_PHONE;
+ }
+ else {
+ ALOGE("%s: Output profile flag(%#x) is not valid", __func__,out->flags);
+ ret = -EINVAL;
+ goto error;
}
switch(out->sample_rate)
{
@@ -514,12 +532,18 @@
out->volume_l = out->volume_r = MAX_VOLUME_GAIN;
break;
case CAR_AUDIO_STREAM_ALERTS:
- if (out->flags == AUDIO_OUTPUT_FLAG_PRIMARY) {
+ if (out->flags == AUDIO_OUTPUT_FLAG_NONE) {
out->usecase = USECASE_AUDIO_PLAYBACK_ALERTS;
out->flags = AUDIO_OUTPUT_FLAG_ALERTS;
}
- else {
+ else if (out->flags == AUDIO_OUTPUT_FLAG_FAST) {
out->usecase = USECASE_AUDIO_PLAYBACK_ALERTS_LL;
+ out->flags = AUDIO_OUTPUT_FLAG_ALERTS;
+ }
+ else {
+ ALOGE("%s: Output profile flag(%#x) is not valid", __func__,out->flags);
+ ret = -EINVAL;
+ goto error;
}
switch(out->sample_rate)
{
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index d4d1218..3fcaa45 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -8459,7 +8459,14 @@
out->config.period_size = HDMI_MULTI_PERIOD_BYTES / (out->config.channels *
audio_bytes_per_sample(config->format));
out->config.format = pcm_format_from_audio_format(out->format);
- } else if ((out->flags & AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD) ||
+ } else if (compare_device_type(&out->device_list, AUDIO_DEVICE_OUT_BUS)) {
+ ret = audio_extn_auto_hal_open_output_stream(out);
+ if (ret) {
+ ALOGE("%s: Failed to open output stream for bus device", __func__);
+ ret = -EINVAL;
+ goto error_open;
+ }
+ }else if ((out->flags & AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD) ||
(out->flags == AUDIO_OUTPUT_FLAG_DIRECT)) {
pthread_mutex_lock(&adev->lock);
bool offline = (adev->card_status == CARD_STATUS_OFFLINE);
@@ -8927,14 +8934,7 @@
adev->haptics_config.channels = 1;
} else
adev->haptics_config.channels = audio_channel_count_from_out_mask(out->channel_mask & AUDIO_CHANNEL_HAPTIC_ALL);
- } else if (compare_device_type(&out->device_list, AUDIO_DEVICE_OUT_BUS)) {
- ret = audio_extn_auto_hal_open_output_stream(out);
- if (ret) {
- ALOGE("%s: Failed to open output stream for bus device", __func__);
- ret = -EINVAL;
- goto error_open;
- }
- } else {
+ } else {
/* primary path is the default path selected if no other outputs are available/suitable */
out->usecase = GET_USECASE_AUDIO_PLAYBACK_PRIMARY(use_db_as_primary);
out->config = GET_PCM_CONFIG_AUDIO_PLAYBACK_PRIMARY(use_db_as_primary);
@@ -8973,8 +8973,8 @@
out->hal_op_format, out->sample_rate,
out->bit_width, out->channel_mask, out->profile,
&out->app_type_cfg);
- if (((out->usecase == (audio_usecase_t)(GET_USECASE_AUDIO_PLAYBACK_PRIMARY(use_db_as_primary))) ||
- (flags & AUDIO_OUTPUT_FLAG_PRIMARY)) && (!compare_device_type(&out->device_list, AUDIO_DEVICE_OUT_BUS))) {
+ if ((out->usecase == (audio_usecase_t)(GET_USECASE_AUDIO_PLAYBACK_PRIMARY(use_db_as_primary))) ||
+ (flags & AUDIO_OUTPUT_FLAG_PRIMARY)) {
/* Ensure the default output is not selected twice */
if(adev->primary_output == NULL)
adev->primary_output = out;