Merge "hal: Fix pulseaudio build error"
diff --git a/configs/audio_vendor_product.mk b/configs/audio_vendor_product.mk
new file mode 100644
index 0000000..569ed66
--- /dev/null
+++ b/configs/audio_vendor_product.mk
@@ -0,0 +1,173 @@
+#MM_AUDIO product packages
+MM_AUDIO += audiod
+MM_AUDIO += libacdbloader
+MM_AUDIO += libalsautils
+MM_AUDIO += libaudcal
+MM_AUDIO += libaudioalsa
+MM_AUDIO += libaudioparsers
+MM_AUDIO += libaudioconfigstore
+MM_AUDIO += libcsd-client
+MM_AUDIO += lib_iec_60958_61937
+MM_AUDIO += libmm-audio-resampler
+MM_AUDIO += libstagefright_soft_qtiflacdec
+MM_AUDIO += QCAudioManager
+MM_AUDIO += liblistensoundmodel
+MM_AUDIO += liblistensoundmodel2
+MM_AUDIO += liblsmclient
+MM_AUDIO += libcapiv2svacnn
+MM_AUDIO += libcapiv2vop
+MM_AUDIO += libcapiv2svarnn
+MM_AUDIO += liblisten
+MM_AUDIO += liblistenhardware
+MM_AUDIO += STApp
+MM_AUDIO += libqtigef
+MM_AUDIO += libqcbassboost
+MM_AUDIO += libqcvirt
+MM_AUDIO += libqcreverb
+MM_AUDIO += libasphere
+MM_AUDIO += audio_effects.conf
+MM_AUDIO += ftm_test_config
+MM_AUDIO += libFlacSwDec
+MM_AUDIO += libAlacSwDec
+MM_AUDIO += libApeSwDec
+MM_AUDIO += libMpeghSwEnc
+MM_AUDIO += libdsd2pcm
+MM_AUDIO += audioflacapp
+MM_AUDIO += libqct_resampler
+MM_AUDIO += libaudiodevarb
+MM_AUDIO += audiod
+MM_AUDIO += libsmwrapper
+MM_AUDIO += libadpcmdec
+MM_AUDIO += libmulawdec
+MM_AUDIO += sound_trigger.primary.$(TARGET_BOARD_PLATFORM)
+MM_AUDIO += sound_trigger_test
+MM_AUDIO += libhwdaphal
+MM_AUDIO += libqcomvisualizer
+MM_AUDIO += libqcomvoiceprocessing
+MM_AUDIO += libqcompostprocbundle
+MM_AUDIO += libqvop-service
+MM_AUDIO += libqvop-algo-jni.qti
+MM_AUDIO += qvop-daemon
+MM_AUDIO += VoicePrintSDK
+MM_AUDIO += libadm
+MM_AUDIO += libsurround_3mic_proc
+MM_AUDIO += surround_sound_rec_AZ.cfg
+MM_AUDIO += surround_sound_rec_5.1.cfg
+MM_AUDIO += libdrc
+MM_AUDIO += drc_cfg_AZ.txt
+MM_AUDIO += drc_cfg_5.1.txt
+MM_AUDIO += libgcs-osal
+MM_AUDIO += libgcs-calwrapper
+MM_AUDIO += libgcs-ipc
+MM_AUDIO += libgcs
+MM_AUDIO += noisesample.bin
+MM_AUDIO += antispoofing.bin
+MM_AUDIO += libshoebox
+MM_AUDIO += libdolby_ms12_wrapper
+MM_AUDIO += silence.ac3
+MM_AUDIO += libaudio_ip_handler
+MM_AUDIO += libsndmonitor
+MM_AUDIO += libcomprcapture
+MM_AUDIO += libssrec
+MM_AUDIO += libhdmiedid
+MM_AUDIO += libspkrprot
+MM_AUDIO += libcirrusspkrprot
+MM_AUDIO += liba2dpoffload
+MM_AUDIO += libexthwplugin
+MM_AUDIO += libhfp
+MM_AUDIO += libhdmipassthru
+MM_AUDIO += libbatterylistener
+MM_AUDIO += libhwdepcal
+MM_AUDIO += libmediaplayerservice
+MM_AUDIO += libaudiohal_deathhandler
+MM_AUDIO += libstagefright_httplive
+MM_AUDIO += libautohal
+ifeq ($(TARGET_BOARD_AUTO),true)
+MM_AUDIO += adsp_avs_config.acdb
+MM_AUDIO += Bluetooth_cal.acdb
+MM_AUDIO += Codec_cal.acdb
+MM_AUDIO += General_cal.acdb
+MM_AUDIO += Global_cal.acdb
+MM_AUDIO += Handset_cal.acdb
+MM_AUDIO += Hdmi_cal.acdb
+MM_AUDIO += Headset_cal.acdb
+MM_AUDIO += Speaker_cal.acdb
+
+MM_AUDIO += libaudiohalplugin
+MM_AUDIO += libcdcdriver
+MM_AUDIO += libvad
+MM_AUDIO += capi_v2_bmt
+MM_AUDIO += capi_v2_fnb
+MM_AUDIO += capi_v2_loud
+MM_AUDIO += capi_v2_peq
+MM_AUDIO += capi_v2_sumx
+MM_AUDIO += capi_v2_synth
+MM_AUDIO += capi_v2_avc
+MM_AUDIO += capi_v2_asrc
+MM_AUDIO += icc_module.so.1
+MM_AUDIO += sec_module.so.1
+MM_AUDIO += audio-nxp-auto
+MM_AUDIO += libaudio-nxp-auto
+MM_AUDIO += mercuryflasher
+MM_AUDIO += liba2bplugin-master
+MM_AUDIO += liba2bplugin-slave
+MM_AUDIO += liba2bstack
+MM_AUDIO += liba2bstack-pal
+MM_AUDIO += liba2bstack-protobuf
+MM_AUDIO += a2b-app
+MM_AUDIO += liba2bdriver
+MM_AUDIO += libacdbloaderclient
+MM_AUDIO += acdb_loader_service
+MM_AUDIO += libaudiohalpluginclient
+MM_AUDIO += audio_hal_plugin_service
+MM_AUDIO += audio_chime
+MM_AUDIO += libqtiautobundle
+MM_AUDIO += autoeffects
+MM_AUDIO += autoeffects.xml
+MM_AUDIO += audcalparam_commands.cfg
+MM_AUDIO += libsynth
+
+MM_AUDIO += android.hardware.automotive.audiocontrol-service.example
+MM_AUDIO += libaudiopowerpolicy
+endif
+
+ifeq ($(ENABLE_HYP), true)
+MM_AUDIO += amfsservice
+endif
+
+#MM_AUDIO_DBG
+MM_AUDIO_DBG += libstagefright_soft_ddpdec
+MM_AUDIO_DBG += libsurround_proc
+MM_AUDIO_DBG += surround_sound_headers
+MM_AUDIO_DBG += filter1i.pcm
+MM_AUDIO_DBG += filter1r.pcm
+MM_AUDIO_DBG += filter2i.pcm
+MM_AUDIO_DBG += filter2r.pcm
+MM_AUDIO_DBG += filter3i.pcm
+MM_AUDIO_DBG += filter3r.pcm
+MM_AUDIO_DBG += filter4i.pcm
+MM_AUDIO_DBG += filter4r.pcm
+MM_AUDIO_DBG += mm-audio-ftm
+MM_AUDIO_DBG += mm-audio-alsa-test
+MM_AUDIO_DBG += avs_test_ker.ko
+MM_AUDIO_DBG += libsrsprocessing_libs
+MM_AUDIO_DBG += libsrsprocessing
+MM_AUDIO_DBG += libacdbrtac
+MM_AUDIO_DBG += libadiertac
+
+PRODUCT_PACKAGES += $(MM_AUDIO)
+
+PRODUCT_PACKAGES_DEBUG += $(MM_AUDIO_DBG)
+
+#-------
+# audio specific
+# ------
+TARGET_USES_AOSP := true
+TARGET_USES_AOSP_FOR_AUDIO := true
+
+#Audio sample file for early services
+PRODUCT_COPY_FILES += device/qcom/$(TARGET_BOARD_PLATFORM)$(TARGET_BOARD_SUFFIX)/bike_bell.wav:$(TARGET_COPY_OUT_VENDOR)/etc/bike_bell.wav
+
+# Audio configuration file
+-include $(TOPDIR)vendor/qcom/opensource/audio-hal/primary-hal/configs/$(TARGET_BOARD_PLATFORM)$(TARGET_BOARD_SUFFIX)/$(TARGET_BOARD_PLATFORM)$(TARGET_BOARD_SUFFIX).mk
+
diff --git a/configs/msm8998/audio_policy_configuration.xml b/configs/msm8998/audio_policy_configuration.xml
index 10190ac..d53f1f5 100644
--- a/configs/msm8998/audio_policy_configuration.xml
+++ b/configs/msm8998/audio_policy_configuration.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<!-- Copyright (c) 2016-2020, The Linux Foundation. All rights reserved
+<!-- Copyright (c) 2016-2021, The Linux Foundation. All rights reserved
      Not a Contribution.
 -->
 <!-- Copyright (C) 2015 The Android Open Source Project
