diff --git a/cava.c b/cava.c index 0eb24d3..f0330b0 100644 --- a/cava.c +++ b/cava.c @@ -6,7 +6,8 @@ #include #include #include -#include +#include + #include #include #define max(a,b) \ @@ -22,8 +23,6 @@ #include #include #include -#include "output/terminal_noncurses.h" -#include "output/terminal_noncurses.c" #ifdef NCURSES #include "output/terminal_ncurses.h" @@ -32,10 +31,20 @@ #include "output/terminal_bcircle.c" #endif -#include "input/alsa.h" -#include "input/alsa.c" +#include "output/terminal_noncurses.h" +#include "output/terminal_noncurses.c" + #include "input/fifo.h" #include "input/fifo.c" + +#ifdef ALSA +#include +#include "input/alsa.h" +#include "input/alsa.c" +#endif + + + #include @@ -142,7 +151,13 @@ FILE *fp; // config: parse ini dictionary* ini = iniparser_load(configPath); - inputMethod = (char *)iniparser_getstring(ini, "input:method", "alsa"); + #ifdef ALSA + inputMethod = (char *)iniparser_getstring(ini, "input:method", "alsa"); + #endif + #ifndef ALSA + inputMethod = (char *)iniparser_getstring(ini, "input:method", "fifo"); + #endif + #ifdef NCURSES outputMethod = (char *)iniparser_getstring(ini, "output:method", "ncurses"); #endif @@ -195,14 +210,26 @@ void validate_config() // validate: input method if (strcmp(inputMethod, "alsa") == 0) { im = 1; + #ifndef ALSA + fprintf(stderr, + "cava was built without alsa support, install alsa dev files and run make clean && ./configure && make again\n"); + exit(EXIT_FAILURE); + #endif } if (strcmp(inputMethod, "fifo") == 0) { im = 2; } if (im == 0) { + #ifdef ALSA fprintf(stderr, "input method %s is not supported, supported methods are: 'alsa' and 'fifo'\n", inputMethod); + #endif + #ifndef ALSA + fprintf(stderr, + "input method %s is not supported, supported methods are: 'fifo'\n", + inputMethod); + #endif exit(EXIT_FAILURE); } @@ -214,7 +241,7 @@ void validate_config() "cava was built without ncurses support, install ncursesw dev files and run make clean && ./configure && make again\n"); exit(EXIT_FAILURE); #endif - } + } if (strcmp(outputMethod, "circle") == 0) { om = 2; #ifndef NCURSES @@ -222,7 +249,7 @@ void validate_config() "cava was built without ncurses support, install ncursesw dev files and run make clean && ./configure && make again\n"); exit(EXIT_FAILURE); #endif - } + } if (strcmp(outputMethod, "noncurses") == 0) { om = 3; bgcol = 0; @@ -324,6 +351,7 @@ void validate_config() // read & validate: eq } +#ifdef ALSA static bool is_loop_device_for_sure(const char * text) { const char * const LOOPBACK_DEVICE_PREFIX = "hw:Loopback,"; return strncmp(text, LOOPBACK_DEVICE_PREFIX, strlen(LOOPBACK_DEVICE_PREFIX)) == 0; @@ -336,6 +364,7 @@ static bool directory_exists(const char * path) { return exists; } +#endif int * separate_freq_bands(fftw_complex out[M / 2 + 1][2], int bars, int lcf[200], int hcf[200], float k[200], int channel) { int o,i; @@ -504,7 +533,8 @@ Options:\n\ // config: validate validate_config(); - // input: wait for the input to be ready + #ifdef ALSA + // input_alsa: wait for the input to be ready if (im == 1) { if (is_loop_device_for_sure(audio.source)) { if (directory_exists("/sys/")) { @@ -541,6 +571,7 @@ Options:\n\ #endif } + #endif if (im == 2) { thr_id = pthread_create(&p_thread, NULL, input_fifo, diff --git a/configure.ac b/configure.ac index adc2cfa..dcd9bbc 100644 --- a/configure.ac +++ b/configure.ac @@ -119,8 +119,6 @@ else AC_MSG_NOTICE([Building iniparser]) fi -dnl to do, use "noncurses mode" if no ncurses installed. use mpd fifo only if no alsa dev files found - AC_CONFIG_FILES([Makefile]) AC_OUTPUT diff --git a/input/alsa.c b/input/alsa.c index fc19049..652757e 100644 --- a/input/alsa.c +++ b/input/alsa.c @@ -1,14 +1,3 @@ -struct audio_data { - - int audio_out_r[2048]; - int audio_out_l[2048]; - int format; - unsigned int rate ; - char *source; //alsa device or fifo path - int im; //input mode alsa or fifo - int channels; -}; - // input: ALSA void* input_alsa(void* data) { diff --git a/input/fifo.c b/input/fifo.c index e66fedc..a1f6ba5 100644 --- a/input/fifo.c +++ b/input/fifo.c @@ -1,3 +1,13 @@ +struct audio_data { + + int audio_out_r[2048]; + int audio_out_l[2048]; + int format; + unsigned int rate ; + char *source; //alsa device or fifo path + int im; //input mode alsa or fifo + int channels; +}; //input: FIFO diff --git a/output/terminal_ncurses.c b/output/terminal_ncurses.c index 11d1087..8f1d5bd 100644 --- a/output/terminal_ncurses.c +++ b/output/terminal_ncurses.c @@ -2,6 +2,9 @@ #include #include #include +#include + + int init_terminal_ncurses(int col, int bgcol) {