| ########################################################### | 
 | ## Options to be translated into XML nodes. | 
 | ########################################################### | 
 | _audio_param_parser_FO_list := \ | 
 |   MTK_WB_SPEECH_SUPPORT \ | 
 |   MTK_AUDIO_HD_REC_SUPPORT \ | 
 |   MTK_DUAL_MIC_SUPPORT \ | 
 |   MTK_HANDSFREE_DMNR_SUPPORT \ | 
 |   DMNR_TUNNING_AT_MODEMSIDE \ | 
 |   MTK_VOIP_ENHANCEMENT_SUPPORT \ | 
 |   MTK_TB_WIFI_3G_MODE \ | 
 |   MTK_DISABLE_EARPIECE \ | 
 |   MTK_ASR_SUPPORT \ | 
 |   MTK_VOIP_NORMAL_DMNR \ | 
 |   MTK_VOIP_HANDSFREE_DMNR \ | 
 |   MTK_INCALL_NORMAL_DMNR \ | 
 |   MTK_VOICE_UNLOCK_SUPPORT \ | 
 |   MTK_VOICE_UI_SUPPORT \ | 
 |   MTK_ACF_AUTO_GEN_SUPPORT \ | 
 |   MTK_SPEAKER_MONITOR_SUPPORT \ | 
 |   MTK_AUDIO_BLOUD_CUSTOMPARAMETER_REV \ | 
 |   MTK_MAGICONFERENCE_SUPPORT \ | 
 |   MTK_HAC_SUPPORT \ | 
 |   MTK_AUDIO_SPH_LPBK_PARAM \ | 
 |   MTK_AUDIO_GAIN_TABLE_BT \ | 
 |   MTK_AUDIO_BT_NREC_WO_ENH_MODE \ | 
 |   MTK_AUDIO_TUNING_TOOL_V2_PHASE \ | 
 |   MATV_AUDIO_SUPPORT \ | 
 |   MTK_FM_SUPPORT \ | 
 |   MTK_HEADSET_ACTIVE_NOISE_CANCELLATION \ | 
 |   MTK_SUPPORT_TC1_TUNNING \ | 
 |   MTK_AUDIO_SPEAKER_PATH \ | 
 |   MTK_AUDIO_NUMBER_OF_MIC \ | 
 |   MTK_PLATFORM \ | 
 |   MTK_AURISYS_FRAMEWORK_SUPPORT \ | 
 |   MTK_BESLOUDNESS_RUN_WITH_HAL \ | 
 |   MTK_AUDIO \ | 
 |   USE_CUSTOM_AUDIO_POLICY \ | 
 |   USE_XML_AUDIO_POLICY_CONF \ | 
 |   MTK_AUDIO_TUNING_TOOL_VERSION \ | 
 |   MTK_AUDIO_TUNNELING_SUPPORT \ | 
 |   MTK_SMARTPA_DUMMY_LIB \ | 
 |   MTK_HIFIAUDIO_SUPPORT \ | 
 |   MTK_BESLOUDNESS_SUPPORT \ | 
 |   MTK_USB_PHONECALL \ | 
 |   MTK_AUDIO_NUMBER_OF_SPEAKER \ | 
 |   MTK_A2DP_OFFLOAD_SUPPORT | 
 |  | 
 | ########################################################### | 
 | ## Complex option customization are defined here. | 
 | ## | 
 | ## Prefix temporary variables with "_aupapa_" to prevent | 
 | ## the temporary variable from messing up global namespace. | 
 | ## The string will be stripped while assembling the XML. | 
 | ## | 
 | ## Finally add the variable to _audio_param_parser_FO_list. | 
 | ########################################################### | 
 | # MTK_WIFI_ONLY_SUPPORT | 
 | ifeq ($(MTK_TB_WIFI_3G_MODE),WIFI_ONLY) | 
 |   _aupapa_VIR_WIFI_ONLY_SUPPORT := yes | 
 | else | 
 |   _aupapa_VIR_WIFI_ONLY_SUPPORT := no | 
 | endif | 
 | _audio_param_parser_FO_list += _aupapa_VIR_WIFI_ONLY_SUPPORT | 
 |  | 
 | # MTK_3G_DATA_ONLY_SUPPORT | 
 | ifneq ($(filter 3GDATA_SMS 3GDATA_ONLY,$(MTK_TB_WIFI_3G_MODE)),) | 
 |   _aupapa_VIR_3G_DATA_ONLY_SUPPORT := yes | 
 | else | 
 |   _aupapa_VIR_3G_DATA_ONLY_SUPPORT := no | 
 | endif | 
 | _audio_param_parser_FO_list += _aupapa_VIR_3G_DATA_ONLY_SUPPORT | 
 |  | 
 | # SUPPORT_ASR | 
 | ifeq ($(MTK_ASR_SUPPORT),yes) | 
 |   ifeq ($(MTK_DUAL_MIC_SUPPORT),yes) | 
 |       _aupapa_VIR_ASR_SUPPORT := yes | 
 |     else | 
 |       _aupapa_VIR_ASR_SUPPORT := no | 
 |     endif | 
 | else | 
 |     _aupapa_VIR_ASR_SUPPORT:=no | 
 | endif | 
 | _audio_param_parser_FO_list += _aupapa_VIR_ASR_SUPPORT | 
 |  | 
 | # SUPPORT_VOIP_NORMAL_DMNR | 
 | ifneq ($(MTK_DISABLE_EARPIECE),yes) | 
 |   ifeq ($(MTK_DUAL_MIC_SUPPORT),yes) | 
 |     ifeq ($(MTK_VOIP_NORMAL_DMNR),yes) | 
 |       ifeq ($(MTK_VOIP_ENHANCEMENT_SUPPORT),yes) | 
 |         _aupapa_VIR_VOIP_NORMAL_DMNR_SUPPORT := yes | 
 |       else | 
 |         _aupapa_VIR_VOIP_NORMAL_DMNR_SUPPORT := no | 
 |       endif | 
 |     else | 
 |       _aupapa_VIR_VOIP_NORMAL_DMNR_SUPPORT := no | 
 |     endif | 
 |   else | 
 |     _aupapa_VIR_VOIP_NORMAL_DMNR_SUPPORT := no | 
 |   endif | 
 | else | 
 |   _aupapa_VIR_VOIP_NORMAL_DMNR_SUPPORT := no | 
 | endif | 
 | _audio_param_parser_FO_list += _aupapa_VIR_VOIP_NORMAL_DMNR_SUPPORT | 
 |  | 
 | # SUPPORT_VOIP_HANDSFREE_DMNR | 
 | ifeq ($(MTK_DUAL_MIC_SUPPORT),yes) | 
 |   ifeq ($(MTK_VOIP_HANDSFREE_DMNR),yes) | 
 |     ifeq ($(MTK_VOIP_ENHANCEMENT_SUPPORT),yes) | 
 |       _aupapa_VIR_VOIP_HANDSFREE_DMNR_SUPPORT := yes | 
 |     else | 
 |       _aupapa_VIR_VOIP_HANDSFREE_DMNR_SUPPORT := no | 
 |     endif | 
 |   else | 
 |     _aupapa_VIR_VOIP_HANDSFREE_DMNR_SUPPORT := no | 
 |   endif | 
 | else | 
 |   _aupapa_VIR_VOIP_HANDSFREE_DMNR_SUPPORT := no | 
 | endif | 
 | _audio_param_parser_FO_list += _aupapa_VIR_VOIP_HANDSFREE_DMNR_SUPPORT | 
 |  | 
 | # NO_SPEECH | 
 | _aupapa_VIR_NO_SPEECH := no | 
 | ifeq ($(_aupapa_VIR_WIFI_ONLY_SUPPORT),yes) | 
 |   _aupapa_VIR_NO_SPEECH := yes | 
 | endif | 
 | ifeq ($(_aupapa_VIR_3G_DATA_ONLY_SUPPORT),yes) | 
 |   _aupapa_VIR_NO_SPEECH := yes | 
 | endif | 
 | _audio_param_parser_FO_list += _aupapa_VIR_NO_SPEECH | 
 |  | 
 | # SUPPORT_INCALL_NORMAL_DMNR | 
 | ifneq ($(MTK_DISABLE_EARPIECE),yes) | 
 |   ifneq ($(_aupapa_VIR_NO_SPEECH),yes) | 
 |     ifeq ($(MTK_DUAL_MIC_SUPPORT),yes) | 
 |       ifneq ($(MTK_INCALL_NORMAL_DMNR),no) | 
 |         _aupapa_VIR_INCALL_NORMAL_DMNR_SUPPORT := yes | 
 |       else | 
 |         _aupapa_VIR_INCALL_NORMAL_DMNR_SUPPORT := no | 
 |       endif | 
 |     else | 
 |       _aupapa_VIR_INCALL_NORMAL_DMNR_SUPPORT := no | 
 |     endif | 
 |   else | 
 |     _aupapa_VIR_INCALL_NORMAL_DMNR_SUPPORT := no | 
 |   endif | 
 | else | 
 |   _aupapa_VIR_INCALL_NORMAL_DMNR_SUPPORT := no | 
 | endif | 
 | _audio_param_parser_FO_list += _aupapa_VIR_INCALL_NORMAL_DMNR_SUPPORT | 
 |  | 
 | # SUPPORT_INCALL_HANDSFREE_DMNR | 
 | ifneq ($(_aupapa_VIR_NO_SPEECH),yes) | 
 |   ifeq ($(MTK_DUAL_MIC_SUPPORT),yes) | 
 |     ifeq ($(MTK_INCALL_HANDSFREE_DMNR),yes) | 
 |       _aupapa_VIR_INCALL_HANDSFREE_DMNR_SUPPORT := yes | 
 |     else | 
 |       _aupapa_VIR_INCALL_HANDSFREE_DMNR_SUPPORT := no | 
 |     endif | 
 |   else | 
 |     _aupapa_VIR_INCALL_HANDSFREE_DMNR_SUPPORT := no | 
 |   endif | 
 | else | 
 |   _aupapa_VIR_INCALL_HANDSFREE_DMNR_SUPPORT := no | 
 | endif | 
 | _audio_param_parser_FO_list += _aupapa_VIR_INCALL_HANDSFREE_DMNR_SUPPORT | 
 |  | 
 | # SUPPORT_VOICE_UNLOCK | 
 | ifeq ($(MTK_VOICE_UNLOCK_SUPPORT),yes) | 
 |   _aupapa_VIR_VOICE_UNLOCK_SUPPORT := yes | 
 | endif | 
 | ifeq ($(MTK_VOICE_UI_SUPPORT),yes) | 
 |   _aupapa_VIR_VOICE_UNLOCK_SUPPORT := yes | 
 | endif | 
 | _audio_param_parser_FO_list += VIR_VOICE_UNLOCK_SUPPORT | 
 |  | 
 | # VIR_AUDIO_BLOUD_CUSTOMPARAMETER_V5 | 
 | _aupapa_VIR_AUDIO_BLOUD_CUSTOMPARAMETER_V5 := yes | 
 | _audio_param_parser_FO_list += _aupapa_VIR_AUDIO_BLOUD_CUSTOMPARAMETER_V5 | 
 |  | 
 | # VIR_AUDIO_BLOUD_CUSTOMPARAMETER_V4 | 
 | _aupapa_VIR_AUDIO_BLOUD_CUSTOMPARAMETER_V4 := no | 
 | _audio_param_parser_FO_list += _aupapa_VIR_AUDIO_BLOUD_CUSTOMPARAMETER_V4 | 
 |  | 
 | # SUPPORT_MAGI_CONFERENCE | 
 | ifeq ($(MTK_MAGICONFERENCE_SUPPORT),yes) | 
 |   ifeq ($(MTK_DUAL_MIC_SUPPORT),yes) | 
 |     _aupapa_VIR_MAGI_CONFERENCE_SUPPORT := yes | 
 |   else | 
 |     _aupapa_VIR_MAGI_CONFERENCE_SUPPORT := no | 
 |   endif | 
 | else | 
 |   _aupapa_VIR_MAGI_CONFERENCE_SUPPORT := no | 
 | endif | 
 | _audio_param_parser_FO_list += _aupapa_VIR_MAGI_CONFERENCE_SUPPORT | 
 |  | 
 | # SUPPORT_AUDIO_LAYERED_PARAM | 
 | ifneq ($(MTK_AUDIO_TUNING_TOOL_VERSION),) | 
 |   ifneq ($(strip $(MTK_AUDIO_TUNING_TOOL_VERSION)),V1) | 
 |     _aupapa_MTK_AUDIO_TUNING_TOOL_V2_PHASE := \ | 
 |       $(shell echo $(MTK_AUDIO_TUNING_TOOL_VERSION) | sed 's/V2\.//g') | 
 |     _aupapa_MTK_AUDIO_HIERARCHICAL_PARAM_SUPPORT := yes | 
 |    endif | 
 | endif | 
 | _audio_param_parser_FO_list += _aupapa_MTK_AUDIO_HIERARCHICAL_PARAM_SUPPORT | 
 | _audio_param_parser_FO_list += _aupapa_MTK_AUDIO_TUNING_TOOL_V2_PHASE | 
 |  | 
 | # VIR_MTK_XXXX_IIR_ENH_SUPPORT & VIR_MTK_VOIP_IIR_MIC_SUPPORT | 
 | ifeq ($(MTK_AURISYS_FRAMEWORK_SUPPORT),yes) | 
 |   _aupapa_VIR_MTK_RECORD_IIR_ENH_SUPPORT := yes | 
 |   _aupapa_VIR_MTK_VOIP_IIR_ENH_SUPPORT := yes | 
 |   _aupapa_VIR_MTK_VOIP_IIR_MIC_SUPPORT := yes | 
 | else | 
 |   _aupapa_VIR_MTK_RECORD_IIR_ENH_SUPPORT := no | 
 |   _aupapa_VIR_MTK_VOIP_IIR_ENH_SUPPORT := no | 
 |   _aupapa_VIR_MTK_VOIP_IIR_MIC_SUPPORT := no | 
 | endif | 
 | _audio_param_parser_FO_list += _aupapa_VIR_MTK_RECORD_IIR_ENH_SUPPORT | 
 | _audio_param_parser_FO_list += _aupapa_VIR_MTK_VOIP_IIR_ENH_SUPPORT | 
 | _audio_param_parser_FO_list += _aupapa_VIR_MTK_VOIP_IIR_MIC_SUPPORT | 
 |  | 
 | ########################################################### | 
 | ## Remove AUDIO_PARAM_OPTIONS_LIST duplicated item (keep first decleration) | 
 | ########################################################### | 
 |  | 
 | $(foreach n,$(AUDIO_PARAM_OPTIONS_LIST),\ | 
 |         $(eval KEY := $(firstword $(subst =, ,$(n))))\ | 
 |         $(eval $(if $(filter $(KEY)=%,$(NEW_AUDIO_PARAM_OPTIONS_LIST)),$(info Ignore duplicated AUDIO_PARAM_OPTION: $(n)),NEW_AUDIO_PARAM_OPTIONS_LIST += $(n)))\ | 
 | ) | 
 | AUDIO_PARAM_OPTIONS_LIST := $(NEW_AUDIO_PARAM_OPTIONS_LIST) | 
 |  | 
 | ########################################################### | 
 | ## Target definition | 
 | ########################################################### | 
 | AUDIOPARAM_XML_INSTALLED := $(TARGET_OUT_VENDOR_ETC)/audio_param/AudioParamOptions.xml | 
 | AUDIOPARAM_XML_DEPS := \ | 
 |   $(LOCAL_PATH)/Android.mk \ | 
 |   $(lastword $(MAKEFILE_LIST)) | 
 |  | 
 | $(AUDIOPARAM_XML_INSTALLED): $(AUDIOPARAM_XML_DEPS) | 
 | 	@mkdir -p $(dir $@) | 
 | 	@echo '<?xml version="1.0" encoding="UTF-8"?>' >$@ | 
 | 	@echo '<AudioParamOptions>' >>$@ | 
 | 	@$(foreach i,$(_audio_param_parser_FO_list),echo ' <Param name="$(patsubst _aupapa_%,%,$(strip $(i)))" value="$(strip $($(i)))" />' >>$@;) | 
 | 	@$(foreach i,$(AUDIO_PARAM_OPTIONS_LIST),echo ' <Param name="$(firstword $(subst =, ,$(i)))" value="$(word 2,$(subst =, ,$(i)))" />' >>$@;) | 
 | 	@echo '</AudioParamOptions>' >>$@ | 
 |  | 
 | ALL_DEFAULT_INSTALLED_MODULES += $(AUDIOPARAM_XML_INSTALLED) | 
 | $(LOCAL_BUILT_MODULE):$(AUDIOPARAM_XML_INSTALLED) |