mirror of
https://github.com/AlexandreRouma/SDRPlusPlus.git
synced 2024-12-25 18:38:30 +01:00
Fixed slow waterfall with low sample rates
This commit is contained in:
parent
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
|
||||
|
Loading…
Reference in New Issue
Block a user