From 84254c10d2898fbe7f45934bcaad94a217cc22ab Mon Sep 17 00:00:00 2001 From: "Matthias P. Braendli" Date: Fri, 26 Feb 2016 01:34:08 +0100 Subject: Make ALSA input conditional --- src/AlsaInput.cpp | 9 ++++++--- src/AlsaInput.h | 17 ++++++++++------- src/VLCInput.h | 4 +--- src/common.h | 29 +++++++++++++++++++++++++++++ src/dabplus-enc.cpp | 23 ++++++++++++++++++++++- 5 files changed, 68 insertions(+), 14 deletions(-) create mode 100644 src/common.h (limited to 'src') diff --git a/src/AlsaInput.cpp b/src/AlsaInput.cpp index 492ff62..e5fd420 100644 --- a/src/AlsaInput.cpp +++ b/src/AlsaInput.cpp @@ -17,12 +17,13 @@ * ------------------------------------------------------------------- */ +#include "config.h" +#if HAVE_ALSA + +#include "AlsaInput.h" #include #include - #include - -#include "AlsaInput.h" #include using namespace std; @@ -159,3 +160,5 @@ ssize_t AlsaInputDirect::read(uint8_t* buf, size_t length) return (read > 0) ? read * bytes_per_frame : read; } +#endif // HAVE_ALSA + diff --git a/src/AlsaInput.h b/src/AlsaInput.h index 4f63ab5..34886df 100644 --- a/src/AlsaInput.h +++ b/src/AlsaInput.h @@ -19,6 +19,11 @@ #ifndef __ALSA_H_ #define __ALSA_H_ + +#include "config.h" + +#if HAVE_ALSA + #include #include #include @@ -27,12 +32,7 @@ #include #include "SampleQueue.h" - -// 16 bits per sample is fine for now -#define BYTES_PER_SAMPLE 2 - -// How many samples we insert into the queue each call -#define NUM_SAMPLES_PER_CALL 10 // 10 samples @ 32kHz = 3.125ms +#include "common.h" /* Common functionality for the direct alsa input and the * threaded alsa input @@ -132,5 +132,8 @@ class AlsaInputThreaded : public AlsaInput }; -#endif +#endif // HAVE_ALSA + +#endif // __ALSA_H_ + diff --git a/src/VLCInput.h b/src/VLCInput.h index 27d6237..5139b89 100644 --- a/src/VLCInput.h +++ b/src/VLCInput.h @@ -34,9 +34,7 @@ #include #include "SampleQueue.h" - -// 16 bits per sample is fine for now -#define BYTES_PER_SAMPLE 2 +#include "common.h" /* Common functionality for the direct libvlc input and the * threaded libvlc input diff --git a/src/common.h b/src/common.h new file mode 100644 index 0000000..cd856f4 --- /dev/null +++ b/src/common.h @@ -0,0 +1,29 @@ +/* ------------------------------------------------------------------ + * Copyright (C) 2016 Matthias P. Braendli + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. + * See the License for the specific language governing permissions + * and limitations under the License. + * ------------------------------------------------------------------- + */ + +#ifndef __COMMON_H_ +#define __COMMON_H_ + +// 16 bits per sample is fine for now +#define BYTES_PER_SAMPLE 2 + +// How many samples we insert into the queue each call +#define NUM_SAMPLES_PER_CALL 10 // 10 samples @ 32kHz = 3.125ms + +#endif // __COMMON_H_ + diff --git a/src/dabplus-enc.cpp b/src/dabplus-enc.cpp index b865a61..42a58f9 100644 --- a/src/dabplus-enc.cpp +++ b/src/dabplus-enc.cpp @@ -24,6 +24,7 @@ #include "VLCInput.h" #include "SampleQueue.h" #include "zmq.hpp" +#include "common.h" extern "C" { #include "encryption.h" @@ -41,6 +42,7 @@ extern "C" { #include #include #include +#include #include "libAACenc/include/aacenc_lib.h" @@ -49,6 +51,8 @@ extern "C" { #include "libtoolame-dab/toolame.h" } + + // Enumerate which encoder we can use enum class encoder_selection_t { fdk_dabplus, @@ -83,7 +87,7 @@ void usage(const char* name) { "This encoder includes PAD (DLS and MOT Slideshow) support by\n" "http://rd.csp.it to be used with mot-encoder\n" "\nUsage:\n" - "%s (-i file|-d alsa_device) [OPTION...]\n", + "%s [INPUT SELECTION] [OPTION...]\n", #if defined(GITVERSION) GITVERSION #else @@ -92,7 +96,11 @@ void usage(const char* name) { , name); fprintf(stderr, " For the alsa input:\n" +#if HAVE_ALSA " -d, --device=alsa_device Set ALSA input device (default: \"default\").\n" +#else + " The Alsa input was disabled at compile time\n" +#endif " For the file input:\n" " -i, --input=FILENAME Input filename (default: stdin).\n" " -f, --format={ wav, raw } Set input file format (default: wav).\n" @@ -694,8 +702,10 @@ int main(int argc, char *argv[]) } // We'll use one of the tree possible inputs +#if HAVE_ALSA AlsaInputThreaded alsa_in_threaded(alsa_device, channels, sample_rate, queue); AlsaInputDirect alsa_in_direct(alsa_device, channels, sample_rate); +#endif FileInput file_in(infile, raw_input, sample_rate); #if HAVE_JACK JackInput jack_in(jack_name, channels, sample_rate, queue); @@ -738,6 +748,7 @@ int main(int argc, char *argv[]) } } #endif +#if HAVE_ALSA else if (drift_compensation) { if (alsa_in_threaded.prepare() != 0) { fprintf(stderr, "Alsa with drift compensation: preparation failed\n"); @@ -753,6 +764,12 @@ int main(int argc, char *argv[]) return 1; } } +#else + else { + fprintf(stderr, "No input defined\n"); + return 1; + } +#endif int outbuf_size; std::vector zmqframebuf; @@ -912,11 +929,13 @@ int main(int argc, char *argv[]) } #endif else if (drift_compensation || jack_name) { +#if HAVE_ALSA if (drift_compensation && alsa_in_threaded.fault_detected()) { fprintf(stderr, "Detected fault in alsa input!\n"); retval = 5; break; } +#endif size_t overruns; read_bytes = queue.pop(&input_buf[0], input_buf.size(), &overruns); // returns bytes @@ -930,6 +949,7 @@ int main(int argc, char *argv[]) } } else { +#if HAVE_ALSA read_bytes = alsa_in_direct.read(&input_buf[0], input_buf.size()); if (read_bytes < 0) { break; @@ -937,6 +957,7 @@ int main(int argc, char *argv[]) else if (read_bytes != input_buf.size()) { fprintf(stderr, "Short alsa read !\n"); } +#endif } for (int i = 0; i < read_bytes; i+=4) { -- cgit v1.2.3