Merge dec27fa79fdc66736297c4603feeeb74c164f550 on remote branch
Change-Id: Idb8776de76823802a8b63773708a0a6b38e0c56b
diff --git a/configs/audio_vendor_product.mk b/configs/audio_vendor_product.mk
index f7caa41..7bf600b 100644
--- a/configs/audio_vendor_product.mk
+++ b/configs/audio_vendor_product.mk
@@ -156,6 +156,7 @@
MM_AUDIO += a2b-app
MM_AUDIO += liba2bdriver
MM_AUDIO += libacdbloaderclient
+MM_AUDIO += libacdbloadersocketclient
MM_AUDIO += acdb_loader_service
MM_AUDIO += libaudiohalpluginclient
MM_AUDIO += audio_hal_plugin_service
diff --git a/configs/common_au/audio_policy_configuration.xml b/configs/common_au/audio_policy_configuration.xml
index a851fbf..f7176dd 100644
--- a/configs/common_au/audio_policy_configuration.xml
+++ b/configs/common_au/audio_policy_configuration.xml
@@ -15,6 +15,10 @@
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
+
+ Changes from Qualcomm Innovation Center are provided under the following license:
+ Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ SPDX-License-Identifier: BSD-3-Clause-Clear
-->
<audioPolicyConfiguration version="1.0" xmlns:xi="http://www.w3.org/2001/XInclude">
@@ -75,6 +79,11 @@
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
+ <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>
<mixPort name="sys_notification" role="source">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
@@ -104,18 +113,94 @@
samplingRates="48000"
channelMasks="AUDIO_CHANNEL_IN_STEREO"/>
</mixPort>
- <mixPort name="nav_guidance" role="source">
+ <mixPort name="nav_guidance" role="source"
+ flags="AUDIO_OUTPUT_FLAG_PRIMARY">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
+ <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"
+ 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"
+ 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"
+ 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"
+ 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">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
+ <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"
+ 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"
+ 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"
+ 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"
+ 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">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
+ <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"
+ 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"
+ 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"
+ 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"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ </mixPort>
<mixPort name="front_passenger" role="source">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
@@ -177,7 +262,7 @@
samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000"
channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO,AUDIO_CHANNEL_IN_FRONT_BACK,AUDIO_CHANNEL_INDEX_MASK_3"/>
</mixPort>
- <mixPort name="fast input" role="sink" flags="AUDIO_INPUT_FLAG_FAST">
+ <mixPort name="fast input" role="sink" maxOpenCount="2" maxActiveCount="2" flags="AUDIO_INPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_8_24_BIT"
samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000"
channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO,AUDIO_CHANNEL_IN_FRONT_BACK,AUDIO_CHANNEL_INDEX_MASK_3"/>
@@ -339,15 +424,15 @@
</devicePorts>
<routes>
<route type="mix" sink="Media Bus"
- sources="media,mmap_no_irq_out"/>
+ sources="media,mmap_no_irq_out,carplay_48k_media"/>
<route type="mix" sink="Sys Notification Bus"
sources="sys_notification,carplay_8k_sys,carplay_16k_sys,carplay_24k_sys,carplay_32k_sys,carplay_48k_sys,mmap_no_irq_out"/>
<route type="mix" sink="Nav Guidance Bus"
- sources="nav_guidance,mmap_no_irq_out"/>
+ sources="nav_guidance,mmap_no_irq_out,carplay_8k_navi,carplay_16k_navi,carplay_24k_navi,carplay_32k_navi,carplay_48k_navi"/>
<route type="mix" sink="Phone Bus"
- sources="phone,mmap_no_irq_out"/>
+ sources="phone,carplay_8k_phone,carplay_16k_phone,carplay_24k_phone,carplay_32k_phone,carplay_48k_phone,mmap_no_irq_out"/>
<route type="mix" sink="Alerts Bus"
- sources="alerts"/>
+ sources="alerts,carplay_8k_alerts,carplay_16k_alerts,carplay_24k_alerts,carplay_32k_alerts,carplay_48k_alerts"/>
<route type="mix" sink="Front Passenger Bus"
sources="front_passenger,mmap_no_irq_out"/>
<route type="mix" sink="Rear Seat Bus"
diff --git a/configs/msmnile_au/audio_io_policy.conf b/configs/msmnile_au/audio_io_policy.conf
index 1959c14..d02d736 100644
--- a/configs/msmnile_au/audio_io_policy.conf
+++ b/configs/msmnile_au/audio_io_policy.conf
@@ -91,7 +91,7 @@
nav_guidance {
flags AUDIO_OUTPUT_FLAG_NAV_GUIDANCE
formats AUDIO_FORMAT_PCM_16_BIT
- sampling_rates 48000
+ sampling_rates 8000|16000|24000|32000|48000
bit_width 16
app_type 69937
}
@@ -105,7 +105,7 @@
alerts {
flags AUDIO_OUTPUT_FLAG_ALERTS
formats AUDIO_FORMAT_PCM_16_BIT
- sampling_rates 48000
+ sampling_rates 8000|16000|24000|32000|48000
bit_width 16
app_type 69937
}
@@ -173,4 +173,11 @@
bit_width 24
app_type 69942
}
+ voip_tx {
+ flags AUDIO_INPUT_FLAG_VOIP_TX
+ formats AUDIO_FORMAT_PCM_16_BIT
+ sampling_rates 8000|16000|24000|32000|48000
+ bit_width 16
+ app_type 69938
+ }
}
diff --git a/configs/msmnile_au/audio_platform_info.xml b/configs/msmnile_au/audio_platform_info.xml
index f5e7fbf..232b558 100644
--- a/configs/msmnile_au/audio_platform_info.xml
+++ b/configs/msmnile_au/audio_platform_info.xml
@@ -25,6 +25,11 @@
<!-- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -->
<!-- OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -->
<!-- IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -->
+<!-- -->
+<!-- Changes from Qualcomm Innovation Center are provided under the following license: -->
+<!-- Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. -->
+<!-- SPDX-License-Identifier: BSD-3-Clause-Clear -->
+
<audio_platform_info>
<acdb_ids>
<device name="SND_DEVICE_OUT_HANDSET" acdb_id="60"/>
@@ -105,10 +110,14 @@
<usecase name="USECASE_AUDIO_PLAYBACK_OFFLOAD7" type="out" id="24" fe="13"/>
<usecase name="USECASE_AUDIO_PLAYBACK_OFFLOAD8" type="out" id="25" fe="14"/>
<usecase name="USECASE_AUDIO_PLAYBACK_MEDIA" type="out" id="0" fe="0"/>
+ <usecase name="USECASE_AUDIO_PLAYBACK_MEDIA_LL" type="out" id="12" fe="9"/>
<usecase name="USECASE_AUDIO_PLAYBACK_SYS_NOTIFICATION" type="out" id="9" fe="4"/>
<usecase name="USECASE_AUDIO_PLAYBACK_NAV_GUIDANCE" type="out" id="1" fe="1"/>
+ <usecase name="USECASE_AUDIO_PLAYBACK_NAV_GUIDANCE_LL" type="out" id="64" fe="35"/>
<usecase name="USECASE_AUDIO_PLAYBACK_PHONE" type="out" id="12" fe="9"/>
+ <usecase name="USECASE_AUDIO_PLAYBACK_PHONE_LL" type="out" id="12" fe="9"/>
<usecase name="USECASE_AUDIO_PLAYBACK_ALERTS" type="out" id="59" fe="30"/>
+ <usecase name="USECASE_AUDIO_PLAYBACK_ALERTS_LL" type="out" id="64" fe="35"/>
<usecase name="USECASE_AUDIO_PLAYBACK_FRONT_PASSENGER" type="out" id="55" fe="22"/>
<usecase name="USECASE_AUDIO_PLAYBACK_REAR_SEAT" type="out" id="54" fe="21"/>
<usecase name="USECASE_VOICEMMODE1_CALL" type="in" id="2" fe="50"/>
@@ -119,7 +128,7 @@
<usecase name="USECASE_VOWLAN_CALL" type="out" id="-1" fe="-1"/>
<usecase name="USECASE_AUDIO_PLAYBACK_AFE_PROXY" type="out" id="5" fe="-1"/>
<usecase name="USECASE_AUDIO_RECORD_AFE_PROXY" type="in" id="6" fe="-1"/>
- <usecase name="USECASE_AUDIO_RECORD_LOW_LATENCY" type="in" id="13" fe="7"/>
+ <usecase name="USECASE_AUDIO_RECORD_LOW_LATENCY" type="in" id="60" fe="31"/>
<usecase name="USECASE_AUDIO_PLAYBACK_ULL" type="out" id="13" fe="7"/>
<usecase name="USECASE_AUDIO_PLAYBACK_VOIP" type="out" id="12" fe="9"/>
<usecase name="USECASE_AUDIO_RECORD_VOIP" type="in" id="12" fe="9"/>
@@ -144,6 +153,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"/>
</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 f00e643..64f2707
--- a/configs/msmnile_au/audio_policy_configuration.xml
+++ b/configs/msmnile_au/audio_policy_configuration.xml
@@ -15,6 +15,10 @@
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
+
+ Changes from Qualcomm Innovation Center are provided under the following license:
+ Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ SPDX-License-Identifier: BSD-3-Clause-Clear
-->
<audioPolicyConfiguration version="1.0" xmlns:xi="http://www.w3.org/2001/XInclude">
@@ -75,6 +79,11 @@
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
+ <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>
<mixPort name="sys_notification" role="source">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
@@ -103,14 +112,89 @@
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
+ <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"
+ 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"
+ 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"
+ 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"
+ 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">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
+ <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"
+ 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"
+ 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"
+ 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"
+ 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">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
+ <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"
+ 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"
+ 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"
+ 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"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ </mixPort>
<mixPort name="front_passenger" role="source">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
@@ -245,7 +329,7 @@
samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000,96000,192000"
channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO,AUDIO_CHANNEL_IN_FRONT_BACK,AUDIO_CHANNEL_INDEX_MASK_3,AUDIO_CHANNEL_INDEX_MASK_4"/>
</mixPort>
- <mixPort name="fast input" role="sink" flags="AUDIO_INPUT_FLAG_FAST">
+ <mixPort name="fast input" role="sink" maxOpenCount="2" maxActiveCount="2" flags="AUDIO_INPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_8_24_BIT"
samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000"
channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO,AUDIO_CHANNEL_IN_FRONT_BACK,AUDIO_CHANNEL_INDEX_MASK_3"/>
@@ -468,15 +552,15 @@
<!-- route declaration, i.e. list all available sources for a given sink -->
<routes>
<route type="mix" sink="Media Bus"
- sources="media,direct_pcm,compressed_offload,voip_rx,mmap_no_irq_out"/>
+ sources="media,direct_pcm,compressed_offload,voip_rx,mmap_no_irq_out,carplay_48k_media"/>
<route type="mix" sink="Sys Notification Bus"
sources="sys_notification,mmap_no_irq_out,carplay_8k_sys,carplay_16k_sys,carplay_24k_sys,carplay_32k_sys,carplay_48k_sys"/>
<route type="mix" sink="Nav Guidance Bus"
- sources="nav_guidance,mmap_no_irq_out"/>
+ sources="nav_guidance,mmap_no_irq_out,carplay_8k_navi,carplay_16k_navi,carplay_24k_navi,carplay_32k_navi,carplay_48k_navi"/>
<route type="mix" sink="Phone Bus"
- sources="phone,mmap_no_irq_out"/>
+ sources="phone,mmap_no_irq_out,carplay_8k_phone,carplay_16k_phone,carplay_24k_phone,carplay_32k_phone,carplay_48k_phone"/>
<route type="mix" sink="Alerts Bus"
- sources="alerts"/>
+ sources="alerts,carplay_8k_alerts,carplay_16k_alerts,carplay_24k_alerts,carplay_32k_alerts,carplay_48k_alerts"/>
<route type="mix" sink="Front Passenger Bus"
sources="front_passenger,mmap_no_irq_out"/>
<route type="mix" sink="Rear Seat Bus"
diff --git a/configs/msmnile_au/mixer_paths_adp.xml b/configs/msmnile_au/mixer_paths_adp.xml
index 3e3c5ff..25f6c97 100644
--- a/configs/msmnile_au/mixer_paths_adp.xml
+++ b/configs/msmnile_au/mixer_paths_adp.xml
@@ -24,6 +24,10 @@
<!-- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -->
<!-- OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -->
<!-- IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -->
+<!-- -->
+<!-- Changes from Qualcomm Innovation Center are provided under the following license: -->
+<!-- Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. -->
+<!-- SPDX-License-Identifier: BSD-3-Clause-Clear -->
<mixer>
<!-- These are the initial mixer settings -->
<!-- Example commands to Enable the paired rx usecase-->
@@ -297,6 +301,11 @@
<ctl name="TERT_TDM_RX_0 Audio Mixer MultiMedia1" value="1" />
</path>
+ <path name="media-playback-ll">
+ <ctl name="TERT_TDM_RX_0 Channels" value="Six" />
+ <ctl name="TERT_TDM_RX_0 Audio Mixer MultiMedia10" value="1" />
+ </path>
+
<path name="sys-notification-playback sys-bus-out">
<ctl name="TERT_TDM_RX_0 Channels" value="Six" />
<ctl name="TERT_TDM_RX_0 Audio Mixer MultiMedia5" value="1" />
@@ -307,16 +316,31 @@
<ctl name="TERT_TDM_RX_1 Audio Mixer MultiMedia2" value="1" />
</path>
+ <path name="nav-guidance-playback-ll nav-bus-out">
+ <ctl name="TERT_TDM_RX_1 Channels" value="One" />
+ <ctl name="TERT_TDM_RX_1 Audio Mixer MultiMedia36" value="1" />
+ </path>
+
<path name="phone-playback phone-bus-out">
<ctl name="TERT_TDM_RX_2 Channels" value="One" />
<ctl name="TERT_TDM_RX_2 Audio Mixer MultiMedia10" value="1" />
</path>
+ <path name="phone-playback-ll phone-bus-out">
+ <ctl name="TERT_TDM_RX_2 Channels" value="One" />
+ <ctl name="TERT_TDM_RX_2 Audio Mixer MultiMedia10" value="1" />
+ </path>
+
<path name="alerts-playback alerts-bus-out">
<ctl name="TERT_TDM_RX_0 Channels" value="Six" />
<ctl name="TERT_TDM_RX_0 Audio Mixer MultiMedia31" value="1" />
</path>
+ <path name="alerts-playback-ll alerts-bus-out">
+ <ctl name="TERT_TDM_RX_0 Channels" value="Six" />
+ <ctl name="TERT_TDM_RX_0 Audio Mixer MultiMedia36" value="1" />
+ </path>
+
<path name="front-passenger-playback pax-bus-out">
<ctl name="QUAT_TDM_RX_0 Channels" value="Eight" />
<ctl name="QUAT_TDM_RX_0 Audio Mixer MultiMedia23" value="1" />
@@ -391,7 +415,17 @@
<path name="low-latency-record">
<ctl name="TERT_TDM_TX_0 Channels" value="One" />
- <ctl name="MultiMedia8 Mixer TERT_TDM_TX_0" value="1" />
+ <ctl name="MultiMedia32 Mixer TERT_TDM_TX_0" value="1" />
+ </path>
+
+ <path name="low-latency-record2">
+ <ctl name="TERT_TDM_TX_0 Channels" value="One" />
+ <ctl name="MultiMedia35 Mixer TERT_TDM_TX_0" value="1" />
+ </path>
+
+ <path name="audio-record-voip">
+ <ctl name="TERT_TDM_TX_0 Channels" value="One" />
+ <ctl name="MultiMedia10 Mixer TERT_TDM_TX_0" value="1" />
</path>
<path name="low-latency-record headset-mic">
diff --git a/configs/msmnile_au/msmnile_au.mk b/configs/msmnile_au/msmnile_au.mk
index 240c9db..cfcc6c5 100644
--- a/configs/msmnile_au/msmnile_au.mk
+++ b/configs/msmnile_au/msmnile_au.mk
@@ -382,12 +382,10 @@
#Enable AAudio MMAP/NOIRQ data path
#1 is AAUDIO_POLICY_NEVER so it will not try MMAP
#2 is AAUDIO_POLICY_AUTO so it will try MMAP then fallback to Legacy path
-ifneq ($(TARGET_BOARD_PLATFORM)$(TARGET_BOARD_SUFFIX), msmnile_gvmq)
PRODUCT_PROPERTY_OVERRIDES += aaudio.mmap_policy=2
#Allow EXCLUSIVE then fall back to SHARED.
PRODUCT_PROPERTY_OVERRIDES += aaudio.mmap_exclusive_policy=2
PRODUCT_PROPERTY_OVERRIDES += aaudio.hw_burst_min_usec=2000
-endif
#enable mirror-link feature
PRODUCT_PROPERTY_OVERRIDES += \
@@ -458,7 +456,8 @@
vendor.audio.feature.auto_hal.enable=true \
vendor.audio.feature.synth.enable=true \
vendor.audio.feature.powerpolicy.enable=true \
-vendor.audio.feature.concurrent_pcm_record.enable=true
+vendor.audio.feature.concurrent_pcm_record.enable=true \
+vendor.audio.feature.concurrent_low_latency_pcm_record.enable=true
ifeq ($(AUDIO_FEATURE_ENABLED_SND_MONITOR), true)
PRODUCT_ODM_PROPERTIES += \
vendor.audio.feature.snd_mon.enable=true
@@ -513,7 +512,8 @@
vendor.audio.feature.auto_hal.enable=true \
vendor.audio.feature.synth.enable=true \
vendor.audio.feature.powerpolicy.enable=true \
-vendor.audio.feature.concurrent_pcm_record.enable=true
+vendor.audio.feature.concurrent_pcm_record.enable=true \
+vendor.audio.feature.concurrent_low_latency_pcm_record.enable=true
ifeq ($(AUDIO_FEATURE_ENABLED_SND_MONITOR), true)
PRODUCT_ODM_PROPERTIES += \
vendor.audio.feature.snd_mon.enable=true
diff --git a/configs/msmsteppe_au/audio_io_policy.conf b/configs/msmsteppe_au/audio_io_policy.conf
index f7aa755..1814a84 100644
--- a/configs/msmsteppe_au/audio_io_policy.conf
+++ b/configs/msmsteppe_au/audio_io_policy.conf
@@ -91,7 +91,7 @@
nav_guidance {
flags AUDIO_OUTPUT_FLAG_NAV_GUIDANCE
formats AUDIO_FORMAT_PCM_16_BIT
- sampling_rates 48000
+ sampling_rates 8000|16000|24000|32000|48000
bit_width 16
app_type 69937
}
@@ -105,7 +105,7 @@
alerts {
flags AUDIO_OUTPUT_FLAG_ALERTS
formats AUDIO_FORMAT_PCM_16_BIT
- sampling_rates 48000
+ sampling_rates 8000|16000|24000|32000|48000
bit_width 16
app_type 69937
}
@@ -172,4 +172,11 @@
bit_width 32
app_type 69949
}
+ voip_tx {
+ flags AUDIO_INPUT_FLAG_VOIP_TX
+ formats AUDIO_FORMAT_PCM_16_BIT
+ sampling_rates 8000|16000|24000|32000|48000
+ bit_width 16
+ app_type 69938
+ }
}
diff --git a/configs/msmsteppe_au/audio_platform_info.xml b/configs/msmsteppe_au/audio_platform_info.xml
index ce989d9..d303e02 100644
--- a/configs/msmsteppe_au/audio_platform_info.xml
+++ b/configs/msmsteppe_au/audio_platform_info.xml
@@ -25,6 +25,11 @@
<!-- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -->
<!-- OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -->
<!-- IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -->
+<!-- -->
+<!-- Changes from Qualcomm Innovation Center are provided under the following license: -->
+<!-- Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. -->
+<!-- SPDX-License-Identifier: BSD-3-Clause-Clear -->
+
<audio_platform_info>
<acdb_ids>
<device name="SND_DEVICE_OUT_HANDSET" acdb_id="60"/>
@@ -105,10 +110,14 @@
<usecase name="USECASE_AUDIO_PLAYBACK_OFFLOAD7" type="out" id="24" fe="13"/>
<usecase name="USECASE_AUDIO_PLAYBACK_OFFLOAD8" type="out" id="25" fe="14"/>
<usecase name="USECASE_AUDIO_PLAYBACK_MEDIA" type="out" id="0" fe="0"/>
+ <usecase name="USECASE_AUDIO_PLAYBACK_MEDIA_LL" type="out" id="12" fe="9"/>
<usecase name="USECASE_AUDIO_PLAYBACK_SYS_NOTIFICATION" type="out" id="9" fe="4"/>
<usecase name="USECASE_AUDIO_PLAYBACK_NAV_GUIDANCE" type="out" id="1" fe="1"/>
+ <usecase name="USECASE_AUDIO_PLAYBACK_NAV_GUIDANCE_LL" type="out" id="64" fe="35"/>
<usecase name="USECASE_AUDIO_PLAYBACK_PHONE" type="out" id="12" fe="9"/>
+ <usecase name="USECASE_AUDIO_PLAYBACK_PHONE_LL" type="out" id="12" fe="9"/>
<usecase name="USECASE_AUDIO_PLAYBACK_ALERTS" type="out" id="59" fe="30"/>
+ <usecase name="USECASE_AUDIO_PLAYBACK_ALERTS_LL" type="out" id="64" fe="35"/>
<usecase name="USECASE_AUDIO_PLAYBACK_FRONT_PASSENGER" type="out" id="55" fe="22"/>
<usecase name="USECASE_AUDIO_PLAYBACK_REAR_SEAT" type="out" id="54" fe="21"/>
<usecase name="USECASE_VOICEMMODE1_CALL" type="in" id="2" fe="50"/>
@@ -119,7 +128,7 @@
<usecase name="USECASE_VOWLAN_CALL" type="out" id="-1" fe="-1"/>
<usecase name="USECASE_AUDIO_PLAYBACK_AFE_PROXY" type="out" id="5" fe="-1"/>
<usecase name="USECASE_AUDIO_RECORD_AFE_PROXY" type="in" id="6" fe="-1"/>
- <usecase name="USECASE_AUDIO_RECORD_LOW_LATENCY" type="in" id="13" fe="7"/>
+ <usecase name="USECASE_AUDIO_RECORD_LOW_LATENCY" type="in" id="60" fe="31"/>
<usecase name="USECASE_AUDIO_PLAYBACK_ULL" type="out" id="13" fe="7"/>
<usecase name="USECASE_AUDIO_PLAYBACK_VOIP" type="out" id="12" fe="9"/>
<usecase name="USECASE_AUDIO_RECORD_VOIP" type="in" id="12" fe="9"/>
@@ -144,6 +153,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"/>
</pcm_ids>
<config_params>
diff --git a/configs/msmsteppe_au/audio_policy_configuration.xml b/configs/msmsteppe_au/audio_policy_configuration.xml
index c7bf080..4306abd 100644
--- a/configs/msmsteppe_au/audio_policy_configuration.xml
+++ b/configs/msmsteppe_au/audio_policy_configuration.xml
@@ -15,6 +15,10 @@
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
+
+ Changes from Qualcomm Innovation Center are provided under the following license:
+ Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ SPDX-License-Identifier: BSD-3-Clause-Clear
-->
<audioPolicyConfiguration version="1.0" xmlns:xi="http://www.w3.org/2001/XInclude">
@@ -75,6 +79,11 @@
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
+ <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>
<mixPort name="sys_notification" role="source">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
@@ -103,14 +112,89 @@
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
+ <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"
+ 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"
+ 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"
+ 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"
+ 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">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
+ <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"
+ 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"
+ 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"
+ 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"
+ 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">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
+ <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"
+ 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"
+ 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"
+ 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"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ </mixPort>
<mixPort name="front_passenger" role="source">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
@@ -245,7 +329,7 @@
samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000,96000,192000"
channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO,AUDIO_CHANNEL_IN_FRONT_BACK,AUDIO_CHANNEL_INDEX_MASK_3,AUDIO_CHANNEL_INDEX_MASK_4"/>
</mixPort>
- <mixPort name="fast input" role="sink" flags="AUDIO_INPUT_FLAG_FAST">
+ <mixPort name="fast input" role="sink" maxOpenCount="2" maxActiveCount="2" flags="AUDIO_INPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_8_24_BIT"
samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000"
channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO,AUDIO_CHANNEL_IN_FRONT_BACK,AUDIO_CHANNEL_INDEX_MASK_3"/>
@@ -463,15 +547,15 @@
<!-- route declaration, i.e. list all available sources for a given sink -->
<routes>
<route type="mix" sink="Media Bus"
- sources="media,direct_pcm,compressed_offload,voip_rx,mmap_no_irq_out"/>
+ sources="media,direct_pcm,compressed_offload,voip_rx,mmap_no_irq_out,carplay_48k_media"/>
<route type="mix" sink="Sys Notification Bus"
sources="sys_notification,mmap_no_irq_out,carplay_8k_sys,carplay_16k_sys,carplay_24k_sys,carplay_32k_sys,carplay_48k_sys"/>
<route type="mix" sink="Nav Guidance Bus"
- sources="nav_guidance,mmap_no_irq_out"/>
+ sources="nav_guidance,mmap_no_irq_out,carplay_8k_navi,carplay_16k_navi,carplay_24k_navi,carplay_32k_navi,carplay_48k_navi"/>
<route type="mix" sink="Phone Bus"
- sources="phone,mmap_no_irq_out"/>
+ sources="phone,mmap_no_irq_out,carplay_8k_phone,carplay_16k_phone,carplay_24k_phone,carplay_32k_phone,carplay_48k_phone"/>
<route type="mix" sink="Alerts Bus"
- sources="alerts"/>
+ sources="alerts,carplay_8k_alerts,carplay_16k_alerts,carplay_24k_alerts,carplay_32k_alerts,carplay_48k_alerts"/>
<route type="mix" sink="Front Passenger Bus"
sources="front_passenger,mmap_no_irq_out"/>
<route type="mix" sink="Rear Seat Bus"
diff --git a/configs/msmsteppe_au/mixer_paths_adp.xml b/configs/msmsteppe_au/mixer_paths_adp.xml
index 760437b..eaaba98 100644
--- a/configs/msmsteppe_au/mixer_paths_adp.xml
+++ b/configs/msmsteppe_au/mixer_paths_adp.xml
@@ -25,6 +25,10 @@
<!-- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -->
<!-- OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -->
<!-- IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -->
+<!-- -->
+<!-- Changes from Qualcomm Innovation Center are provided under the following license: -->
+<!-- Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. -->
+<!-- SPDX-License-Identifier: BSD-3-Clause-Clear -->
<mixer>
<!-- These are the initial mixer settings -->
<ctl name="MultiMedia5 Mixer AFE_PCM_TX" value="0" />
@@ -267,6 +271,11 @@
<ctl name="TERT_TDM_RX_0 Audio Mixer MultiMedia1" value="1" />
</path>
+ <path name="media-playback-ll">
+ <ctl name="TERT_TDM_RX_0 Channels" value="Six" />
+ <ctl name="TERT_TDM_RX_0 Audio Mixer MultiMedia10" value="1" />
+ </path>
+
<path name="sys-notification-playback sys-bus-out">
<ctl name="TERT_TDM_RX_0 Channels" value="Six" />
<ctl name="TERT_TDM_RX_0 Audio Mixer MultiMedia5" value="1" />
@@ -277,16 +286,31 @@
<ctl name="TERT_TDM_RX_1 Audio Mixer MultiMedia2" value="1" />
</path>
+ <path name="nav-guidance-playback-ll nav-bus-out">
+ <ctl name="TERT_TDM_RX_1 Channels" value="One" />
+ <ctl name="TERT_TDM_RX_1 Audio Mixer MultiMedia36" value="1" />
+ </path>
+
<path name="phone-playback phone-bus-out">
<ctl name="TERT_TDM_RX_2 Channels" value="One" />
<ctl name="TERT_TDM_RX_2 Audio Mixer MultiMedia10" value="1" />
</path>
+ <path name="phone-playback-ll phone-bus-out">
+ <ctl name="TERT_TDM_RX_2 Channels" value="One" />
+ <ctl name="TERT_TDM_RX_2 Audio Mixer MultiMedia10" value="1" />
+ </path>
+
<path name="alerts-playback alerts-bus-out">
<ctl name="TERT_TDM_RX_0 Channels" value="Six" />
<ctl name="TERT_TDM_RX_0 Audio Mixer MultiMedia31" value="1" />
</path>
+ <path name="alerts-playback-ll alerts-bus-out">
+ <ctl name="TERT_TDM_RX_0 Channels" value="Six" />
+ <ctl name="TERT_TDM_RX_0 Audio Mixer MultiMedia36" value="1" />
+ </path>
+
<path name="front-passenger-playback pax-bus-out">
<ctl name="QUAT_TDM_RX_0 Channels" value="Eight" />
<ctl name="QUAT_TDM_RX_0 Audio Mixer MultiMedia23" value="1" />
@@ -341,7 +365,17 @@
<path name="low-latency-record">
<ctl name="TERT_TDM_TX_0 Channels" value="One" />
- <ctl name="MultiMedia8 Mixer TERT_TDM_TX_0" value="1" />
+ <ctl name="MultiMedia32 Mixer TERT_TDM_TX_0" value="1" />
+ </path>
+
+ <path name="low-latency-record2">
+ <ctl name="TERT_TDM_TX_0 Channels" value="One" />
+ <ctl name="MultiMedia35 Mixer TERT_TDM_TX_0" value="1" />
+ </path>
+
+ <path name="audio-record-voip">
+ <ctl name="TERT_TDM_TX_0 Channels" value="One" />
+ <ctl name="MultiMedia10 Mixer TERT_TDM_TX_0" value="1" />
</path>
<path name="low-latency-record capture-fm">
diff --git a/configs/msmsteppe_au/msmsteppe_au.mk b/configs/msmsteppe_au/msmsteppe_au.mk
index d5c4986..d11335a 100644
--- a/configs/msmsteppe_au/msmsteppe_au.mk
+++ b/configs/msmsteppe_au/msmsteppe_au.mk
@@ -410,7 +410,8 @@
vendor.audio.feature.auto_hal.enable=true \
vendor.audio.feature.synth.enable=true \
vendor.audio.feature.powerpolicy.enable=true \
-vendor.audio.feature.concurrent_pcm_record.enable=true
+vendor.audio.feature.concurrent_pcm_record.enable=true \
+vendor.audio.feature.concurrent_low_latency_pcm_record.enable=true
else
# Non-Generic ODM varient related
PRODUCT_ODM_PROPERTIES += \
@@ -459,7 +460,8 @@
vendor.audio.feature.auto_hal.enable=true \
vendor.audio.feature.synth.enable=true \
vendor.audio.feature.powerpolicy.enable=true \
-vendor.audio.feature.concurrent_pcm_record.enable=true
+vendor.audio.feature.concurrent_pcm_record.enable=true \
+vendor.audio.feature.concurrent_low_latency_pcm_record.enable=true
endif
# for HIDL related packages
diff --git a/hal/audio_extn/audio_extn.c b/hal/audio_extn/audio_extn.c
index b9832bb..0795649 100644
--- a/hal/audio_extn/audio_extn.c
+++ b/hal/audio_extn/audio_extn.c
@@ -239,6 +239,7 @@
static bool audio_extn_audiozoom_enabled = false;
static bool audio_extn_hifi_filter_enabled = false;
static bool audio_extn_concurrent_pcm_record_enabled = false;
+static bool audio_extn_concurrent_low_latency_pcm_record_enabled = false;
#define AUDIO_PARAMETER_KEY_AANC_NOISE_LEVEL "aanc_noise_level"
#define AUDIO_PARAMETER_KEY_ANC "anc_enabled"
@@ -3791,7 +3792,7 @@
int max_mic_count = platform_get_max_mic_count(adev->platform);
/* validate input params. Avoid updated channel mask if loopback device */
/* validate input params. Avoid updated channel mask if HDMI or loopback device */
- if ((channel_count > max_mic_count) &&
+ if ((channel_count == 6) &&
(in->format == AUDIO_FORMAT_PCM_16_BIT) &&
(!is_loopback_input_device(get_device_types(&in->device_list)))) {
switch (max_mic_count) {
@@ -5711,6 +5712,19 @@
}
// END: CONCURRENT_PCM_RECORD =================================================
+// START: CONCURRENT_LOW_LATENCY_PCM_RECORD ===============================================
+bool audio_extn_is_concurrent_low_latency_pcm_record_enabled()
+{
+ return audio_extn_concurrent_low_latency_pcm_record_enabled;
+}
+
+void concurrent_low_latency_pcm_record_feature_init(bool is_feature_enabled)
+{
+ audio_extn_concurrent_low_latency_pcm_record_enabled = is_feature_enabled;
+ ALOGD("%s: ---- Feature CONCURRENT_LOW_LATENCY_PCM_RECORD is %s----", __func__, is_feature_enabled? "ENABLED": "NOT ENABLED");
+}
+// END: CONCURRENT_LOW_LATENCY_PCM_RECORD =================================================
+
// START: COMPRESS_IN ==================================================
void compress_in_feature_init(bool is_feature_enabled)
{
@@ -6791,6 +6805,9 @@
concurrent_pcm_record_feature_init(
property_get_bool("vendor.audio.feature.concurrent_pcm_record.enable",
false));
+ concurrent_low_latency_pcm_record_feature_init(
+ property_get_bool("vendor.audio.feature.concurrent_low_latency_pcm_record.enable",
+ false));
}
void audio_extn_set_parameters(struct audio_device *adev,
diff --git a/hal/audio_extn/audio_extn.h b/hal/audio_extn/audio_extn.h
index f35a9d6..256382c 100644
--- a/hal/audio_extn/audio_extn.h
+++ b/hal/audio_extn/audio_extn.h
@@ -33,6 +33,11 @@
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
+ *
+ * Changes from Qualcomm Innovation Center are provided under the following license:
+ * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ * SPDX-License-Identifier: BSD-3-Clause-Clear
+ *
*/
#ifndef AUDIO_EXTN_H
@@ -1482,4 +1487,5 @@
void audio_get_vendor_config_path(char* config_file_path, int path_size);
bool audio_extn_is_concurrent_pcm_record_enabled();
+bool audio_extn_is_concurrent_low_latency_pcm_record_enabled();
#endif /* AUDIO_EXTN_H */
diff --git a/hal/audio_extn/auto_hal.c b/hal/audio_extn/auto_hal.c
index 037b0e5..6f0a5d4 100644
--- a/hal/audio_extn/auto_hal.c
+++ b/hal/audio_extn/auto_hal.c
@@ -25,6 +25,10 @@
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Changes from Qualcomm Innovation Center are provided under the following license:
+ * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ * SPDX-License-Identifier: BSD-3-Clause-Clear
*/
#define LOG_TAG "auto_hal_extn"
/*#define LOG_NDEBUG 0*/
@@ -375,13 +379,32 @@
switch(out->car_audio_stream) {
case CAR_AUDIO_STREAM_MEDIA:
- /* media bus stream shares pcm device with deep-buffer */
- out->usecase = USECASE_AUDIO_PLAYBACK_MEDIA;
- out->config = pcm_config_media;
- out->config.period_size = fp_get_output_period_size(out->sample_rate, out->format,
+ if (out->flags == AUDIO_OUTPUT_FLAG_PRIMARY) {
+ /* media bus stream shares pcm device with deep-buffer */
+ out->usecase = USECASE_AUDIO_PLAYBACK_MEDIA;
+ out->config = pcm_config_media;
+ out->config.period_size = fp_get_output_period_size(out->sample_rate, out->format,
channels, DEEP_BUFFER_OUTPUT_PERIOD_DURATION);
- if (out->config.period_size <= 0) {
- ALOGE("Invalid configuration period size is not valid");
+ if (out->config.period_size <= 0) {
+ ALOGE("Invalid configuration period size is not valid");
+ ret = -EINVAL;
+ goto error;
+ }
+ }
+ 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:
+ out->config=pcm_config_system_48KHz;
+ break;;
+ default:
+ out->config=pcm_config_system_48KHz;
+ }
+ }
+ else {
+ ALOGE("%s: Output profile flag(%#x) is not valid", __func__,out->flags);
ret = -EINVAL;
goto error;
}
@@ -418,12 +441,51 @@
out->volume_l = out->volume_r = MAX_VOLUME_GAIN;
break;
case CAR_AUDIO_STREAM_NAV_GUIDANCE:
- 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,
+ 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,
channels, DEEP_BUFFER_OUTPUT_PERIOD_DURATION);
- if (out->config.period_size <= 0) {
- ALOGE("Invalid configuration period size is not valid");
+ if (out->config.period_size <= 0) {
+ ALOGE("Invalid configuration period size is not valid");
+ ret = -EINVAL;
+ goto error;
+ }
+ out->flags |= AUDIO_OUTPUT_FLAG_NAV_GUIDANCE;
+ }
+ else if (out->flags == AUDIO_OUTPUT_FLAG_FAST) {
+ out->usecase = USECASE_AUDIO_PLAYBACK_NAV_GUIDANCE_LL;
+ switch(out->sample_rate)
+ {
+ case 48000:
+ out->config=pcm_config_system_48KHz;
+ break;
+ case 32000:
+ out->config=pcm_config_system_32KHz;
+ break;
+ case 24000:
+ out->config=pcm_config_system_24KHz;
+ break;
+ case 16000:
+ out->config=pcm_config_system_16KHz;
+ break;
+ case 8000:
+ out->config=pcm_config_system_8KHz;
+ break;
+ default:
+ out->config = pcm_config_media;
+ out->config.period_size = fp_get_output_period_size(out->sample_rate, out->format,
+ channels, DEEP_BUFFER_OUTPUT_PERIOD_DURATION);
+ if (out->config.period_size <= 0) {
+ ALOGE("Invalid configuration period size is not valid");
+ ret = -EINVAL;
+ 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;
}
@@ -432,7 +494,19 @@
out->volume_l = out->volume_r = MAX_VOLUME_GAIN;
break;
case CAR_AUDIO_STREAM_PHONE:
- out->usecase = USECASE_AUDIO_PLAYBACK_PHONE;
+ 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_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)
{
case 48000:
@@ -458,8 +532,39 @@
out->volume_l = out->volume_r = MAX_VOLUME_GAIN;
break;
case CAR_AUDIO_STREAM_ALERTS:
- out->usecase = USECASE_AUDIO_PLAYBACK_ALERTS;
- out->config = pcm_config_system;
+ if (out->flags == AUDIO_OUTPUT_FLAG_NONE) {
+ out->usecase = USECASE_AUDIO_PLAYBACK_ALERTS;
+ out->flags = AUDIO_OUTPUT_FLAG_ALERTS;
+ }
+ 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)
+ {
+ case 48000:
+ out->config=pcm_config_system_48KHz;
+ break;
+ case 32000:
+ out->config=pcm_config_system_32KHz;
+ break;
+ case 24000:
+ out->config=pcm_config_system_24KHz;
+ break;
+ case 16000:
+ out->config=pcm_config_system_16KHz;
+ break;
+ case 8000:
+ out->config=pcm_config_system_8KHz;
+ break;
+ default:
+ out->config=pcm_config_system_48KHz;
+ }
if (out->flags == AUDIO_OUTPUT_FLAG_NONE)
out->flags |= AUDIO_OUTPUT_FLAG_ALERTS;
out->volume_l = out->volume_r = MAX_VOLUME_GAIN;
@@ -1019,6 +1124,7 @@
snd_device = SND_DEVICE_OUT_VOICE_SPEAKER;
break;
case USECASE_AUDIO_PLAYBACK_MEDIA:
+ case USECASE_AUDIO_PLAYBACK_MEDIA_LL:
snd_device = SND_DEVICE_OUT_BUS_MEDIA;
break;
case USECASE_AUDIO_PLAYBACK_OFFLOAD:
@@ -1069,12 +1175,15 @@
snd_device = SND_DEVICE_OUT_BUS_SYS;
break;
case USECASE_AUDIO_PLAYBACK_NAV_GUIDANCE:
+ case USECASE_AUDIO_PLAYBACK_NAV_GUIDANCE_LL:
snd_device = SND_DEVICE_OUT_BUS_NAV;
break;
case USECASE_AUDIO_PLAYBACK_PHONE:
+ case USECASE_AUDIO_PLAYBACK_PHONE_LL:
snd_device = SND_DEVICE_OUT_BUS_PHN;
break;
case USECASE_AUDIO_PLAYBACK_ALERTS:
+ case USECASE_AUDIO_PLAYBACK_ALERTS_LL:
snd_device = SND_DEVICE_OUT_BUS_ALR;
break;
case USECASE_AUDIO_PLAYBACK_FRONT_PASSENGER:
diff --git a/hal/audio_extn/auto_hal.h b/hal/audio_extn/auto_hal.h
index dfe78f2..679daf2 100644
--- a/hal/audio_extn/auto_hal.h
+++ b/hal/audio_extn/auto_hal.h
@@ -15,6 +15,11 @@
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
+ *
+ * Changes from Qualcomm Innovation Center are provided under the following license:
+ * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ * SPDX-License-Identifier: BSD-3-Clause-Clear
+ *
*/
#include <audio_hw.h>
#include "platform.h"
@@ -112,10 +117,14 @@
static const audio_usecase_t bus_device_usecases[] = {
USECASE_AUDIO_PLAYBACK_MEDIA,
+ USECASE_AUDIO_PLAYBACK_MEDIA_LL,
USECASE_AUDIO_PLAYBACK_SYS_NOTIFICATION,
USECASE_AUDIO_PLAYBACK_NAV_GUIDANCE,
+ USECASE_AUDIO_PLAYBACK_NAV_GUIDANCE_LL,
USECASE_AUDIO_PLAYBACK_PHONE,
+ USECASE_AUDIO_PLAYBACK_PHONE_LL,
USECASE_AUDIO_PLAYBACK_ALERTS,
+ USECASE_AUDIO_PLAYBACK_ALERTS_LL,
USECASE_AUDIO_PLAYBACK_FRONT_PASSENGER,
USECASE_AUDIO_PLAYBACK_REAR_SEAT,
USECASE_AUDIO_RECORD_BUS,
diff --git a/hal/audio_extn/ext_hw_plugin.c b/hal/audio_extn/ext_hw_plugin.c
index 5f21c3f..8807f22 100644
--- a/hal/audio_extn/ext_hw_plugin.c
+++ b/hal/audio_extn/ext_hw_plugin.c
@@ -25,6 +25,10 @@
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*
+* Changes from Qualcomm Innovation Center are provided under the following license:
+* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
+* SPDX-License-Identifier: BSD-3-Clause-Clear
*/
#define LOG_TAG "audio_ext_hw_plugin"
@@ -175,12 +179,14 @@
case USECASE_AUDIO_PLAYBACK_OFFLOAD9:
case USECASE_AUDIO_PLAYBACK_ULL:
case USECASE_AUDIO_PLAYBACK_MEDIA:
+ case USECASE_AUDIO_PLAYBACK_MEDIA_LL:
case USECASE_AUDIO_PLAYBACK_SYS_NOTIFICATION:
*plugin_usecase = AUDIO_HAL_PLUGIN_USECASE_DEFAULT_PLAYBACK;
break;
case USECASE_AUDIO_RECORD:
case USECASE_AUDIO_RECORD_COMPRESS:
case USECASE_AUDIO_RECORD_LOW_LATENCY:
+ case USECASE_AUDIO_RECORD_LOW_LATENCY2:
case USECASE_AUDIO_RECORD_FM_VIRTUAL:
case USECASE_AUDIO_RECORD_ECHO_REF_EXT:
*plugin_usecase = AUDIO_HAL_PLUGIN_USECASE_DEFAULT_CAPTURE;
@@ -196,9 +202,11 @@
*plugin_usecase = AUDIO_HAL_PLUGIN_USECASE_CS_VOICE_CALL;
break;
case USECASE_AUDIO_PLAYBACK_NAV_GUIDANCE:
+ case USECASE_AUDIO_PLAYBACK_NAV_GUIDANCE_LL:
*plugin_usecase = AUDIO_HAL_PLUGIN_USECASE_DRIVER_SIDE_PLAYBACK;
break;
case USECASE_AUDIO_PLAYBACK_PHONE:
+ case USECASE_AUDIO_PLAYBACK_PHONE_LL:
*plugin_usecase = AUDIO_HAL_PLUGIN_USECASE_PHONE_PLAYBACK;
break;
case USECASE_AUDIO_FM_TUNER_EXT:
diff --git a/hal/audio_extn/utils.c b/hal/audio_extn/utils.c
index 174e43f..23ecf7a 100644
--- a/hal/audio_extn/utils.c
+++ b/hal/audio_extn/utils.c
@@ -15,6 +15,10 @@
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
+ *
+ * Changes from Qualcomm Innovation Center are provided under the following license:
+ * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ * SPDX-License-Identifier: BSD-3-Clause-Clear
*/
#define LOG_TAG "audio_hw_utils"
@@ -943,10 +947,6 @@
ALOGV("%s Selected apptype: %d", __func__, usecase->stream.out->app_type_cfg.app_type);
break;
case PCM_CAPTURE:
- if (usecase->id == USECASE_AUDIO_RECORD_VOIP
- || usecase->id == USECASE_AUDIO_RECORD_VOIP_LOW_LATENCY)
- usecase->stream.in->app_type_cfg.app_type = APP_TYPE_VOIP_AUDIO;
- else
audio_extn_utils_update_stream_input_app_type_cfg(adev->platform,
&adev->streams_input_cfg_list,
&usecase->stream.in->device_list,
@@ -1368,7 +1368,9 @@
(compare_device_type(&usecase->stream.out->device_list,AUDIO_DEVICE_OUT_SPEAKER))) {
if (!((compare_device_type(&usecase->device_list, AUDIO_DEVICE_OUT_BUS)) && ((usecase->stream.out->flags &
(audio_output_flags_t)AUDIO_OUTPUT_FLAG_SYS_NOTIFICATION) || (usecase->stream.out->flags &
- (audio_output_flags_t)AUDIO_OUTPUT_FLAG_PHONE)))) {
+ (audio_output_flags_t)AUDIO_OUTPUT_FLAG_PHONE) || (usecase->stream.out->flags &
+ (audio_output_flags_t)AUDIO_OUTPUT_FLAG_NAV_GUIDANCE) || (usecase->stream.out->flags &
+ (audio_output_flags_t)AUDIO_OUTPUT_FLAG_ALERTS)))) {
/* Reset to default if no native stream is active or default device is speaker*/
usecase->stream.out->app_type_cfg.sample_rate = DEFAULT_OUTPUT_SAMPLING_RATE;
}
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 8d36847..3823ed0 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -34,7 +34,10 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*
+ * Changes from Qualcomm Innovation Center are provided under the following license:
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ * SPDX-License-Identifier: BSD-3-Clause-Clear
+ *
*/
#define LOG_TAG "audio_hw_primary"
@@ -93,6 +96,8 @@
#include <log_utils.h>
#endif
+#define SKIP_INPUT_SOURCE_PRIORITY
+
#define COMPRESS_OFFLOAD_NUM_FRAGMENTS 4
/*DIRECT PCM has same buffer sizes as DEEP Buffer*/
#define DIRECT_PCM_NUM_FRAGMENTS 2
@@ -435,6 +440,7 @@
[USECASE_AUDIO_RECORD_COMPRESS5] = "audio-record-compress5",
[USECASE_AUDIO_RECORD_COMPRESS6] = "audio-record-compress6",
[USECASE_AUDIO_RECORD_LOW_LATENCY] = "low-latency-record",
+ [USECASE_AUDIO_RECORD_LOW_LATENCY2] = "low-latency-record2",
[USECASE_AUDIO_RECORD_FM_VIRTUAL] = "fm-virtual-record",
[USECASE_AUDIO_RECORD_MMAP] = "mmap-record",
[USECASE_AUDIO_RECORD_HIFI] = "hifi-record",
@@ -491,10 +497,14 @@
[USECASE_AUDIO_A2DP_ABR_FEEDBACK] = "a2dp-abr-feedback",
[USECASE_AUDIO_PLAYBACK_MEDIA] = "media-playback",
+ [USECASE_AUDIO_PLAYBACK_MEDIA_LL] = "media-playback-ll",
[USECASE_AUDIO_PLAYBACK_SYS_NOTIFICATION] = "sys-notification-playback",
[USECASE_AUDIO_PLAYBACK_NAV_GUIDANCE] = "nav-guidance-playback",
+ [USECASE_AUDIO_PLAYBACK_NAV_GUIDANCE_LL] = "nav-guidance-playback-ll",
[USECASE_AUDIO_PLAYBACK_PHONE] = "phone-playback",
+ [USECASE_AUDIO_PLAYBACK_PHONE_LL] = "phone-playback-ll",
[USECASE_AUDIO_PLAYBACK_ALERTS] = "alerts-playback",
+ [USECASE_AUDIO_PLAYBACK_ALERTS_LL] = "alerts-playback-ll",
[USECASE_AUDIO_PLAYBACK_FRONT_PASSENGER] = "front-passenger-playback",
[USECASE_AUDIO_PLAYBACK_REAR_SEAT] = "rear-seat-playback",
[USECASE_AUDIO_FM_TUNER_EXT] = "fm-tuner-ext",
@@ -600,6 +610,11 @@
USECASE_AUDIO_RECORD3,
};
+static const audio_usecase_t low_latency_record_usecases[] = {
+ USECASE_AUDIO_RECORD_LOW_LATENCY,
+ USECASE_AUDIO_RECORD_LOW_LATENCY2,
+};
+
static struct audio_device *adev = NULL;
static pthread_mutex_t adev_init_lock = PTHREAD_MUTEX_INITIALIZER;
static unsigned int audio_device_ref_count;
@@ -681,6 +696,53 @@
ALOGV("%s: free pcm record usecase %d", __func__, uc_id);
}
+static bool is_pcm_low_latency_record_usecase(audio_usecase_t uc_id)
+{
+ unsigned int record_uc_index;
+ unsigned int num_usecase = sizeof(low_latency_record_usecases)/sizeof(low_latency_record_usecases[0]);
+ ALOGD("%s: Check low latency pcm record usecase", __func__);
+
+ for (record_uc_index = 0; record_uc_index < num_usecase; record_uc_index++) {
+ if (uc_id == low_latency_record_usecases[record_uc_index])
+ return true;
+ }
+ return false;
+}
+
+static audio_usecase_t get_low_latency_record_usecase(struct audio_device *adev)
+{
+ audio_usecase_t ret_uc = USECASE_INVALID;
+ unsigned int record_uc_index;
+ unsigned int num_usecase = sizeof(low_latency_record_usecases)/sizeof(low_latency_record_usecases[0]);
+
+ ALOGD("%s: get_low_latency_record_usecase: %d", __func__, num_usecase);
+ for (record_uc_index = 0; record_uc_index < num_usecase; record_uc_index++) {
+ if (!(adev->pcm_low_latency_record_uc_state & (0x1 << record_uc_index))) {
+ adev->pcm_low_latency_record_uc_state |= 0x1 << record_uc_index;
+ ALOGD("%s: get_low_latency_record_usecase: %d", __func__, record_uc_index);
+ ret_uc = low_latency_record_usecases[record_uc_index];
+ break;
+ }
+ }
+
+ ALOGD("%s: low latency pcm record usecase is %d", __func__, ret_uc);
+ return ret_uc;
+}
+
+static void free_low_latency_record_usecase(struct audio_device *adev,
+ audio_usecase_t uc_id)
+{
+ unsigned int record_uc_index;
+ unsigned int num_usecase = sizeof(low_latency_record_usecases)/sizeof(low_latency_record_usecases[0]);
+
+ for (record_uc_index = 0; record_uc_index < num_usecase; record_uc_index++) {
+ if (low_latency_record_usecases[record_uc_index] == uc_id) {
+ adev->pcm_low_latency_record_uc_state &= ~(0x1 << record_uc_index);
+ break;
+ }
+ }
+ ALOGD("%s: free low latency pcm record usecase %d", __func__, uc_id);
+}
static bool may_use_noirq_mode(struct audio_device *adev, audio_usecase_t uc_id,
int flags __unused)
{
@@ -2907,6 +2969,12 @@
if (USECASE_AUDIO_RECORD_FM_VIRTUAL == usecase->id)
continue;
+#ifdef SKIP_INPUT_SOURCE_PRIORITY
+ // temporary fix to resolve issue when accessing Google Assistant while FM is active.
+ if (USECASE_AUDIO_RECORD_ECHO_REF_EXT == usecase->id) {
+ continue;
+ }
+#endif
priority = source_priority(in->source);
if (priority > last_priority) {
@@ -3110,8 +3178,11 @@
}
priority_in = voip_in;
} else {
- /* get the input with the highest priority source*/
+#ifdef SKIP_INPUT_SOURCE_PRIORITY
+ ALOGD("%s: Skipping get_priority_input for use-case-id:%d(%s).", __func__, uc_id, use_case_table[uc_id]);
+#else
priority_in = get_priority_input(adev);
+#endif
if (!priority_in ||
audio_extn_auto_hal_overwrite_priority_for_auto(usecase->stream.in))
@@ -3287,7 +3358,9 @@
#ifdef PLATFORM_AUTO
if (!(compare_device_type(&usecase->device_list, AUDIO_DEVICE_OUT_BUS) && ((usecase->stream.out->flags &
(audio_output_flags_t)AUDIO_OUTPUT_FLAG_SYS_NOTIFICATION) || (usecase->stream.out->flags &
- (audio_output_flags_t)AUDIO_OUTPUT_FLAG_PHONE)))) {
+ (audio_output_flags_t)AUDIO_OUTPUT_FLAG_PHONE) || (usecase->stream.out->flags &
+ (audio_output_flags_t)AUDIO_OUTPUT_FLAG_NAV_GUIDANCE) || (usecase->stream.out->flags &
+ (audio_output_flags_t)AUDIO_OUTPUT_FLAG_ALERTS)))) {
usecase->stream.out->app_type_cfg.sample_rate = DEFAULT_OUTPUT_SAMPLING_RATE;
}
#else
@@ -3443,9 +3516,20 @@
__func__, in->usecase);
return -EINVAL;
}
+#ifdef SKIP_INPUT_SOURCE_PRIORITY
+ // Skip (1)fm-virtual-record and (2)echo-reference-external from get-priority-input logic.
+ // See comment in function select_devices() before call to get_priority_input()
+ if ((in->usecase == USECASE_AUDIO_RECORD_FM_VIRTUAL || in->usecase == USECASE_AUDIO_RECORD_ECHO_REF_EXT)){
+ ALOGD("%s: Skipping get_priority_input for use-case-id:%d/%s.", __func__, in->usecase, use_case_table[in->usecase]);
+ } else {
+ priority_in = get_priority_input(adev);
+ }
+#else
priority_in = get_priority_input(adev);
+#endif
+
if (audio_extn_ext_hw_plugin_usecase_stop(adev->ext_hw_plugin, uc_info))
ALOGE("%s: failed to stop ext hw plugin", __func__);
@@ -8378,7 +8462,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);
@@ -8846,14 +8937,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);
@@ -10007,6 +10091,37 @@
#endif
in->af_period_multiplier = af_period_multiplier;
}
+
+ /* assign concurrent capture usecase if record has to caried out from
+ * actual hardware input source */
+ if (audio_extn_is_concurrent_capture_enabled() &&
+ !audio_is_virtual_input_source(in->source)) {
+ /* Acquire lock to avoid two concurrent use cases initialized to
+ same pcm record use case */
+ if (in->usecase == USECASE_AUDIO_RECORD_LOW_LATENCY) {
+ pthread_mutex_lock(&adev->lock);
+ if (!(adev->pcm_low_latency_record_uc_state)) {
+ ALOGD("%s: using USECASE_AUDIO_RECORD_LOW_LATENCY",__func__);
+ adev->pcm_low_latency_record_uc_state = 1;
+ pthread_mutex_unlock(&adev->lock);
+ } else if (audio_extn_is_concurrent_low_latency_pcm_record_enabled()) {
+ in->usecase = get_low_latency_record_usecase(adev);
+ pthread_mutex_unlock(&adev->lock);
+ } else {
+ pthread_mutex_unlock(&adev->lock);
+ /* Assign compress record use case for second record */
+ in->usecase = USECASE_AUDIO_RECORD_COMPRESS2;
+ in->flags |= AUDIO_INPUT_FLAG_COMPRESS;
+ ALOGV("%s: overriding usecase with USECASE_AUDIO_RECORD_COMPRESS2 and appending compress flag", __func__);
+ if (audio_extn_cin_applicable_stream(in)) {
+ in->sample_rate = config->sample_rate;
+ ret = audio_extn_cin_configure_input_stream(in, config);
+ if (ret)
+ goto err_open;
+ }
+ }
+ }
+ }
}
/* Additional sample rates added below must also be present
@@ -10268,6 +10383,13 @@
adev->pcm_record_uc_state = 0;
pthread_mutex_unlock(&adev->lock);
}
+ if (audio_extn_is_concurrent_low_latency_pcm_record_enabled() && is_pcm_low_latency_record_usecase(in->usecase)) {
+ free_low_latency_record_usecase(adev, in->usecase);
+ } else if (in->usecase == USECASE_AUDIO_RECORD_LOW_LATENCY) {
+ pthread_mutex_lock(&adev->lock);
+ adev->pcm_low_latency_record_uc_state = 0;
+ pthread_mutex_unlock(&adev->lock);
+ }
free(in);
*stream_in = NULL;
return ret;
@@ -10337,6 +10459,12 @@
adev->pcm_record_uc_state = 0;
}
+ if (audio_extn_is_concurrent_low_latency_pcm_record_enabled() && is_pcm_low_latency_record_usecase(in->usecase)) {
+ free_low_latency_record_usecase(adev, in->usecase);
+ } else if (in->usecase == USECASE_AUDIO_RECORD_LOW_LATENCY) {
+ adev->pcm_low_latency_record_uc_state = 0;
+ }
+
if (in->source == AUDIO_SOURCE_VOICE_COMMUNICATION) {
adev->enable_voicerx = false;
}
@@ -10976,19 +11104,6 @@
pthread_mutex_lock(&out->latch_lock);
// mute stream and switch to speaker if suspended
if (!out->a2dp_muted && !out->standby) {
- assign_devices(&devices, &out->device_list);
- reassign_device_list(&out->device_list, AUDIO_DEVICE_OUT_SPEAKER, "");
- list_for_each(node, &adev->usecase_list) {
- usecase = node_to_item(node, struct audio_usecase, list);
- if ((usecase->type != PCM_CAPTURE) && (usecase != uc_info) &&
- !is_a2dp_out_device_type(&usecase->stream.out->device_list) &&
- !is_sco_out_device_type(&usecase->stream.out->device_list) &&
- platform_check_backends_match(SND_DEVICE_OUT_SPEAKER,
- usecase->out_snd_device)) {
- assign_devices(&out->device_list, &usecase->stream.out->device_list);
- break;
- }
- }
if ((is_a2dp_out_device_type(&devices) && list_length(&devices) == 1) ||
(uc_info->out_snd_device == SND_DEVICE_OUT_BT_A2DP)) {
out->a2dp_muted = true;
@@ -11009,6 +11124,19 @@
usleep(latency * 1000);
}
}
+ assign_devices(&devices, &out->device_list);
+ reassign_device_list(&out->device_list, AUDIO_DEVICE_OUT_SPEAKER, "");
+ list_for_each(node, &adev->usecase_list) {
+ usecase = node_to_item(node, struct audio_usecase, list);
+ if ((usecase->type != PCM_CAPTURE) && (usecase != uc_info) &&
+ !is_a2dp_out_device_type(&usecase->stream.out->device_list) &&
+ !is_sco_out_device_type(&usecase->stream.out->device_list) &&
+ platform_check_backends_match(SND_DEVICE_OUT_SPEAKER,
+ usecase->out_snd_device)) {
+ assign_devices(&out->device_list, &usecase->stream.out->device_list);
+ break;
+ }
+ }
select_devices(adev, out->usecase);
ALOGD("%s: switched to device:%s and stream muted:%d", __func__,
platform_get_snd_device_name(uc_info->out_snd_device), out->a2dp_muted);
@@ -11138,6 +11266,7 @@
adev->cur_wfd_channels = 2;
adev->offload_usecases_state = 0;
adev->pcm_record_uc_state = 0;
+ adev->pcm_low_latency_record_uc_state = 0;
adev->is_channel_status_set = false;
adev->perf_lock_opts[0] = 0x101;
adev->perf_lock_opts[1] = 0x20E;
diff --git a/hal/audio_hw.h b/hal/audio_hw.h
index 058d7a2..0398df4 100644
--- a/hal/audio_hw.h
+++ b/hal/audio_hw.h
@@ -36,7 +36,7 @@
* Changes from Qualcomm Innovation Center are provided under the following license:
- * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
* Redistribution and use in source and binary forms, with or without
* modification, are permitted (subject to the limitations in the
@@ -243,6 +243,7 @@
USECASE_AUDIO_RECORD_COMPRESS5,
USECASE_AUDIO_RECORD_COMPRESS6,
USECASE_AUDIO_RECORD_LOW_LATENCY,
+ USECASE_AUDIO_RECORD_LOW_LATENCY2,
USECASE_AUDIO_RECORD_FM_VIRTUAL,
USECASE_AUDIO_RECORD_HIFI,
@@ -299,10 +300,14 @@
/* car streams usecases */
USECASE_AUDIO_PLAYBACK_MEDIA,
+ USECASE_AUDIO_PLAYBACK_MEDIA_LL,
USECASE_AUDIO_PLAYBACK_SYS_NOTIFICATION,
USECASE_AUDIO_PLAYBACK_NAV_GUIDANCE,
+ USECASE_AUDIO_PLAYBACK_NAV_GUIDANCE_LL,
USECASE_AUDIO_PLAYBACK_PHONE,
+ USECASE_AUDIO_PLAYBACK_PHONE_LL,
USECASE_AUDIO_PLAYBACK_ALERTS,
+ USECASE_AUDIO_PLAYBACK_ALERTS_LL,
USECASE_AUDIO_PLAYBACK_FRONT_PASSENGER,
USECASE_AUDIO_PLAYBACK_REAR_SEAT,
USECASE_AUDIO_RECORD_BUS,
@@ -766,6 +771,7 @@
void *extspk;
unsigned int offload_usecases_state;
unsigned int pcm_record_uc_state;
+ unsigned int pcm_low_latency_record_uc_state;
void *visualizer_lib;
int (*visualizer_start_output)(audio_io_handle_t, int);
int (*visualizer_stop_output)(audio_io_handle_t, int);
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index a3a943f..541b00e 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -15,6 +15,10 @@
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
+ *
+ * Changes from Qualcomm Innovation Center are provided under the following license:
+ * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ * SPDX-License-Identifier: BSD-3-Clause-Clear
*/
#define LOG_TAG "msm8974_platform"
@@ -488,6 +492,8 @@
[USECASE_AUDIO_RECORD_COMPRESS6] = {-1, -1, -1, -1},
[USECASE_AUDIO_RECORD_LOW_LATENCY] = {LOWLATENCY_PCM_DEVICE, LOWLATENCY_PCM_DEVICE,
MSM_FRONTEND_DAI_VOICEMMODE2, MSM_FRONTEND_DAI_VOICEMMODE2},
+ [USECASE_AUDIO_RECORD_LOW_LATENCY2] = {LOWLATENCY_PCM_DEVICE, LOWLATENCY_PCM_DEVICE,
+ MSM_FRONTEND_DAI_MULTIMEDIA35, MSM_FRONTEND_DAI_MULTIMEDIA35},
[USECASE_AUDIO_RECORD_FM_VIRTUAL] = {MULTIMEDIA2_PCM_DEVICE, MULTIMEDIA2_PCM_DEVICE,
MSM_FRONTEND_DAI_MULTIMEDIA2, MSM_FRONTEND_DAI_MULTIMEDIA2},
[USECASE_AUDIO_RECORD_HIFI] = {MULTIMEDIA2_PCM_DEVICE, MULTIMEDIA2_PCM_DEVICE,
@@ -573,14 +579,22 @@
[USECASE_AUDIO_EC_REF_LOOPBACK] = {-1, -1}, /* pcm id updated from platform info file */
[USECASE_AUDIO_PLAYBACK_MEDIA] = {MEDIA_PCM_DEVICE, MEDIA_PCM_DEVICE,
MSM_FRONTEND_DAI_MULTIMEDIA1, MSM_FRONTEND_DAI_MULTIMEDIA1},
+ [USECASE_AUDIO_PLAYBACK_MEDIA_LL] = {MEDIA_PCM_DEVICE, MEDIA_PCM_DEVICE,
+ MSM_FRONTEND_DAI_MULTIMEDIA10, MSM_FRONTEND_DAI_MULTIMEDIA10},
[USECASE_AUDIO_PLAYBACK_SYS_NOTIFICATION] = {SYS_NOTIFICATION_PCM_DEVICE, SYS_NOTIFICATION_PCM_DEVICE,
MSM_FRONTEND_DAI_MULTIMEDIA5, MSM_FRONTEND_DAI_MULTIMEDIA5},
[USECASE_AUDIO_PLAYBACK_NAV_GUIDANCE] = {NAV_GUIDANCE_PCM_DEVICE, NAV_GUIDANCE_PCM_DEVICE,
MSM_FRONTEND_DAI_MULTIMEDIA2, MSM_FRONTEND_DAI_MULTIMEDIA2},
+ [USECASE_AUDIO_PLAYBACK_NAV_GUIDANCE_LL] = {NAV_GUIDANCE_PCM_DEVICE, NAV_GUIDANCE_PCM_DEVICE,
+ MSM_FRONTEND_DAI_MULTIMEDIA36, MSM_FRONTEND_DAI_MULTIMEDIA36},
[USECASE_AUDIO_PLAYBACK_PHONE] = {PHONE_PCM_DEVICE, PHONE_PCM_DEVICE,
MSM_FRONTEND_DAI_MULTIMEDIA10, MSM_FRONTEND_DAI_MULTIMEDIA10},
+ [USECASE_AUDIO_PLAYBACK_PHONE_LL] = {PHONE_PCM_DEVICE, PHONE_PCM_DEVICE,
+ MSM_FRONTEND_DAI_MULTIMEDIA10, MSM_FRONTEND_DAI_MULTIMEDIA10},
[USECASE_AUDIO_PLAYBACK_ALERTS] = {ALERTS_PCM_DEVICE, ALERTS_PCM_DEVICE,
MSM_FRONTEND_DAI_MULTIMEDIA31, MSM_FRONTEND_DAI_MULTIMEDIA31},
+ [USECASE_AUDIO_PLAYBACK_ALERTS_LL] = {ALERTS_PCM_DEVICE, ALERTS_PCM_DEVICE,
+ MSM_FRONTEND_DAI_MULTIMEDIA36, MSM_FRONTEND_DAI_MULTIMEDIA36},
[USECASE_AUDIO_PLAYBACK_FRONT_PASSENGER] = {FRONT_PASSENGER_PCM_DEVICE, FRONT_PASSENGER_PCM_DEVICE,
MSM_FRONTEND_DAI_MULTIMEDIA23, MSM_FRONTEND_DAI_MULTIMEDIA23},
[USECASE_AUDIO_PLAYBACK_REAR_SEAT] = {REAR_SEAT_PCM_DEVICE, REAR_SEAT_PCM_DEVICE,
@@ -1487,6 +1501,7 @@
{TO_NAME_INDEX(USECASE_AUDIO_RECORD_COMPRESS5)},
{TO_NAME_INDEX(USECASE_AUDIO_RECORD_COMPRESS6)},
{TO_NAME_INDEX(USECASE_AUDIO_RECORD_LOW_LATENCY)},
+ {TO_NAME_INDEX(USECASE_AUDIO_RECORD_LOW_LATENCY2)},
{TO_NAME_INDEX(USECASE_AUDIO_RECORD_MMAP)},
{TO_NAME_INDEX(USECASE_AUDIO_RECORD_HIFI)},
{TO_NAME_INDEX(USECASE_VOICE_CALL)},
@@ -1521,10 +1536,14 @@
{TO_NAME_INDEX(USECASE_AUDIO_TRANSCODE_LOOPBACK_RX)},
{TO_NAME_INDEX(USECASE_AUDIO_TRANSCODE_LOOPBACK_TX)},
{TO_NAME_INDEX(USECASE_AUDIO_PLAYBACK_MEDIA)},
+ {TO_NAME_INDEX(USECASE_AUDIO_PLAYBACK_MEDIA_LL)},
{TO_NAME_INDEX(USECASE_AUDIO_PLAYBACK_SYS_NOTIFICATION)},
{TO_NAME_INDEX(USECASE_AUDIO_PLAYBACK_NAV_GUIDANCE)},
+ {TO_NAME_INDEX(USECASE_AUDIO_PLAYBACK_NAV_GUIDANCE_LL)},
{TO_NAME_INDEX(USECASE_AUDIO_PLAYBACK_PHONE)},
+ {TO_NAME_INDEX(USECASE_AUDIO_PLAYBACK_PHONE_LL)},
{TO_NAME_INDEX(USECASE_AUDIO_PLAYBACK_ALERTS)},
+ {TO_NAME_INDEX(USECASE_AUDIO_PLAYBACK_ALERTS_LL)},
{TO_NAME_INDEX(USECASE_AUDIO_PLAYBACK_FRONT_PASSENGER)},
{TO_NAME_INDEX(USECASE_AUDIO_PLAYBACK_REAR_SEAT)},
{TO_NAME_INDEX(USECASE_AUDIO_RECORD_VOIP_LOW_LATENCY)},
@@ -9329,10 +9348,14 @@
break;
case USECASE_AUDIO_PLAYBACK_LOW_LATENCY:
case USECASE_AUDIO_PLAYBACK_WITH_HAPTICS:
+ case USECASE_AUDIO_PLAYBACK_MEDIA_LL:
case USECASE_AUDIO_PLAYBACK_SYS_NOTIFICATION:
case USECASE_AUDIO_PLAYBACK_FRONT_PASSENGER:
+ case USECASE_AUDIO_PLAYBACK_NAV_GUIDANCE_LL:
case USECASE_AUDIO_PLAYBACK_PHONE:
+ case USECASE_AUDIO_PLAYBACK_PHONE_LL:
case USECASE_AUDIO_PLAYBACK_ALERTS:
+ case USECASE_AUDIO_PLAYBACK_ALERTS_LL:
delay = LOW_LATENCY_PLATFORM_DELAY;
break;
case USECASE_AUDIO_PLAYBACK_OFFLOAD:
diff --git a/hal/msm8974/platform.h b/hal/msm8974/platform.h
index 2b4191f..7f1e075 100644
--- a/hal/msm8974/platform.h
+++ b/hal/msm8974/platform.h
@@ -15,6 +15,10 @@
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
+ *
+ * Changes from Qualcomm Innovation Center are provided under the following license:
+ * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ * SPDX-License-Identifier: BSD-3-Clause-Clear
*/
#ifndef QCOM_AUDIO_PLATFORM_H
@@ -899,6 +903,8 @@
MSM_FRONTEND_DAI_MULTIMEDIA32,
MSM_FRONTEND_DAI_MULTIMEDIA33,
MSM_FRONTEND_DAI_MULTIMEDIA34,
+ MSM_FRONTEND_DAI_MULTIMEDIA35,
+ MSM_FRONTEND_DAI_MULTIMEDIA36,
MSM_FRONTEND_DAI_VOIP,
MSM_FRONTEND_DAI_AFE_RX,
MSM_FRONTEND_DAI_AFE_TX,