Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7964549e authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "visualizer: Pass sound card and capture device from audio HAL" into pi-dev

parents 5790f3eb 72a3ceab
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -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) {
@@ -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,
+1 −1
Original line number Diff line number Diff line
@@ -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
+0 −8
Original line number Diff line number Diff line
@@ -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 \
+17 −8
Original line number Diff line number Diff line
@@ -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;
@@ -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
@@ -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) {
@@ -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));
@@ -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;

@@ -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);