kopia lustrzana https://github.com/AlexandreRouma/SDRPlusPlus
				
				
				
			
							rodzic
							
								
									ed49ad6f7f
								
							
						
					
					
						commit
						f5d6e609d7
					
				| 
						 | 
				
			
			@ -148,9 +148,6 @@ namespace dsp {
 | 
			
		|||
            if (running) {
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            if (blockSize < 1 ) {
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            _blockSize = blockSize;
 | 
			
		||||
            output.setMaxLatency(blockSize * 2);
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -159,9 +156,6 @@ namespace dsp {
 | 
			
		|||
            if (running) {
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            if (skip < 0 ) {
 | 
			
		||||
                skip = 0;
 | 
			
		||||
            }
 | 
			
		||||
            _skip = skip;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -170,9 +164,20 @@ namespace dsp {
 | 
			
		|||
    private:
 | 
			
		||||
        static void _worker(BlockDecimator* _this) {
 | 
			
		||||
            complex_t* buf = new complex_t[_this->_blockSize];
 | 
			
		||||
            bool delay = _this->_skip < 0;
 | 
			
		||||
 | 
			
		||||
            int readCount = std::min<int>(_this->_blockSize + _this->_skip, _this->_blockSize);
 | 
			
		||||
            int skip = std::max<int>(_this->_skip, 0);
 | 
			
		||||
            int delaySize = (-_this->_skip) * sizeof(complex_t);
 | 
			
		||||
 | 
			
		||||
            complex_t* start = &buf[std::max<int>(-_this->_skip, 0)];
 | 
			
		||||
            complex_t* delayStart = &buf[_this->_blockSize + _this->_skip];
 | 
			
		||||
 | 
			
		||||
            while (true) {
 | 
			
		||||
                int read = _this->_input->readAndSkip(buf, _this->_blockSize, _this->_skip);
 | 
			
		||||
                if (read < 0) { break; };
 | 
			
		||||
                if (delay) {
 | 
			
		||||
                    memmove(buf, delayStart, delaySize);
 | 
			
		||||
                }
 | 
			
		||||
                if (_this->_input->readAndSkip(start, readCount, skip) < 0) { break; };
 | 
			
		||||
                if (_this->output.write(buf, _this->_blockSize) < 0) { break; };
 | 
			
		||||
            }
 | 
			
		||||
            delete[] buf;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -46,7 +46,8 @@ void SignalPath::setSampleRate(float sampleRate) {
 | 
			
		|||
 | 
			
		||||
    dcBiasRemover.setBlockSize(inputBlockSize);
 | 
			
		||||
    split.setBlockSize(inputBlockSize);
 | 
			
		||||
    fftBlockDec.setSkip((sampleRate / fftRate) - fftSize);
 | 
			
		||||
    int skip = (sampleRate / fftRate) - fftSize;
 | 
			
		||||
    fftBlockDec.setSkip(skip);
 | 
			
		||||
    mainVFO.setInputSampleRate(sampleRate, inputBlockSize);
 | 
			
		||||
 | 
			
		||||
    // // Reset the modulator and audio systems
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Ładowanie…
	
		Reference in New Issue