From 415c6de26b164aad462c9051451cb0b324ac2ffc Mon Sep 17 00:00:00 2001 From: "Matthias P. Braendli" Date: Fri, 18 Sep 2015 11:53:03 +0200 Subject: Keep FIR filtertaps after modulator restart --- src/DabModulator.cpp | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) (limited to 'src/DabModulator.cpp') diff --git a/src/DabModulator.cpp b/src/DabModulator.cpp index dbd3528..ebfcd63 100644 --- a/src/DabModulator.cpp +++ b/src/DabModulator.cpp @@ -61,7 +61,7 @@ DabModulator::DabModulator( unsigned outputRate, unsigned clockRate, unsigned dabMode, GainMode gainMode, float& digGain, float normalise, - std::string filterTapsFilename + std::string& filterTapsFilename ) : ModCodec(ModFormat(1), ModFormat(0)), myOutputRate(outputRate), @@ -219,9 +219,9 @@ int DabModulator::process(Buffer* const dataIn, Buffer* dataOut) new GuardIntervalInserter(myNbSymbols, mySpacing, myNullSize, mySymSize)); - FIRFilter* cifFilter = NULL; + shared_ptr cifFilter; if (myFilterTapsFilename != "") { - cifFilter = new FIRFilter(myFilterTapsFilename); + cifFilter = make_shared(myFilterTapsFilename); cifFilter->enrol_at(*myRCs); } shared_ptr myOutput(new OutputMemory(dataOut)); @@ -362,15 +362,14 @@ int DabModulator::process(Buffer* const dataIn, Buffer* dataOut) myFlowgraph->connect(cifOfdm, cifGain); myFlowgraph->connect(cifGain, cifGuard); - if (myFilterTapsFilename != "") { - shared_ptr cifFilterptr(cifFilter); - myFlowgraph->connect(cifGuard, cifFilterptr); + if (cifFilter) { + myFlowgraph->connect(cifGuard, cifFilter); if (cifRes != NULL) { shared_ptr res(cifRes); - myFlowgraph->connect(cifFilterptr, res); + myFlowgraph->connect(cifFilter, res); myFlowgraph->connect(res, myOutput); } else { - myFlowgraph->connect(cifFilterptr, myOutput); + myFlowgraph->connect(cifFilter, myOutput); } } else { //no filtering -- cgit v1.2.3