Merge "audio: Mmap audio fixes" into audio-hal.lnx.6.0
diff --git a/configs/common/audio_policy_configuration.xml b/configs/common/audio_policy_configuration.xml
index 6b8d87c..45bda7b 100644
--- a/configs/common/audio_policy_configuration.xml
+++ b/configs/common/audio_policy_configuration.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<!-- Copyright (c) 2016-2017, The Linux Foundation. All rights reserved
+<!-- Copyright (c) 2016-2017, 2019, The Linux Foundation. All rights reserved
Not a Contribution.
-->
<!-- Copyright (C) 2015 The Android Open Source Project
@@ -46,25 +46,33 @@
“defaultOutputDevice”: device to be used by default when no policy rule applies
-->
<modules>
- <!-- Primary Audio HAL -->
<module name="primary" halVersion="2.0">
<attachedDevices>
<item>Speaker</item>
+ <item>Speaker Safe</item>
+ <item>Earpiece</item>
+ <item>Telephony Tx</item>
<item>Built-In Mic</item>
<item>Built-In Back Mic</item>
+ <item>Telephony Rx</item>
</attachedDevices>
<defaultOutputDevice>Speaker</defaultOutputDevice>
<mixPorts>
- <mixPort name="primary output" role="source"
- flags="AUDIO_OUTPUT_FLAG_FAST|AUDIO_OUTPUT_FLAG_PRIMARY">
+ <mixPort name="primary output" role="source" flags="AUDIO_OUTPUT_FLAG_PRIMARY|AUDIO_OUTPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="deep_buffer" role="source"
- flags="AUDIO_OUTPUT_FLAG_DEEP_BUFFER">
+ <mixPort name="raw" role="source" flags="AUDIO_OUTPUT_FLAG_RAW|AUDIO_OUTPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
+ <mixPort name="hifi_playback" role="source" />
+ <mixPort name="deep_buffer" role="source"
+ flags="AUDIO_OUTPUT_FLAG_DEEP_BUFFER">
+ <profile name="" format="AUDIO_FORMAT_PCM_24_BIT_PACKED"
+ samplingRates="44100,48000"
+ channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ </mixPort>
<mixPort name="compressed_offload" role="source"
flags="AUDIO_OUTPUT_FLAG_DIRECT|AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD|AUDIO_OUTPUT_FLAG_NON_BLOCKING">
<profile name="" format="AUDIO_FORMAT_MP3"
@@ -77,115 +85,182 @@
samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000,64000,88200,96000"
channelMasks="AUDIO_CHANNEL_OUT_STEREO,AUDIO_CHANNEL_OUT_MONO"/>
<profile name="" format="AUDIO_FORMAT_AAC_HE_V2"
- samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000,64000,88200,96000"
- channelMasks="AUDIO_CHANNEL_OUT_STEREO,AUDIO_CHANNEL_OUT_MONO"/>
- <profile name="" format="AUDIO_FORMAT_AAC_ADTS_LC"
- samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000,64000,88200,96000"
- channelMasks="AUDIO_CHANNEL_OUT_STEREO,AUDIO_CHANNEL_OUT_MONO"/>
- <profile name="" format="AUDIO_FORMAT_AAC_ADTS_HE_V1"
- samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000,64000,88200,96000"
- channelMasks="AUDIO_CHANNEL_OUT_STEREO,AUDIO_CHANNEL_OUT_MONO"/>
- <profile name="" format="AUDIO_FORMAT_AAC_ADTS_HE_V2"
- samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000,64000,88200,96000"
+ samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000"
channelMasks="AUDIO_CHANNEL_OUT_STEREO,AUDIO_CHANNEL_OUT_MONO"/>
</mixPort>
<mixPort name="voice_tx" role="source">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
- samplingRates="8000,16000" channelMasks="AUDIO_CHANNEL_OUT_MONO"/>
+ samplingRates="8000,16000,48000" channelMasks="AUDIO_CHANNEL_OUT_MONO,AUDIO_CHANNEL_OUT_STEREO"/>
+ </mixPort>
+ <mixPort name="mmap_no_irq_out" role="source" flags="AUDIO_OUTPUT_FLAG_DIRECT|AUDIO_OUTPUT_FLAG_MMAP_NOIRQ">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ </mixPort>
+ <mixPort name="voip_rx" role="source"
+ flags="AUDIO_OUTPUT_FLAG_VOIP_RX">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="8000,16000,32000,48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ </mixPort>
+ <mixPort name="incall_music_uplink" role="source"
+ flags="AUDIO_OUTPUT_FLAG_INCALL_MUSIC">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="8000,16000,48000"
+ channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
<mixPort name="primary input" role="sink">
- <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ <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"/>
+ 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">
+ <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"/>
+ </mixPort>
+ <mixPort name="hifi_input" role="sink" />
<mixPort name="voice_rx" role="sink">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
- samplingRates="8000,16000" channelMasks="AUDIO_CHANNEL_IN_MONO"/>
+ samplingRates="8000,16000,48000" channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO"/>
+ </mixPort>
+ <mixPort name="mmap_no_irq_in" role="sink" flags="AUDIO_INPUT_FLAG_MMAP_NOIRQ">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_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"/>
+ </mixPort>
+ <mixPort name="voip_tx" role="sink"
+ flags="AUDIO_INPUT_FLAG_VOIP_TX">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="8000,16000,32000,48000" channelMasks="AUDIO_CHANNEL_IN_MONO"/>
</mixPort>
</mixPorts>
<devicePorts>
- <!-- Output devices declaration, i.e. Sink DEVICE PORT -->
<devicePort tagName="Earpiece" type="AUDIO_DEVICE_OUT_EARPIECE" role="sink">
- <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
- samplingRates="48000" channelMasks="AUDIO_CHANNEL_IN_MONO"/>
</devicePort>
- <devicePort tagName="Speaker" role="sink" type="AUDIO_DEVICE_OUT_SPEAKER">
- <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
- samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ <devicePort tagName="Speaker" type="AUDIO_DEVICE_OUT_SPEAKER" role="sink">
</devicePort>
- <devicePort tagName="Wired Headset" type="AUDIO_DEVICE_OUT_WIRED_HEADSET" role="sink">
- <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
- samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
- </devicePort>
- <devicePort tagName="Wired Headphones" type="AUDIO_DEVICE_OUT_WIRED_HEADPHONE" role="sink">
- <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
- samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ <devicePort tagName="Speaker Safe" type="AUDIO_DEVICE_OUT_SPEAKER_SAFE" role="sink">
</devicePort>
<devicePort tagName="BT SCO" type="AUDIO_DEVICE_OUT_BLUETOOTH_SCO" role="sink">
- <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
- samplingRates="8000,16000" channelMasks="AUDIO_CHANNEL_OUT_MONO"/>
</devicePort>
<devicePort tagName="BT SCO Headset" type="AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET" role="sink">
- <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
- samplingRates="8000,16000" channelMasks="AUDIO_CHANNEL_OUT_MONO"/>
</devicePort>
<devicePort tagName="BT SCO Car Kit" type="AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT" role="sink">
- <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
- samplingRates="8000,16000" channelMasks="AUDIO_CHANNEL_OUT_MONO"/>
</devicePort>
<devicePort tagName="Telephony Tx" type="AUDIO_DEVICE_OUT_TELEPHONY_TX" role="sink">
+ </devicePort>
+ <devicePort tagName="USB Device Out" type="AUDIO_DEVICE_OUT_USB_DEVICE" role="sink">
+ </devicePort>
+ <devicePort tagName="USB Headset Out" type="AUDIO_DEVICE_OUT_USB_HEADSET" role="sink">
+ </devicePort>
+ <devicePort tagName="BT A2DP Out" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP" role="sink"
+ encodedFormats="AUDIO_FORMAT_LDAC AUDIO_FORMAT_APTX AUDIO_FORMAT_APTX_HD AUDIO_FORMAT_AAC AUDIO_FORMAT_SBC">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
- samplingRates="8000,16000" channelMasks="AUDIO_CHANNEL_OUT_MONO"/>
+ samplingRates="44100,48000,88200,96000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ </devicePort>
+ <devicePort tagName="BT A2DP Headphones" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES" role="sink"
+ encodedFormats="AUDIO_FORMAT_LDAC AUDIO_FORMAT_APTX AUDIO_FORMAT_APTX_HD AUDIO_FORMAT_AAC AUDIO_FORMAT_SBC">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="44100,48000,88200,96000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ </devicePort>
+ <devicePort tagName="BT A2DP Speaker" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER" role="sink"
+ encodedFormats="AUDIO_FORMAT_LDAC AUDIO_FORMAT_APTX AUDIO_FORMAT_APTX_HD AUDIO_FORMAT_AAC AUDIO_FORMAT_SBC">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="44100,48000,88200,96000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</devicePort>
<devicePort tagName="Built-In Mic" type="AUDIO_DEVICE_IN_BUILTIN_MIC" role="source">
- <profile name="" format="AUDIO_FORMAT_PCM_16_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"/>
</devicePort>
<devicePort tagName="Built-In Back Mic" type="AUDIO_DEVICE_IN_BACK_MIC" role="source">
- <profile name="" format="AUDIO_FORMAT_PCM_16_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"/>
- </devicePort>
- <devicePort tagName="Wired Headset Mic" type="AUDIO_DEVICE_IN_WIRED_HEADSET" role="source">
- <profile name="" format="AUDIO_FORMAT_PCM_16_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"/>
</devicePort>
<devicePort tagName="BT SCO Headset Mic" type="AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET" role="source">
- <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
- samplingRates="8000,16000" channelMasks="AUDIO_CHANNEL_IN_MONO"/>
</devicePort>
<devicePort tagName="Telephony Rx" type="AUDIO_DEVICE_IN_TELEPHONY_RX" role="source">
- <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
- samplingRates="8000,16000" channelMasks="AUDIO_CHANNEL_IN_MONO"/>
+ </devicePort>
+ <!-- TODO: Enable multi-channel recording -->
+ <devicePort tagName="USB Device In" type="AUDIO_DEVICE_IN_USB_DEVICE" role="source">
+ </devicePort>
+ <devicePort tagName="USB Headset In" type="AUDIO_DEVICE_IN_USB_HEADSET" role="source">
</devicePort>
</devicePorts>
- <!-- route declaration, i.e. list all available sources for a given sink -->
<routes>
<route type="mix" sink="Earpiece"
- sources="primary output,deep_buffer,BT SCO Headset Mic"/>
+ sources="primary output,raw,deep_buffer,mmap_no_irq_out,voip_rx"/>
<route type="mix" sink="Speaker"
- sources="primary output,deep_buffer,compressed_offload,BT SCO Headset Mic,Telephony Rx"/>
- <route type="mix" sink="Wired Headset"
- sources="primary output,deep_buffer,compressed_offload,BT SCO Headset Mic,Telephony Rx"/>
- <route type="mix" sink="Wired Headphones"
- sources="primary output,deep_buffer,compressed_offload,BT SCO Headset Mic,Telephony Rx"/>
+ sources="primary output,raw,deep_buffer,compressed_offload,mmap_no_irq_out,voip_rx"/>
+ <route type="mix" sink="Speaker Safe"
+ sources="primary output,raw,deep_buffer,compressed_offload,mmap_no_irq_out,voip_rx"/>
+ <route type="mix" sink="BT SCO"
+ sources="primary output,raw,deep_buffer,voip_rx"/>
+ <route type="mix" sink="BT SCO Headset"
+ sources="primary output,raw,deep_buffer,voip_rx"/>
+ <route type="mix" sink="BT SCO Car Kit"
+ sources="primary output,raw,deep_buffer,voip_rx"/>
+ <route type="mix" sink="USB Device Out"
+ sources="primary output,raw,deep_buffer,compressed_offload,hifi_playback,mmap_no_irq_out,voip_rx"/>
+ <route type="mix" sink="USB Headset Out"
+ sources="primary output,raw,deep_buffer,compressed_offload,hifi_playback,mmap_no_irq_out,voip_rx"/>
<route type="mix" sink="Telephony Tx"
- sources="voice_tx"/>
+ sources="voice_tx,incall_music_uplink"/>
<route type="mix" sink="primary input"
- sources="Built-In Mic,Built-In Back Mic,Wired Headset Mic,BT SCO Headset Mic"/>
+ sources="Built-In Mic,Built-In Back Mic,BT SCO Headset Mic,USB Device In,USB Headset In"/>
+ <route type="mix" sink="fast input"
+ sources="Built-In Mic,Built-In Back Mic,BT SCO Headset Mic,USB Device In,USB Headset In"/>
<route type="mix" sink="voice_rx"
sources="Telephony Rx"/>
+ <route type="mix" sink="hifi_input" sources="USB Device In,USB Headset In" />
+ <route type="mix" sink="mmap_no_irq_in"
+ sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In"/>
+ <route type="mix" sink="voip_tx"
+ sources="Built-In Mic,Built-In Back Mic,BT SCO Headset Mic,USB Device In,USB Headset In"/>
+ <route type="mix" sink="BT A2DP Out"
+ sources="primary output,deep_buffer,compressed_offload,voip_rx"/>
+ <route type="mix" sink="BT A2DP Headphones"
+ sources="primary output,deep_buffer,compressed_offload,voip_rx"/>
+ <route type="mix" sink="BT A2DP Speaker"
+ sources="primary output,deep_buffer,compressed_offload,voip_rx"/>
</routes>
-
</module>
- <!-- A2dp Audio HAL -->
- <xi:include href="a2dp_audio_policy_configuration.xml"/>
+ <!-- A2DP Input Audio HAL -->
+ <module name="a2dp" halVersion="2.0">
+ <mixPorts>
+ <mixPort name="a2dp input" role="sink">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="44100,48000"
+ channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO"/>
+ </mixPort>
+ </mixPorts>
+ <devicePorts>
+ <devicePort tagName="BT A2DP In" type="AUDIO_DEVICE_IN_BLUETOOTH_A2DP" role="source">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="44100,48000"
+ channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO"/>
+ </devicePort>
+ </devicePorts>
+ <routes>
+ <route type="mix" sink="a2dp input"
+ sources="BT A2DP In"/>
+ </routes>
+ </module>
<!-- Usb Audio HAL -->
- <xi:include href="usb_audio_policy_configuration.xml"/>
+ <module name="usb" halVersion="2.0">
+ <mixPorts>
+ <mixPort name="usb_accessory output" role="source">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="44100" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ </mixPort>
+ </mixPorts>
+ <devicePorts>
+ <devicePort tagName="USB Host Out" type="AUDIO_DEVICE_OUT_USB_ACCESSORY" role="sink">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="44100" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ </devicePort>
+ </devicePorts>
+ <routes>
+ <route type="mix" sink="USB Host Out"
+ sources="usb_accessory output"/>
+ </routes>
+ </module>
<!-- Remote Submix Audio HAL -->
<xi:include href="r_submix_audio_policy_configuration.xml"/>
diff --git a/configs/kona/kona.mk b/configs/kona/kona.mk
index 9c6e918..88cc84f 100644
--- a/configs/kona/kona.mk
+++ b/configs/kona/kona.mk
@@ -294,3 +294,10 @@
vendor.qti.hardware.audiohalext@1.0 \
vendor.qti.hardware.audiohalext@1.0-impl \
vendor.qti.hardware.audiohalext-utils
+
+PRODUCT_PACKAGES_ENG += \
+ VoicePrintTest \
+ VoicePrintDemo
+
+PRODUCT_PACKAGES_DEBUG += \
+ AudioSettings
diff --git a/configs/kona/mixer_paths.xml b/configs/kona/mixer_paths.xml
index e93651c..8ebeed5 100644
--- a/configs/kona/mixer_paths.xml
+++ b/configs/kona/mixer_paths.xml
@@ -448,6 +448,14 @@
<ctl name="AUDIO_REF_EC_UL1 MUX" value="RX_CDC_DMA_RX_0" />
</path>
+ <path name="echo-reference-voip">
+ <ctl name="AUDIO_REF_EC_UL10 MUX" value="WSA_CDC_DMA_RX_0" />
+ </path>
+
+ <path name="echo-reference-voip headphones">
+ <ctl name="AUDIO_REF_EC_UL10 MUX" value="RX_CDC_DMA_RX_0" />
+ </path>
+
<path name="deep-buffer-playback">
<ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia1" value="1" />
</path>
diff --git a/configs/kona/mixer_paths_qrd.xml b/configs/kona/mixer_paths_qrd.xml
index ce2d411..8570ac9 100644
--- a/configs/kona/mixer_paths_qrd.xml
+++ b/configs/kona/mixer_paths_qrd.xml
@@ -448,6 +448,18 @@
<ctl name="AUDIO_REF_EC_UL1 MUX" value="RX_CDC_DMA_RX_0" />
</path>
+ <path name="echo-reference-voip">
+ <ctl name="AUDIO_REF_EC_UL10 MUX" value="WSA_CDC_DMA_RX_0" />
+ </path>
+
+ <path name="echo-reference-voip handset">
+ <ctl name="AUDIO_REF_EC_UL10 MUX" value="RX_CDC_DMA_RX_0" />
+ </path>
+
+ <path name="echo-reference-voip headphones">
+ <ctl name="AUDIO_REF_EC_UL10 MUX" value="RX_CDC_DMA_RX_0" />
+ </path>
+
<path name="deep-buffer-playback">
<ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia1" value="1" />
</path>
diff --git a/configs/kona/sound_trigger_platform_info.xml b/configs/kona/sound_trigger_platform_info.xml
index 668af5a..a2a2d20 100644
--- a/configs/kona/sound_trigger_platform_info.xml
+++ b/configs/kona/sound_trigger_platform_info.xml
@@ -48,7 +48,7 @@
<param backend_dai_name="VA_CDC_DMA_TX_0" />
<!-- Param used to indicate if SVA has dedicated SLIM ports -->
<param dedicated_sva_path="true" />
- <param disable_lpi_budget="true" />
+ <param platform_lpi_enable="true" />
</common_config>
<acdb_ids>
<param DEVICE_HANDSET_MIC_APE="100" />
@@ -70,7 +70,7 @@
<!-- QTI SVA -->
<sound_model_config>
<param vendor_uuid="68ab2d40-e860-11e3-95ef-0002a5d5c51b" />
- <param execution_type="ADSP" /> <!-- value: "ADSP" "DYNAMIC" -->
+ <param execution_type="ADSP" />
<param library="libsmwrapper.so" />
<param max_ape_phrases="20" />
<param max_ape_users="10" />
@@ -78,7 +78,6 @@
<param sample_rate="16000" />
<param bit_width="16" />
<param out_channels="1"/> <!-- Module output channels -->
- <param lpi_enable="true" />
<arm_ss_usecase>
<!-- Options are "KEYWORD_DETECTION", "USER_VERIFICATION", "CUSTOM_DETECTION" -->
@@ -148,7 +147,7 @@
<!-- QTI Music Detection !-->
<sound_model_config>
<param vendor_uuid="876c1b46-9d4d-40cc-a4fd-4d5ec7a80e47" />
- <param execution_type="ADSP" /> <!-- value: "ADSP" "DYNAMIC" -->
+ <param execution_type="ADSP" />
<param library="libsmwrapper.so" />
<param max_ape_phrases="1" />
<param max_ape_users="1" />
@@ -156,7 +155,6 @@
<param sample_rate="16000" />
<param bit_width="16" />
<param out_channels="1"/> <!-- Module output channels -->
- <param lpi_enable="true" />
<!-- Module and param ids with which the algorithm is integrated
in non-graphite firmware (note these must come after gcs params)
Extends flexibility to have different ids based on execution type.
@@ -204,7 +202,7 @@
<!-- Google Hotword -->
<sound_model_config>
<param vendor_uuid="7038ddc8-30f2-11e6-b0ac-40a8f03d3f15" />
- <param execution_type="ADSP" /> <!-- value: "WDSP" "ADSP" "DYNAMIC" -->
+ <param execution_type="ADSP" />
<param library="none" />
<param max_ape_phrases="1" />
<param max_ape_users="1" />
@@ -212,7 +210,6 @@
<param sample_rate="16000" />
<param bit_width="16" />
<param out_channels="1"/> <!-- Module output channels -->
- <param lpi_enable="true" />
<lsm_usecase>
<param capture_device="HANDSET" />
<!-- adm_cfg_profile should match with the one defined under adm_config -->
@@ -258,7 +255,7 @@
<!-- Google Music Detection -->
<sound_model_config>
<param vendor_uuid="9f6ad62a-1f0b-11e7-87c5-40a8f03d3f15" />
- <param execution_type="ADSP" /> <!-- value: "ADSP" "DYNAMIC" -->
+ <param execution_type="ADSP" />
<param library="none" />
<param max_ape_phrases="1" />
<param max_ape_users="1" />
@@ -266,7 +263,6 @@
<param sample_rate="16000" />
<param bit_width="16" />
<param out_channels="1"/> <!-- Module output channels -->
- <param lpi_enable="true" />
<lsm_usecase>
<param capture_device="HANDSET" />
<!-- adm_cfg_profile should match with the one defined under adm_config -->
diff --git a/configs/msmnile/mixer_paths_tavil.xml b/configs/msmnile/mixer_paths_tavil.xml
index cd867ff..244382e 100644
--- a/configs/msmnile/mixer_paths_tavil.xml
+++ b/configs/msmnile/mixer_paths_tavil.xml
@@ -1411,6 +1411,10 @@
<ctl name="MultiMedia8 Mixer SLIM_0_TX" value="1" />
</path>
+ <path name="audio-record-compress headset-mic">
+ <ctl name="MultiMedia8 Mixer SLIM_1_TX" value="1" />
+ </path>
+
<path name="audio-record-compress bt-sco">
<ctl name="MultiMedia8 Mixer SLIM_7_TX" value="1" />
</path>
@@ -1445,28 +1449,14 @@
<path name="audio-record-compress2 bt-sco" />
</path>
- <path name="audio-record-compress2">
- <ctl name="MultiMedia17 Mixer SLIM_0_TX" value="1" />
- </path>
-
- <path name="audio-record-compress2 usb-headset-mic">
- <ctl name="MultiMedia17 Mixer USB_AUDIO_TX" value="1" />
- </path>
-
- <path name="audio-record-compress2 bt-sco">
- <ctl name="MultiMedia17 Mixer SLIM_7_TX" value="1" />
- </path>
-
- <path name="audio-record-compress2 bt-sco-wb">
- <ctl name="BT SampleRate" value="KHZ_16" />
- <path name="audio-record-compress2 bt-sco" />
- </path>
-
-
<path name="low-latency-record">
<ctl name="MultiMedia8 Mixer SLIM_0_TX" value="1" />
</path>
+ <path name="low-latency-record headset-mic">
+ <ctl name="MultiMedia8 Mixer SLIM_1_TX" value="1" />
+ </path>
+
<path name="low-latency-record bt-sco">
<ctl name="MultiMedia8 Mixer SLIM_7_TX" value="1" />
</path>
@@ -1815,6 +1805,10 @@
<ctl name="MultiMedia10 Mixer SLIM_0_TX" value="1" />
</path>
+ <path name="audio-record-voip headset-mic">
+ <ctl name="MultiMedia10 Mixer SLIM_1_TX" value="1" />
+ </path>
+
<path name="audio-record-voip usb-headset-mic">
<ctl name="MultiMedia10 Mixer USB_AUDIO_TX" value="1" />
</path>
@@ -3015,6 +3009,10 @@
<ctl name="MultiMedia16 Mixer SLIM_0_TX" value="1" />
</path>
+ <path name="mmap-record headset-mic">
+ <ctl name="MultiMedia16 Mixer SLIM_1_TX" value="1" />
+ </path>
+
<path name="mmap-record bt-sco">
<ctl name="MultiMedia16 Mixer SLIM_7_TX" value="1" />
</path>
@@ -3052,6 +3050,10 @@
<ctl name="MultiMedia2 Mixer SLIM_0_TX" value="1" />
</path>
+ <path name="hifi-record headset-mic">
+ <ctl name="MultiMedia2 Mixer SLIM_1_TX" value="1" />
+ </path>
+
<path name="hifi-record usb-headset-mic">
<ctl name="MultiMedia2 Mixer USB_AUDIO_TX" value="1" />
</path>
diff --git a/configs/msmnile/msmnile.mk b/configs/msmnile/msmnile.mk
index 9c2f5da..a2a4b19 100644
--- a/configs/msmnile/msmnile.mk
+++ b/configs/msmnile/msmnile.mk
@@ -297,3 +297,10 @@
vendor.qti.hardware.audiohalext@1.0 \
vendor.qti.hardware.audiohalext@1.0-impl \
vendor.qti.hardware.audiohalext-utils
+
+PRODUCT_PACKAGES_ENG += \
+ VoicePrintTest \
+ VoicePrintDemo
+
+PRODUCT_PACKAGES_DEBUG += \
+ AudioSettings
diff --git a/configs/msmsteppe/msmsteppe.mk b/configs/msmsteppe/msmsteppe.mk
index 9cfa3da..d0f73fa 100644
--- a/configs/msmsteppe/msmsteppe.mk
+++ b/configs/msmsteppe/msmsteppe.mk
@@ -263,3 +263,10 @@
android.hardware.audio@4.0-impl \
android.hardware.audio.effect@4.0 \
android.hardware.audio.effect@4.0-impl
+
+PRODUCT_PACKAGES_ENG += \
+ VoicePrintTest \
+ VoicePrintDemo
+
+PRODUCT_PACKAGES_DEBUG += \
+ AudioSettings
diff --git a/configs/sdm660/sdm660.mk b/configs/sdm660/sdm660.mk
index 6b58bd3..8ab8d00 100644
--- a/configs/sdm660/sdm660.mk
+++ b/configs/sdm660/sdm660.mk
@@ -267,3 +267,10 @@
android.hardware.audio@4.0-impl \
android.hardware.audio.effect@4.0 \
android.hardware.audio.effect@4.0-impl
+
+PRODUCT_PACKAGES_ENG += \
+ VoicePrintTest \
+ VoicePrintDemo
+
+PRODUCT_PACKAGES_DEBUG += \
+ AudioSettings
diff --git a/configs/sdm710/sdm710.mk b/configs/sdm710/sdm710.mk
index 185e98a..bb3c6af 100644
--- a/configs/sdm710/sdm710.mk
+++ b/configs/sdm710/sdm710.mk
@@ -304,3 +304,10 @@
android.hardware.audio@4.0-impl \
android.hardware.audio.effect@4.0 \
android.hardware.audio.effect@4.0-impl
+
+PRODUCT_PACKAGES_ENG += \
+ VoicePrintTest \
+ VoicePrintDemo
+
+PRODUCT_PACKAGES_DEBUG += \
+ AudioSettings
diff --git a/configs/sdm845/sdm845.mk b/configs/sdm845/sdm845.mk
index 1e4b32b..fcc686a 100644
--- a/configs/sdm845/sdm845.mk
+++ b/configs/sdm845/sdm845.mk
@@ -271,3 +271,10 @@
android.hardware.audio@4.0-impl \
android.hardware.audio.effect@4.0 \
android.hardware.audio.effect@4.0-impl
+
+PRODUCT_PACKAGES_ENG += \
+ VoicePrintTest \
+ VoicePrintDemo
+
+PRODUCT_PACKAGES_DEBUG += \
+ AudioSettings
diff --git a/configs/trinket/trinket.mk b/configs/trinket/trinket.mk
index bcf970f..6418c21 100644
--- a/configs/trinket/trinket.mk
+++ b/configs/trinket/trinket.mk
@@ -244,3 +244,10 @@
android.hardware.audio@4.0-impl \
android.hardware.audio.effect@4.0 \
android.hardware.audio.effect@4.0-impl
+
+PRODUCT_PACKAGES_ENG += \
+ VoicePrintTest \
+ VoicePrintDemo
+
+PRODUCT_PACKAGES_DEBUG += \
+ AudioSettings
diff --git a/hal/Android.mk b/hal/Android.mk
index 89efe54..cfec83b 100644
--- a/hal/Android.mk
+++ b/hal/Android.mk
@@ -494,6 +494,7 @@
LOCAL_SHARED_LIBRARIES += vendor.qti.hardware.audiohalext@1.0
endif
+LOCAL_CFLAGS += -D_GNU_SOURCE
LOCAL_CFLAGS += -Wall -Werror
LOCAL_COPY_HEADERS_TO := mm-audio
diff --git a/hal/audio_extn/Android.mk b/hal/audio_extn/Android.mk
index 6af15b2..3ff7305 100755
--- a/hal/audio_extn/Android.mk
+++ b/hal/audio_extn/Android.mk
@@ -63,7 +63,7 @@
AUDIO_PLATFORM := $(TARGET_BOARD_PLATFORM)
-ifneq ($(filter sdm845 sdm710 qcs605 msmnile kona $(MSMSTEPPE),$(TARGET_BOARD_PLATFORM)),)
+ifneq ($(filter sdm845 sdm710 qcs605 msmnile kona lito $(MSMSTEPPE),$(TARGET_BOARD_PLATFORM)),)
# B-family platform uses msm8974 code base
AUDIO_PLATFORM = msm8974
MULTIPLE_HW_VARIANTS_ENABLED := true
@@ -121,7 +121,7 @@
AUDIO_PLATFORM := $(TARGET_BOARD_PLATFORM)
-ifneq ($(filter sdm845 sdm710 msmnile kona $(MSMSTEPPE),$(TARGET_BOARD_PLATFORM)),)
+ifneq ($(filter sdm845 sdm710 msmnile kona lito $(MSMSTEPPE),$(TARGET_BOARD_PLATFORM)),)
# B-family platform uses msm8974 code base
AUDIO_PLATFORM = msm8974
MULTIPLE_HW_VARIANTS_ENABLED := true
@@ -182,7 +182,7 @@
PRIMARY_HAL_PATH := vendor/qcom/opensource/audio-hal/primary-hal/hal
AUDIO_PLATFORM := $(TARGET_BOARD_PLATFORM)
-ifneq ($(filter sdm845 sdm710 msmnile kona $(MSMSTEPPE) $(TRINKET),$(TARGET_BOARD_PLATFORM)),)
+ifneq ($(filter sdm845 sdm710 msmnile kona lito $(MSMSTEPPE) $(TRINKET),$(TARGET_BOARD_PLATFORM)),)
# B-family platform uses msm8974 code base
AUDIO_PLATFORM = msm8974
endif
@@ -234,7 +234,7 @@
#--------------------------------------------
include $(CLEAR_VARS)
-ifneq ($(filter sdm845 sdm710 msmnile kona $(MSMSTEPPE) $(TRINKET),$(TARGET_BOARD_PLATFORM)),)
+ifneq ($(filter sdm845 sdm710 msmnile kona lito $(MSMSTEPPE) $(TRINKET),$(TARGET_BOARD_PLATFORM)),)
# B-family platform uses msm8974 code base
AUDIO_PLATFORM = msm8974
endif
@@ -287,7 +287,7 @@
include $(CLEAR_VARS)
-ifneq ($(filter sdm845 sdm710 msmnile kona $(MSMSTEPPE) $(TRINKET),$(TARGET_BOARD_PLATFORM)),)
+ifneq ($(filter sdm845 sdm710 msmnile kona lito $(MSMSTEPPE) $(TRINKET),$(TARGET_BOARD_PLATFORM)),)
# B-family platform uses msm8974 code base
AUDIO_PLATFORM = msm8974
endif
@@ -346,7 +346,7 @@
PRIMARY_HAL_PATH := vendor/qcom/opensource/audio-hal/primary-hal/hal
AUDIO_PLATFORM := $(TARGET_BOARD_PLATFORM)
-ifneq ($(filter sdm845 sdm710 msmnile kona $(MSMSTEPPE),$(TARGET_BOARD_PLATFORM)),)
+ifneq ($(filter sdm845 sdm710 msmnile kona lito $(MSMSTEPPE),$(TARGET_BOARD_PLATFORM)),)
# B-family platform uses msm8974 code base
AUDIO_PLATFORM = msm8974
MULTIPLE_HW_VARIANTS_ENABLED := true
diff --git a/hal/audio_extn/audio_extn.c b/hal/audio_extn/audio_extn.c
index 077ec99..f440362 100644
--- a/hal/audio_extn/audio_extn.c
+++ b/hal/audio_extn/audio_extn.c
@@ -46,6 +46,7 @@
#include <cutils/properties.h>
#include <log/log.h>
#include <unistd.h>
+
#include "audio_hw.h"
#include "audio_extn.h"
#include "voice_extn.h"
@@ -409,6 +410,25 @@
}
#endif
+/* Affine AHAL thread to CPU core */
+void audio_extn_set_cpu_affinity()
+{
+ cpu_set_t cpuset;
+ struct sched_param sched_param;
+ int policy = SCHED_FIFO, rc = 0;
+
+ ALOGV("%s: Set CPU affinity for read thread", __func__);
+ CPU_ZERO(&cpuset);
+ if (sched_setaffinity(0, sizeof(cpuset), &cpuset) != 0)
+ ALOGE("%s: CPU Affinity allocation failed for Capture thread",
+ __func__);
+
+ sched_param.sched_priority = sched_get_priority_min(policy);
+ rc = sched_setscheduler(0, policy, &sched_param);
+ if (rc != 0)
+ ALOGE("%s: Failed to set realtime priority", __func__);
+}
+
// START: VBAT =============================================================
void vbat_feature_init(bool is_feature_enabled)
{
diff --git a/hal/audio_extn/audio_extn.h b/hal/audio_extn/audio_extn.h
index 079d33a..863916b 100644
--- a/hal/audio_extn/audio_extn.h
+++ b/hal/audio_extn/audio_extn.h
@@ -1209,4 +1209,6 @@
bool audio_extn_is_custom_stereo_enabled();
void audio_extn_send_dual_mono_mixing_coefficients(struct stream_out *out);
+
+void audio_extn_set_cpu_affinity();
#endif /* AUDIO_EXTN_H */
diff --git a/hal/audio_extn/ffv.c b/hal/audio_extn/ffv.c
old mode 100755
new mode 100644
index a57f68c..a5b15cc
--- a/hal/audio_extn/ffv.c
+++ b/hal/audio_extn/ffv.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017-2018, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2017-2019, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
@@ -45,6 +45,8 @@
#include <cutils/log.h>
#include <pthread.h>
#include <sys/resource.h>
+#include <unistd.h>
+#include <system/thread_defs.h>
#include "audio_hw.h"
#include "audio_extn.h"
@@ -599,6 +601,7 @@
int param_size = 0;
FfvStatusType status_type;
int ret = 0;
+ ffv_quadrx_use_dwnmix_param_t quad_downmix;
ALOGV("%s: entry", __func__);
/* notify library to reset AEC during each start */
@@ -620,6 +623,20 @@
return -ENOMEM;
}
+ if (in_snd_device == SND_DEVICE_IN_EC_REF_LOOPBACK_QUAD) {
+ quad_downmix.quadrx_dwnmix_enable = true;
+ ALOGD("%s: set param for 4 ch ec, handle %p", __func__, ffvmod.handle);
+ status_type = ffv_set_param_fn(ffvmod.handle,
+ (char *)&quad_downmix,
+ FFV_QUADRX_USE_DWNMIX_PARAM,
+ sizeof(ffv_quadrx_use_dwnmix_param_t));
+ if (status_type) {
+ ALOGE("%s: ERROR. ffv_set_param_fn for quad channel ec ref %d",
+ __func__, status_type);
+ return -EINVAL;
+ }
+ }
+
pthread_mutex_lock(&ffvmod.init_lock);
uc_info_tx->id = USECASE_AUDIO_EC_REF_LOOPBACK;
uc_info_tx->type = PCM_CAPTURE;
@@ -775,6 +792,8 @@
return status;
}
}
+ audio_extn_set_cpu_affinity();
+ setpriority(PRIO_PROCESS, 0, ANDROID_PRIORITY_AUDIO);
ffvmod.capture_started = true;
}
diff --git a/hal/audio_extn/sndmonitor.c b/hal/audio_extn/sndmonitor.c
index ae9bb49..2bcb175 100644
--- a/hal/audio_extn/sndmonitor.c
+++ b/hal/audio_extn/sndmonitor.c
@@ -222,7 +222,8 @@
(strncasecmp(card_id, "sm", 2) != 0) &&
(strncasecmp(card_id, "trinket", 7) != 0) &&
(strncasecmp(card_id, "apq", 3) != 0) &&
- (strncasecmp(card_id, "sa", 2) != 0)) {
+ (strncasecmp(card_id, "sa", 2) != 0) &&
+ (strncasecmp(card_id, "kona", 4) != 0)) {
ALOGW("Skip over non-ADSP snd card %s", card_id);
continue;
}
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 7b0379e..2e38980 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -5137,8 +5137,6 @@
__func__, frames, frame_size, bytes_to_write);
if (out->usecase == USECASE_INCALL_MUSIC_UPLINK ||
- (out->usecase == USECASE_AUDIO_PLAYBACK_VOIP
- && !voice_extn_is_compress_voip_supported()) ||
out->usecase == USECASE_INCALL_MUSIC_UPLINK2) {
size_t channel_count = audio_channel_count_from_out_mask(out->channel_mask);
int16_t *src = (int16_t *)buffer;
@@ -7849,8 +7847,7 @@
bool valid_ch = audio_channel_count_from_in_mask(in->channel_mask) == 1;
if(!voice_extn_is_compress_voip_supported()) {
- if (valid_rate && valid_ch &&
- in->dev->mode == AUDIO_MODE_IN_COMMUNICATION) {
+ if (valid_rate && valid_ch) {
in->usecase = USECASE_AUDIO_RECORD_VOIP;
in->config = default_pcm_config_voip_copp;
in->config.period_size = VOIP_IO_BUF_SIZE(in->sample_rate,
@@ -8160,22 +8157,6 @@
pthread_mutex_lock(&adev->lock);
ret_val = audio_extn_check_and_set_multichannel_usecase(adev,
in, config, &channel_mask_updated);
-#ifdef CONCURRENT_CAPTURE_ENABLED
- /* Acquire lock to avoid two concurrent use cases initialized to
- same pcm record use case*/
-
- if(in->usecase == USECASE_AUDIO_RECORD) {
- if (!(adev->pcm_record_uc_state)) {
- ALOGV("%s: using USECASE_AUDIO_RECORD",__func__);
- adev->pcm_record_uc_state = 1;
- } else {
- /* 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__);
- }
- }
-#endif
pthread_mutex_unlock(&adev->lock);
if (!ret_val) {
@@ -8227,6 +8208,24 @@
goto err_open;
}
}
+#ifdef CONCURRENT_CAPTURE_ENABLED
+ /* Acquire lock to avoid two concurrent use cases initialized to
+ same pcm record use case */
+
+ pthread_mutex_lock(&adev->lock);
+ if (in->usecase == USECASE_AUDIO_RECORD) {
+ if (!(adev->pcm_record_uc_state)) {
+ ALOGV("%s: using USECASE_AUDIO_RECORD",__func__);
+ adev->pcm_record_uc_state = 1;
+ } else {
+ /* 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__);
+ }
+ }
+ pthread_mutex_unlock(&adev->lock);
+#endif
}
audio_extn_utils_update_stream_input_app_type_cfg(adev->platform,
&adev->streams_input_cfg_list,