From 00d00a6bb78e4617ab036b866cfc3f27282678dd Mon Sep 17 00:00:00 2001 From: bruceperens Date: Fri, 13 Dec 2013 03:11:59 +0000 Subject: [PATCH] Define Codec and Modem as drivers. This is mostly for testing's sake, so that I can put no-op versions in their place and test the input-to-output path. git-svn-id: https://svn.code.sf.net/p/freetel/code@1342 01035d8c-6547-0410-b346-abe4f91aad63 --- freedv-server/CMakeLists.txt | 23 ++++++-- freedv-server/parameters/c-flags.txt | 2 +- freedv-server/parameters/cxx-flags.txt | 2 +- freedv-server/source/audio_input.cpp | 1 - freedv-server/source/audio_output.cpp | 1 - freedv-server/source/audio_sink.cpp | 9 ++-- .../source/{main.cpp => big_main.cpp} | 38 ++++++++------ freedv-server/source/blank_panel.cpp | 3 +- freedv-server/source/codec.cpp | 11 ++++ freedv-server/source/codec_noop.cpp | 38 ++++++++++++++ freedv-server/source/driver_manager.cpp | 51 +++++++++++++++++- freedv-server/source/drivers.h | 52 +++++++++++++++---- freedv-server/source/keying.cpp | 1 - freedv-server/source/keying_sink.cpp | 4 +- freedv-server/source/modem.cpp | 11 ++++ freedv-server/source/modem_noop.cpp | 38 ++++++++++++++ freedv-server/source/ptt_constant.cpp | 3 +- freedv-server/source/ptt_input.cpp | 1 - freedv-server/source/text_constant.cpp | 3 +- freedv-server/source/text_input.cpp | 1 - freedv-server/source/tiny_main.cpp | 5 ++ freedv-server/source/tone.cpp | 9 ++-- freedv-server/source/user_interface.cpp | 1 - 23 files changed, 252 insertions(+), 56 deletions(-) rename freedv-server/source/{main.cpp => big_main.cpp} (79%) create mode 100644 freedv-server/source/codec.cpp create mode 100644 freedv-server/source/codec_noop.cpp create mode 100644 freedv-server/source/modem.cpp create mode 100644 freedv-server/source/modem_noop.cpp create mode 100644 freedv-server/source/tiny_main.cpp diff --git a/freedv-server/CMakeLists.txt b/freedv-server/CMakeLists.txt index 51c59d60..a01d54fe 100644 --- a/freedv-server/CMakeLists.txt +++ b/freedv-server/CMakeLists.txt @@ -5,6 +5,13 @@ # for the original Qt FreeDV. # Hacked to bits for command-line/server version by Bruce Perens K6BP. # +# Note: There is an embedded and not-embedded version of FreeDV built here. +# The embedded version avoids use of the C++ standard template library, +# templates, and anything that would make it large. It uses tiny_main. +# The non-embedded version uses big_main and driver_manager. It uses +# STL templates, and iostreams, and probably has a tremendous user interface +# driver so none of this matters. +# # Please report questions, comments, problems, or patches to the freetel # mailing list: https://lists.sourceforge.net/lists/listinfo/freetel-codec2 # @@ -77,27 +84,33 @@ message(STATUS "${Param.build-type} ${Version.major}.${Version.minor}.${Version. # # Set cmake internal variables from parameters. # -load_parameters(cxx-flags c-flags) -set(CMAKE_CXX_FLAGS, ${Param.cxx-flags}) -set(CMAKE_C_FLAGS, ${Param.c-flags}) - set(Compile.sources source/audio_input.cpp source/audio_output.cpp source/audio_sink.cpp + source/big_main.cpp source/blank_panel.cpp + source/codec.cpp + source/codec_noop.cpp source/driver_manager.cpp source/keying.cpp source/keying_sink.cpp - source/main.cpp + source/modem.cpp + source/modem_noop.cpp source/ptt_input.cpp source/ptt_constant.cpp + source/run.cpp source/text_constant.cpp source/text_input.cpp + source/tiny_main.cpp source/tone.cpp source/user_interface.cpp ) +load_parameters(cxx-flags) +set_source_files_properties(${Compile.sources} PROPERTIES COMPILE_FLAGS "${Param.cxx-flags}") + + add_executable(freedv-server ${Compile.sources}) find_path(Codec2.include codec2.h PATH_SUFFIXES codec2) diff --git a/freedv-server/parameters/c-flags.txt b/freedv-server/parameters/c-flags.txt index 20143efd..6438c8c9 100644 --- a/freedv-server/parameters/c-flags.txt +++ b/freedv-server/parameters/c-flags.txt @@ -1 +1 @@ --g +-g -pedantic diff --git a/freedv-server/parameters/cxx-flags.txt b/freedv-server/parameters/cxx-flags.txt index 7bed14b8..3df231ea 100644 --- a/freedv-server/parameters/cxx-flags.txt +++ b/freedv-server/parameters/cxx-flags.txt @@ -1 +1 @@ --std=c++11 -g +-std=c++11 -g -pedantic diff --git a/freedv-server/source/audio_input.cpp b/freedv-server/source/audio_input.cpp index 423446be..2f1b2087 100644 --- a/freedv-server/source/audio_input.cpp +++ b/freedv-server/source/audio_input.cpp @@ -1,5 +1,4 @@ #include "drivers.h" -#include namespace FreeDV { AudioInput::AudioInput() diff --git a/freedv-server/source/audio_output.cpp b/freedv-server/source/audio_output.cpp index bf87e2a8..27ed71a6 100644 --- a/freedv-server/source/audio_output.cpp +++ b/freedv-server/source/audio_output.cpp @@ -1,5 +1,4 @@ #include "drivers.h" -#include namespace FreeDV { AudioOutput::AudioOutput() diff --git a/freedv-server/source/audio_sink.cpp b/freedv-server/source/audio_sink.cpp index 60e8b3c5..db10e59c 100644 --- a/freedv-server/source/audio_sink.cpp +++ b/freedv-server/source/audio_sink.cpp @@ -1,5 +1,4 @@ #include "drivers.h" -#include // Audio output "sink", discards the audio, for testing. @@ -17,7 +16,7 @@ namespace FreeDV { float level(float value); // Write audio into the "short" type. - size_t write_short(short * array, size_t length); + int write_short(short * array, int length); }; AudioSink::AudioSink(const char *) @@ -41,12 +40,13 @@ namespace FreeDV { } // Write audio into the "short" type. - size_t - AudioSink::write_short(short * array, size_t length) + int + AudioSink::write_short(short * array, int length) { return 0; } +#ifndef NO_INITIALIZERS static AudioOutput * creator(const char * parameter) { @@ -60,4 +60,5 @@ namespace FreeDV { return true; } static const bool initialized = initializer(); +#endif } diff --git a/freedv-server/source/main.cpp b/freedv-server/source/big_main.cpp similarity index 79% rename from freedv-server/source/main.cpp rename to freedv-server/source/big_main.cpp index 7d266289..25e108ef 100644 --- a/freedv-server/source/main.cpp +++ b/freedv-server/source/big_main.cpp @@ -1,4 +1,10 @@ +#ifndef NO_INITIALIZERS /* + * This is the main program for applications that are not space-limited. + * Any application that is space limited should have its own main that wires drivers to the + * Interfaces class without using DriverManager. Thus, you can get rid of all of the STL + * template use, etc. + * * For the sake of correctness and optimization, I have written whatever I can to be without * side-effects, a style inherited from functional programming. Thus, the excessive use of * "const". - Bruce @@ -29,13 +35,14 @@ static void help(const char * name) static const char message[] = " [options]\n" "\n\tWhere options are these flags:\n\n" + "\t\t--codec or -c\t\tSelect the voice codec.\n" "\t\t--drivers or -d\t\tPrint a list of the available device drivers.\n" "\t\t--help or -h\t\tPrint this message.\n" "\t\t--interface or -i\tSelect the user-interface (graphical or otherwise).\n" "\t\t--keying or -k\t\tSelect the transmitter keying interface.\n" "\t\t--loudspeaker or -l\tSelect the operator audio output interface.\n" "\t\t--microphone or -m\tSelect the operator audio input interface.\n" - "\t\t--mode or -n\t\tSelect the codec mode and modulation.\n" + "\t\t--modem or -M\t\tSelect RF modem.\n" "\t\t--ptt or -p\t\tSelect the push-to-talk input interface.\n" "\t\t--receiver or -r\tSelect the interface for audio input from the receiver.\n" "\t\t--text or -x\t\tSelect the interface for text to be transmitted.\n" @@ -43,15 +50,10 @@ static void help(const char * name) "\n\tLong flags with parameters are in the form of --=\n" "\tShort flags with parameters are in the form of - \n" "\n\tFor example, both of these flags have the same effect:\n" - "\t\t-n 1600\n" - "\t\t--mode=1600\n" - "\n\tMode may be one of:\n" - "\t\t1600\t\tNormal 1600 bit-per-second in 1.275 kHz RF bandwidth.\n" - "\t\t1600-wide\t1600 bit-per-second in 2.125 kHz, wider guard-bands for improved\n" - "\t\t\t\t\tDX performance.\n" - "\n\tFlags used to select devices must have a \":\" argument\n" - "\twhere is the name of a device driver for the selected input/output device,\n" - "\tand is the name or address of the selected device.\n" + "\t\t-M codec2:1600\n" + "\t\t--modem=codec2:1600\n" + "\n\tAll of the flags except for -h or --help must have a \":\" argument\n" + "\twhere is the name of a device driver and is specific to the driver.\n" "\n\tExample:\n" "\t\t --loudspeaker=alsa:default\n" ; @@ -59,13 +61,14 @@ static void help(const char * name) } static const struct option options[] = { + { "codec", required_argument, 0, 'c' }, { "drivers", no_argument, 0, 'd' }, { "help", no_argument, 0, 'h' }, { "interface", required_argument, 0, 'i' }, { "keying", required_argument, 0, 'k' }, { "loudspeaker", required_argument, 0, 'l' }, { "microphone", required_argument, 0, 'm' }, - { "mode", required_argument, 0, 'n' }, + { "modem", required_argument, 0, 'M' }, { "ptt", required_argument, 0, 'p' }, { "receiver", required_argument, 0, 'r' }, { "text", required_argument, 0, 'x' }, @@ -82,7 +85,7 @@ main(int argc, char * * argv) const char * parameter; if ( argc > 1 ) { - while ((command = getopt_long(argc, argv, "dhi:k:l:m:n:p:r:t:x:", options, NULL)) != -1) { + while ((command = getopt_long(argc, argv, "c:dhi:k:l:m:M:n:p:r:t:x:", options, NULL)) != -1) { switch (command) { case 'i': case 'k': @@ -105,6 +108,9 @@ main(int argc, char * * argv) } switch (command) { + case 'c': + i.codec = driver_manager.codec(driver, parameter); + break; case 'd': drivers(); exit(0); @@ -114,9 +120,6 @@ main(int argc, char * * argv) help(argv[0]); exit(1); break; - case 'i': - i.user_interface = driver_manager.user_interface(driver, parameter); - break; case 'k': i.keying = driver_manager.keying(driver, parameter); break; @@ -126,8 +129,8 @@ main(int argc, char * * argv) case 'm': i.microphone = driver_manager.audio_input(driver, parameter); break; - case 'n': - i.mode = optarg; + case 'M': + i.modem = driver_manager.modem(driver, parameter); break; case 'p': i.ptt = driver_manager.ptt_input(driver, parameter); @@ -152,3 +155,4 @@ main(int argc, char * * argv) } return run(&i); } +#endif diff --git a/freedv-server/source/blank_panel.cpp b/freedv-server/source/blank_panel.cpp index 321a1454..5bb284d0 100644 --- a/freedv-server/source/blank_panel.cpp +++ b/freedv-server/source/blank_panel.cpp @@ -1,5 +1,4 @@ #include "drivers.h" -#include // This is a test driver that provides tones. namespace FreeDV { @@ -18,6 +17,7 @@ namespace FreeDV { { } +#ifndef NO_INITIALIZERS static UserInterface * creator(const char * parameter) { @@ -31,4 +31,5 @@ namespace FreeDV { return true; } static const bool initialized = initializer(); +#endif } diff --git a/freedv-server/source/codec.cpp b/freedv-server/source/codec.cpp new file mode 100644 index 00000000..78413ed2 --- /dev/null +++ b/freedv-server/source/codec.cpp @@ -0,0 +1,11 @@ +#include "drivers.h" + +namespace FreeDV { + Codec::Codec() + { + } + + Codec::~Codec() + { + } +} diff --git a/freedv-server/source/codec_noop.cpp b/freedv-server/source/codec_noop.cpp new file mode 100644 index 00000000..dc9da954 --- /dev/null +++ b/freedv-server/source/codec_noop.cpp @@ -0,0 +1,38 @@ +#include "drivers.h" + +// Codec "no-op", just copies its input to its output. For plain SSB voice, and for testing. +namespace FreeDV { + class CodecNoOp : public Codec { + public: + + CodecNoOp(const char *); + ~CodecNoOp(); + + void key(bool value); + + }; + + CodecNoOp::CodecNoOp(const char *) + { + } + + CodecNoOp::~CodecNoOp() + { + } + +#ifndef NO_INITIALIZERS + static Codec * + creator(const char * parameter) + { + return new CodecNoOp(parameter); + } + + static bool + initializer() + { + init_driver_manager().register_codec("no-op", creator); + return true; + } + static const bool initialized = initializer(); +#endif +} diff --git a/freedv-server/source/driver_manager.cpp b/freedv-server/source/driver_manager.cpp index 2990a6e5..81b81682 100644 --- a/freedv-server/source/driver_manager.cpp +++ b/freedv-server/source/driver_manager.cpp @@ -1,3 +1,7 @@ +#ifndef NO_INITIALIZERS +/* + * Don't use DriverManager and main.cpp in space-limited applications. STL stuff it uses is too large. + */ #include #include "drivers.h" @@ -26,18 +30,26 @@ namespace FreeDV { for (auto i = audio_output_drivers.begin(); i != audio_output_drivers.end(); i++ ) s << i->first << " "; s << endl; + s << "Codec: "; + for (auto i = codecs.begin(); i != codecs.end(); i++ ) + s << i->first << " "; + s << endl; s << "Keying: "; for (auto i = keying_drivers.begin(); i != keying_drivers.end(); i++ ) s << i->first << " "; s << endl; - s << "TextInput: "; - for (auto i = text_input_drivers.begin(); i != text_input_drivers.end(); i++ ) + s << "Modem: "; + for (auto i = modems.begin(); i != modems.end(); i++ ) s << i->first << " "; s << endl; s << "PTTInput: "; for (auto i = ptt_input_drivers.begin(); i != ptt_input_drivers.end(); i++ ) s << i->first << " "; s << endl; + s << "TextInput: "; + for (auto i = text_input_drivers.begin(); i != text_input_drivers.end(); i++ ) + s << i->first << " "; + s << endl; s << "UserInterface: "; for (auto i = user_interface_drivers.begin(); i != user_interface_drivers.end(); i++ ) s << i->first << " "; @@ -60,6 +72,17 @@ namespace FreeDV { { } + Codec * + DriverManager::codec(const char * driver, const char * parameter) + { + Codec * (* const creator)(const char * parameter) = codecs[driver]; + + if(creator) + return creator(parameter); + else + return 0; + } + Keying * DriverManager::keying(const char * driver, const char * parameter) { @@ -71,6 +94,17 @@ namespace FreeDV { return 0; } + Modem * + DriverManager::modem(const char * driver, const char * parameter) + { + Modem * (* const creator)(const char * parameter) = modems[driver]; + + if(creator) + return creator(parameter); + else + return 0; + } + PTTInput * DriverManager::ptt_input(const char * driver, const char * parameter) { @@ -116,12 +150,24 @@ namespace FreeDV { audio_output_drivers[driver] = creator; } + void + DriverManager::register_codec(const char * driver, Codec * (*creator)(const char *)) + { + codecs[driver] = creator; + } + void DriverManager::register_keying(const char * driver, Keying * (*creator)(const char *)) { keying_drivers[driver] = creator; } + void + DriverManager::register_modem(const char * driver, Modem * (*creator)(const char *)) + { + modems[driver] = creator; + } + void DriverManager::register_ptt_input(const char * driver, PTTInput * (*creator)(const char *)) { @@ -151,3 +197,4 @@ namespace FreeDV { DriverManager & driver_manager = init_driver_manager(); } +#endif diff --git a/freedv-server/source/drivers.h b/freedv-server/source/drivers.h index 1988a2cd..89074d87 100644 --- a/freedv-server/source/drivers.h +++ b/freedv-server/source/drivers.h @@ -2,10 +2,6 @@ * FreeDV driver interface definitions. */ -#include -#include -#include -#include namespace FreeDV { @@ -30,7 +26,7 @@ namespace FreeDV { virtual float level(float value) = 0; // Read audio into the "short" type. - virtual size_t read_short(short * array, size_t length) = 0; + virtual int read_short(short * array, int length) = 0; }; class AudioOutput { @@ -54,7 +50,17 @@ namespace FreeDV { virtual float level(float value) = 0; // Write audio into the "short" type. - virtual size_t write_short(short * array, size_t length) = 0; + virtual int write_short(short * array, int length) = 0; + }; + + class Codec { + protected: + // Create a codec instance. + + Codec(); + virtual ~Codec() = 0; + + public: }; class Keying { @@ -69,6 +75,16 @@ namespace FreeDV { virtual void key(bool value) = 0; }; + class Modem { + protected: + // Create a modem instance. + + Modem(); + virtual ~Modem() = 0; + + public: + }; + class PTTInput { protected: // The driver calls this member to inform FreeDV that the PTT switch value has changed. @@ -137,27 +153,36 @@ namespace FreeDV { class Interfaces { public: - Interfaces() : user_interface(0), keying(0), loudspeaker(0), microphone(0), - ptt(0), receiver(0), text(0), transmitter(0), mode(0) + Interfaces() : codec(0), keying(0), loudspeaker(0), microphone(0), modem(0), ptt(0), + receiver(0), text(0), transmitter(0), user_interface(0) { } - UserInterface * user_interface; + Codec * codec; Keying * keying; AudioOutput * loudspeaker; AudioInput * microphone; + Modem * modem; PTTInput * ptt; - AudioInput * receiver; TextInput * text; AudioOutput * transmitter; - const char * mode; + AudioInput * receiver; + UserInterface * user_interface; }; +} +#ifndef NO_INITIALIZERS +#include +#include +#include +namespace FreeDV { class DriverManager { private: std::map audio_input_drivers; std::map audio_output_drivers; + std::map codecs; std::map keying_drivers; + std::map modems; std::map ptt_input_drivers; std::map text_input_drivers; std::map user_interface_drivers; @@ -169,14 +194,18 @@ namespace FreeDV { AudioInput * audio_input(const char * driver, const char * parameter); AudioOutput * audio_output(const char * driver, const char * parameter); + Codec * codec(const char * driver, const char * parameter); Keying * keying(const char * driver, const char * parameter); + Modem * modem(const char * driver, const char * parameter); PTTInput * ptt_input(const char * driver, const char * parameter); TextInput * text_input(const char * driver, const char * parameter); UserInterface * user_interface(const char * driver, const char * parameter); void register_audio_input(const char * driver, AudioInput * (*creator)(const char *)); void register_audio_output(const char * driver, AudioOutput * (*creator)(const char *)); + void register_codec(const char * driver, Codec * (*creator)(const char *)); void register_keying(const char * driver, Keying * (*creator)(const char *)); + void register_modem(const char * driver, Modem * (*creator)(const char *)); void register_ptt_input(const char * driver, PTTInput * (*creator)(const char *)); void register_text_input(const char * driver, TextInput * (*creator)(const char *)); void register_user_interface(const char * driver, UserInterface * (*creator)(const char *)); @@ -185,4 +214,5 @@ namespace FreeDV { extern DriverManager & driver_manager; // This version has to be called from static initializers. extern DriverManager & init_driver_manager(); +#endif } diff --git a/freedv-server/source/keying.cpp b/freedv-server/source/keying.cpp index bebcbda2..00ad6074 100644 --- a/freedv-server/source/keying.cpp +++ b/freedv-server/source/keying.cpp @@ -1,5 +1,4 @@ #include "drivers.h" -#include namespace FreeDV { Keying::Keying() diff --git a/freedv-server/source/keying_sink.cpp b/freedv-server/source/keying_sink.cpp index 062bd44b..275c1d6a 100644 --- a/freedv-server/source/keying_sink.cpp +++ b/freedv-server/source/keying_sink.cpp @@ -1,5 +1,4 @@ #include "drivers.h" -#include // Keying output "sink", doesn't key anything. For testing or use with VOX. namespace FreeDV { @@ -26,7 +25,7 @@ namespace FreeDV { { } - +#ifndef NO_INITIALIZERS static Keying * creator(const char * parameter) { @@ -40,4 +39,5 @@ namespace FreeDV { return true; } static const bool initialized = initializer(); +#endif } diff --git a/freedv-server/source/modem.cpp b/freedv-server/source/modem.cpp new file mode 100644 index 00000000..71cb64d9 --- /dev/null +++ b/freedv-server/source/modem.cpp @@ -0,0 +1,11 @@ +#include "drivers.h" + +namespace FreeDV { + Modem::Modem() + { + } + + Modem::~Modem() + { + } +} diff --git a/freedv-server/source/modem_noop.cpp b/freedv-server/source/modem_noop.cpp new file mode 100644 index 00000000..27ead319 --- /dev/null +++ b/freedv-server/source/modem_noop.cpp @@ -0,0 +1,38 @@ +#include "drivers.h" + +// Modem "no-op", just copies its input to its output. For plain SSB voice, and for testing. +namespace FreeDV { + class ModemNoOp : public Modem { + public: + + ModemNoOp(const char *); + ~ModemNoOp(); + + void key(bool value); + + }; + + ModemNoOp::ModemNoOp(const char *) + { + } + + ModemNoOp::~ModemNoOp() + { + } + +#ifndef NO_INITIALIZERS + static Modem * + creator(const char * parameter) + { + return new ModemNoOp(parameter); + } + + static bool + initializer() + { + init_driver_manager().register_modem("no-op", creator); + return true; + } + static const bool initialized = initializer(); +#endif +} diff --git a/freedv-server/source/ptt_constant.cpp b/freedv-server/source/ptt_constant.cpp index f1e9ead5..2cc25f01 100644 --- a/freedv-server/source/ptt_constant.cpp +++ b/freedv-server/source/ptt_constant.cpp @@ -1,5 +1,4 @@ #include "drivers.h" -#include // PTT driver that is constant transmit or constant receive. For testing. namespace FreeDV { @@ -18,6 +17,7 @@ namespace FreeDV { { } +#ifndef NO_INITIALIZERS static PTTInput * creator(const char * parameter) { @@ -31,4 +31,5 @@ namespace FreeDV { return true; } static const bool initialized = initializer(); +#endif } diff --git a/freedv-server/source/ptt_input.cpp b/freedv-server/source/ptt_input.cpp index 012261b7..0496f5cb 100644 --- a/freedv-server/source/ptt_input.cpp +++ b/freedv-server/source/ptt_input.cpp @@ -1,5 +1,4 @@ #include "drivers.h" -#include namespace FreeDV { PTTInput::PTTInput() diff --git a/freedv-server/source/text_constant.cpp b/freedv-server/source/text_constant.cpp index ddef165f..3aa23a1b 100644 --- a/freedv-server/source/text_constant.cpp +++ b/freedv-server/source/text_constant.cpp @@ -1,5 +1,4 @@ #include "drivers.h" -#include // This is a test driver that provides tones. namespace FreeDV { @@ -18,6 +17,7 @@ namespace FreeDV { { } +#ifndef NO_INITIALIZERS static TextInput * creator(const char * parameter) { @@ -31,4 +31,5 @@ namespace FreeDV { return true; } static const bool initialized = initializer(); +#endif } diff --git a/freedv-server/source/text_input.cpp b/freedv-server/source/text_input.cpp index b1f95669..c9daf63e 100644 --- a/freedv-server/source/text_input.cpp +++ b/freedv-server/source/text_input.cpp @@ -1,5 +1,4 @@ #include "drivers.h" -#include namespace FreeDV { TextInput::TextInput() diff --git a/freedv-server/source/tiny_main.cpp b/freedv-server/source/tiny_main.cpp new file mode 100644 index 00000000..c3b86ba9 --- /dev/null +++ b/freedv-server/source/tiny_main.cpp @@ -0,0 +1,5 @@ +#ifdef NO_INITIALIZERS +/* + * Main program for embedded use. + */ +#endif diff --git a/freedv-server/source/tone.cpp b/freedv-server/source/tone.cpp index 9a289086..93126aea 100644 --- a/freedv-server/source/tone.cpp +++ b/freedv-server/source/tone.cpp @@ -1,5 +1,4 @@ #include "drivers.h" -#include // This is a test driver that provides tones. namespace FreeDV { @@ -15,7 +14,7 @@ namespace FreeDV { virtual float level(float value); // Read audio into the "short" type. - virtual size_t read_short(short * array, size_t length); + virtual int read_short(short * array, int length); }; Tone::Tone(const char * parameter) @@ -38,12 +37,13 @@ namespace FreeDV { return value; } - size_t - Tone::read_short(short * array, size_t length) + int + Tone::read_short(short * array, int length) { return 0; } +#ifndef NO_INITIALIZERS static AudioInput * creator(const char * parameter) { @@ -57,4 +57,5 @@ namespace FreeDV { return true; } static const bool initialized = initializer(); +#endif } diff --git a/freedv-server/source/user_interface.cpp b/freedv-server/source/user_interface.cpp index 0e86b7b5..a43a92e9 100644 --- a/freedv-server/source/user_interface.cpp +++ b/freedv-server/source/user_interface.cpp @@ -1,5 +1,4 @@ #include "drivers.h" -#include namespace FreeDV { UserInterface::UserInterface() -- 2.25.1