@@ -352,7 +352,7 @@
                 <route type="mix" sink="primary input"
                        sources="Wired Headset Mic,BT SCO Headset Mic,FM Tuner,USB Device In,USB Headset In,Telephony Rx"/>
                 <route type="mix" sink="voip_tx"
-                       sources="Built-In Mic,Built-In Back Mic,BT SCO Headset Mic,USB Device In,USB Headset In"/>
+                       sources="Built-In Mic,Built-In Back Mic,BT SCO Headset Mic,USB Device In,USB Headset In,Wired Headset Mic"/>
                 <route type="mix" sink="surround_sound"
                        sources="Built-In Mic,Built-In Back Mic"/>
                 <route type="mix" sink="record_24"
diff --git a/configs/msmnile_au/msmnile_au.mk b/configs/msmnile_au/msmnile_au.mk
index 41205cc..2ff75fb 100644
--- a/configs/msmnile_au/msmnile_au.mk
+++ b/configs/msmnile_au/msmnile_au.mk
@@ -91,6 +91,23 @@
 AUDIO_FEATURE_ENABLED_BATTERY_LISTENER := false
 ##AUDIO_FEATURE_FLAGS
 
+AUDIO_HARDWARE += audio.a2dp.default
+AUDIO_HARDWARE += audio.usb.default
+AUDIO_HARDWARE += audio.r_submix.default
+AUDIO_HARDWARE += audio.primary.msmnile
+
+#HAL Wrapper
+AUDIO_WRAPPER := libqahw
+AUDIO_WRAPPER += libqahwwrapper
+
+#HAL Test app
+AUDIO_HAL_TEST_APPS := hal_play_test
+AUDIO_HAL_TEST_APPS += hal_rec_test
+
+PRODUCT_PACKAGES += $(AUDIO_HARDWARE)
+PRODUCT_PACKAGES += $(AUDIO_WRAPPER)
+PRODUCT_PACKAGES += $(AUDIO_HAL_TEST_APPS)
+
 AUDIO_FEATURE_ENABLED_AUTO_HAL := true
 AUDIO_FEATURE_ENABLED_EXT_HW_PLUGIN := true
 AUDIO_FEATURE_ENABLED_AUDIO_CONTROL_HAL := true
