Merge "configs: Add sound trigger implementer version" into audio-hal.lnx.6.0
diff --git a/audiod/Android.mk b/audiod/Android.mk
index c89b3cd..8633959 100644
--- a/audiod/Android.mk
+++ b/audiod/Android.mk
@@ -26,4 +26,7 @@
LOCAL_MODULE:= audiod
+ifneq ($(filter kona,$(TARGET_BOARD_PLATFORM)),)
+LOCAL_SANITIZE := integer_overflow
+endif
include $(BUILD_EXECUTABLE)
diff --git a/configs/kona/audio_configs.xml b/configs/kona/audio_configs.xml
index 271023d..3c13e33 100644
--- a/configs/kona/audio_configs.xml
+++ b/configs/kona/audio_configs.xml
@@ -53,7 +53,7 @@
<!-- AV Configs -->
<property name="vendor.audio.use.sw.alac.decoder" value="true"/>
<property name="vendor.audio.use.sw.ape.decoder" value="true"/>
- <property name="vendor.audio.use.sw.mpegh.decoder" value="false"/>
+ <property name="vendor.audio.use.sw.mpegh.decoder" value="true"/>
<property name="vendor.audio.flac.sw.decoder.24bit" value="true"/>
<property name="vendor.audio.hw.aac.encoder" value="true"/>
<flag name="aac_adts_offload_enabled" value="true" />
diff --git a/configs/kona/audio_platform_info_intcodec.xml b/configs/kona/audio_platform_info_intcodec.xml
index 80fc6be..2aa4b27 100644
--- a/configs/kona/audio_platform_info_intcodec.xml
+++ b/configs/kona/audio_platform_info_intcodec.xml
@@ -102,7 +102,7 @@
<param key="spkr_1_tz_name" value="wsatz.13"/>
<param key="spkr_2_tz_name" value="wsatz.14"/>
<param key="true_32_bit" value="true"/>
- <param key="native_audio_mode" value="true"/>
+ <param key="native_audio_mode" value="multiple_mix_dsp"/>
<param key="hfp_pcm_dev_id" value="39"/>
<param key="input_mic_max_count" value="4"/>
</config_params>
diff --git a/configs/kona/audio_platform_info_qrd.xml b/configs/kona/audio_platform_info_qrd.xml
index fdeb319..7ff0f17 100644
--- a/configs/kona/audio_platform_info_qrd.xml
+++ b/configs/kona/audio_platform_info_qrd.xml
@@ -99,7 +99,7 @@
<param key="mono_speaker" value="right"/>
<param key="spkr_2_tz_name" value="wsatz.14"/>
<param key="true_32_bit" value="true"/>
- <param key="native_audio_mode" value="true"/>
+ <param key="native_audio_mode" value="multiple_mix_dsp"/>
<param key="hfp_pcm_dev_id" value="39"/>
<param key="input_mic_max_count" value="4"/>
</config_params>
diff --git a/configs/kona/mixer_paths_qrd.xml b/configs/kona/mixer_paths_qrd.xml
index 205ca95..4a305ca 100644
--- a/configs/kona/mixer_paths_qrd.xml
+++ b/configs/kona/mixer_paths_qrd.xml
@@ -352,10 +352,10 @@
<ctl name="HPHR Volume" value="20" />
<ctl name="EAR SPKR PA Gain" value="G_DEFAULT" />
- <ctl name="TX_DEC0 Volume" value="84" />
- <ctl name="TX_DEC1 Volume" value="84" />
- <ctl name="TX_DEC2 Volume" value="84" />
- <ctl name="TX_DEC3 Volume" value="84" />
+ <ctl name="TX_DEC0 Volume" value="102" />
+ <ctl name="TX_DEC1 Volume" value="102" />
+ <ctl name="TX_DEC2 Volume" value="102" />
+ <ctl name="TX_DEC3 Volume" value="102" />
<ctl name="TX_DEC4 Volume" value="84" />
<ctl name="TX_DEC5 Volume" value="84" />
<ctl name="TX_DEC6 Volume" value="84" />
@@ -1802,6 +1802,10 @@
<path name="audio-playback-voip bt-sco" />
</path>
+ <path name="audio-playback-voip bt-a2dp">
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia10" value="1" />
+ </path>
+
<path name="audio-playback-voip afe-proxy">
<ctl name="AFE_PCM_RX Audio Mixer MultiMedia10" value="1" />
</path>
@@ -1984,7 +1988,7 @@
</path>
<path name="mmap-playback bt-sco-wb">
- <ctl name="BT SampleRate" value="16000" />
+ <ctl name="BT SampleRate" value="KHZ_16" />
<path name="mmap-playback bt-sco" />
</path>
@@ -2008,7 +2012,7 @@
<ctl name="DISPLAY_PORT Mixer MultiMedia16" value="1" />
</path>
- <path name="mmap-buffer-playback hdmi">
+ <path name="mmap-playback hdmi">
<ctl name="HDMI Mixer MultiMedia16" value="1" />
</path>
@@ -2068,6 +2072,10 @@
<ctl name="USB_AUDIO_RX Audio Mixer MultiMedia2" value="1" />
</path>
+ <path name="hifi-record">
+ <ctl name="MultiMedia2 Mixer TX_CDC_DMA_TX_3" value="1" />
+ </path>
+
<path name="hifi-record usb-headset-mic">
<ctl name="MultiMedia2 Mixer USB_AUDIO_TX" value="1" />
</path>
@@ -2371,6 +2379,7 @@
<path name="headset-mic">
<path name="amic2" />
+ <ctl name="TX_DEC0 Volume" value="84" />
</path>
<path name="voice-handset">
@@ -2474,7 +2483,7 @@
<ctl name="TX_AIF1_CAP Mixer DEC0" value="1" />
<ctl name="TX DMIC MUX0" value="DMIC1" />
<ctl name="TX_AIF1_CAP Mixer DEC1" value="1" />
- <ctl name="TX DMIC MUX0" value="DMIC3" />
+ <ctl name="TX DMIC MUX1" value="DMIC3" />
</path>
<path name="speaker-dmic-endfire">
@@ -2482,7 +2491,7 @@
<ctl name="TX_AIF1_CAP Mixer DEC0" value="1" />
<ctl name="TX DMIC MUX0" value="DMIC2" />
<ctl name="TX_AIF1_CAP Mixer DEC1" value="1" />
- <ctl name="TX DMIC MUX0" value="DMIC1" />
+ <ctl name="TX DMIC MUX1" value="DMIC1" />
</path>
<path name="dmic-endfire">
diff --git a/configs/kona/sound_trigger_mixer_paths_qrd.xml b/configs/kona/sound_trigger_mixer_paths_qrd.xml
index ccbdd94..a8180e4 100644
--- a/configs/kona/sound_trigger_mixer_paths_qrd.xml
+++ b/configs/kona/sound_trigger_mixer_paths_qrd.xml
@@ -234,13 +234,13 @@
<ctl name="VA_CDC_DMA_TX_0 Channels" value="Three" />
<ctl name="VA_AIF1_CAP Mixer DEC0" value="1" />
<ctl name="VA_AIF1_CAP Mixer DEC1" value="1" />
- <ctl name="VA_AIF1_CAP Mixer DEC5" value="1" />
+ <ctl name="VA_AIF1_CAP Mixer DEC2" value="1" />
<ctl name="VA DEC0 MUX" value="MSM_DMIC" />
<ctl name="VA DEC1 MUX" value="MSM_DMIC" />
- <ctl name="VA DEC5 MUX" value="MSM_DMIC" />
+ <ctl name="VA DEC2 MUX" value="MSM_DMIC" />
<ctl name="VA DMIC MUX0" value="DMIC1" />
<ctl name="VA DMIC MUX1" value="DMIC2" />
- <ctl name="VA DMIC MUX5" value="DMIC5" />
+ <ctl name="VA DMIC MUX2" value="DMIC5" />
</path>
<path name="listen-ape-handset-qmic">
@@ -248,15 +248,15 @@
<ctl name="VA_AIF1_CAP Mixer DEC0" value="1" />
<ctl name="VA_AIF1_CAP Mixer DEC1" value="1" />
<ctl name="VA_AIF1_CAP Mixer DEC2" value="1" />
- <ctl name="VA_AIF1_CAP Mixer DEC5" value="1" />
+ <ctl name="VA_AIF1_CAP Mixer DEC3" value="1" />
<ctl name="VA DEC0 MUX" value="MSM_DMIC" />
<ctl name="VA DEC1 MUX" value="MSM_DMIC" />
<ctl name="VA DEC2 MUX" value="MSM_DMIC" />
- <ctl name="VA DEC5 MUX" value="MSM_DMIC" />
+ <ctl name="VA DEC3 MUX" value="MSM_DMIC" />
<ctl name="VA DMIC MUX0" value="DMIC1" />
<ctl name="VA DMIC MUX1" value="DMIC2" />
<ctl name="VA DMIC MUX2" value="DMIC3" />
- <ctl name="VA DMIC MUX5" value="DMIC5" />
+ <ctl name="VA DMIC MUX3" value="DMIC5" />
</path>
<path name="listen-ape-headset-mic">
diff --git a/configs/lito/audio_configs.xml b/configs/lito/audio_configs.xml
index bcc617d..271023d 100644
--- a/configs/lito/audio_configs.xml
+++ b/configs/lito/audio_configs.xml
@@ -31,7 +31,7 @@
<!-- APM Configs -->
<property name="audio.deep_buffer.media" value="true"/>
<property name="audio.offload.disable" value="false"/>
- <property name="audio.offload.min.duration.secs" value="60"/>
+ <property name="audio.offload.min.duration.secs" value="30"/>
<property name="audio.offload.video" value="true"/>
<property name="persist.vendor.audio.sva.conc.enabled" value="false"/>
<property name="persist.vendor.audio.va_concurrency_enabled" value="false"/>
diff --git a/configs/lito/audio_platform_info.xml b/configs/lito/audio_platform_info.xml
index 29bda8f..21714f4 100644
--- a/configs/lito/audio_platform_info.xml
+++ b/configs/lito/audio_platform_info.xml
@@ -72,7 +72,7 @@
</bit_width_configs>
<pcm_ids>
<usecase name="USECASE_AUDIO_PLAYBACK_LOW_LATENCY" type="out" id="9"/>
- <usecase name="USECASE_AUDIO_PLAYBACK_OFFLOAD" type="out" id="8"/>
+ <usecase name="USECASE_AUDIO_PLAYBACK_OFFLOAD" type="out" id="7"/>
<usecase name="USECASE_AUDIO_PLAYBACK_OFFLOAD2" type="out" id="11"/>
<usecase name="USECASE_AUDIO_PLAYBACK_OFFLOAD3" type="out" id="12"/>
<usecase name="USECASE_AUDIO_PLAYBACK_OFFLOAD4" type="out" id="24"/>
@@ -87,8 +87,8 @@
<usecase name="USECASE_VOWLAN_CALL" type="in" id="-1"/>
<usecase name="USECASE_VOWLAN_CALL" type="out" id="-1"/>
<usecase name="USECASE_AUDIO_PLAYBACK_FM" type="out" id="30"/>
- <usecase name="USECASE_AUDIO_PLAYBACK_FM" type="in" id="32"/>
- <usecase name="USECASE_AUDIO_SPKR_CALIB_RX" type="out" id="38"/>
+ <usecase name="USECASE_AUDIO_PLAYBACK_FM" type="in" id="38"/>
+ <usecase name="USECASE_AUDIO_SPKR_CALIB_RX" type="out" id="30"/>
<usecase name="USECASE_AUDIO_SPKR_CALIB_TX" type="in" id="33"/>
<usecase name="USECASE_AUDIO_PLAYBACK_AFE_PROXY" type="out" id="5"/>
<usecase name="USECASE_AUDIO_RECORD_AFE_PROXY" type="in" id="6"/>
diff --git a/configs/lito/audio_platform_info_intcodec.xml b/configs/lito/audio_platform_info_intcodec.xml
index 70dc552..7c57bf4 100644
--- a/configs/lito/audio_platform_info_intcodec.xml
+++ b/configs/lito/audio_platform_info_intcodec.xml
@@ -34,7 +34,7 @@
</interface_names>
<pcm_ids>
<usecase name="USECASE_AUDIO_PLAYBACK_LOW_LATENCY" type="out" id="9"/>
- <usecase name="USECASE_AUDIO_PLAYBACK_OFFLOAD" type="out" id="8"/>
+ <usecase name="USECASE_AUDIO_PLAYBACK_OFFLOAD" type="out" id="7"/>
<usecase name="USECASE_AUDIO_PLAYBACK_OFFLOAD2" type="out" id="11"/>
<usecase name="USECASE_AUDIO_PLAYBACK_OFFLOAD3" type="out" id="12"/>
<usecase name="USECASE_AUDIO_PLAYBACK_OFFLOAD4" type="out" id="24"/>
@@ -49,8 +49,8 @@
<usecase name="USECASE_VOWLAN_CALL" type="in" id="-1"/>
<usecase name="USECASE_VOWLAN_CALL" type="out" id="-1"/>
<usecase name="USECASE_AUDIO_PLAYBACK_FM" type="out" id="30"/>
- <usecase name="USECASE_AUDIO_PLAYBACK_FM" type="in" id="32"/>
- <usecase name="USECASE_AUDIO_SPKR_CALIB_RX" type="out" id="38"/>
+ <usecase name="USECASE_AUDIO_PLAYBACK_FM" type="in" id="38"/>
+ <usecase name="USECASE_AUDIO_SPKR_CALIB_RX" type="out" id="30"/>
<usecase name="USECASE_AUDIO_SPKR_CALIB_TX" type="in" id="33"/>
<usecase name="USECASE_AUDIO_PLAYBACK_AFE_PROXY" type="out" id="5"/>
<usecase name="USECASE_AUDIO_RECORD_AFE_PROXY" type="in" id="6"/>
@@ -74,7 +74,7 @@
<param key="spkr_1_tz_name" value="wsatz.13"/>
<param key="spkr_2_tz_name" value="wsatz.14"/>
<param key="true_32_bit" value="true"/>
- <param key="native_audio_mode" value="true"/>
+ <param key="native_audio_mode" value="multiple_mix_dsp"/>
<param key="hfp_pcm_dev_id" value="39"/>
<param key="input_mic_max_count" value="4"/>
</config_params>
diff --git a/configs/lito/audio_platform_info_qrd.xml b/configs/lito/audio_platform_info_qrd.xml
index 6601e9f..e7d2662 100644
--- a/configs/lito/audio_platform_info_qrd.xml
+++ b/configs/lito/audio_platform_info_qrd.xml
@@ -34,7 +34,7 @@
</interface_names>
<pcm_ids>
<usecase name="USECASE_AUDIO_PLAYBACK_LOW_LATENCY" type="out" id="9"/>
- <usecase name="USECASE_AUDIO_PLAYBACK_OFFLOAD" type="out" id="8"/>
+ <usecase name="USECASE_AUDIO_PLAYBACK_OFFLOAD" type="out" id="7"/>
<usecase name="USECASE_AUDIO_PLAYBACK_OFFLOAD2" type="out" id="11"/>
<usecase name="USECASE_AUDIO_PLAYBACK_OFFLOAD3" type="out" id="12"/>
<usecase name="USECASE_AUDIO_PLAYBACK_OFFLOAD4" type="out" id="24"/>
@@ -49,8 +49,8 @@
<usecase name="USECASE_VOWLAN_CALL" type="in" id="-1"/>
<usecase name="USECASE_VOWLAN_CALL" type="out" id="-1"/>
<usecase name="USECASE_AUDIO_PLAYBACK_FM" type="out" id="30"/>
- <usecase name="USECASE_AUDIO_PLAYBACK_FM" type="in" id="32"/>
- <usecase name="USECASE_AUDIO_SPKR_CALIB_RX" type="out" id="38"/>
+ <usecase name="USECASE_AUDIO_PLAYBACK_FM" type="in" id="38"/>
+ <usecase name="USECASE_AUDIO_SPKR_CALIB_RX" type="out" id="30"/>
<usecase name="USECASE_AUDIO_SPKR_CALIB_TX" type="in" id="33"/>
<usecase name="USECASE_AUDIO_PLAYBACK_AFE_PROXY" type="out" id="5"/>
<usecase name="USECASE_AUDIO_RECORD_AFE_PROXY" type="in" id="6"/>
@@ -73,7 +73,7 @@
<param key="mono_speaker" value="right"/>
<param key="spkr_2_tz_name" value="wsatz.14"/>
<param key="true_32_bit" value="true"/>
- <param key="native_audio_mode" value="true"/>
+ <param key="native_audio_mode" value="multiple_mix_dsp"/>
<param key="hfp_pcm_dev_id" value="39"/>
<param key="input_mic_max_count" value="2"/>
</config_params>
diff --git a/configs/lito/lito.mk b/configs/lito/lito.mk
index ca38717..107e0b8 100644
--- a/configs/lito/lito.mk
+++ b/configs/lito/lito.mk
@@ -376,6 +376,51 @@
PRODUCT_PROPERTY_OVERRIDES += \
persist.vendor.bt.aac_frm_ctl.enabled=true
+#add dynamic feature flags here
+PRODUCT_PROPERTY_OVERRIDES += \
+vendor.audio.feature.a2dp_offload.enable=true \
+vendor.audio.feature.afe_proxy.enable=true \
+vendor.audio.feature.anc_headset.enable=true \
+vendor.audio.feature.audio_sphere.enable=true \
+vendor.audio.feature.battery_listener.enable=true \
+vendor.audio.feature.compr_cap.enable=false \
+vendor.audio.feature.compress_in.enable=true \
+vendor.audio.feature.compress_meta_data.enable=true \
+vendor.audio.feature.compr_voip.enable=false \
+vendor.audio.feature.concurrent_capture.enable=false \
+vendor.audio.feature.custom_stereo.enable=true \
+vendor.audio.feature.display_port.enable=true \
+vendor.audio.feature.dsm_feedback.enable=false \
+vendor.audio.feature.dynamic_ecns.enable=true \
+vendor.audio.feature.ext_hw_plugin.enable=true \
+vendor.audio.feature.external_dsp.enable=false \
+vendor.audio.feature.external_speaker.enable=false \
+vendor.audio.feature.external_speaker_tfa.enable=false \
+vendor.audio.feature.fluence.enable=true \
+vendor.audio.feature.fm.enable=true \
+vendor.audio.feature.hdmi_edid.enable=true \
+vendor.audio.feature.hdmi_passthrough.enable=true \
+vendor.audio.feature.hfp.enable=true \
+vendor.audio.feature.hifi_audio.enable=false \
+vendor.audio.feature.hwdep_cal.enable=false \
+vendor.audio.feature.incall_music.enable=true \
+vendor.audio.feature.keep_alive.enable=true \
+vendor.audio.feature.kpi_optimize.enable=true \
+vendor.audio.feature.maxx_audio.enable=false \
+vendor.audio.feature.ras.enable=true \
+vendor.audio.feature.record_play_concurency.enable=false \
+vendor.audio.feature.src_trkn.enable=true \
+vendor.audio.feature.spkr_prot.enable=true \
+vendor.audio.feature.ssrec.enable=true \
+vendor.audio.feature.usb_offload.enable=true \
+vendor.audio.feature.usb_offload_burst_mode.enable=true \
+vendor.audio.feature.usb_offload_sidetone_volume.enable=false \
+vendor.audio.feature.deepbuffer_as_primary.enable=false \
+vendor.audio.feature.vbat.enable=true \
+vendor.audio.feature.wsa.enable=false \
+vendor.audio.feature.audiozoom.enable=false \
+vendor.audio.feature.snd_mon.enable=true
+
# for HIDL related packages
PRODUCT_PACKAGES += \
android.hardware.audio@2.0-service \
diff --git a/configs/lito/mixer_paths.xml b/configs/lito/mixer_paths.xml
index a8f65b8..8688745 100644
--- a/configs/lito/mixer_paths.xml
+++ b/configs/lito/mixer_paths.xml
@@ -162,7 +162,7 @@
<ctl name="AFE_PCM_RX Audio Mixer MultiMedia5" value="0" />
<!-- usb headset end -->
<!-- fm -->
- <ctl name="Tert MI2S LOOPBACK Volume" value="0" />
+ <ctl name="SLIMBUS_8 LOOPBACK Volume" value="0" />
<ctl name="WSA_CDC_DMA_RX_0 Port Mixer SLIM_8_TX" value="0" />
<ctl name="WSA_CDC_DMA_RX_0_DL_HL Switch" value="0" />
<ctl name="RX_CDC_DMA_RX_0 Port Mixer SLIM_8_TX" value="0" />
@@ -1436,13 +1436,13 @@
</path>
<path name="play-fm">
- <ctl name="Tert MI2S LOOPBACK Volume" value="1" />
+ <ctl name="SLIMBUS_8 LOOPBACK Volume" value="1" />
<ctl name="WSA_CDC_DMA_RX_0 Port Mixer SLIM_8_TX" value="1" />
<ctl name="WSA_CDC_DMA_RX_0_DL_HL Switch" value="1" />
</path>
<path name="play-fm headphones">
- <ctl name="Tert MI2S LOOPBACK Volume" value="1" />
+ <ctl name="SLIMBUS_8 LOOPBACK Volume" value="1" />
<ctl name="RX_CDC_DMA_RX_0 Port Mixer SLIM_8_TX" value="1" />
<ctl name="RX_CDC_DMA_RX_0_DL_HL Switch" value="1" />
</path>
diff --git a/configs/lito/mixer_paths_qrd.xml b/configs/lito/mixer_paths_qrd.xml
index 6f54bb2..a6bdeae 100644
--- a/configs/lito/mixer_paths_qrd.xml
+++ b/configs/lito/mixer_paths_qrd.xml
@@ -162,7 +162,7 @@
<ctl name="AFE_PCM_RX Audio Mixer MultiMedia5" value="0" />
<!-- usb headset end -->
<!-- fm -->
- <ctl name="Tert MI2S LOOPBACK Volume" value="0" />
+ <ctl name="SLIMBUS_8 LOOPBACK Volume" value="0" />
<ctl name="WSA_CDC_DMA_RX_0 Port Mixer SLIM_8_TX" value="0" />
<ctl name="WSA_CDC_DMA_RX_0_DL_HL Switch" value="0" />
<ctl name="RX_CDC_DMA_RX_0 Port Mixer SLIM_8_TX" value="0" />
@@ -1448,13 +1448,13 @@
</path>
<path name="play-fm">
- <ctl name="Tert MI2S LOOPBACK Volume" value="1" />
+ <ctl name="SLIMBUS_8 LOOPBACK Volume" value="1" />
<ctl name="WSA_CDC_DMA_RX_0 Port Mixer SLIM_8_TX" value="1" />
<ctl name="WSA_CDC_DMA_RX_0_DL_HL Switch" value="1" />
</path>
<path name="play-fm headphones">
- <ctl name="Tert MI2S LOOPBACK Volume" value="1" />
+ <ctl name="SLIMBUS_8 LOOPBACK Volume" value="1" />
<ctl name="RX_CDC_DMA_RX_0 Port Mixer SLIM_8_TX" value="1" />
<ctl name="RX_CDC_DMA_RX_0_DL_HL Switch" value="1" />
</path>
@@ -1802,6 +1802,10 @@
<path name="audio-playback-voip bt-sco" />
</path>
+ <path name="audio-playback-voip bt-a2dp">
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia10" value="1" />
+ </path>
+
<path name="audio-playback-voip afe-proxy">
<ctl name="AFE_PCM_RX Audio Mixer MultiMedia10" value="1" />
</path>
diff --git a/configs/msmnile/sound_trigger_mixer_paths_wcd9340.xml b/configs/msmnile/sound_trigger_mixer_paths_wcd9340.xml
index b385769..f32ee2e 100644
--- a/configs/msmnile/sound_trigger_mixer_paths_wcd9340.xml
+++ b/configs/msmnile/sound_trigger_mixer_paths_wcd9340.xml
@@ -298,6 +298,15 @@
<ctl name="AIF4_MAD Mixer SLIM TX13" value="1" />
</path>
+ <path name="listen-ape-headset-mic">
+ <ctl name="AIF3_CAP Mixer SLIM TX2" value="1" />
+ <ctl name="SLIM_1_TX Channels" value="One" />
+ <ctl name="CDC_IF TX2 MUX" value="DEC2" />
+ <ctl name="ADC MUX2" value="AMIC" />
+ <ctl name="AMIC MUX2" value="ADC2" />
+ <ctl name="DEC2 Volume" value="84" />
+ </path>
+
<path name="listen-ape-handset-mic-preproc">
<ctl name="AIF3_CAP Mixer SLIM TX2" value="1" />
<ctl name="SLIM_1_TX Channels" value="One" />
@@ -362,6 +371,20 @@
<ctl name="EC Reference SampleRate" value="48000"/>
</path>
+ <path name="echo-reference line">
+ <ctl name="AUDIO_REF_EC_UL1 MUX" value="SLIM_6_RX"/>
+ <ctl name="EC Reference Channels" value="Two"/>
+ <ctl name="EC Reference Bit Format" value="S16_LE"/>
+ <ctl name="EC Reference SampleRate" value="48000"/>
+ </path>
+
+ <path name="echo-reference headset">
+ <ctl name="AUDIO_REF_EC_UL1 MUX" value="SLIM_6_RX"/>
+ <ctl name="EC Reference Channels" value="Two"/>
+ <ctl name="EC Reference Bit Format" value="S16_LE"/>
+ <ctl name="EC Reference SampleRate" value="48000"/>
+ </path>
+
<path name="echo-reference a2dp">
<ctl name="AUDIO_REF_EC_UL1 MUX" value="SLIM_7_RX"/>
<ctl name="EC Reference Channels" value="Two"/>
diff --git a/configs/msmnile/sound_trigger_mixer_paths_wcd9340_qrd.xml b/configs/msmnile/sound_trigger_mixer_paths_wcd9340_qrd.xml
index 11e601d..0a7c780 100644
--- a/configs/msmnile/sound_trigger_mixer_paths_wcd9340_qrd.xml
+++ b/configs/msmnile/sound_trigger_mixer_paths_wcd9340_qrd.xml
@@ -298,6 +298,15 @@
<ctl name="AIF4_MAD Mixer SLIM TX13" value="1" />
</path>
+ <path name="listen-ape-headset-mic">
+ <ctl name="AIF3_CAP Mixer SLIM TX2" value="1" />
+ <ctl name="SLIM_1_TX Channels" value="One" />
+ <ctl name="CDC_IF TX2 MUX" value="DEC2" />
+ <ctl name="ADC MUX2" value="AMIC" />
+ <ctl name="AMIC MUX2" value="ADC2" />
+ <ctl name="DEC2 Volume" value="84" />
+ </path>
+
<path name="listen-ape-handset-mic-preproc">
<ctl name="AIF3_CAP Mixer SLIM TX2" value="1" />
<ctl name="SLIM_1_TX Channels" value="One" />
@@ -329,7 +338,7 @@
<ctl name="DMIC MUX0" value="DMIC0" />
<ctl name="CDC_IF TX1 MUX" value="DEC1" />
<ctl name="ADC MUX1" value="DMIC" />
- <ctl name="DMIC MUX1" value="DMIC3" />
+ <ctl name="DMIC MUX1" value="DMIC2" />
<ctl name="CDC_IF TX2 MUX" value="DEC2" />
<ctl name="ADC MUX2" value="DMIC" />
<ctl name="DMIC MUX2" value="DMIC5" />
@@ -362,6 +371,20 @@
<ctl name="EC Reference SampleRate" value="48000"/>
</path>
+ <path name="echo-reference line">
+ <ctl name="AUDIO_REF_EC_UL1 MUX" value="SLIM_6_RX"/>
+ <ctl name="EC Reference Channels" value="Two"/>
+ <ctl name="EC Reference Bit Format" value="S16_LE"/>
+ <ctl name="EC Reference SampleRate" value="48000"/>
+ </path>
+
+ <path name="echo-reference headset">
+ <ctl name="AUDIO_REF_EC_UL1 MUX" value="SLIM_6_RX"/>
+ <ctl name="EC Reference Channels" value="Two"/>
+ <ctl name="EC Reference Bit Format" value="S16_LE"/>
+ <ctl name="EC Reference SampleRate" value="48000"/>
+ </path>
+
<path name="echo-reference a2dp">
<ctl name="AUDIO_REF_EC_UL1 MUX" value="SLIM_7_RX"/>
<ctl name="EC Reference Channels" value="Two"/>
diff --git a/configs/msmnile/sound_trigger_platform_info.xml b/configs/msmnile/sound_trigger_platform_info.xml
index 91fcb35..8468452 100644
--- a/configs/msmnile/sound_trigger_platform_info.xml
+++ b/configs/msmnile/sound_trigger_platform_info.xml
@@ -60,6 +60,7 @@
<param DEVICE_HANDSET_MIC_PP_APE="135" />
<param DEVICE_HANDSET_QMIC_APE="137" />
<param DEVICE_HEADSET_MIC_CPE="139" />
+ <param DEVICE_HEADSET_MIC_APE="141" />
<param DEVICE_HANDSET_DMIC_APE="149" />
<param DEVICE_HANDSET_DMIC_CPE="148" />
</acdb_ids>
diff --git a/configs/msmnile_au/msmnile_au.mk b/configs/msmnile_au/msmnile_au.mk
index c9d5d96..5a7366f 100644
--- a/configs/msmnile_au/msmnile_au.mk
+++ b/configs/msmnile_au/msmnile_au.mk
@@ -2,7 +2,6 @@
#
#AUDIO_FEATURE_FLAGS
BOARD_USES_ALSA_AUDIO := true
-TARGET_USES_AOSP_FOR_AUDIO := false
ifneq ($(TARGET_USES_AOSP_FOR_AUDIO), true)
USE_CUSTOM_AUDIO_POLICY := 1
diff --git a/configs/msmsteppe/audio_platform_info_intcodec.xml b/configs/msmsteppe/audio_platform_info_intcodec.xml
index cbaad99..ac6c4cc 100644
--- a/configs/msmsteppe/audio_platform_info_intcodec.xml
+++ b/configs/msmsteppe/audio_platform_info_intcodec.xml
@@ -93,6 +93,7 @@
<device name="SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES_EXTERNAL_1" acdb_id="10"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES_EXTERNAL_2" acdb_id="10"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_USB_HEADSET" acdb_id="45"/>
+ <device name="SND_DEVICE_IN_UNPROCESSED_USB_HEADSET_MIC" acdb_id="133"/>
<device name="SND_DEVICE_IN_UNPROCESSED_MIC" acdb_id="143"/>
<device name="SND_DEVICE_IN_UNPROCESSED_STEREO_MIC" acdb_id="144"/>
<device name="SND_DEVICE_IN_UNPROCESSED_THREE_MIC" acdb_id="145"/>
diff --git a/hal/Android.mk b/hal/Android.mk
index 0ce2d6e..9c43730 100644
--- a/hal/Android.mk
+++ b/hal/Android.mk
@@ -358,6 +358,9 @@
LOCAL_VENDOR_MODULE := true
+ifneq ($(filter kona,$(TARGET_BOARD_PLATFORM)),)
+LOCAL_SANITIZE := integer_overflow
+endif
include $(BUILD_SHARED_LIBRARY)
LOCAL_CFLAGS += -Wno-unused-variable
diff --git a/hal/audio_extn/Android.mk b/hal/audio_extn/Android.mk
index 255bc4e..993c5cb 100644
--- a/hal/audio_extn/Android.mk
+++ b/hal/audio_extn/Android.mk
@@ -50,6 +50,9 @@
LOCAL_HEADER_LIBRARIES += libhardware_headers
LOCAL_HEADER_LIBRARIES += libsystem_headers
+ifneq ($(filter kona,$(TARGET_BOARD_PLATFORM)),)
+LOCAL_SANITIZE := integer_overflow
+endif
include $(BUILD_SHARED_LIBRARY)
#--------------------------------------------
@@ -109,6 +112,9 @@
LOCAL_HEADER_LIBRARIES += libhardware_headers
LOCAL_HEADER_LIBRARIES += libsystem_headers
+ifneq ($(filter kona,$(TARGET_BOARD_PLATFORM)),)
+LOCAL_SANITIZE := integer_overflow
+endif
include $(BUILD_SHARED_LIBRARY)
#-------------------------------------------
@@ -168,6 +174,9 @@
LOCAL_HEADER_LIBRARIES += libhardware_headers
LOCAL_HEADER_LIBRARIES += libsystem_headers
+ifneq ($(filter kona,$(TARGET_BOARD_PLATFORM)),)
+LOCAL_SANITIZE := integer_overflow
+endif
#include $(BUILD_SHARED_LIBRARY)
#--------------------------------------------
@@ -227,6 +236,9 @@
LOCAL_HEADER_LIBRARIES += libhardware_headers
LOCAL_HEADER_LIBRARIES += libsystem_headers
+ifneq ($(filter kona,$(TARGET_BOARD_PLATFORM)),)
+LOCAL_SANITIZE := integer_overflow
+endif
include $(BUILD_SHARED_LIBRARY)
#--------------------------------------------
@@ -282,6 +294,9 @@
LOCAL_HEADER_LIBRARIES += libhardware_headers
LOCAL_HEADER_LIBRARIES += libsystem_headers
+ifneq ($(filter kona,$(TARGET_BOARD_PLATFORM)),)
+LOCAL_SANITIZE := integer_overflow
+endif
include $(BUILD_SHARED_LIBRARY)
#====================================================================================================
# --- enable 3rd Party Spkr-prot lib
@@ -337,6 +352,9 @@
LOCAL_HEADER_LIBRARIES += libhardware_headers
LOCAL_HEADER_LIBRARIES += libsystem_headers
+ifneq ($(filter kona,$(TARGET_BOARD_PLATFORM)),)
+LOCAL_SANITIZE := integer_overflow
+endif
include $(BUILD_SHARED_LIBRARY)
#-------------------------------------------
@@ -395,6 +413,9 @@
LOCAL_HEADER_LIBRARIES += libhardware_headers
LOCAL_HEADER_LIBRARIES += libsystem_headers
+ifneq ($(filter kona,$(TARGET_BOARD_PLATFORM)),)
+LOCAL_SANITIZE := integer_overflow
+endif
include $(BUILD_SHARED_LIBRARY)
#-------------------------------------------
@@ -456,6 +477,9 @@
LOCAL_HEADER_LIBRARIES += libhardware_headers
LOCAL_HEADER_LIBRARIES += libsystem_headers
+ifneq ($(filter kona,$(TARGET_BOARD_PLATFORM)),)
+LOCAL_SANITIZE := integer_overflow
+endif
include $(BUILD_SHARED_LIBRARY)
#-------------------------------------------
@@ -515,6 +539,9 @@
LOCAL_HEADER_LIBRARIES += libhardware_headers
LOCAL_HEADER_LIBRARIES += libsystem_headers
+ifneq ($(filter kona,$(TARGET_BOARD_PLATFORM)),)
+LOCAL_SANITIZE := integer_overflow
+endif
include $(BUILD_SHARED_LIBRARY)
#-------------------------------------------
@@ -577,6 +604,9 @@
LOCAL_HEADER_LIBRARIES += libhardware_headers
LOCAL_HEADER_LIBRARIES += libsystem_headers
+ifneq ($(filter kona,$(TARGET_BOARD_PLATFORM)),)
+LOCAL_SANITIZE := integer_overflow
+endif
include $(BUILD_SHARED_LIBRARY)
#-------------------------------------------
@@ -647,6 +677,9 @@
LOCAL_HEADER_LIBRARIES += libhardware_headers
LOCAL_HEADER_LIBRARIES += libsystem_headers
+ifneq ($(filter kona,$(TARGET_BOARD_PLATFORM)),)
+LOCAL_SANITIZE := integer_overflow
+endif
include $(BUILD_SHARED_LIBRARY)
#-------------------------------------------
@@ -706,6 +739,9 @@
LOCAL_HEADER_LIBRARIES += libhardware_headers
LOCAL_HEADER_LIBRARIES += libsystem_headers
+ifneq ($(filter kona,$(TARGET_BOARD_PLATFORM)),)
+LOCAL_SANITIZE := integer_overflow
+endif
#include $(BUILD_SHARED_LIBRARY)
#-------------------------------------------
@@ -764,6 +800,9 @@
LOCAL_HEADER_LIBRARIES += libhardware_headers
LOCAL_HEADER_LIBRARIES += libsystem_headers
+ifneq ($(filter kona,$(TARGET_BOARD_PLATFORM)),)
+LOCAL_SANITIZE := integer_overflow
+endif
include $(BUILD_SHARED_LIBRARY)
#-------------------------------------------
# Build AUDIOZOOM
@@ -821,6 +860,9 @@
LOCAL_HEADER_LIBRARIES += libhardware_headers
LOCAL_HEADER_LIBRARIES += libsystem_headers
+ifneq ($(filter kona,$(TARGET_BOARD_PLATFORM)),)
+LOCAL_SANITIZE := integer_overflow
+endif
include $(BUILD_SHARED_LIBRARY)
diff --git a/hal/audio_extn/a2dp.c b/hal/audio_extn/a2dp.c
index 6915603..429a2e3 100755
--- a/hal/audio_extn/a2dp.c
+++ b/hal/audio_extn/a2dp.c
@@ -3136,9 +3136,11 @@
void sco_reset_configuration()
{
- ALOGD("sco_reset_configuration start");
+ if (a2dp.swb_configured) {
+ ALOGD("sco_reset_configuration start");
- reset_codec_config();
- a2dp.bt_encoder_format = CODEC_TYPE_INVALID;
- a2dp.swb_configured = false;
+ reset_codec_config();
+ a2dp.bt_encoder_format = CODEC_TYPE_INVALID;
+ a2dp.swb_configured = false;
+ }
}
diff --git a/hal/audio_extn/audio_extn.h b/hal/audio_extn/audio_extn.h
index b3297ed..5e2e643 100644
--- a/hal/audio_extn/audio_extn.h
+++ b/hal/audio_extn/audio_extn.h
@@ -157,7 +157,7 @@
char *device_name);
typedef int (*fp_platform_get_default_app_type_v2_t)(void *, usecase_type_t);
typedef int (*fp_platform_send_audio_calibration_t)(void *, struct audio_usecase *,
- int, int);
+ int);
typedef int (*fp_platform_get_pcm_device_id_t)(audio_usecase_t, int);
typedef const char *(*fp_platform_get_snd_device_name_t)(snd_device_t);
typedef int (*fp_platform_spkr_prot_is_wsa_analog_mode_t)(void *);
@@ -801,6 +801,8 @@
int audio_extn_utils_get_channels_from_string(const char *);
void audio_extn_utils_release_snd_device(snd_device_t snd_device);
int audio_extn_utils_is_vendor_enhanced_fwk();
+int audio_extn_utils_get_app_sample_rate_for_device(struct audio_device *adev,
+ struct audio_usecase *usecase, int snd_device);
#ifdef DS2_DOLBY_DAP_ENABLED
#define LIB_DS2_DAP_HAL "vendor/lib/libhwdaphal.so"
diff --git a/hal/audio_extn/spkr_protection.c b/hal/audio_extn/spkr_protection.c
index 8c6ff06..b51a7d5 100644
--- a/hal/audio_extn/spkr_protection.c
+++ b/hal/audio_extn/spkr_protection.c
@@ -1030,7 +1030,7 @@
app_type = fp_platform_get_default_app_type_v2(adev->platform,
PCM_CAPTURE);
fp_platform_send_audio_calibration(adev->platform, uc_info_tx,
- app_type, 8000);
+ app_type);
}
if (!v_validation) {
if (!status.status) {
@@ -2281,6 +2281,8 @@
if (!uc_info_tx) {
return -ENOMEM;
}
+ uc_info_tx->id = USECASE_AUDIO_SPKR_CALIB_TX;
+ uc_info_tx->type = PCM_CAPTURE;
if (fp_platform_get_snd_device_name_extn(adev->platform, snd_device, device_name) < 0) {
ALOGE("%s: Invalid sound device returned", __func__);
@@ -2293,8 +2295,6 @@
pthread_mutex_lock(&handle.mutex_spkr_prot);
if (handle.spkr_processing_state == SPKR_PROCESSING_IN_IDLE) {
- uc_info_tx->id = USECASE_AUDIO_SPKR_CALIB_TX;
- uc_info_tx->type = PCM_CAPTURE;
uc_info_tx->in_snd_device = in_snd_device;
uc_info_tx->out_snd_device = SND_DEVICE_NONE;
handle.pcm_tx = NULL;
@@ -2333,15 +2333,13 @@
app_type = fp_platform_get_default_app_type_v2(adev->platform,
PCM_CAPTURE);
fp_platform_send_audio_calibration(adev->platform, uc_info_tx,
- app_type, 8000);
+ app_type);
}
if (ret) {
if (handle.pcm_tx)
pcm_close(handle.pcm_tx);
handle.pcm_tx = NULL;
list_remove(&uc_info_tx->list);
- uc_info_tx->id = USECASE_AUDIO_SPKR_CALIB_TX;
- uc_info_tx->type = PCM_CAPTURE;
uc_info_tx->in_snd_device = in_snd_device;
uc_info_tx->out_snd_device = SND_DEVICE_NONE;
fp_disable_snd_device(adev, in_snd_device);
diff --git a/hal/audio_extn/utils.c b/hal/audio_extn/utils.c
index 09921af..ea0d324 100644
--- a/hal/audio_extn/utils.c
+++ b/hal/audio_extn/utils.c
@@ -1025,6 +1025,87 @@
return rc;
}
+int audio_extn_utils_get_app_sample_rate_for_device(
+ struct audio_device *adev,
+ struct audio_usecase *usecase, int snd_device)
+{
+ char value[PROPERTY_VALUE_MAX] = {0};
+ int sample_rate = DEFAULT_OUTPUT_SAMPLING_RATE;
+
+ if ((usecase->type == PCM_PLAYBACK) && (usecase->stream.out != NULL)) {
+ property_get("vendor.audio.playback.mch.downsample",value,"");
+ if (!strncmp("true", value, sizeof("true"))) {
+ if ((popcount(usecase->stream.out->channel_mask) > 2) &&
+ (usecase->stream.out->app_type_cfg.sample_rate > CODEC_BACKEND_DEFAULT_SAMPLE_RATE) &&
+ !(usecase->stream.out->flags &
+ (audio_output_flags_t)AUDIO_OUTPUT_FLAG_COMPRESS_PASSTHROUGH))
+ sample_rate = CODEC_BACKEND_DEFAULT_SAMPLE_RATE;
+ }
+
+ if (usecase->id == USECASE_AUDIO_PLAYBACK_VOIP) {
+ usecase->stream.out->app_type_cfg.sample_rate = usecase->stream.out->sample_rate;
+ } else if (usecase->stream.out->devices & AUDIO_DEVICE_OUT_SPEAKER) {
+ usecase->stream.out->app_type_cfg.sample_rate = DEFAULT_OUTPUT_SAMPLING_RATE;
+ } else if ((snd_device == SND_DEVICE_OUT_HDMI ||
+ snd_device == SND_DEVICE_OUT_USB_HEADSET ||
+ snd_device == SND_DEVICE_OUT_DISPLAY_PORT) &&
+ (usecase->stream.out->sample_rate >= OUTPUT_SAMPLING_RATE_44100)) {
+ /*
+ * To best utlize DSP, check if the stream sample rate is supported/multiple of
+ * configured device sample rate, if not update the COPP rate to be equal to the
+ * device sample rate, else open COPP at stream sample rate
+ */
+ platform_check_and_update_copp_sample_rate(adev->platform, snd_device,
+ usecase->stream.out->sample_rate,
+ &usecase->stream.out->app_type_cfg.sample_rate);
+ } else if (((snd_device != SND_DEVICE_OUT_HEADPHONES_44_1 &&
+ !audio_is_this_native_usecase(usecase)) &&
+ usecase->stream.out->sample_rate == OUTPUT_SAMPLING_RATE_44100) ||
+ (usecase->stream.out->sample_rate < OUTPUT_SAMPLING_RATE_44100)) {
+ /* Reset to default if no native stream is active*/
+ usecase->stream.out->app_type_cfg.sample_rate = DEFAULT_OUTPUT_SAMPLING_RATE;
+ } else if (usecase->stream.out->devices & AUDIO_DEVICE_OUT_ALL_A2DP) {
+ /*
+ * For a2dp playback get encoder sampling rate and set copp sampling rate,
+ * for bit width use the stream param only.
+ */
+ audio_extn_a2dp_get_enc_sample_rate(&usecase->stream.out->app_type_cfg.sample_rate);
+ ALOGI("%s using %d sample rate rate for A2DP CoPP",
+ __func__, usecase->stream.out->app_type_cfg.sample_rate);
+ }
+ audio_extn_btsco_get_sample_rate(snd_device, &usecase->stream.out->app_type_cfg.sample_rate);
+ sample_rate = usecase->stream.out->app_type_cfg.sample_rate;
+
+ if (((usecase->stream.out->format == AUDIO_FORMAT_E_AC3) ||
+ (usecase->stream.out->format == AUDIO_FORMAT_E_AC3_JOC) ||
+ (usecase->stream.out->format == AUDIO_FORMAT_DOLBY_TRUEHD))
+ && audio_extn_passthru_is_passthrough_stream(usecase->stream.out)
+ && !audio_extn_passthru_is_convert_supported(adev, usecase->stream.out)) {
+ sample_rate = sample_rate * 4;
+ if (sample_rate > HDMI_PASSTHROUGH_MAX_SAMPLE_RATE)
+ sample_rate = HDMI_PASSTHROUGH_MAX_SAMPLE_RATE;
+ }
+ } else if (usecase->type == PCM_CAPTURE) {
+ if (usecase->stream.in != NULL) {
+ if (usecase->id == USECASE_AUDIO_RECORD_VOIP)
+ usecase->stream.in->app_type_cfg.sample_rate = usecase->stream.in->sample_rate;
+ if (voice_is_in_call_rec_stream(usecase->stream.in)) {
+ audio_extn_btsco_get_sample_rate(usecase->in_snd_device,
+ &usecase->stream.in->app_type_cfg.sample_rate);
+ } else {
+ audio_extn_btsco_get_sample_rate(snd_device,
+ &usecase->stream.in->app_type_cfg.sample_rate);
+ }
+ sample_rate = usecase->stream.in->app_type_cfg.sample_rate;
+ } else if (usecase->id == USECASE_AUDIO_SPKR_CALIB_TX) {
+ sample_rate = SAMPLE_RATE_8000;
+ }
+ } else if (usecase->type == TRANSCODE_LOOPBACK_RX) {
+ sample_rate = usecase->stream.inout->out_config.sample_rate;
+ }
+ return sample_rate;
+}
+
static int send_app_type_cfg_for_device(struct audio_device *adev,
struct audio_usecase *usecase,
int split_snd_device)
@@ -1036,7 +1117,6 @@
int pcm_device_id = 0, acdb_dev_id, app_type;
int snd_device = split_snd_device, snd_device_be_idx = -1;
int32_t sample_rate = DEFAULT_OUTPUT_SAMPLING_RATE;
- char value[PROPERTY_VALUE_MAX] = {0};
struct streams_io_cfg *s_info = NULL;
struct listnode *node = NULL;
int bd_app_type = 0;
@@ -1111,58 +1191,9 @@
snd_device_be_idx);
}
+ sample_rate = audio_extn_utils_get_app_sample_rate_for_device(adev, usecase, snd_device);
+
if ((usecase->type == PCM_PLAYBACK) && (usecase->stream.out != NULL)) {
-
- property_get("vendor.audio.playback.mch.downsample",value,"");
- if (!strncmp("true", value, sizeof("true"))) {
- if ((popcount(usecase->stream.out->channel_mask) > 2) &&
- (usecase->stream.out->app_type_cfg.sample_rate > CODEC_BACKEND_DEFAULT_SAMPLE_RATE) &&
- !(usecase->stream.out->flags &
- (audio_output_flags_t)AUDIO_OUTPUT_FLAG_COMPRESS_PASSTHROUGH))
- sample_rate = CODEC_BACKEND_DEFAULT_SAMPLE_RATE;
- }
-
- if (usecase->id == USECASE_AUDIO_PLAYBACK_VOIP) {
- usecase->stream.out->app_type_cfg.sample_rate = usecase->stream.out->sample_rate;
- } else if (usecase->stream.out->devices & AUDIO_DEVICE_OUT_SPEAKER) {
- if (platform_spkr_use_default_sample_rate(adev->platform)) {
- usecase->stream.out->app_type_cfg.sample_rate = DEFAULT_OUTPUT_SAMPLING_RATE;
- } else {
- platform_check_and_update_copp_sample_rate(adev->platform, snd_device,
- usecase->stream.out->sample_rate,
- &usecase->stream.out->app_type_cfg.sample_rate);
- }
-
- } else if ((snd_device == SND_DEVICE_OUT_HDMI ||
- snd_device == SND_DEVICE_OUT_USB_HEADSET ||
- snd_device == SND_DEVICE_OUT_DISPLAY_PORT) &&
- (usecase->stream.out->sample_rate >= OUTPUT_SAMPLING_RATE_44100)) {
- /*
- * To best utlize DSP, check if the stream sample rate is supported/multiple of
- * configured device sample rate, if not update the COPP rate to be equal to the
- * device sample rate, else open COPP at stream sample rate
- */
- platform_check_and_update_copp_sample_rate(adev->platform, snd_device,
- usecase->stream.out->sample_rate,
- &usecase->stream.out->app_type_cfg.sample_rate);
- } else if (((snd_device != SND_DEVICE_OUT_HEADPHONES_44_1 &&
- !audio_is_this_native_usecase(usecase)) &&
- usecase->stream.out->sample_rate == OUTPUT_SAMPLING_RATE_44100) ||
- (usecase->stream.out->sample_rate < OUTPUT_SAMPLING_RATE_44100)) {
- /* Reset to default if no native stream is active*/
- usecase->stream.out->app_type_cfg.sample_rate = DEFAULT_OUTPUT_SAMPLING_RATE;
- } else if (usecase->stream.out->devices & AUDIO_DEVICE_OUT_ALL_A2DP) {
- /*
- * For a2dp playback get encoder sampling rate and set copp sampling rate,
- * for bit width use the stream param only.
- */
- audio_extn_a2dp_get_enc_sample_rate(&usecase->stream.out->app_type_cfg.sample_rate);
- ALOGI("%s using %d sample rate rate for A2DP CoPP",
- __func__, usecase->stream.out->app_type_cfg.sample_rate);
- }
- audio_extn_btsco_get_sample_rate(snd_device, &usecase->stream.out->app_type_cfg.sample_rate);
- sample_rate = usecase->stream.out->app_type_cfg.sample_rate;
-
/* Interactive streams are supported with only direct app type id.
* Get Direct profile app type and use it for interactive streams
*/
@@ -1179,16 +1210,6 @@
app_type = usecase->stream.out->app_type_cfg.app_type;
app_type_cfg[len++] = app_type;
app_type_cfg[len++] = acdb_dev_id;
- if (((usecase->stream.out->format == AUDIO_FORMAT_E_AC3) ||
- (usecase->stream.out->format == AUDIO_FORMAT_E_AC3_JOC) ||
- (usecase->stream.out->format == AUDIO_FORMAT_DOLBY_TRUEHD))
- && audio_extn_passthru_is_passthrough_stream(usecase->stream.out)
- && !audio_extn_passthru_is_convert_supported(adev, usecase->stream.out)) {
-
- sample_rate = sample_rate * 4;
- if (sample_rate > HDMI_PASSTHROUGH_MAX_SAMPLE_RATE)
- sample_rate = HDMI_PASSTHROUGH_MAX_SAMPLE_RATE;
- }
app_type_cfg[len++] = sample_rate;
if (snd_device_be_idx > 0)
@@ -1201,19 +1222,6 @@
app_type = usecase->stream.in->app_type_cfg.app_type;
app_type_cfg[len++] = app_type;
app_type_cfg[len++] = acdb_dev_id;
- if (usecase->id == USECASE_AUDIO_RECORD_VOIP)
- usecase->stream.in->app_type_cfg.sample_rate = usecase->stream.in->sample_rate;
- if (voice_is_in_call_rec_stream(usecase->stream.in)) {
- audio_extn_btsco_get_sample_rate(usecase->in_snd_device, &usecase->stream.in->app_type_cfg.sample_rate);
- } else {
- audio_extn_btsco_get_sample_rate(snd_device, &usecase->stream.in->app_type_cfg.sample_rate);
- }
- if (usecase->stream.in->device & AUDIO_DEVICE_IN_BLUETOOTH_A2DP & ~AUDIO_DEVICE_BIT_IN) {
- audio_extn_a2dp_get_dec_sample_rate(&usecase->stream.in->app_type_cfg.sample_rate);
- ALOGI("%s using %d sample rate rate for A2DP dec CoPP",
- __func__, usecase->stream.in->app_type_cfg.sample_rate);
- }
- sample_rate = usecase->stream.in->app_type_cfg.sample_rate;
app_type_cfg[len++] = sample_rate;
if (snd_device_be_idx > 0)
app_type_cfg[len++] = snd_device_be_idx;
@@ -1222,7 +1230,6 @@
} else {
app_type = platform_get_default_app_type_v2(adev->platform, usecase->type);
if(usecase->type == TRANSCODE_LOOPBACK_RX) {
- sample_rate = usecase->stream.inout->out_config.sample_rate;
app_type = usecase->stream.inout->out_app_type_cfg.app_type;
}
app_type_cfg[len++] = app_type;
@@ -1582,29 +1589,15 @@
int type = usecase->type;
if (type == PCM_PLAYBACK && usecase->stream.out != NULL) {
- struct stream_out *out = usecase->stream.out;
- int snd_device = usecase->out_snd_device;
- snd_device = (snd_device == SND_DEVICE_OUT_SPEAKER) ?
- platform_get_spkr_prot_snd_device(snd_device) : snd_device;
platform_send_audio_calibration(adev->platform, usecase,
- out->app_type_cfg.app_type,
- usecase->stream.out->app_type_cfg.sample_rate);
+ usecase->stream.out->app_type_cfg.app_type);
} else if (type == PCM_CAPTURE && usecase->stream.in != NULL) {
platform_send_audio_calibration(adev->platform, usecase,
- usecase->stream.in->app_type_cfg.app_type,
- usecase->stream.in->app_type_cfg.sample_rate);
- } else if (type == PCM_HFP_CALL || type == PCM_CAPTURE) {
- /* when app type is default. the sample rate is not used to send cal */
+ usecase->stream.in->app_type_cfg.app_type);
+ } else if ((type == PCM_HFP_CALL) || (type == PCM_CAPTURE) ||
+ (type == TRANSCODE_LOOPBACK_RX && usecase->stream.inout != NULL)) {
platform_send_audio_calibration(adev->platform, usecase,
- platform_get_default_app_type_v2(adev->platform, usecase->type),
- 48000);
- } else if (type == TRANSCODE_LOOPBACK_RX && usecase->stream.inout != NULL) {
- int snd_device = usecase->out_snd_device;
- snd_device = (snd_device == SND_DEVICE_OUT_SPEAKER) ?
- platform_get_spkr_prot_snd_device(snd_device) : snd_device;
- platform_send_audio_calibration(adev->platform, usecase,
- platform_get_default_app_type_v2(adev->platform, usecase->type),
- usecase->stream.inout->out_config.sample_rate);
+ platform_get_default_app_type_v2(adev->platform, usecase->type));
} else {
/* No need to send audio calibration for voice and voip call usecases */
if ((type != VOICE_CALL) && (type != VOIP_CALL))
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index a7df7d6..9691ce8 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -1125,7 +1125,8 @@
audio_extn_sound_trigger_update_stream_status(usecase, ST_EVENT_STREAM_FREE);
audio_extn_listen_update_stream_status(usecase, LISTEN_EVENT_STREAM_FREE);
audio_extn_set_custom_mtmx_params(adev, usecase, false);
- if (usecase->stream.out != NULL)
+ if ((usecase->type == PCM_PLAYBACK) &&
+ (usecase->stream.out != NULL))
usecase->stream.out->pspd_coeff_sent = false;
ALOGV("%s: exit", __func__);
return 0;
@@ -1301,14 +1302,7 @@
audio_extn_a2dp_stop_playback();
else if (snd_device == SND_DEVICE_IN_BT_A2DP)
audio_extn_a2dp_stop_capture();
- else if ((snd_device == SND_DEVICE_OUT_BT_SCO_SWB) ||
- (snd_device == SND_DEVICE_IN_BT_SCO_MIC_SWB_NREC) ||
- (snd_device == SND_DEVICE_IN_BT_SCO_MIC_SWB)) {
- if ((adev->snd_dev_ref_cnt[SND_DEVICE_OUT_BT_SCO_SWB] == 0) &&
- (adev->snd_dev_ref_cnt[SND_DEVICE_IN_BT_SCO_MIC_SWB_NREC] == 0) &&
- (adev->snd_dev_ref_cnt[SND_DEVICE_IN_BT_SCO_MIC_SWB] == 0))
- audio_extn_sco_reset_configuration();
- } else if ((snd_device == SND_DEVICE_OUT_HDMI) ||
+ else if ((snd_device == SND_DEVICE_OUT_HDMI) ||
(snd_device == SND_DEVICE_OUT_DISPLAY_PORT))
adev->is_channel_status_set = false;
else if ((snd_device == SND_DEVICE_OUT_HEADPHONES) &&
@@ -7716,6 +7710,8 @@
int ret;
int status = 0;
bool a2dp_reconfig = false;
+ struct listnode *node;
+ struct audio_usecase *usecase = NULL;
ALOGD("%s: enter: %s", __func__, kvpairs);
parms = str_parms_create_str(kvpairs);
@@ -7723,16 +7719,31 @@
if (!parms)
goto error;
+ pthread_mutex_lock(&adev->lock);
ret = str_parms_get_str(parms, "BT_SCO", value, sizeof(value));
if (ret >= 0) {
/* When set to false, HAL should disable EC and NS */
- if (strcmp(value, AUDIO_PARAMETER_VALUE_ON) == 0)
+ if (strcmp(value, AUDIO_PARAMETER_VALUE_ON) == 0){
adev->bt_sco_on = true;
- else
+ } else {
+ ALOGD("sco is off, reset sco and route device to handset/mic");
adev->bt_sco_on = false;
+ audio_extn_sco_reset_configuration();
+ list_for_each(node, &adev->usecase_list) {
+ usecase = node_to_item(node, struct audio_usecase, list);
+ if ((usecase->type == PCM_PLAYBACK) && usecase->stream.out &&
+ (usecase->stream.out->devices & AUDIO_DEVICE_OUT_ALL_SCO))
+ usecase->stream.out->devices = AUDIO_DEVICE_OUT_EARPIECE;
+ else if ((usecase->type == PCM_CAPTURE) && usecase->stream.in &&
+ (usecase->stream.in->device & AUDIO_DEVICE_IN_ALL_SCO))
+ usecase->stream.in->device = AUDIO_DEVICE_IN_BUILTIN_MIC;
+ else
+ continue;
+ select_devices(adev, usecase->id);
+ }
+ }
}
- pthread_mutex_lock(&adev->lock);
status = voice_set_parameters(adev, parms);
if (status != 0)
goto done;
diff --git a/hal/msm8916/platform.c b/hal/msm8916/platform.c
index 80a52c7..bdd10b0 100644
--- a/hal/msm8916/platform.c
+++ b/hal/msm8916/platform.c
@@ -2765,7 +2765,7 @@
ALOGD("%s:DSD playback is supported", __func__);
my_data->is_dsd_supported = true;
my_data->is_asrc_supported = true;
- platform_set_native_support(NATIVE_AUDIO_MODE_MULTIPLE_44_1);
+ platform_set_native_support(NATIVE_AUDIO_MODE_MULTIPLE_MIX_IN_CODEC);
}
}
@@ -3396,12 +3396,14 @@
int platform_set_native_support(int na_mode)
{
if (NATIVE_AUDIO_MODE_SRC == na_mode || NATIVE_AUDIO_MODE_TRUE_44_1 == na_mode
- || NATIVE_AUDIO_MODE_MULTIPLE_44_1 == na_mode) {
+ || NATIVE_AUDIO_MODE_MULTIPLE_MIX_IN_CODEC == na_mode
+ || NATIVE_AUDIO_MODE_MULTIPLE_MIX_IN_DSP == na_mode) {
na_props.platform_na_prop_enabled = na_props.ui_na_prop_enabled = true;
na_props.na_mode = na_mode;
ALOGD("%s:napb: native audio playback enabled in (%s) mode", __func__,
((na_mode == NATIVE_AUDIO_MODE_SRC)?"SRC":
- (na_mode == NATIVE_AUDIO_MODE_TRUE_44_1)?"True":"Multiple"));
+ (na_mode == NATIVE_AUDIO_MODE_TRUE_44_1)?"True":
+ (na_mode == NATIVE_AUDIO_MODE_MULTIPLE_MIX_IN_CODEC)?"Multiple_Mix_Codec":"Multiple_Mix_DSP"));
} else {
na_props.platform_na_prop_enabled = false;
na_props.na_mode = NATIVE_AUDIO_MODE_INVALID;
@@ -3473,8 +3475,10 @@
mode = NATIVE_AUDIO_MODE_SRC;
else if (value && !strncmp(value, "true", sizeof("true")))
mode = NATIVE_AUDIO_MODE_TRUE_44_1;
- else if (value && !strncmp(value, "multiple", sizeof("multiple")))
- mode = NATIVE_AUDIO_MODE_MULTIPLE_44_1;
+ else if (value && !strncmp(value, "multiple_mix_codec", sizeof("multiple")))
+ mode = NATIVE_AUDIO_MODE_MULTIPLE_MIX_IN_CODEC;
+ else if (value && !strncmp(value, "multiple_mix_dsp", sizeof("multiple")))
+ mode = NATIVE_AUDIO_MODE_MULTIPLE_MIX_IN_DSP;
else {
mode = NATIVE_AUDIO_MODE_INVALID;
ALOGE("%s:napb:native_audio_mode in platform info xml,invalid mode string",
@@ -3618,7 +3622,7 @@
}
int platform_send_audio_calibration(void *platform, struct audio_usecase *usecase,
- int app_type, int sample_rate)
+ int app_type)
{
struct platform_data *my_data = (struct platform_data *)platform;
int acdb_dev_id, acdb_dev_type;
@@ -3627,6 +3631,7 @@
int i, num_devices = 1;
bool is_incall_rec_usecase = false;
snd_device_t incall_rec_device;
+ int sample_rate = DEFAULT_OUTPUT_SAMPLING_RATE;
if (voice_is_in_call(my_data->adev))
is_incall_rec_usecase = voice_is_in_call_rec_stream(usecase->stream.in);
@@ -3656,11 +3661,16 @@
}
for (i = 0; i < num_devices; i++) {
- if (!is_incall_rec_usecase)
+ if (!is_incall_rec_usecase) {
acdb_dev_id = acdb_device_table[platform_get_spkr_prot_snd_device(new_snd_device[i])];
- else
+ sample_rate = audio_extn_utils_get_app_sample_rate_for_device(my_data->adev, usecase,
+ new_snd_device[i]);
+ } else {
// Use in_call_rec snd_device to extract the ACDB device ID instead of split snd devices
acdb_dev_id = acdb_device_table[platform_get_spkr_prot_snd_device(snd_device)];
+ sample_rate = audio_extn_utils_get_app_sample_rate_for_device(my_data->adev, usecase,
+ snd_device);
+ }
// Do not use Rx path default app type for TX path
if ((usecase->type == PCM_CAPTURE) && (app_type == DEFAULT_APP_TYPE_RX_PATH)) {
@@ -4373,7 +4383,7 @@
} else if (NATIVE_AUDIO_MODE_SRC == na_mode &&
OUTPUT_SAMPLING_RATE_44100 == sample_rate) {
snd_device = SND_DEVICE_OUT_HEADPHONES_44_1;
- } else if (NATIVE_AUDIO_MODE_MULTIPLE_44_1 == na_mode &&
+ } else if (NATIVE_AUDIO_MODE_MULTIPLE_MIX_IN_CODEC == na_mode &&
(sample_rate % OUTPUT_SAMPLING_RATE_44100 == 0) &&
(out->format != AUDIO_FORMAT_DSD)) {
snd_device = SND_DEVICE_OUT_HEADPHONES_44_1;
@@ -6442,7 +6452,7 @@
ALOGD("%s:becf: afe: true napb active set rate to 44.1 khz",
__func__);
}
- } else if (na_mode != NATIVE_AUDIO_MODE_MULTIPLE_44_1) {
+ } else if (na_mode != NATIVE_AUDIO_MODE_MULTIPLE_MIX_IN_CODEC) {
/*
* Map native sampling rates to upper limit range
* if multiple of native sampling rates are not supported.
diff --git a/hal/msm8960/platform.c b/hal/msm8960/platform.c
index e16d20a..0a81969 100644
--- a/hal/msm8960/platform.c
+++ b/hal/msm8960/platform.c
@@ -522,7 +522,7 @@
}
int platform_send_audio_calibration(void *platform, struct audio_usecase *usecase,
- int app_type __unused, int sample_rate __unused)
+ int app_type __unused)
{
struct platform_data *my_data = (struct platform_data *)platform;
int acdb_dev_id, acdb_dev_type;
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index 7fd2019..9ee58cb 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -3390,6 +3390,17 @@
strdup("RX_CDC_DMA_RX_0 Format");
my_data->current_backend_cfg[HEADPHONE_BACKEND].samplerate_mixer_ctl =
strdup("RX_CDC_DMA_RX_0 SampleRate");
+ /*
+ * TODO: enable CONCURRENT_CAPTURE_ENABLED flag only if separate backend
+ * is defined for headset-mic. This is to capture separate data from
+ * headset-mic and handset-mic.
+ */
+ if(audio_extn_is_concurrent_capture_enabled()) {
+ my_data->current_backend_cfg[HEADSET_TX_BACKEND].bitwidth_mixer_ctl =
+ strdup("TX_CDC_DMA_TX_4 Format");
+ my_data->current_backend_cfg[HEADSET_TX_BACKEND].samplerate_mixer_ctl =
+ strdup("TX_CDC_DMA_TX_4 SampleRate");
+ }
if (default_rx_backend)
free(default_rx_backend);
@@ -3596,7 +3607,7 @@
ALOGD("%s:DSD playback is supported", __func__);
my_data->is_dsd_supported = true;
my_data->is_asrc_supported = true;
- platform_set_native_support(NATIVE_AUDIO_MODE_MULTIPLE_44_1);
+ platform_set_native_support(NATIVE_AUDIO_MODE_MULTIPLE_MIX_IN_CODEC);
}
}
@@ -4504,12 +4515,14 @@
int platform_set_native_support(int na_mode)
{
if (NATIVE_AUDIO_MODE_SRC == na_mode || NATIVE_AUDIO_MODE_TRUE_44_1 == na_mode
- || NATIVE_AUDIO_MODE_MULTIPLE_44_1 == na_mode) {
+ || NATIVE_AUDIO_MODE_MULTIPLE_MIX_IN_CODEC == na_mode
+ || NATIVE_AUDIO_MODE_MULTIPLE_MIX_IN_DSP == na_mode) {
na_props.platform_na_prop_enabled = na_props.ui_na_prop_enabled = true;
na_props.na_mode = na_mode;
ALOGD("%s:napb: native audio playback enabled in (%s) mode", __func__,
((na_mode == NATIVE_AUDIO_MODE_SRC)?"SRC":
- (na_mode == NATIVE_AUDIO_MODE_TRUE_44_1)?"True":"Multiple"));
+ (na_mode == NATIVE_AUDIO_MODE_TRUE_44_1)?"True":
+ (na_mode == NATIVE_AUDIO_MODE_MULTIPLE_MIX_IN_CODEC)?"Multiple_Mix_Codec":"Multiple_Mix_DSP"));
}
else {
na_props.platform_na_prop_enabled = false;
@@ -4584,8 +4597,10 @@
mode = NATIVE_AUDIO_MODE_SRC;
else if (value && !strncmp(value, "true", sizeof("true")))
mode = NATIVE_AUDIO_MODE_TRUE_44_1;
- else if (value && !strncmp(value, "multiple", sizeof("multiple")))
- mode = NATIVE_AUDIO_MODE_MULTIPLE_44_1;
+ else if (value && !strncmp(value, "multiple_mix_codec", sizeof("multiple_mix_codec")))
+ mode = NATIVE_AUDIO_MODE_MULTIPLE_MIX_IN_CODEC;
+ else if (value && !strncmp(value, "multiple_mix_dsp", sizeof("multiple_mix_dsp")))
+ mode = NATIVE_AUDIO_MODE_MULTIPLE_MIX_IN_DSP;
else {
mode = NATIVE_AUDIO_MODE_INVALID;
ALOGE("%s:napb:native_audio_mode in platform info xml,invalid mode string",
@@ -4715,7 +4730,7 @@
}
int platform_send_audio_calibration(void *platform, struct audio_usecase *usecase,
- int app_type, int sample_rate)
+ int app_type)
{
struct platform_data *my_data = (struct platform_data *)platform;
int acdb_dev_id, acdb_dev_type;
@@ -4724,6 +4739,7 @@
int i, num_devices = 1;
bool is_incall_rec_usecase = false;
snd_device_t incall_rec_device;
+ int sample_rate = DEFAULT_OUTPUT_SAMPLING_RATE;
if (voice_is_in_call(my_data->adev))
is_incall_rec_usecase = voice_is_in_call_rec_stream(usecase->stream.in);
@@ -4758,11 +4774,16 @@
}
for (i = 0; i < num_devices; i++) {
- if (!is_incall_rec_usecase)
+ if (!is_incall_rec_usecase) {
acdb_dev_id = acdb_device_table[platform_get_spkr_prot_snd_device(new_snd_device[i])];
- else
+ sample_rate = audio_extn_utils_get_app_sample_rate_for_device(my_data->adev, usecase,
+ new_snd_device[i]);
+ } else {
// Use in_call_rec snd_device to extract the ACDB device ID instead of split snd devices
acdb_dev_id = acdb_device_table[platform_get_spkr_prot_snd_device(snd_device)];
+ sample_rate = audio_extn_utils_get_app_sample_rate_for_device(my_data->adev, usecase,
+ snd_device);
+ }
// Do not use Rx path default app type for TX path
if ((usecase->type == PCM_CAPTURE) && (app_type == DEFAULT_APP_TYPE_RX_PATH)) {
@@ -5712,7 +5733,7 @@
} else if (NATIVE_AUDIO_MODE_SRC == na_mode &&
OUTPUT_SAMPLING_RATE_44100 == sample_rate) {
snd_device = SND_DEVICE_OUT_HEADPHONES_44_1;
- } else if (NATIVE_AUDIO_MODE_MULTIPLE_44_1 == na_mode &&
+ } else if (NATIVE_AUDIO_MODE_MULTIPLE_MIX_IN_CODEC == na_mode &&
(sample_rate % OUTPUT_SAMPLING_RATE_44100 == 0) &&
(out->format != AUDIO_FORMAT_DSD)) {
snd_device = SND_DEVICE_OUT_HEADPHONES_44_1;
@@ -8322,7 +8343,26 @@
ALOGD("%s:becf: afe: true napb active set rate to 44.1 khz",
__func__);
}
- } else if (na_mode != NATIVE_AUDIO_MODE_MULTIPLE_44_1) {
+ } else if (na_mode == NATIVE_AUDIO_MODE_MULTIPLE_MIX_IN_DSP) {
+ struct listnode *node;
+ list_for_each(node, &adev->usecase_list) {
+ struct audio_usecase *uc;
+ uc = node_to_item(node, struct audio_usecase, list);
+ struct stream_out *curr_out =
+ (struct stream_out*) uc->stream.out;
+
+ /*if native audio playback
+ * is active then it will take priority
+ */
+ if (curr_out && PCM_PLAYBACK == uc->type) {
+ if (is_offload_usecase(uc->id) &&
+ (curr_out->sample_rate % OUTPUT_SAMPLING_RATE_44100 == 0)) {
+ ALOGD("%s:napb:native stream detected %d sampling rate", __func__, curr_out->sample_rate);
+ sample_rate = curr_out->sample_rate;
+ }
+ }
+ }
+ } else if (na_mode != NATIVE_AUDIO_MODE_MULTIPLE_MIX_IN_CODEC) {
/*
* Map native sampling rates to upper limit range
* if multiple of native sampling rates are not supported.
diff --git a/hal/msm8974/platform.h b/hal/msm8974/platform.h
index fba1077..5160959 100644
--- a/hal/msm8974/platform.h
+++ b/hal/msm8974/platform.h
@@ -629,9 +629,9 @@
#define FM_RX_VOLUME "Quat MI2S FM RX Volume"
#elif PLATFORM_MSM8994
#define FM_RX_VOLUME "PRI MI2S LOOPBACK Volume"
-#elif defined (PLATFORM_MSM8996) || defined (PLATFORM_KONA) || defined (PLATFORM_LITO)
+#elif defined (PLATFORM_MSM8996) || defined (PLATFORM_KONA)
#define FM_RX_VOLUME "Tert MI2S LOOPBACK Volume"
-#elif defined (PLATFORM_MSM8998) || defined (PLATFORM_SDM845) || defined (PLATFORM_MSMFALCON) || defined (PLATFORM_SDM710) || defined (PLATFORM_QCS605) || defined (PLATFORM_MSMNILE) || defined (PLATFORM_MSMSTEPPE) || defined (PLATFORM_QCS405) || defined (PLATFORM_TRINKET)
+#elif defined (PLATFORM_MSM8998) || defined (PLATFORM_SDM845) || defined (PLATFORM_MSMFALCON) || defined (PLATFORM_SDM710) || defined (PLATFORM_QCS605) || defined (PLATFORM_MSMNILE) || defined (PLATFORM_MSMSTEPPE) || defined (PLATFORM_QCS405) || defined (PLATFORM_TRINKET) || defined (PLATFORM_LITO)
#define FM_RX_VOLUME "SLIMBUS_8 LOOPBACK Volume"
#else
#define FM_RX_VOLUME "Internal FM RX Volume"
diff --git a/hal/platform_api.h b/hal/platform_api.h
index f43aa88..fd85aab 100644
--- a/hal/platform_api.h
+++ b/hal/platform_api.h
@@ -63,7 +63,8 @@
enum {
NATIVE_AUDIO_MODE_SRC = 1,
NATIVE_AUDIO_MODE_TRUE_44_1,
- NATIVE_AUDIO_MODE_MULTIPLE_44_1,
+ NATIVE_AUDIO_MODE_MULTIPLE_MIX_IN_CODEC,
+ NATIVE_AUDIO_MODE_MULTIPLE_MIX_IN_DSP,
NATIVE_AUDIO_MODE_INVALID
};
@@ -154,7 +155,7 @@
int platform_set_native_support(int na_mode);
int platform_get_native_support();
int platform_send_audio_calibration(void *platform, struct audio_usecase *usecase,
- int app_type, int sample_rate);
+ int app_type);
int platform_get_default_app_type(void *platform);
int platform_get_default_app_type_v2(void *platform, usecase_type_t type);
int platform_switch_voice_call_device_pre(void *platform);
diff --git a/hdmi_in_test/Android.mk b/hdmi_in_test/Android.mk
index d016cb3..47b046a 100644
--- a/hdmi_in_test/Android.mk
+++ b/hdmi_in_test/Android.mk
@@ -18,4 +18,7 @@
LOCAL_STATIC_LIBRARIES += libprofile_rt
endif
+ifneq ($(filter kona,$(TARGET_BOARD_PLATFORM)),)
+LOCAL_SANITIZE := integer_overflow
+endif
include $(BUILD_EXECUTABLE)
diff --git a/mm-audio/aenc-aac/qdsp6/Android.mk b/mm-audio/aenc-aac/qdsp6/Android.mk
index 5aa1f40..a15197a 100644
--- a/mm-audio/aenc-aac/qdsp6/Android.mk
+++ b/mm-audio/aenc-aac/qdsp6/Android.mk
@@ -54,6 +54,9 @@
LOCAL_C_INCLUDES += $(TARGET_OUT_INTERMEDIATES)/vendor/qcom/opensource/audio-kernel/include
endif
+ifneq ($(filter kona,$(TARGET_BOARD_PLATFORM)),)
+LOCAL_SANITIZE := integer_overflow
+endif
include $(BUILD_SHARED_LIBRARY)
# ---------------------------------------------------------------------------------
@@ -77,6 +80,9 @@
LOCAL_VENDOR_MODULE := true
LOCAL_SRC_FILES := test/omx_aac_enc_test.c
+ifneq ($(filter kona,$(TARGET_BOARD_PLATFORM)),)
+LOCAL_SANITIZE := integer_overflow
+endif
include $(BUILD_EXECUTABLE)
endif
diff --git a/mm-audio/aenc-amrnb/qdsp6/Android.mk b/mm-audio/aenc-amrnb/qdsp6/Android.mk
index 7e0007f..75b4214 100644
--- a/mm-audio/aenc-amrnb/qdsp6/Android.mk
+++ b/mm-audio/aenc-amrnb/qdsp6/Android.mk
@@ -56,6 +56,9 @@
LOCAL_C_INCLUDES += $(TARGET_OUT_INTERMEDIATES)/vendor/qcom/opensource/audio-kernel/include
endif
+ifneq ($(filter kona,$(TARGET_BOARD_PLATFORM)),)
+LOCAL_SANITIZE := integer_overflow
+endif
include $(BUILD_SHARED_LIBRARY)
# ---------------------------------------------------------------------------------
@@ -79,6 +82,9 @@
LOCAL_VENDOR_MODULE := true
LOCAL_SRC_FILES := test/omx_amr_enc_test.c
+ifneq ($(filter kona,$(TARGET_BOARD_PLATFORM)),)
+LOCAL_SANITIZE := integer_overflow
+endif
include $(BUILD_EXECUTABLE)
endif
diff --git a/mm-audio/aenc-evrc/qdsp6/Android.mk b/mm-audio/aenc-evrc/qdsp6/Android.mk
index 346ef81..00f4927 100644
--- a/mm-audio/aenc-evrc/qdsp6/Android.mk
+++ b/mm-audio/aenc-evrc/qdsp6/Android.mk
@@ -56,6 +56,9 @@
LOCAL_C_INCLUDES += $(TARGET_OUT_INTERMEDIATES)/vendor/qcom/opensource/audio-kernel/include
endif
+ifneq ($(filter kona,$(TARGET_BOARD_PLATFORM)),)
+LOCAL_SANITIZE := integer_overflow
+endif
include $(BUILD_SHARED_LIBRARY)
# ---------------------------------------------------------------------------------
@@ -78,6 +81,9 @@
LOCAL_VENDOR_MODULE := true
LOCAL_SRC_FILES := test/omx_evrc_enc_test.c
+ifneq ($(filter kona,$(TARGET_BOARD_PLATFORM)),)
+LOCAL_SANITIZE := integer_overflow
+endif
include $(BUILD_EXECUTABLE)
endif
diff --git a/mm-audio/aenc-g711/qdsp6/Android.mk b/mm-audio/aenc-g711/qdsp6/Android.mk
index 8e4d9e7..21c3d2b 100644
--- a/mm-audio/aenc-g711/qdsp6/Android.mk
+++ b/mm-audio/aenc-g711/qdsp6/Android.mk
@@ -58,6 +58,9 @@
endif
+ifneq ($(filter kona,$(TARGET_BOARD_PLATFORM)),)
+LOCAL_SANITIZE := integer_overflow
+endif
include $(BUILD_SHARED_LIBRARY)
@@ -82,6 +85,9 @@
LOCAL_VENDOR_MODULE := true
LOCAL_SRC_FILES := test/omx_g711_enc_test.c
+ifneq ($(filter kona,$(TARGET_BOARD_PLATFORM)),)
+LOCAL_SANITIZE := integer_overflow
+endif
include $(BUILD_EXECUTABLE)
endif
diff --git a/mm-audio/aenc-qcelp13/qdsp6/Android.mk b/mm-audio/aenc-qcelp13/qdsp6/Android.mk
index 739ee82..1c844da 100644
--- a/mm-audio/aenc-qcelp13/qdsp6/Android.mk
+++ b/mm-audio/aenc-qcelp13/qdsp6/Android.mk
@@ -57,6 +57,9 @@
endif
+ifneq ($(filter kona,$(TARGET_BOARD_PLATFORM)),)
+LOCAL_SANITIZE := integer_overflow
+endif
include $(BUILD_SHARED_LIBRARY)
@@ -81,6 +84,9 @@
LOCAL_VENDOR_MODULE := true
LOCAL_SRC_FILES := test/omx_qcelp13_enc_test.c
+ifneq ($(filter kona,$(TARGET_BOARD_PLATFORM)),)
+LOCAL_SANITIZE := integer_overflow
+endif
include $(BUILD_EXECUTABLE)
endif
diff --git a/post_proc/Android.mk b/post_proc/Android.mk
index 6b1afd3..27c3037 100644
--- a/post_proc/Android.mk
+++ b/post_proc/Android.mk
@@ -95,6 +95,9 @@
LOCAL_ADDITIONAL_DEPENDENCIES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr
endif
+ifneq ($(filter kona,$(TARGET_BOARD_PLATFORM)),)
+LOCAL_SANITIZE := integer_overflow
+endif
include $(BUILD_SHARED_LIBRARY)
@@ -136,6 +139,9 @@
LOCAL_MODULE:= libhwacceffectswrapper
LOCAL_VENDOR_MODULE := true
+ifneq ($(filter kona,$(TARGET_BOARD_PLATFORM)),)
+LOCAL_SANITIZE := unsigned-integer-overflow signed-integer-overflow
+endif
include $(BUILD_STATIC_LIBRARY)
endif
@@ -205,6 +211,9 @@
LOCAL_ADDITIONAL_DEPENDENCIES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr
endif
+ifneq ($(filter kona,$(TARGET_BOARD_PLATFORM)),)
+LOCAL_SANITIZE := integer_overflow
+endif
include $(BUILD_SHARED_LIBRARY)
endif
@@ -238,6 +247,9 @@
LOCAL_HEADER_LIBRARIES += libhardware_headers
LOCAL_HEADER_LIBRARIES += libsystem_headers
+ifneq ($(filter kona,$(TARGET_BOARD_PLATFORM)),)
+LOCAL_SANITIZE := integer_overflow
+endif
include $(BUILD_SHARED_LIBRARY)
endif
diff --git a/qahw/Android.mk b/qahw/Android.mk
index a64b913..bd4ae53 100644
--- a/qahw/Android.mk
+++ b/qahw/Android.mk
@@ -30,6 +30,9 @@
LOCAL_PRELINK_MODULE := false
LOCAL_VENDOR_MODULE := true
+ifneq ($(filter kona,$(TARGET_BOARD_PLATFORM)),)
+LOCAL_SANITIZE := integer_overflow
+endif
include $(BUILD_SHARED_LIBRARY)
include $(CLEAR_VARS)
diff --git a/qahw_api/Android.mk b/qahw_api/Android.mk
index 1cad75d..253274a 100644
--- a/qahw_api/Android.mk
+++ b/qahw_api/Android.mk
@@ -42,6 +42,9 @@
LOCAL_PRELINK_MODULE := false
LOCAL_VENDOR_MODULE := true
+ifneq ($(filter kona,$(TARGET_BOARD_PLATFORM)),)
+LOCAL_SANITIZE := integer_overflow
+endif
include $(BUILD_SHARED_LIBRARY)
#test app compilation
diff --git a/qahw_api/test/Android.mk b/qahw_api/test/Android.mk
index cca72f8..8f8253d 100644
--- a/qahw_api/test/Android.mk
+++ b/qahw_api/test/Android.mk
@@ -31,6 +31,9 @@
LOCAL_C_INCLUDES += $(hal-play-inc)
LOCAL_VENDOR_MODULE := true
+ifneq ($(filter kona,$(TARGET_BOARD_PLATFORM)),)
+LOCAL_SANITIZE := integer_overflow
+endif
include $(BUILD_EXECUTABLE)
# audio_hal_multi_record_test
@@ -51,4 +54,7 @@
LOCAL_C_INCLUDES += $(hal-rec-inc)
LOCAL_VENDOR_MODULE := true
+ifneq ($(filter kona,$(TARGET_BOARD_PLATFORM)),)
+LOCAL_SANITIZE := integer_overflow
+endif
include $(BUILD_EXECUTABLE)
diff --git a/visualizer/Android.mk b/visualizer/Android.mk
index dca016f..77eb085 100644
--- a/visualizer/Android.mk
+++ b/visualizer/Android.mk
@@ -64,5 +64,8 @@
LOCAL_CFLAGS += -Wno-unused-function
LOCAL_CFLAGS += -Wno-unused-local-typedef
+ifneq ($(filter kona,$(TARGET_BOARD_PLATFORM)),)
+LOCAL_SANITIZE := integer_overflow
+endif
include $(BUILD_SHARED_LIBRARY)
endif
diff --git a/voice_processing/Android.mk b/voice_processing/Android.mk
index 56a3abd..e448b6f 100644
--- a/voice_processing/Android.mk
+++ b/voice_processing/Android.mk
@@ -50,5 +50,8 @@
LOCAL_CFLAGS += -Wno-unused-function
LOCAL_CFLAGS += -Wno-unused-local-typedef
+ifneq ($(filter kona,$(TARGET_BOARD_PLATFORM)),)
+LOCAL_SANITIZE := integer_overflow
+endif
include $(BUILD_SHARED_LIBRARY)
endif