Loading hal/audio_hw.c +8 −3 Original line number Diff line number Diff line Loading @@ -2115,8 +2115,13 @@ int start_output_stream(struct stream_out *out) if (out->offload_callback) compress_nonblock(out->compr, out->non_blocking); if (adev->visualizer_start_output != NULL) adev->visualizer_start_output(out->handle, out->pcm_device_id); if (adev->visualizer_start_output != NULL) { int capture_device_id = platform_get_pcm_device_id(USECASE_AUDIO_RECORD_AFE_PROXY, PCM_CAPTURE); adev->visualizer_start_output(out->handle, out->pcm_device_id, adev->snd_card, capture_device_id); } if (adev->offload_effects_start_output != NULL) adev->offload_effects_start_output(out->handle, out->pcm_device_id); } else if (out->usecase == USECASE_AUDIO_PLAYBACK_MMAP) { Loading Loading @@ -5618,7 +5623,7 @@ static int adev_open(const hw_module_t *module, const char *name, } else { ALOGV("%s: DLOPEN successful for %s", __func__, VISUALIZER_LIBRARY_PATH); adev->visualizer_start_output = (int (*)(audio_io_handle_t, int))dlsym(adev->visualizer_lib, (int (*)(audio_io_handle_t, int, int, int))dlsym(adev->visualizer_lib, "visualizer_hal_start_output"); adev->visualizer_stop_output = (int (*)(audio_io_handle_t, int))dlsym(adev->visualizer_lib, Loading hal/audio_hw.h +1 −1 Original line number Diff line number Diff line Loading @@ -337,7 +337,7 @@ struct audio_device { card_status_t card_status; void *visualizer_lib; int (*visualizer_start_output)(audio_io_handle_t, int); int (*visualizer_start_output)(audio_io_handle_t, int, int, int); int (*visualizer_stop_output)(audio_io_handle_t, int); /* The pcm_params use_case_table is loaded by adev_verify_devices() upon Loading visualizer/Android.mk +0 −8 Original line number Diff line number Diff line Loading @@ -27,14 +27,6 @@ LOCAL_SHARED_LIBRARIES := \ libdl \ libtinyalsa # HACK to set the right record proxy effect card number. # It should be retrieved from the primary hal USECASE_AUDIO_RECORD_AFE_PROXY. ifneq ($(filter msm8998,$(TARGET_BOARD_PLATFORM)),) LOCAL_CFLAGS := -DCAPTURE_DEVICE=7 else LOCAL_CFLAGS := -DCAPTURE_DEVICE=8 endif LOCAL_CFLAGS += \ -Wall \ -Werror \ Loading visualizer/offload_visualizer.c +17 −8 Original line number Diff line number Diff line Loading @@ -145,6 +145,12 @@ const effect_descriptor_t *descriptors[] = { NULL, }; struct pcm_capture_config { int snd_card_num; int capture_device_id; }; struct pcm_capture_config capture_config; pthread_once_t once = PTHREAD_ONCE_INIT; int init_status; Loading Loading @@ -172,16 +178,12 @@ bool exit_thread; /* 0 if the capture thread was created successfully */ int thread_status; #define DSP_OUTPUT_LATENCY_MS 0 /* Fudge factor for latency after capture point in audio DSP */ /* Retry for delay for mixer open */ #define RETRY_NUMBER 10 #define RETRY_US 500000 #define MIXER_CARD 0 #define SOUND_CARD 0 /* Proxy port supports only MMAP read and those fixed parameters*/ #define AUDIO_CAPTURE_CHANNEL_COUNT 2 #define AUDIO_CAPTURE_SMP_RATE 48000 Loading Loading @@ -338,10 +340,10 @@ void *capture_thread_loop(void *arg __unused) pthread_mutex_lock(&lock); mixer = mixer_open(MIXER_CARD); mixer = mixer_open(capture_config.snd_card_num); while (mixer == NULL && retry_num < RETRY_NUMBER) { usleep(RETRY_US); mixer = mixer_open(MIXER_CARD); mixer = mixer_open(capture_config.snd_card_num); retry_num++; } if (mixer == NULL) { Loading @@ -357,7 +359,8 @@ void *capture_thread_loop(void *arg __unused) if (!capture_enabled) { ret = configure_proxy_capture(mixer, 1); if (ret == 0) { pcm = pcm_open(SOUND_CARD, CAPTURE_DEVICE, pcm = pcm_open(capture_config.snd_card_num, capture_config.capture_device_id, PCM_IN|PCM_MMAP|PCM_NOIRQ, &pcm_config_capture); if (pcm && !pcm_is_ready(pcm)) { ALOGW("%s: %s", __func__, pcm_get_error(pcm)); Loading Loading @@ -427,7 +430,8 @@ void *capture_thread_loop(void *arg __unused) */ __attribute__ ((visibility ("default"))) int visualizer_hal_start_output(audio_io_handle_t output, int pcm_id) { int visualizer_hal_start_output(audio_io_handle_t output, int pcm_id, int card_number, int pcm_capture_id) { int ret = 0; struct listnode *node; Loading @@ -444,6 +448,11 @@ int visualizer_hal_start_output(audio_io_handle_t output, int pcm_id) { goto exit; } ALOGV("%s card number %d pcm_capture_id %d", __func__, card_number, pcm_capture_id); capture_config.snd_card_num = card_number; capture_config.capture_device_id = pcm_capture_id; output_context_t *out_ctxt = (output_context_t *)malloc(sizeof(output_context_t)); out_ctxt->handle = output; list_init(&out_ctxt->effects_list); Loading Loading
hal/audio_hw.c +8 −3 Original line number Diff line number Diff line Loading @@ -2115,8 +2115,13 @@ int start_output_stream(struct stream_out *out) if (out->offload_callback) compress_nonblock(out->compr, out->non_blocking); if (adev->visualizer_start_output != NULL) adev->visualizer_start_output(out->handle, out->pcm_device_id); if (adev->visualizer_start_output != NULL) { int capture_device_id = platform_get_pcm_device_id(USECASE_AUDIO_RECORD_AFE_PROXY, PCM_CAPTURE); adev->visualizer_start_output(out->handle, out->pcm_device_id, adev->snd_card, capture_device_id); } if (adev->offload_effects_start_output != NULL) adev->offload_effects_start_output(out->handle, out->pcm_device_id); } else if (out->usecase == USECASE_AUDIO_PLAYBACK_MMAP) { Loading Loading @@ -5618,7 +5623,7 @@ static int adev_open(const hw_module_t *module, const char *name, } else { ALOGV("%s: DLOPEN successful for %s", __func__, VISUALIZER_LIBRARY_PATH); adev->visualizer_start_output = (int (*)(audio_io_handle_t, int))dlsym(adev->visualizer_lib, (int (*)(audio_io_handle_t, int, int, int))dlsym(adev->visualizer_lib, "visualizer_hal_start_output"); adev->visualizer_stop_output = (int (*)(audio_io_handle_t, int))dlsym(adev->visualizer_lib, Loading
hal/audio_hw.h +1 −1 Original line number Diff line number Diff line Loading @@ -337,7 +337,7 @@ struct audio_device { card_status_t card_status; void *visualizer_lib; int (*visualizer_start_output)(audio_io_handle_t, int); int (*visualizer_start_output)(audio_io_handle_t, int, int, int); int (*visualizer_stop_output)(audio_io_handle_t, int); /* The pcm_params use_case_table is loaded by adev_verify_devices() upon Loading
visualizer/Android.mk +0 −8 Original line number Diff line number Diff line Loading @@ -27,14 +27,6 @@ LOCAL_SHARED_LIBRARIES := \ libdl \ libtinyalsa # HACK to set the right record proxy effect card number. # It should be retrieved from the primary hal USECASE_AUDIO_RECORD_AFE_PROXY. ifneq ($(filter msm8998,$(TARGET_BOARD_PLATFORM)),) LOCAL_CFLAGS := -DCAPTURE_DEVICE=7 else LOCAL_CFLAGS := -DCAPTURE_DEVICE=8 endif LOCAL_CFLAGS += \ -Wall \ -Werror \ Loading
visualizer/offload_visualizer.c +17 −8 Original line number Diff line number Diff line Loading @@ -145,6 +145,12 @@ const effect_descriptor_t *descriptors[] = { NULL, }; struct pcm_capture_config { int snd_card_num; int capture_device_id; }; struct pcm_capture_config capture_config; pthread_once_t once = PTHREAD_ONCE_INIT; int init_status; Loading Loading @@ -172,16 +178,12 @@ bool exit_thread; /* 0 if the capture thread was created successfully */ int thread_status; #define DSP_OUTPUT_LATENCY_MS 0 /* Fudge factor for latency after capture point in audio DSP */ /* Retry for delay for mixer open */ #define RETRY_NUMBER 10 #define RETRY_US 500000 #define MIXER_CARD 0 #define SOUND_CARD 0 /* Proxy port supports only MMAP read and those fixed parameters*/ #define AUDIO_CAPTURE_CHANNEL_COUNT 2 #define AUDIO_CAPTURE_SMP_RATE 48000 Loading Loading @@ -338,10 +340,10 @@ void *capture_thread_loop(void *arg __unused) pthread_mutex_lock(&lock); mixer = mixer_open(MIXER_CARD); mixer = mixer_open(capture_config.snd_card_num); while (mixer == NULL && retry_num < RETRY_NUMBER) { usleep(RETRY_US); mixer = mixer_open(MIXER_CARD); mixer = mixer_open(capture_config.snd_card_num); retry_num++; } if (mixer == NULL) { Loading @@ -357,7 +359,8 @@ void *capture_thread_loop(void *arg __unused) if (!capture_enabled) { ret = configure_proxy_capture(mixer, 1); if (ret == 0) { pcm = pcm_open(SOUND_CARD, CAPTURE_DEVICE, pcm = pcm_open(capture_config.snd_card_num, capture_config.capture_device_id, PCM_IN|PCM_MMAP|PCM_NOIRQ, &pcm_config_capture); if (pcm && !pcm_is_ready(pcm)) { ALOGW("%s: %s", __func__, pcm_get_error(pcm)); Loading Loading @@ -427,7 +430,8 @@ void *capture_thread_loop(void *arg __unused) */ __attribute__ ((visibility ("default"))) int visualizer_hal_start_output(audio_io_handle_t output, int pcm_id) { int visualizer_hal_start_output(audio_io_handle_t output, int pcm_id, int card_number, int pcm_capture_id) { int ret = 0; struct listnode *node; Loading @@ -444,6 +448,11 @@ int visualizer_hal_start_output(audio_io_handle_t output, int pcm_id) { goto exit; } ALOGV("%s card number %d pcm_capture_id %d", __func__, card_number, pcm_capture_id); capture_config.snd_card_num = card_number; capture_config.capture_device_id = pcm_capture_id; output_context_t *out_ctxt = (output_context_t *)malloc(sizeof(output_context_t)); out_ctxt->handle = output; list_init(&out_ctxt->effects_list); Loading