diff options
Diffstat (limited to 'visualizer/offload_visualizer.c')
-rw-r--r-- | visualizer/offload_visualizer.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/visualizer/offload_visualizer.c b/visualizer/offload_visualizer.c index 94c44a59..d363b778 100644 --- a/visualizer/offload_visualizer.c +++ b/visualizer/offload_visualizer.c @@ -22,6 +22,7 @@ #include <string.h> #include <time.h> #include <sys/prctl.h> +#include <dlfcn.h> #include <cutils/list.h> #include <cutils/log.h> @@ -29,6 +30,15 @@ #include <tinyalsa/asoundlib.h> #include <audio_effects/effect_visualizer.h> +#define LIB_ACDB_LOADER "libacdbloader.so" +#define ACDB_DEV_TYPE_OUT 1 +#define AFE_PROXY_ACDB_ID 45 + +static void* acdb_handle; + +typedef void (*acdb_send_audio_cal_t)(int, int); + +acdb_send_audio_cal_t acdb_send_audio_cal; enum { EFFECT_STATE_UNINITIALIZED, @@ -294,6 +304,9 @@ int configure_proxy_capture(struct mixer *mixer, int value) { const char *proxy_ctl_name = "AFE_PCM_RX Audio Mixer MultiMedia4"; struct mixer_ctl *ctl; + if (value && acdb_send_audio_cal) + acdb_send_audio_cal(AFE_PROXY_ACDB_ID, ACDB_DEV_TYPE_OUT); + ctl = mixer_get_ctl_by_name(mixer, proxy_ctl_name); if (ctl == NULL) { ALOGW("%s: could not get %s ctl", __func__, proxy_ctl_name); @@ -614,6 +627,19 @@ int visualizer_init(effect_context_t *context) set_config(context, &context->config); + if (acdb_handle == NULL) { + acdb_handle = dlopen(LIB_ACDB_LOADER, RTLD_NOW); + if (acdb_handle == NULL) { + ALOGE("%s: DLOPEN failed for %s", __func__, LIB_ACDB_LOADER); + } else { + acdb_send_audio_cal = (acdb_send_audio_cal_t)dlsym(acdb_handle, + "acdb_loader_send_audio_cal"); + if (!acdb_send_audio_cal) + ALOGE("%s: Could not find the symbol acdb_send_audio_cal from %s", + __func__, LIB_ACDB_LOADER); + } + } + return 0; } |