1 #pragma once
2 
3 #include <assert.h>
4 #include <errno.h>
5 #include <fcntl.h>
6 #include <inttypes.h>
7 #include <pthread.h>
8 #include <stdbool.h>
9 #include <stdio.h>
10 #include <stdlib.h>
11 #include <string.h>
12 #include <unistd.h>
13 
14 struct audio_data {
15     int FFTbassbufferSize;
16     int FFTmidbufferSize;
17     int FFTtreblebufferSize;
18     int bass_index;
19     int mid_index;
20     int treble_index;
21     double *bass_multiplier;
22     double *mid_multiplier;
23     double *treble_multiplier;
24     double *in_bass_r_raw, *in_bass_l_raw;
25     double *in_mid_r_raw, *in_mid_l_raw;
26     double *in_treble_r_raw, *in_treble_l_raw;
27     double *in_bass_r, *in_bass_l;
28     double *in_mid_r, *in_mid_l;
29     double *in_treble_r, *in_treble_l;
30     int format;
31     unsigned int rate;
32     char *source; // alsa device, fifo path or pulse source
33     int im;       // input mode alsa, fifo or pulse
34     unsigned int channels;
35     bool left, right, average;
36     int terminate; // shared variable used to terminate audio thread
37     char error_message[1024];
38 };
39 
40 void reset_output_buffers(struct audio_data *data);
41 
42 int write_to_fftw_input_buffers(int16_t frames, int16_t buf[frames * 2], void *data);
43 
44 extern pthread_mutex_t lock;
45