Merge "hal: fix hifi filter snd device selection."
diff --git a/hal/acdb.h b/hal/acdb.h
index 7f5fad7..e0d4628 100644
--- a/hal/acdb.h
+++ b/hal/acdb.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013-2018, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2013-2019, The Linux Foundation. All rights reserved.
* Not a Contribution.
*
* Copyright (C) 2013 The Android Open Source Project
@@ -50,6 +50,7 @@
typedef int (*acdb_init_v4_t)(void *, int);
typedef void (*acdb_send_audio_cal_t)(int, int, int , int);
typedef void (*acdb_send_audio_cal_v3_t)(int, int, int, int, int);
+typedef void (*acdb_send_audio_cal_v4_t)(int, int, int, int, int, int);
typedef void (*acdb_send_voice_cal_t)(int, int);
typedef int (*acdb_reload_vocvoltable_t)(int);
typedef int (*acdb_get_default_app_type_t)(void);
diff --git a/hal/audio_extn/a2dp.c b/hal/audio_extn/a2dp.c
index 534abb3..14bf29c 100644
--- a/hal/audio_extn/a2dp.c
+++ b/hal/audio_extn/a2dp.c
@@ -209,6 +209,7 @@
APTX_AD_SR_UNCHANGED = 0x0,
APTX_AD_48 = 0x1, // 48 KHz default
APTX_AD_44_1 = 0x2, // 44.1kHz
+ APTX_AD_96 = 0x3, // 96KHz
} enc_aptx_ad_s_rate;
typedef void (*bt_audio_pre_init_t)(void);
@@ -1708,7 +1709,7 @@
a2dp.enc_channels = CH_MONO;
aptx_dsp_cfg->custom_cfg.num_channels = CH_MONO;
aptx_dsp_cfg->custom_cfg.channel_mapping[0] = PCM_CHANNEL_C;
- break;
+ break;
}
switch(aptx_dsp_cfg->aptx_ad_cfg.sampling_freq) {
case APTX_AD_SR_UNCHANGED:
@@ -1720,7 +1721,7 @@
case APTX_AD_44_1:
a2dp.enc_sampling_rate = SAMPLING_RATE_441K;
aptx_dsp_cfg->custom_cfg.sample_rate = SAMPLING_RATE_441K;
- break;
+ break;
}
ALOGV("Successfully updated APTX AD enc format with \
samplingrate: %d channels:%d",
@@ -1781,7 +1782,7 @@
a2dp.enc_channels = CH_MONO;
aptx_dsp_cfg->custom_cfg.num_channels = CH_MONO;
aptx_dsp_cfg->custom_cfg.channel_mapping[0] = PCM_CHANNEL_C;
- break;
+ break;
}
switch(aptx_dsp_cfg->aptx_ad_cfg.sampling_freq) {
case APTX_AD_SR_UNCHANGED:
@@ -1793,7 +1794,11 @@
case APTX_AD_44_1:
a2dp.enc_sampling_rate = SAMPLING_RATE_441K;
aptx_dsp_cfg->custom_cfg.sample_rate = SAMPLING_RATE_441K;
- break;
+ break;
+ case APTX_AD_96:
+ a2dp.enc_sampling_rate = SAMPLING_RATE_96K;
+ aptx_dsp_cfg->custom_cfg.sample_rate = SAMPLING_RATE_96K;
+ break;
}
ALOGV("Successfully updated APTX AD enc format with \
samplingrate: %d channels:%d",
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index 1c5b025..976d1c7 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -318,6 +318,7 @@
acdb_deallocate_t acdb_deallocate;
acdb_send_audio_cal_t acdb_send_audio_cal;
acdb_send_audio_cal_v3_t acdb_send_audio_cal_v3;
+ acdb_send_audio_cal_v4_t acdb_send_audio_cal_v4;
acdb_set_audio_cal_t acdb_set_audio_cal;
acdb_get_audio_cal_t acdb_get_audio_cal;
acdb_send_voice_cal_t acdb_send_voice_cal;
@@ -3266,6 +3267,12 @@
ALOGE("%s: Could not find the symbol acdb_send_audio_cal_v3 from %s",
__func__, LIB_ACDB_LOADER);
+ my_data->acdb_send_audio_cal_v4 = (acdb_send_audio_cal_v4_t)dlsym(my_data->acdb_handle,
+ "acdb_loader_send_audio_cal_v4");
+ if (!my_data->acdb_send_audio_cal_v4)
+ ALOGE("%s: Could not find the symbol acdb_send_audio_cal_v4 from %s",
+ __func__, LIB_ACDB_LOADER);
+
my_data->acdb_set_audio_cal = (acdb_set_audio_cal_t)dlsym(my_data->acdb_handle,
"acdb_loader_set_audio_cal_v2");
if (!my_data->acdb_set_audio_cal)
@@ -4951,6 +4958,7 @@
bool is_incall_rec_usecase = false;
snd_device_t incall_rec_device;
int sample_rate = DEFAULT_OUTPUT_SAMPLING_RATE;
+ struct audio_backend_cfg backend_cfg = {0};
if (voice_is_in_call(my_data->adev))
is_incall_rec_usecase = voice_is_in_call_rec_stream(usecase->stream.in);
@@ -4989,11 +4997,13 @@
acdb_dev_id = acdb_device_table[platform_get_spkr_prot_snd_device(new_snd_device[i])];
sample_rate = audio_extn_utils_get_app_sample_rate_for_device(my_data->adev, usecase,
new_snd_device[i]);
+ platform_get_codec_backend_cfg(my_data->adev, new_snd_device[i], &backend_cfg);
} 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);
+ platform_get_codec_backend_cfg(my_data->adev, snd_device, &backend_cfg);
}
// Do not use Rx path default app type for TX path
@@ -5002,6 +5012,12 @@
app_type = DEFAULT_APP_TYPE_TX_PATH;
}
+ /* Override backend cfg sample rate in calibration for vi feedback usecase */
+ if (usecase->id == USECASE_AUDIO_SPKR_CALIB_TX) {
+ ALOGV("Reset backend cfg sample rate to 8KHz for spkr calib Tx use case");
+ backend_cfg.sample_rate = sample_rate;
+ }
+
if (acdb_dev_id < 0) {
ALOGE("%s: Could not find acdb id for device(%d)",
__func__, new_snd_device[i]);
@@ -5026,7 +5042,11 @@
else
acdb_dev_type = ACDB_DEV_TYPE_IN;
- if (my_data->acdb_send_audio_cal_v3) {
+ if (my_data->acdb_send_audio_cal_v4) {
+ my_data->acdb_send_audio_cal_v4(acdb_dev_id, acdb_dev_type,
+ app_type, sample_rate, i,
+ backend_cfg.sample_rate);
+ } else if (my_data->acdb_send_audio_cal_v3) {
my_data->acdb_send_audio_cal_v3(acdb_dev_id, acdb_dev_type,
app_type, sample_rate, i);
} else if (my_data->acdb_send_audio_cal) {