hal: add support for external speaker driver library
Change-Id: I599c96793097ab6202412cbd55c8e9165c226eed
Bug: 17319721
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 1fee1d3..9908b81 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -1005,6 +1005,8 @@
list_remove(&uc_info->list);
free(uc_info);
+ audio_extn_extspk_update(adev->extspk);
+
/* Must be called after removing the usecase from list */
if (out->devices & AUDIO_DEVICE_OUT_AUX_DIGITAL)
check_and_set_hdmi_channels(adev, DEFAULT_HDMI_OUT_CHANNELS);
@@ -1045,6 +1047,8 @@
select_devices(adev, out->usecase);
+ audio_extn_extspk_update(adev->extspk);
+
ALOGV("%s: Opening PCM device card_id(%d) device_id(%d) format(%#x)",
__func__, adev->snd_card, out->pcm_device_id, out->config.format);
if (out->usecase != USECASE_AUDIO_PLAYBACK_OFFLOAD) {
@@ -1353,6 +1357,9 @@
pthread_mutex_unlock(&adev->lock);
pthread_mutex_unlock(&out->lock);
+
+ /*handles device and call state changes*/
+ audio_extn_extspk_update(adev->extspk);
}
if (out->usecase == USECASE_AUDIO_PLAYBACK_OFFLOAD) {
@@ -2280,6 +2287,9 @@
adev->mode = mode;
}
pthread_mutex_unlock(&adev->lock);
+
+ audio_extn_extspk_set_mode(adev->extspk, mode);
+
return 0;
}
@@ -2566,6 +2576,7 @@
audio_route_free(adev->audio_route);
free(adev->snd_dev_ref_cnt);
platform_deinit(adev->platform);
+ audio_extn_extspk_deinit(adev->extspk);
for (i = 0; i < ARRAY_SIZE(adev->use_case_table); ++i) {
pcm_params_free(adev->use_case_table[i]);
}
@@ -2649,6 +2660,8 @@
return -EINVAL;
}
+ adev->extspk = audio_extn_extspk_init(adev);
+
if (access(VISUALIZER_LIBRARY_PATH, R_OK) == 0) {
adev->visualizer_lib = dlopen(VISUALIZER_LIBRARY_PATH, RTLD_NOW);
if (adev->visualizer_lib == NULL) {