Merge "configs: Enable flag to compile test apps in vendor image"
diff --git a/configs/msm8909/msm8909.mk b/configs/msm8909/msm8909.mk
index 0fb602a..e8aaf8a 100644
--- a/configs/msm8909/msm8909.mk
+++ b/configs/msm8909/msm8909.mk
@@ -169,7 +169,7 @@
android.hardware.audio@2.0-service \
android.hardware.audio@2.0-impl \
android.hardware.audio.effect@2.0-impl \
- android.hardware.soundtrigger@2.0-impl \
+ android.hardware.soundtrigger@2.1-impl \
android.hardware.audio@4.0 \
android.hardware.audio.common@4.0 \
android.hardware.audio.common@4.0-util \
diff --git a/configs/msm8996/msm8996.mk b/configs/msm8996/msm8996.mk
index c699535..fb760c1 100644
--- a/configs/msm8996/msm8996.mk
+++ b/configs/msm8996/msm8996.mk
@@ -202,7 +202,7 @@
android.hardware.audio@2.0-service \
android.hardware.audio@2.0-impl \
android.hardware.audio.effect@2.0-impl \
- android.hardware.soundtrigger@2.0-impl \
+ android.hardware.soundtrigger@2.1-impl \
android.hardware.audio@4.0 \
android.hardware.audio.common@4.0 \
android.hardware.audio.common@4.0-util \
diff --git a/configs/msm8998/msm8998.mk b/configs/msm8998/msm8998.mk
index acd5071..5f4e6e1 100644
--- a/configs/msm8998/msm8998.mk
+++ b/configs/msm8998/msm8998.mk
@@ -232,7 +232,7 @@
android.hardware.audio@2.0-service \
android.hardware.audio@2.0-impl \
android.hardware.audio.effect@2.0-impl \
- android.hardware.soundtrigger@2.0-impl \
+ android.hardware.soundtrigger@2.1-impl \
android.hardware.audio@4.0 \
android.hardware.audio.common@4.0 \
android.hardware.audio.common@4.0-util \
diff --git a/configs/sdm660/sdm660.mk b/configs/sdm660/sdm660.mk
index b0bd431..aef78b1 100644
--- a/configs/sdm660/sdm660.mk
+++ b/configs/sdm660/sdm660.mk
@@ -244,7 +244,7 @@
android.hardware.audio@2.0-service \
android.hardware.audio@2.0-impl \
android.hardware.audio.effect@2.0-impl \
- android.hardware.soundtrigger@2.0-impl \
+ android.hardware.soundtrigger@2.1-impl \
android.hardware.audio@4.0 \
android.hardware.audio.common@4.0 \
android.hardware.audio.common@4.0-util \
diff --git a/hal/audio_extn/a2dp.c b/hal/audio_extn/a2dp.c
index e80e286..1a72bf8 100644
--- a/hal/audio_extn/a2dp.c
+++ b/hal/audio_extn/a2dp.c
@@ -1877,10 +1877,12 @@
ret = str_parms_get_str(parms, "A2dpSuspended", value, sizeof(value));
if (ret >= 0) {
- if (a2dp.bt_lib_handle && (a2dp.bt_state != A2DP_STATE_DISCONNECTED) ) {
+ if (a2dp.bt_lib_handle) {
if ((!strncmp(value,"true",sizeof(value)))) {
ALOGD("Setting a2dp to suspend state");
a2dp.a2dp_suspended = true;
+ if (a2dp.bt_state == A2DP_STATE_DISCONNECTED)
+ goto param_handled;
list_for_each(node, &a2dp.adev->usecase_list) {
uc_info = node_to_item(node, struct audio_usecase, list);
if (uc_info->type == PCM_PLAYBACK &&
diff --git a/hal/audio_extn/utils.c b/hal/audio_extn/utils.c
index 0ea8b56..0a48953 100644
--- a/hal/audio_extn/utils.c
+++ b/hal/audio_extn/utils.c
@@ -873,6 +873,25 @@
}
}
+void audio_extn_btsco_get_sample_rate(int snd_device, int *sample_rate)
+{
+ switch (snd_device) {
+ case SND_DEVICE_OUT_BT_SCO:
+ case SND_DEVICE_IN_BT_SCO_MIC:
+ case SND_DEVICE_IN_BT_SCO_MIC_NREC:
+ *sample_rate = 8000;
+ break;
+ case SND_DEVICE_OUT_BT_SCO_WB:
+ case SND_DEVICE_IN_BT_SCO_MIC_WB:
+ case SND_DEVICE_IN_BT_SCO_MIC_WB_NREC:
+ *sample_rate = 16000;
+ break;
+ default:
+ ALOGD("%s:Not a BT SCO device, need not update sampling rate\n", __func__);
+ break;
+ }
+}
+
static int send_app_type_cfg_for_device(struct audio_device *adev,
struct audio_usecase *usecase,
int split_snd_device)
@@ -939,8 +958,13 @@
goto exit_send_app_type_cfg;
}
snd_device = platform_get_spkr_prot_snd_device(snd_device);
-
- acdb_dev_id = platform_get_snd_device_acdb_id(snd_device);
+ if (voice_is_in_call_rec_stream(usecase->stream.in) && usecase->type == PCM_CAPTURE) {
+ snd_device_t voice_device = voice_get_incall_rec_snd_device(usecase->in_snd_device);
+ acdb_dev_id = platform_get_snd_device_acdb_id(voice_device);
+ ALOGV("acdb id for voice call use case %d", acdb_dev_id);
+ } else {
+ acdb_dev_id = platform_get_snd_device_acdb_id(snd_device);
+ }
if (acdb_dev_id <= 0) {
ALOGE("%s: Couldn't get the acdb dev id", __func__);
rc = -EINVAL;
@@ -996,6 +1020,7 @@
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.
@@ -1038,6 +1063,11 @@
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);
+ }
sample_rate = usecase->stream.in->app_type_cfg.sample_rate;
app_type_cfg[len++] = sample_rate;
if (snd_device_be_idx > 0)
@@ -1071,6 +1101,7 @@
{
int i, num_devices = 0;
snd_device_t new_snd_devices[SND_DEVICE_OUT_END] = {0};
+ snd_device_t in_snd_device = usecase->in_snd_device;
int rc = 0;
switch (usecase->type) {
@@ -1089,11 +1120,14 @@
case PCM_CAPTURE:
ALOGD("%s: usecase->in_snd_device %s",
__func__, platform_get_snd_device_name(usecase->in_snd_device));
+ if (voice_is_in_call_rec_stream(usecase->stream.in)) {
+ in_snd_device = voice_get_incall_rec_backend_device(usecase->stream.in);
+ }
/* check for in combo device */
if (platform_split_snd_device(adev->platform,
- usecase->in_snd_device,
+ in_snd_device,
&num_devices, new_snd_devices)) {
- new_snd_devices[0] = usecase->in_snd_device;
+ new_snd_devices[0] = in_snd_device;
num_devices = 1;
}
break;
diff --git a/hal/msm8916/platform.c b/hal/msm8916/platform.c
index c6d1a74..5f80a8d 100644
--- a/hal/msm8916/platform.c
+++ b/hal/msm8916/platform.c
@@ -567,6 +567,9 @@
[SND_DEVICE_IN_EC_REF_LOOPBACK_MONO] = "ec-ref-loopback-mono",
[SND_DEVICE_IN_EC_REF_LOOPBACK_STEREO] = "ec-ref-loopback-stereo",
[SND_DEVICE_IN_HANDSET_GENERIC_QMIC] = "quad-mic",
+ [SND_DEVICE_IN_INCALL_REC_RX] = "incall-rec-rx",
+ [SND_DEVICE_IN_INCALL_REC_TX] = "incall-rec-tx",
+ [SND_DEVICE_IN_INCALL_REC_RX_TX] = "incall-rec-rx-tx",
};
// Platform specific backend bit width table
@@ -899,6 +902,9 @@
{TO_NAME_INDEX(SND_DEVICE_IN_EC_REF_LOOPBACK_MONO)},
{TO_NAME_INDEX(SND_DEVICE_IN_EC_REF_LOOPBACK_STEREO)},
{TO_NAME_INDEX(SND_DEVICE_IN_HANDSET_GENERIC_QMIC)},
+ {TO_NAME_INDEX(SND_DEVICE_IN_INCALL_REC_RX)},
+ {TO_NAME_INDEX(SND_DEVICE_IN_INCALL_REC_TX)},
+ {TO_NAME_INDEX(SND_DEVICE_IN_INCALL_REC_RX_TX)},
};
static char * backend_tag_table[SND_DEVICE_MAX] = {0};
@@ -1741,6 +1747,8 @@
hw_interface_table[SND_DEVICE_IN_UNPROCESSED_QUAD_MIC] = strdup("SLIMBUS_0_TX");
hw_interface_table[SND_DEVICE_IN_UNPROCESSED_HEADSET_MIC] = strdup("SLIMBUS_0_TX");
hw_interface_table[SND_DEVICE_IN_HANDSET_GENERIC_QMIC] = strdup("SLIMBUS_0_TX");
+ hw_interface_table[SND_DEVICE_IN_INCALL_REC_RX] = strdup("INCALL_RECORD_RX");
+ hw_interface_table[SND_DEVICE_IN_INCALL_REC_TX] = strdup("INCALL_RECORD_TX");
my_data->max_mic_count = PLATFORM_DEFAULT_MIC_COUNT;
/*remove ALAC & APE from DSP decoder list based on software decoder availability*/
@@ -3899,6 +3907,11 @@
new_snd_devices[0] = SND_DEVICE_OUT_SPEAKER;
new_snd_devices[1] = SND_DEVICE_OUT_BT_A2DP;
ret = 0;
+ } else if (SND_DEVICE_IN_INCALL_REC_RX_TX == snd_device) {
+ *num_devices = 2;
+ new_snd_devices[0] = SND_DEVICE_IN_INCALL_REC_RX;
+ new_snd_devices[1] = SND_DEVICE_IN_INCALL_REC_TX;
+ ret = 0;
}
ALOGD("%s: snd_device(%d) num devices(%d) new_snd_devices(%d)", __func__,
diff --git a/hal/msm8916/platform.h b/hal/msm8916/platform.h
index 3779c29..6236746 100644
--- a/hal/msm8916/platform.h
+++ b/hal/msm8916/platform.h
@@ -241,6 +241,9 @@
SND_DEVICE_IN_EC_REF_LOOPBACK_MONO,
SND_DEVICE_IN_EC_REF_LOOPBACK_STEREO,
SND_DEVICE_IN_HANDSET_GENERIC_QMIC,
+ SND_DEVICE_IN_INCALL_REC_RX,
+ SND_DEVICE_IN_INCALL_REC_TX,
+ SND_DEVICE_IN_INCALL_REC_RX_TX,
SND_DEVICE_IN_END,
SND_DEVICE_MAX = SND_DEVICE_IN_END,
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index 6236584..509dbc5 100755
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -554,6 +554,9 @@
[SND_DEVICE_IN_UNPROCESSED_QUAD_MIC] = "unprocessed-quad-mic",
[SND_DEVICE_IN_UNPROCESSED_HEADSET_MIC] = "unprocessed-headset-mic",
[SND_DEVICE_IN_HANDSET_GENERIC_QMIC] = "quad-mic",
+ [SND_DEVICE_IN_INCALL_REC_RX] = "incall-rec-rx",
+ [SND_DEVICE_IN_INCALL_REC_TX] = "incall-rec-tx",
+ [SND_DEVICE_IN_INCALL_REC_RX_TX] = "incall-rec-rx-tx",
};
// Platform specific backend bit width table
@@ -890,6 +893,9 @@
{TO_NAME_INDEX(SND_DEVICE_IN_UNPROCESSED_QUAD_MIC)},
{TO_NAME_INDEX(SND_DEVICE_IN_UNPROCESSED_HEADSET_MIC)},
{TO_NAME_INDEX(SND_DEVICE_IN_HANDSET_GENERIC_QMIC)},
+ {TO_NAME_INDEX(SND_DEVICE_IN_INCALL_REC_RX)},
+ {TO_NAME_INDEX(SND_DEVICE_IN_INCALL_REC_TX)},
+ {TO_NAME_INDEX(SND_DEVICE_IN_INCALL_REC_RX_TX)},
};
static char * backend_tag_table[SND_DEVICE_MAX] = {0};
@@ -1627,6 +1633,8 @@
hw_interface_table[SND_DEVICE_IN_UNPROCESSED_QUAD_MIC] = strdup("SLIMBUS_0_TX");
hw_interface_table[SND_DEVICE_IN_UNPROCESSED_HEADSET_MIC] = strdup("SLIMBUS_0_TX");
hw_interface_table[SND_DEVICE_IN_HANDSET_GENERIC_QMIC] = strdup("SLIMBUS_0_TX");
+ hw_interface_table[SND_DEVICE_IN_INCALL_REC_RX] = strdup("INCALL_RECORD_RX");
+ hw_interface_table[SND_DEVICE_IN_INCALL_REC_TX] = strdup("INCALL_RECORD_TX");
my_data->max_mic_count = PLATFORM_DEFAULT_MIC_COUNT;
@@ -3789,6 +3797,11 @@
new_snd_devices[0] = SND_DEVICE_OUT_SPEAKER;
new_snd_devices[1] = SND_DEVICE_OUT_BT_A2DP;
ret = 0;
+ } else if (SND_DEVICE_IN_INCALL_REC_RX_TX == snd_device) {
+ *num_devices = 2;
+ new_snd_devices[0] = SND_DEVICE_IN_INCALL_REC_RX;
+ new_snd_devices[1] = SND_DEVICE_IN_INCALL_REC_TX;
+ ret = 0;
}
ALOGD("%s: snd_device(%d) num devices(%d) new_snd_devices(%d)", __func__,
diff --git a/hal/msm8974/platform.h b/hal/msm8974/platform.h
index 6fdb499..28a3248 100644
--- a/hal/msm8974/platform.h
+++ b/hal/msm8974/platform.h
@@ -247,6 +247,9 @@
SND_DEVICE_IN_EC_REF_LOOPBACK_MONO,
SND_DEVICE_IN_EC_REF_LOOPBACK_STEREO,
SND_DEVICE_IN_HANDSET_GENERIC_QMIC,
+ SND_DEVICE_IN_INCALL_REC_RX,
+ SND_DEVICE_IN_INCALL_REC_TX,
+ SND_DEVICE_IN_INCALL_REC_RX_TX,
SND_DEVICE_IN_END,
SND_DEVICE_MAX = SND_DEVICE_IN_END,
diff --git a/hal/voice.c b/hal/voice.c
index 425bb54..7b93cfd 100644
--- a/hal/voice.c
+++ b/hal/voice.c
@@ -440,6 +440,27 @@
return ret;
}
+snd_device_t voice_get_incall_rec_backend_device(struct stream_in *in)
+{
+ snd_device_t incall_record_device = {0};
+
+ switch(in->source) {
+ case AUDIO_SOURCE_VOICE_UPLINK:
+ incall_record_device = SND_DEVICE_IN_INCALL_REC_TX;
+ break;
+ case AUDIO_SOURCE_VOICE_DOWNLINK:
+ incall_record_device = SND_DEVICE_IN_INCALL_REC_RX;
+ break;
+ case AUDIO_SOURCE_VOICE_CALL:
+ incall_record_device = SND_DEVICE_IN_INCALL_REC_RX_TX;
+ break;
+ default:
+ ALOGI("Invalid source %d", in->source);
+ }
+
+ return incall_record_device;
+}
+
snd_device_t voice_get_incall_rec_snd_device(snd_device_t in_snd_device)
{
snd_device_t incall_record_device = in_snd_device;
diff --git a/hal/voice.h b/hal/voice.h
index 2ef790a..bc9aa21 100644
--- a/hal/voice.h
+++ b/hal/voice.h
@@ -103,5 +103,5 @@
bool enable);
bool voice_is_call_state_active(struct audio_device *adev);
void voice_set_device_mute_flag (struct audio_device *adev, bool state);
-
+snd_device_t voice_get_incall_rec_backend_device(struct stream_in *in);
#endif //VOICE_H