diff --git a/configs/msmsteppe/audio_policy_configuration.xml b/configs/msmsteppe/audio_policy_configuration.xml
index 4629b81..de9baf8 100644
--- a/configs/msmsteppe/audio_policy_configuration.xml
+++ b/configs/msmsteppe/audio_policy_configuration.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<!-- Copyright (c) 2016-2020, The Linux Foundation. All rights reserved
+<!-- Copyright (c) 2016-2021, The Linux Foundation. All rights reserved
      Not a Contribution.
 -->
 <!-- Copyright (C) 2015 The Android Open Source Project
@@ -356,7 +356,7 @@
                 <route type="mix" sink="primary input"
                        sources="Built-In Mic,Built-In Back Mic,Wired Headset Mic,BT SCO Headset Mic,FM Tuner,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"/>
+                       sources="Built-In Mic,Built-In Back Mic,BT SCO Headset Mic,USB Device In,USB Headset In,Wired Headset Mic"/>
                 <route type="mix" sink="usb_surround_sound"
                        sources="USB Device In,USB Headset In"/>
                 <route type="mix" sink="record_24"
diff --git a/configs/msmsteppe_au/msmsteppe_au.mk b/configs/msmsteppe_au/msmsteppe_au.mk
index 07455b8..31e7091 100644
--- a/configs/msmsteppe_au/msmsteppe_au.mk
+++ b/configs/msmsteppe_au/msmsteppe_au.mk
@@ -80,6 +80,23 @@
 AUDIO_FEATURE_ENABLED_BATTERY_LISTENER := false
 ##AUDIO_FEATURE_FLAGS
 
