diff options
| -rw-r--r-- | src/DabMod.cpp | 2 | ||||
| -rw-r--r-- | src/OutputUHD.cpp | 85 | ||||
| -rw-r--r-- | src/OutputUHD.h | 9 | 
3 files changed, 49 insertions, 47 deletions
| diff --git a/src/DabMod.cpp b/src/DabMod.cpp index 214231c..77e5da4 100644 --- a/src/DabMod.cpp +++ b/src/DabMod.cpp @@ -535,7 +535,7 @@ int main(int argc, char* argv[])              outputuhd_conf.txgain = pt.get("uhdoutput.txgain", 0.0);              outputuhd_conf.frequency = pt.get<double>("uhdoutput.frequency", 0);              std::string chan = pt.get<std::string>("uhdoutput.channel", ""); -			outputuhd_conf.dabMode = dabMode; +            outputuhd_conf.dabMode = dabMode;              if (outputuhd_conf.frequency == 0 && chan == "") {                  std::cerr << "       UHD output enabled, but neither frequency nor channel defined.\n"; diff --git a/src/OutputUHD.cpp b/src/OutputUHD.cpp index bfd24a8..d033700 100644 --- a/src/OutputUHD.cpp +++ b/src/OutputUHD.cpp @@ -225,7 +225,7 @@ OutputUHD::OutputUHD(          uwd.check_refclk_loss = true;      } -	SetDelayBuffer(config.dabMode); +    SetDelayBuffer(config.dabMode);      shared_ptr<barrier> b(new barrier(2));      mySyncBarrier = b; @@ -249,30 +249,30 @@ OutputUHD::~OutputUHD()  void OutputUHD::SetDelayBuffer(unsigned int dabMode)  { -	// find out the duration of the transmission frame (Table 2 in ETSI 300 401) +    // find out the duration of the transmission frame (Table 2 in ETSI 300 401)      switch (dabMode) { -    case 0: // could happen when called from constructor and we take the mode from ETI -		myTFDurationMs = 0; -		break; -    case 1: -		myTFDurationMs = 96; -        break; -    case 2: -		myTFDurationMs = 24; -        break; -    case 3: -		myTFDurationMs = 24; -        break; -    case 4: -		myTFDurationMs = 48; -        break; -    default: -        throw std::runtime_error("OutPutUHD: invalid DAB mode"); +        case 0: // could happen when called from constructor and we take the mode from ETI +            myTFDurationMs = 0; +            break; +        case 1: +            myTFDurationMs = 96; +            break; +        case 2: +            myTFDurationMs = 24; +            break; +        case 3: +            myTFDurationMs = 24; +            break; +        case 4: +            myTFDurationMs = 48; +            break; +        default: +            throw std::runtime_error("OutputUHD: invalid DAB mode");      } -	// The buffer size equals the number of samples per transmission frame so -	// we calculate it by multiplying the duration of the transmission frame -	// with the samplerate. -	myDelayBuf.resize(myTFDurationMs * myConf.sampleRate / 1000); +    // The buffer size equals the number of samples per transmission frame so +    // we calculate it by multiplying the duration of the transmission frame +    // with the samplerate. +    myDelayBuf.resize(myTFDurationMs * myConf.sampleRate / 1000);  }  int OutputUHD::process(Buffer* dataIn, Buffer* dataOut) @@ -310,10 +310,11 @@ int OutputUHD::process(Buffer* dataIn, Buffer* dataOut)              default: break;          } -		// we only set the delay buffer from the dab mode signaled in ETI if the -		// dab mode was not set in contructor -		if (myTFDurationMs == 0) -			SetDelayBuffer(myEtiReader->getMode()); +        // we only set the delay buffer from the dab mode signaled in ETI if the +        // dab mode was not set in contructor +        if (myTFDurationMs == 0) { +            SetDelayBuffer(myEtiReader->getMode()); +        }          activebuffer = 1; @@ -688,21 +689,21 @@ void OutputUHD::set_parameter(const string& parameter, const string& value)      else if (parameter == "staticdelay") {          int64_t adjust;          ss >> adjust; -		if (adjust > (myTFDurationMs * 1000)) -		{ // reset static delay for values outside range -			myStaticDelayUs = 0; -		} -		else -		{ // the new adjust value is added to the existing delay and the result -			// is wrapped around at TF duration -			int newStaticDelayUs = myStaticDelayUs + adjust; -			if (newStaticDelayUs > (myTFDurationMs * 1000)) -				myStaticDelayUs = newStaticDelayUs - (myTFDurationMs * 1000); -			else if (newStaticDelayUs < 0) -				myStaticDelayUs = newStaticDelayUs + (myTFDurationMs * 1000); -			else -				myStaticDelayUs = newStaticDelayUs; -		} +        if (adjust > (myTFDurationMs * 1000)) +        { // reset static delay for values outside range +            myStaticDelayUs = 0; +        } +        else +        { // the new adjust value is added to the existing delay and the result +            // is wrapped around at TF duration +            int newStaticDelayUs = myStaticDelayUs + adjust; +            if (newStaticDelayUs > (myTFDurationMs * 1000)) +                myStaticDelayUs = newStaticDelayUs - (myTFDurationMs * 1000); +            else if (newStaticDelayUs < 0) +                myStaticDelayUs = newStaticDelayUs + (myTFDurationMs * 1000); +            else +                myStaticDelayUs = newStaticDelayUs; +        }      }      else if (parameter == "iqbalance") {          ss >> myConf.frequency; diff --git a/src/OutputUHD.h b/src/OutputUHD.h index d002e98..c5d561b 100644 --- a/src/OutputUHD.h +++ b/src/OutputUHD.h @@ -171,7 +171,7 @@ struct OutputUHDConfig {      double txgain;      bool enableSync;      bool muteNoTimestamps; -	unsigned dabMode; +    unsigned dabMode;      /* allowed values : auto, int, sma, mimo */      std::string refclk_src; @@ -232,12 +232,13 @@ class OutputUHD: public ModOutput, public RemoteControllable {          bool myMuting;      private: -		// methods -		void SetDelayBuffer(unsigned int dabMode); +        // Resize the internal delay buffer according to the dabMode and +        // the sample rate. +        void SetDelayBuffer(unsigned int dabMode);          // data          int myStaticDelayUs; // static delay in microseconds -		int myTFDurationMs; // TF duration in milliseconds +        int myTFDurationMs; // TF duration in milliseconds          std::vector<complexf> myDelayBuf;          size_t lastLen;  }; | 
