1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2025-06-25 13:35:23 -04:00

SSB demod: save DNR settings in the filter bank

This commit is contained in:
f4exb 2023-11-05 13:23:31 +01:00
parent 91815cc87e
commit 44d61e259b
3 changed files with 30 additions and 0 deletions

View File

@ -196,6 +196,7 @@ void SSBDemodGUI::on_agcClamping_toggled(bool checked)
void SSBDemodGUI::on_dnr_toggled(bool checked) void SSBDemodGUI::on_dnr_toggled(bool checked)
{ {
m_settings.m_dnr = checked; m_settings.m_dnr = checked;
m_settings.m_filterBank[m_settings.m_filterIndex].m_dnr = m_settings.m_dnr;
applySettings(); applySettings();
} }
@ -268,6 +269,12 @@ void SSBDemodGUI::on_filterIndex_valueChanged(int value)
ui->BW->setMinimum(-480); ui->BW->setMinimum(-480);
ui->lowCut->setMaximum(480); ui->lowCut->setMaximum(480);
ui->lowCut->setMinimum(-480); ui->lowCut->setMinimum(-480);
m_settings.m_dnr = m_settings.m_filterBank[m_settings.m_filterIndex].m_dnr;
m_settings.m_dnrScheme = m_settings.m_filterBank[m_settings.m_filterIndex].m_dnrScheme;
m_settings.m_dnrAboveAvgFactor = m_settings.m_filterBank[m_settings.m_filterIndex].m_dnrAboveAvgFactor;
m_settings.m_dnrSigmaFactor = m_settings.m_filterBank[m_settings.m_filterIndex].m_dnrSigmaFactor;
m_settings.m_dnrNbPeaks = m_settings.m_filterBank[m_settings.m_filterIndex].m_dnrNbPeaks;
m_settings.m_dnrAlpha = m_settings.m_filterBank[m_settings.m_filterIndex].m_dnrAlpha;
displaySettings(); displaySettings();
applyBandwidths(m_settings.m_filterBank[m_settings.m_filterIndex].m_spanLog2, true); // does applySettings(true) applyBandwidths(m_settings.m_filterBank[m_settings.m_filterIndex].m_spanLog2, true); // does applySettings(true)
} }
@ -748,22 +755,27 @@ void SSBDemodGUI::dnrSetup(int32_t iValueChanged)
{ {
case FFTNRDialog::ValueChanged::ChangedScheme: case FFTNRDialog::ValueChanged::ChangedScheme:
m_settings.m_dnrScheme = m_fftNRDialog->getScheme(); m_settings.m_dnrScheme = m_fftNRDialog->getScheme();
m_settings.m_filterBank[m_settings.m_filterIndex].m_dnrScheme = m_settings.m_dnrScheme;
applySettings(); applySettings();
break; break;
case FFTNRDialog::ValueChanged::ChangedAboveAvgFactor: case FFTNRDialog::ValueChanged::ChangedAboveAvgFactor:
m_settings.m_dnrAboveAvgFactor = m_fftNRDialog->getAboveAvgFactor(); m_settings.m_dnrAboveAvgFactor = m_fftNRDialog->getAboveAvgFactor();
m_settings.m_filterBank[m_settings.m_filterIndex].m_dnrAboveAvgFactor = m_settings.m_dnrAboveAvgFactor;
applySettings(); applySettings();
break; break;
case FFTNRDialog::ValueChanged::ChangedSigmaFactor: case FFTNRDialog::ValueChanged::ChangedSigmaFactor:
m_settings.m_dnrSigmaFactor = m_fftNRDialog->getSigmaFactor(); m_settings.m_dnrSigmaFactor = m_fftNRDialog->getSigmaFactor();
m_settings.m_filterBank[m_settings.m_filterIndex].m_dnrSigmaFactor = m_settings.m_dnrSigmaFactor;
applySettings(); applySettings();
break; break;
case FFTNRDialog::ValueChanged::ChangedNbPeaks: case FFTNRDialog::ValueChanged::ChangedNbPeaks:
m_settings.m_dnrNbPeaks = m_fftNRDialog->getNbPeaks(); m_settings.m_dnrNbPeaks = m_fftNRDialog->getNbPeaks();
m_settings.m_filterBank[m_settings.m_filterIndex].m_dnrNbPeaks = m_settings.m_dnrNbPeaks;
applySettings(); applySettings();
break; break;
case FFTNRDialog::ValueChanged::ChangedAlpha: case FFTNRDialog::ValueChanged::ChangedAlpha:
m_settings.m_dnrAlpha = m_fftNRDialog->getAlpha(); m_settings.m_dnrAlpha = m_fftNRDialog->getAlpha();
m_settings.m_filterBank[m_settings.m_filterIndex].m_dnrAlpha = m_settings.m_dnrAlpha;
applySettings(); applySettings();
break; break;
default: default:

View File

@ -121,6 +121,12 @@ QByteArray SSBDemodSettings::serialize() const
s.writeS32(101 + 10*i, m_filterBank[i].m_rfBandwidth / 100.0); s.writeS32(101 + 10*i, m_filterBank[i].m_rfBandwidth / 100.0);
s.writeS32(102 + 10*i, m_filterBank[i].m_lowCutoff / 100.0); s.writeS32(102 + 10*i, m_filterBank[i].m_lowCutoff / 100.0);
s.writeS32(103 + 10*i, (int) m_filterBank[i].m_fftWindow); s.writeS32(103 + 10*i, (int) m_filterBank[i].m_fftWindow);
s.writeBool(104 + 10*i, m_filterBank[i].m_dnr);
s.writeS32(105 + 10*i, m_filterBank[i].m_dnrScheme);
s.writeFloat(106 + 10*i, m_filterBank[i].m_dnrAboveAvgFactor);
s.writeFloat(107 + 10*i, m_filterBank[i].m_dnrSigmaFactor);
s.writeS32(108 + 10*i, m_filterBank[i].m_dnrNbPeaks);
s.writeFloat(109 + 10*i, m_filterBank[i].m_dnrAlpha);
} }
return s.final(); return s.final();
@ -208,6 +214,12 @@ bool SSBDemodSettings::deserialize(const QByteArray& data)
d.readS32(103 + 10*i, &tmp, (int) FFTWindow::Blackman); d.readS32(103 + 10*i, &tmp, (int) FFTWindow::Blackman);
m_filterBank[i].m_fftWindow = m_filterBank[i].m_fftWindow =
(FFTWindow::Function) (tmp < 0 ? 0 : tmp > (int) FFTWindow::BlackmanHarris7 ? (int) FFTWindow::BlackmanHarris7 : tmp); (FFTWindow::Function) (tmp < 0 ? 0 : tmp > (int) FFTWindow::BlackmanHarris7 ? (int) FFTWindow::BlackmanHarris7 : tmp);
d.readBool(104 + 10*i, &m_filterBank[i].m_dnr, false);
d.readS32(105 + 10*i, &m_filterBank[i].m_dnrScheme, 0);
d.readFloat(106 + 10*i, &m_filterBank[i].m_dnrAboveAvgFactor, 20.0f);
d.readFloat(107 + 10*i, &m_filterBank[i].m_dnrSigmaFactor, 4.0f);
d.readS32(108 + 10*i, &m_filterBank[i].m_dnrNbPeaks, 10);
d.readFloat(109 + 10*i, &m_filterBank[i].m_dnrAlpha, 0.95f);
} }
return true; return true;

View File

@ -31,6 +31,12 @@ struct SSBDemodFilterSettings
Real m_rfBandwidth; Real m_rfBandwidth;
Real m_lowCutoff; Real m_lowCutoff;
FFTWindow::Function m_fftWindow; FFTWindow::Function m_fftWindow;
bool m_dnr;
int m_dnrScheme;
float m_dnrAboveAvgFactor;
float m_dnrSigmaFactor;
int m_dnrNbPeaks;
float m_dnrAlpha;
SSBDemodFilterSettings() : SSBDemodFilterSettings() :
m_spanLog2(3), m_spanLog2(3),