Merge "audio: Changes to support AV streaming in offload path"
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 5756590..e29ad82 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -1908,6 +1908,18 @@
/* no audio source uses val == 0 */
if ((in->source != val) && (val != 0)) {
in->source = val;
+ if ((in->source == AUDIO_SOURCE_VOICE_COMMUNICATION) &&
+ (in->dev->mode == AUDIO_MODE_IN_COMMUNICATION) &&
+ (voice_extn_compress_voip_is_format_supported(in->format)) &&
+ (in->config.rate == 8000 || in->config.rate == 16000) &&
+ (popcount(in->channel_mask) == 1)) {
+ ret = voice_extn_compress_voip_open_input_stream(in);
+ if (ret != 0) {
+ ALOGE("%s: Compress voip input cannot be opened, error:%d",
+ __func__, ret);
+ goto done;
+ }
+ }
}
}
@@ -1922,6 +1934,7 @@
}
}
+done:
pthread_mutex_unlock(&adev->lock);
pthread_mutex_unlock(&in->lock);
@@ -2522,16 +2535,7 @@
in->config.rate = config->sample_rate;
in->format = config->format;
- if ((in->dev->mode == AUDIO_MODE_IN_COMMUNICATION) &&
- (voice_extn_compress_voip_is_config_supported(config))) {
- ret = voice_extn_compress_voip_open_input_stream(in);
- if (ret != 0)
- {
- ALOGE("%s: Compress voip input cannot be opened, error:%d",
- __func__, ret);
- goto err_open;
- }
- } else if (channel_count == 6) {
+ if (channel_count == 6) {
if(audio_extn_ssr_get_enabled()) {
if(audio_extn_ssr_init(adev, in)) {
ALOGE("%s: audio_extn_ssr_init failed", __func__);
@@ -2543,7 +2547,8 @@
goto err_open;
}
} else if (audio_extn_compr_cap_enabled() &&
- audio_extn_compr_cap_format_supported(config->format)) {
+ audio_extn_compr_cap_format_supported(config->format) &&
+ (in->dev->mode != AUDIO_MODE_IN_COMMUNICATION)) {
audio_extn_compr_cap_init(adev, in);
} else {
in->config.channels = channel_count;
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index a25991f..e93716d 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -76,7 +76,7 @@
/* Audio calibration related functions */
typedef void (*acdb_deallocate_t)();
-typedef int (*acdb_init_t)();
+typedef int (*acdb_init_t)(char *);
typedef void (*acdb_send_audio_cal_t)(int, int);
typedef void (*acdb_send_voice_cal_t)(int, int);
typedef int (*acdb_reload_vocvoltable_t)(int);
@@ -643,11 +643,11 @@
__func__, LIB_ACDB_LOADER);
my_data->acdb_init = (acdb_init_t)dlsym(my_data->acdb_handle,
- "acdb_loader_init_ACDB");
+ "acdb_loader_init_v2");
if (my_data->acdb_init == NULL)
- ALOGE("%s: dlsym error %s for acdb_loader_init_ACDB", __func__, dlerror());
+ ALOGE("%s: dlsym error %s for acdb_loader_init_v2", __func__, dlerror());
else
- my_data->acdb_init();
+ my_data->acdb_init(snd_card_name);
}
/* Initialize ACDB ID's */