Performance improvement to the FFT + code cleanup + Added an option to select the FFT window

This commit is contained in:
Ryzerth
2021-07-05 01:09:48 +02:00
parent 6db8251e46
commit ab376ea1aa
16 changed files with 91 additions and 22 deletions

View File

@ -162,8 +162,8 @@ public:
}
}
private:
void setBandwidth(float bandWidth, bool updateWaterfall = true) {
bandWidth = std::clamp<float>(bandWidth, bwMin, bwMax);
bw = bandWidth;
_vfo->setBandwidth(bw, updateWaterfall);
float audioBW = std::min<float>(audioSampRate / 2.0f, bw / 2.0f);
@ -173,6 +173,7 @@ private:
resamp.updateWindow(&win);
}
private:
void setSnapInterval(float snapInt) {
snapInterval = snapInt;
_vfo->setSnapInterval(snapInterval);

View File

@ -169,12 +169,13 @@ public:
}
}
private:
void setBandwidth(float bandWidth, bool updateWaterfall = true) {
bandWidth = std::clamp<float>(bandWidth, bwMin, bwMax);
bw = bandWidth;
_vfo->setBandwidth(bw, updateWaterfall);
}
private:
void setSnapInterval(float snapInt) {
snapInterval = snapInt;
_vfo->setSnapInterval(snapInterval);

View File

@ -162,12 +162,13 @@ public:
}
}
private:
void setBandwidth(float bandWidth, bool updateWaterfall = true) {
bandWidth = std::clamp<float>(bandWidth, bwMin, bwMax);
bw = bandWidth;
_vfo->setBandwidth(bw, updateWaterfall);
}
private:
void setSnapInterval(float snapInt) {
snapInterval = snapInt;
_vfo->setSnapInterval(snapInterval);

View File

@ -154,14 +154,15 @@ public:
}
}
private:
void setBandwidth(float bandWidth, bool updateWaterfall = true) {
bandWidth = std::clamp<float>(bandWidth, bwMin, bwMax);
bw = bandWidth;
_vfo->setBandwidth(bw, updateWaterfall);
demod.setDeviation(bw / 2.0f);
setAudioSampleRate(audioSampRate);
}
private:
void setSnapInterval(float snapInt) {
snapInterval = snapInt;
_vfo->setSnapInterval(snapInterval);

View File

@ -161,8 +161,8 @@ public:
}
}
private:
void setBandwidth(float bandWidth, bool updateWaterfall = true) {
bandWidth = std::clamp<float>(bandWidth, bwMin, bwMax);
bw = bandWidth;
_vfo->setBandwidth(bw, updateWaterfall);
demod.setBandWidth(bw);
@ -173,6 +173,7 @@ private:
resamp.updateWindow(&win);
}
private:
void setSnapInterval(float snapInt) {
snapInterval = snapInt;
_vfo->setSnapInterval(snapInterval);

View File

@ -174,6 +174,10 @@ private:
int* _in = (int*)in;
if (*_in != _this->demodId) { _this->selectDemodById(*_in); }
}
else if (code == RADIO_IFACE_CMD_SET_BANDWIDTH) {
float* _in = (float*)in;
_this->currentDemod->setBandwidth(*_in, true);
}
}
void selectDemod(Demodulator* demod) {

View File

@ -12,6 +12,7 @@ public:
virtual VFOManager::VFO* getVFO() = 0;
virtual void setAudioSampleRate(float sampleRate) = 0;
virtual float getAudioSampleRate() = 0;
virtual void setBandwidth(float bandWidth, bool updateWaterfall = true) = 0;
virtual dsp::stream<dsp::stereo_t>* getOutput() = 0;
virtual void showMenu() = 0;
};

View File

@ -116,6 +116,10 @@ public:
}
// TODO: Allow selection of the bandwidth
}
void setBandwidth(float bandWidth, bool updateWaterfall = true) {
// Do nothing
}
private:

View File

@ -161,8 +161,8 @@ public:
}
}
private:
void setBandwidth(float bandWidth, bool updateWaterfall = true) {
bandWidth = std::clamp<float>(bandWidth, bwMin, bwMax);
bw = bandWidth;
_vfo->setBandwidth(bw, updateWaterfall);
demod.setBandWidth(bw);
@ -173,6 +173,7 @@ private:
resamp.updateWindow(&win);
}
private:
void setSnapInterval(float snapInt) {
snapInterval = snapInt;
_vfo->setSnapInterval(snapInterval);

View File

@ -192,13 +192,15 @@ public:
_vfo->setSnapInterval(snapInterval);
}
private:
void setBandwidth(float bandWidth, bool updateWaterfall = true) {
bandWidth = std::clamp<float>(bandWidth, bwMin, bwMax);
bw = bandWidth;
_vfo->setBandwidth(bw, updateWaterfall);
demod.setDeviation(bw / 2.0f);
}
private:
const float bwMax = 250000;
const float bwMin = 50000;
const float bbSampRate = 250000;