diff options
| -rw-r--r-- | doc/example.ini | 7 | ||||
| -rw-r--r-- | src/ConfigParser.cpp | 6 | ||||
| -rw-r--r-- | src/ConfigParser.h | 2 | ||||
| -rw-r--r-- | src/DabModulator.cpp | 3 | 
4 files changed, 16 insertions, 2 deletions
| diff --git a/doc/example.ini b/doc/example.ini index cf56720..d356ee1 100644 --- a/doc/example.ini +++ b/doc/example.ini @@ -128,6 +128,13 @@ rate=2048000  ; and  ;dac_clk_rate=128000000 +; When nonzero, overlap ofdmwindowing samples from each OFDM symbol +; onto the previous and next symbol, using a raised cosine window function. +; This has the effect of smoothing the transition from one symbol to the next, +; which improves spectrum shape. +; In Transmission Mode I, every data symbol is composed of 2552 samples. +;ofdmwindowing=10 +  ; Settings for crest factor reduction. Statistics for ratio of  ; samples that were clipped are available through the RC.  [cfr] diff --git a/src/ConfigParser.cpp b/src/ConfigParser.cpp index 1cc94c0..2c93a57 100644 --- a/src/ConfigParser.cpp +++ b/src/ConfigParser.cpp @@ -159,8 +159,12 @@ static void parse_configfile(      mod_settings.dabMode = pt.get("modulator.mode", mod_settings.dabMode);      mod_settings.clockRate = pt.get("modulator.dac_clk_rate", (size_t)0); -    mod_settings.digitalgain = pt.get("modulator.digital_gain", mod_settings.digitalgain); +    mod_settings.digitalgain = pt.get("modulator.digital_gain", +            mod_settings.digitalgain); +      mod_settings.outputRate = pt.get("modulator.rate", mod_settings.outputRate); +    mod_settings.ofdmWindowOverlap = pt.get("modulator.ofdmwindowing", +            mod_settings.ofdmWindowOverlap);      // FIR Filter parameters:      if (pt.get("firfilter.enabled", 0) == 1) { diff --git a/src/ConfigParser.h b/src/ConfigParser.h index a8d7837..0be3558 100644 --- a/src/ConfigParser.h +++ b/src/ConfigParser.h @@ -82,6 +82,8 @@ struct mod_settings_t {      float cfrClip = 1.0f;      float cfrErrorClip = 1.0f; +    // Settings for the OFDM windowing +    unsigned ofdmWindowOverlap = 0;  #if defined(HAVE_OUTPUT_UHD)      OutputUHDConfig outputuhd_conf; diff --git a/src/DabModulator.cpp b/src/DabModulator.cpp index cded280..0818f4f 100644 --- a/src/DabModulator.cpp +++ b/src/DabModulator.cpp @@ -201,7 +201,8 @@ int DabModulator::process(Buffer* dataOut)          rcs.enrol(cifGain.get());          auto cifGuard = make_shared<GuardIntervalInserter>( -                myNbSymbols, mySpacing, myNullSize, mySymSize); +                myNbSymbols, mySpacing, myNullSize, mySymSize, +                m_settings.ofdmWindowOverlap);          rcs.enrol(cifGuard.get());          shared_ptr<FIRFilter> cifFilter; | 
