Use double for sample rate

Fixes #158
This commit is contained in:
Mike Walters
2019-11-02 21:34:12 +00:00
parent cd115c22cf
commit d6115cb458
10 changed files with 18 additions and 17 deletions

View File

@@ -155,13 +155,13 @@ void InputSource::openFile(const char *filename)
invalidate();
}
void InputSource::setSampleRate(size_t rate)
void InputSource::setSampleRate(double rate)
{
sampleRate = rate;
invalidate();
}
size_t InputSource::rate()
double InputSource::rate()
{
return sampleRate;
}

View File

@@ -35,7 +35,7 @@ class InputSource : public SampleSource<std::complex<float>>
private:
QFile *inputFile = nullptr;
size_t sampleCount = 0;
size_t sampleRate = 0;
double sampleRate = 0.0;
uchar *mmapData = nullptr;
std::unique_ptr<SampleAdapter> sampleAdapter;
std::string _fmt;
@@ -49,9 +49,9 @@ public:
size_t count() {
return sampleCount;
};
void setSampleRate(size_t rate);
void setSampleRate(double rate);
void setFormat(std::string fmt);
size_t rate();
double rate();
float relativeBandwidth() {
return 1;
}

View File

@@ -59,8 +59,7 @@ int main(int argc, char *argv[])
if (parser.isSet(rateOption)) {
bool ok;
// Use toDouble just for scientific notation support
int rate = parser.value(rateOption).toDouble(&ok);
auto rate = parser.value(rateOption).toDouble(&ok);
if(!ok) {
fputs("ERROR: could not parse rate\n", stderr);
return 1;

View File

@@ -98,7 +98,7 @@ void MainWindow::openFile(QString fileName)
void MainWindow::setSampleRate(QString rate)
{
int sampleRate = rate.toInt();
auto sampleRate = rate.toDouble();
input->setSampleRate(sampleRate);
plots->setSampleRate(sampleRate);
@@ -107,7 +107,7 @@ void MainWindow::setSampleRate(QString rate)
settings.setValue("SampleRate", sampleRate);
}
void MainWindow::setSampleRate(int rate)
void MainWindow::setSampleRate(double rate)
{
dock->sampleRate->setText(QString::number(rate));
}

View File

@@ -30,12 +30,12 @@ class MainWindow : public QMainWindow
public:
MainWindow();
void changeSampleRate(int rate);
void changeSampleRate(double rate);
public slots:
void openFile(QString fileName);
void setSampleRate(QString rate);
void setSampleRate(int rate);
void setSampleRate(double rate);
void setFormat(QString fmt);
private:

View File

@@ -563,7 +563,7 @@ void PlotView::updateView(bool reCenter)
viewport()->update();
}
void PlotView::setSampleRate(size_t rate)
void PlotView::setSampleRate(double rate)
{
sampleRate = rate;

View File

@@ -35,7 +35,7 @@ class PlotView : public QGraphicsView, Subscriber
public:
PlotView(InputSource *input);
void setSampleRate(size_t rate);
void setSampleRate(double rate);
signals:
void timeSelectionChanged(float time);
@@ -75,7 +75,7 @@ private:
int powerMin;
int powerMax;
bool cursorsEnabled;
size_t sampleRate = 0;
double sampleRate = 0.0;
bool timeScaleEnabled;
int scrollZoomStepsAccumulated = 0;

View File

@@ -40,7 +40,7 @@ public:
virtual size_t count() {
return src->count();
};
size_t rate() {
double rate() {
return src->rate();
};

View File

@@ -33,7 +33,7 @@ public:
virtual std::unique_ptr<T[]> getSamples(size_t start, size_t length) = 0;
virtual void invalidateEvent() { };
virtual size_t count() = 0;
virtual size_t rate() = 0;
virtual double rate() = 0;
virtual float relativeBandwidth() = 0;
std::type_index sampleType() override;
};

View File

@@ -36,7 +36,9 @@ SpectrogramControls::SpectrogramControls(const QString & title, QWidget * parent
layout->addRow(fileOpenButton);
sampleRate = new QLineEdit();
sampleRate->setValidator(new QIntValidator(this));
auto double_validator = new QDoubleValidator(this);
double_validator->setBottom(0.0);
sampleRate->setValidator(double_validator);
layout->addRow(new QLabel(tr("Sample rate:")), sampleRate);
// Spectrogram settings