Merge "audio-hal/primary-hal: enable sound_trigger hal"
diff --git a/configs/lahaina/audio_io_policy.conf b/configs/lahaina/audio_io_policy.conf
index 3e3fdec..0932e44 100644
--- a/configs/lahaina/audio_io_policy.conf
+++ b/configs/lahaina/audio_io_policy.conf
@@ -76,7 +76,7 @@
}
compress_offload_24 {
flags AUDIO_OUTPUT_FLAG_DIRECT|AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD|AUDIO_OUTPUT_FLAG_NON_BLOCKING
- formats AUDIO_FORMAT_MP3|AUDIO_FORMAT_PCM_24_BIT_OFFLOAD|AUDIO_FORMAT_FLAC|AUDIO_FORMAT_ALAC|AUDIO_FORMAT_APE|AUDIO_FORMAT_AAC_LC|AUDIO_FORMAT_AAC_HE_V1|AUDIO_FORMAT_AAC_HE_V2|AUDIO_FORMAT_WMA_PRO|AUDIO_FORMAT_AAC_ADTS_LC|AUDIO_FORMAT_AAC_ADTS_HE_V1|AUDIO_FORMAT_AAC_ADTS_HE_V2|AUDIO_FORMAT_AAC_LATM_LC|AUDIO_FORMAT_AAC_LATM_HE_V1|AUDIO_FORMAT_AAC_LATM_HE_V2
+ formats AUDIO_FORMAT_MP3|AUDIO_FORMAT_PCM_24_BIT_OFFLOAD|AUDIO_FORMAT_FLAC|AUDIO_FORMAT_ALAC|AUDIO_FORMAT_APE|AUDIO_FORMAT_AAC_LC|AUDIO_FORMAT_AAC_HE_V1|AUDIO_FORMAT_AAC_HE_V2|AUDIO_FORMAT_WMA_PRO|AUDIO_FORMAT_VORBIS|AUDIO_FORMAT_AAC_ADTS_LC|AUDIO_FORMAT_AAC_ADTS_HE_V1|AUDIO_FORMAT_AAC_ADTS_HE_V2|AUDIO_FORMAT_AAC_LATM_LC|AUDIO_FORMAT_AAC_LATM_HE_V1|AUDIO_FORMAT_AAC_LATM_HE_V2
sampling_rates 44100|48000|88200|96000|176400|192000
bit_width 24
app_type 69940
diff --git a/configs/msm8937/audio_policy_configuration_sdm429w_law.xml b/configs/msm8937/audio_policy_configuration_sdm429w_law.xml
index 0ea7a27..0630c09 100755
--- a/configs/msm8937/audio_policy_configuration_sdm429w_law.xml
+++ b/configs/msm8937/audio_policy_configuration_sdm429w_law.xml
@@ -49,7 +49,6 @@
<!-- Primary Audio HAL -->
<module name="primary" halVersion="2.0">
<attachedDevices>
- <item>Earpiece</item>
<item>Speaker</item>
<item>Telephony Tx</item>
<item>Built-In Mic</item>
@@ -161,10 +160,6 @@
<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" address="">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
@@ -256,8 +251,6 @@
</devicePorts>
<!-- route declaration, i.e. list all available sources for a given sink -->
<routes>
- <route type="mix" sink="Earpiece"
- sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx"/>
<route type="mix" sink="Speaker"
sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx"/>
<route type="mix" sink="Wired Headset"
diff --git a/configs/msm8937/mixer_paths_sdm429w_dvt2.xml b/configs/msm8937/mixer_paths_sdm429w_dvt2.xml
index ecb6767..4a6d124 100644
--- a/configs/msm8937/mixer_paths_sdm429w_dvt2.xml
+++ b/configs/msm8937/mixer_paths_sdm429w_dvt2.xml
@@ -119,7 +119,7 @@
<ctl name="MultiMedia1 Mixer TERT_MI2S_TX" value="0" />
<ctl name="MultiMedia5 Mixer TERT_MI2S_TX" value="0" />
<ctl name="MultiMedia1 Mixer SLIM_7_TX" value="0" />
- <ctl name="MultiMedia5 Mixer SLIM_7_TX" value="1" />
+ <ctl name="MultiMedia5 Mixer SLIM_7_TX" value="0" />
<ctl name="MultiMedia8 Mixer SLIM_7_TX" value="0" />
<ctl name="PRI_MI2S_RX_Voice Mixer CSVoice" value="0" />
<ctl name="Voice_Tx Mixer TERT_MI2S_TX_Voice" value="0" />
diff --git a/configs/msmnile_au/audio_effects.conf b/configs/msmnile_au/audio_effects.conf
old mode 100644
new mode 100755
index 8d1251a..edb9814
--- a/configs/msmnile_au/audio_effects.conf
+++ b/configs/msmnile_au/audio_effects.conf
@@ -45,9 +45,6 @@
audio_pre_processing {
path /vendor/lib/soundfx/libqcomvoiceprocessing.so
}
- volume_listener {
- path /vendor/lib/soundfx/libvolumelistener.so
- }
audiosphere {
path /vendor/lib/soundfx/libasphere.so
}
@@ -262,27 +259,6 @@
library audio_pre_processing
uuid 1d97bb0b-9e2f-4403-9ae3-58c2554306f8
}
- music_helper {
- library volume_listener
- uuid 08b8b058-0590-11e5-ac71-0025b32654a0
- }
- ring_helper {
- library volume_listener
- uuid 0956df94-0590-11e5-bdbe-0025b32654a0
- }
- alarm_helper {
- library volume_listener
- uuid 09f303e2-0590-11e5-8fdb-0025b32654a0
- }
- # voice_helper is called when stream type is voice_call in VoIP usecase
- voice_helper {
- library volume_listener
- uuid 0ace5c08-0590-11e5-ae9e-0025b32654a0
- }
- notification_helper {
- library volume_listener
- uuid 0b776dde-0590-11e5-81ba-0025b32654a0
- }
audiosphere {
library audiosphere
uuid 184e62ab-2d19-4364-9d1b-c0a40733866c
diff --git a/configs/msmsteppe_au/audio_effects.conf b/configs/msmsteppe_au/audio_effects.conf
old mode 100644
new mode 100755
index 1f29086..2e850c6
--- a/configs/msmsteppe_au/audio_effects.conf
+++ b/configs/msmsteppe_au/audio_effects.conf
@@ -42,9 +42,6 @@
audio_pre_processing {
path /vendor/lib/soundfx/libqcomvoiceprocessing.so
}
- volume_listener {
- path /vendor/lib/soundfx/libvolumelistener.so
- }
audiosphere {
path /vendor/lib/soundfx/libasphere.so
}
@@ -255,27 +252,6 @@
library audio_pre_processing
uuid 1d97bb0b-9e2f-4403-9ae3-58c2554306f8
}
- music_helper {
- library volume_listener
- uuid 08b8b058-0590-11e5-ac71-0025b32654a0
- }
- ring_helper {
- library volume_listener
- uuid 0956df94-0590-11e5-bdbe-0025b32654a0
- }
- alarm_helper {
- library volume_listener
- uuid 09f303e2-0590-11e5-8fdb-0025b32654a0
- }
- # voice_helper is called when stream type is voice_call in VoIP usecase
- voice_helper {
- library volume_listener
- uuid 0ace5c08-0590-11e5-ae9e-0025b32654a0
- }
- notification_helper {
- library volume_listener
- uuid 0b776dde-0590-11e5-81ba-0025b32654a0
- }
audiosphere {
library audiosphere
uuid 184e62ab-2d19-4364-9d1b-c0a40733866c
diff --git a/hal/audio_extn/hfp.c b/hal/audio_extn/hfp.c
index ca5d3bb..697a507 100644
--- a/hal/audio_extn/hfp.c
+++ b/hal/audio_extn/hfp.c
@@ -52,6 +52,7 @@
#define AUDIO_PARAMETER_HFP_PCM_DEV_ID "hfp_pcm_dev_id"
#define AUDIO_PARAMETER_HFP_VOL_MIXER_CTL "hfp_vol_mixer_ctl"
#define AUDIO_PARAMETER_HFP_VALUE_MAX 128
+#define AUDIO_PARAMETER_HFP_FORCE_ROUTE_SPEAKER "hfp_route_spkr"
#define AUDIO_PARAMETER_KEY_HFP_MIC_VOLUME "hfp_mic_volume"
#define PLAYBACK_VOLUME_MAX 0x2000
@@ -118,6 +119,7 @@
.stop_threshold = INT_MAX,
.avail_min = 0,
};
+static bool route_spkr = false;
//external feature dependency
static fp_platform_set_mic_mute_t fp_platform_set_mic_mute;
@@ -320,6 +322,11 @@
uc_info->in_snd_device = SND_DEVICE_NONE;
uc_info->out_snd_device = SND_DEVICE_NONE;
+ if (route_spkr) {
+ reassign_device_list(&uc_info->device_list, AUDIO_DEVICE_OUT_SPEAKER, "");
+ reassign_device_list(&uc_info->stream.out->device_list, AUDIO_DEVICE_OUT_SPEAKER, "");
+ }
+
list_add_tail(&adev->usecase_list, &uc_info->list);
fp_select_devices(adev, hfpmod.ucid);
@@ -431,6 +438,7 @@
ALOGD("%s: enter", __func__);
hfpmod.is_hfp_running = false;
+ route_spkr = false;
/* 1. Close the PCM devices */
if (hfpmod.hfp_sco_rx) {
@@ -553,6 +561,7 @@
int val;
float vol;
char value[32]={0};
+ struct audio_usecase *uc_info = NULL;
ALOGV("%s: enter", __func__);
@@ -581,14 +590,36 @@
ALOGE("Unsupported rate..");
}
- if (hfpmod.is_hfp_running) {
- memset(value, 0, sizeof(value));
- ret = str_parms_get_str(parms, AUDIO_PARAMETER_STREAM_ROUTING,
+ memset(value, 0, sizeof(value));
+ ret = str_parms_get_str(parms, AUDIO_PARAMETER_HFP_FORCE_ROUTE_SPEAKER, value,
+ sizeof(value));
+ if(ret >= 0){
+ route_spkr = true;
+ ALOGD("%s: Set force route to speaker", __func__);
+ }
+
+ memset(value, 0, sizeof(value));
+ ret = str_parms_get_str(parms, AUDIO_PARAMETER_STREAM_ROUTING,
value, sizeof(value));
- if (ret >= 0) {
- val = atoi(value);
- if (val > 0)
- fp_select_devices(adev, hfpmod.ucid);
+ if (ret >= 0) {
+ val = atoi(value);
+ if (val > 0) {
+ if (hfpmod.is_hfp_running) {
+ if (route_spkr) {
+ if (val != AUDIO_DEVICE_OUT_SPEAKER)
+ ALOGI("%s: HFP call in progress, cannot route to device %d", __func__, val);
+ } else {
+ uc_info = fp_get_usecase_from_list(adev, hfpmod.ucid);
+
+ if (uc_info != NULL) {
+ reassign_device_list(&uc_info->device_list, val, "");
+ reassign_device_list(&uc_info->stream.out->device_list, val, "");
+ fp_select_devices(adev, hfpmod.ucid);
+ }
+ }
+
+ str_parms_del(parms, AUDIO_PARAMETER_STREAM_ROUTING);
+ }
}
}