+AUDIO_HARDWARE += audio.a2dp.default
+AUDIO_HARDWARE += audio.usb.default
+AUDIO_HARDWARE += audio.r_submix.default
+AUDIO_HARDWARE += audio.primary.$(MSMSTEPPE)
+
+#HAL Wrapper
+AUDIO_WRAPPER := libqahw
+AUDIO_WRAPPER += libqahwwrapper
+
+#HAL Test app
+AUDIO_HAL_TEST_APPS := hal_play_test
+AUDIO_HAL_TEST_APPS += hal_rec_test
+
+PRODUCT_PACKAGES += $(AUDIO_HARDWARE)
+PRODUCT_PACKAGES += $(AUDIO_WRAPPER)
+PRODUCT_PACKAGES += $(AUDIO_HAL_TEST_APPS)
+
 AUDIO_FEATURE_ENABLED_AUTO_HAL := true
 AUDIO_FEATURE_ENABLED_EXT_HW_PLUGIN := true
 AUDIO_FEATURE_ENABLED_AUDIO_CONTROL_HAL := true
diff --git a/configs/sdm660/audio_policy_configuration.xml b/configs/sdm660/audio_policy_configuration.xml
index 1d70af6..09b1b1e 100644
--- a/configs/sdm660/audio_policy_configuration.xml
+++ b/configs/sdm660/audio_policy_configuration.xml
@@ -356,7 +356,7 @@
                  <route type="mix" sink="usb_surround_sound"
                         sources="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"/>
+                       sources="Built-In Mic,Built-In Back Mic,BT SCO Headset Mic,USB Device In,USB Headset In,Wired Headset Mic"/>
                 <route type="mix" sink="surround_sound"
                        sources="Built-In Mic,Built-In Back Mic"/>
                 <route type="mix" sink="record_24"
diff --git a/configs/sdm710/audio_policy_configuration.xml b/configs/sdm710/audio_policy_configuration.xml
index 57a3d7e..789d673 100644
--- a/configs/sdm710/audio_policy_configuration.xml
+++ b/configs/sdm710/audio_policy_configuration.xml
@@ -364,7 +364,7 @@
                  <route type="mix" sink="usb_surround_sound"
                         sources="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"/>
+                       sources="Built-In Mic,Built-In Back Mic,BT SCO Headset Mic,USB Device In,USB Headset In,Wired Headset Mic"/>
                 <route type="mix" sink="surround_sound"
                        sources="Built-In Mic,Built-In Back Mic"/>
                 <route type="mix" sink="record_24"
diff --git a/configs/sdm845/audio_platform_info.xml b/configs/sdm845/audio_platform_info.xml
index 9d0c9e6..b8c2ad8 100644
--- a/configs/sdm845/audio_platform_info.xml
+++ b/configs/sdm845/audio_platform_info.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="ISO-8859-1"?>
-<!-- Copyright (c) 2014, 2016-2020, The Linux Foundation. All rights reserved. -->
+<!-- Copyright (c) 2014, 2016-2021, 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 -->
@@ -99,6 +99,8 @@
         <usecase name="USECASE_INCALL_REC_UPLINK" type="in" id="27" />
         <usecase name="USECASE_INCALL_REC_DOWNLINK" type="in" id="27" />
         <usecase name="USECASE_INCALL_REC_UPLINK_AND_DOWNLINK" type="in" id="27" />
+        <usecase name="USECASE_INCALL_MUSIC_UPLINK" type="out" id="27" />
+        <usecase name="USECASE_INCALL_MUSIC_UPLINK2" type="out" id="27" />
     </pcm_ids>
     <config_params>
         <param key="spkr_1_tz_name" value="wsatz.13"/>
diff --git a/configs/sdm845/audio_policy_configuration.xml b/configs/sdm845/audio_policy_configuration.xml
index d1e77a7..7e0d2cb 100644
--- a/configs/sdm845/audio_policy_configuration.xml
+++ b/configs/sdm845/audio_policy_configuration.xml
@@ -21,7 +21,7 @@
     <!-- version section contains a “version” tag in the form “major.minor” e.g version=”1.0” -->
 
     <!-- Global configuration Decalaration -->
-    <globalConfiguration speaker_drc_enabled="true"/>
+    <globalConfiguration speaker_drc_enabled="true" call_screen_mode_supported="true"/>
 
 
     <!-- Modules section:
@@ -172,6 +172,12 @@
                               samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000,88200,96000,176400,192000"
                               channelMasks="AUDIO_CHANNEL_IN_5POINT1,AUDIO_CHANNEL_INDEX_MASK_6,AUDIO_CHANNEL_IN_7POINT1,AUDIO_CHANNEL_INDEX_MASK_8"/>
                 </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"
                              samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000"
@@ -343,7 +349,7 @@
                 <route type="mix" sink="USB Headset Out"
                        sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx,mmap_no_irq_out,hifi_playback"/>
                 <route type="mix" sink="Telephony Tx"
-                       sources="voice_tx"/>
+                       sources="voice_tx,incall_music_uplink"/>
                 <route type="mix" sink="voice_rx"
                        sources="Telephony Rx"/>
                 <route type="mix" sink="primary input"
@@ -351,7 +357,7 @@
                  <route type="mix" sink="usb_surround_sound"
                         sources="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"/>
+                       sources="Built-In Mic,Built-In Back Mic,BT SCO Headset Mic,USB Device In,USB Headset In,Wired Headset Mic"/>
                 <route type="mix" sink="record_24"
                        sources="Built-In Mic,Built-In Back Mic,Wired Headset Mic"/>
                 <route type="mix" sink="mmap_no_irq_in"
diff --git a/configs/sdm845/sdm845.mk b/configs/sdm845/sdm845.mk
index 4762cad..0fefe53 100644
--- a/configs/sdm845/sdm845.mk
+++ b/configs/sdm845/sdm845.mk
@@ -52,7 +52,7 @@
 AUDIO_FEATURE_ENABLED_DISPLAY_PORT := true
 AUDIO_FEATURE_ENABLED_DS2_DOLBY_DAP := false
 AUDIO_FEATURE_ENABLED_HFP := true
-AUDIO_FEATURE_ENABLED_INCALL_MUSIC := false
+AUDIO_FEATURE_ENABLED_INCALL_MUSIC := true
 AUDIO_FEATURE_ENABLED_MULTI_VOICE_SESSIONS := true
 AUDIO_FEATURE_ENABLED_KPI_OPTIMIZE := true
 AUDIO_FEATURE_ENABLED_SPKR_PROTECTION := true
diff --git a/configs/trinket/audio_policy_configuration.xml b/configs/trinket/audio_policy_configuration.xml
index aec4edb..7427e68 100755
--- a/configs/trinket/audio_policy_configuration.xml
+++ b/configs/trinket/audio_policy_configuration.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<!-- Copyright (c) 2016-2020, The Linux Foundation. All rights reserved
+<!-- Copyright (c) 2016-2021, The Linux Foundation. All rights reserved
      Not a Contribution.
 -->
 <!-- Copyright (C) 2015 The Android Open Source Project
@@ -362,7 +362,7 @@
                 <route type="mix" sink="primary input"
                        sources="Built-In Mic,Built-In Back Mic,Wired Headset Mic,BT SCO Headset Mic,FM Tuner,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"/>
+                       sources="Built-In Mic,Built-In Back Mic,BT SCO Headset Mic,USB Device In,USB Headset In,Wired Headset Mic"/>
                 <route type="mix" sink="usb_surround_sound"
                        sources="USB Device In,USB Headset In"/>
                 <route type="mix" sink="record_24"
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index c6d34c5..58eecd2 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -4961,7 +4961,10 @@
     if (is_usb_out_device_type(&out->device_list) &&
             list_empty(&new_devices) &&
             !audio_extn_usb_connected(NULL)) {
-        reassign_device_list(&new_devices, AUDIO_DEVICE_OUT_SPEAKER, "");
+        if (adev->mode == AUDIO_MODE_IN_CALL || adev->mode == AUDIO_MODE_IN_COMMUNICATION)
+            reassign_device_list(&new_devices, AUDIO_DEVICE_OUT_EARPIECE, "");
+        else
+            reassign_device_list(&new_devices, AUDIO_DEVICE_OUT_SPEAKER, "");
     }
     /* To avoid a2dp to sco overlapping / BT device improper state
      * check with BT lib about a2dp streaming support before routing