mirror of
https://github.com/cjcliffe/CubicSDR.git
synced 2025-07-31 12:52:25 -04:00
Cleanup: data, visual processor threads
This commit is contained in:
parent
0b9bcc5a46
commit
e9a6fc089c
@ -21,7 +21,7 @@ void FFTDataDistributor::setLinesPerSecond(unsigned int lines) {
|
|||||||
this->linesPerSecond = lines;
|
this->linesPerSecond = lines;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned int FFTDataDistributor::getLinesPerSecond() {
|
unsigned int FFTDataDistributor::getLinesPerSecond() const {
|
||||||
return this->linesPerSecond;
|
return this->linesPerSecond;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -14,12 +14,12 @@ public:
|
|||||||
FFTDataDistributor();
|
FFTDataDistributor();
|
||||||
void setFFTSize(unsigned int size);
|
void setFFTSize(unsigned int size);
|
||||||
void setLinesPerSecond(unsigned int lines);
|
void setLinesPerSecond(unsigned int lines);
|
||||||
unsigned int getLinesPerSecond();
|
unsigned int getLinesPerSecond() const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void process();
|
void process() override;
|
||||||
|
|
||||||
DemodulatorThreadIQData inputBuffer, tempBuffer;
|
DemodulatorThreadIQData inputBuffer;
|
||||||
ReBuffer<DemodulatorThreadIQData> outputBuffers;
|
ReBuffer<DemodulatorThreadIQData> outputBuffers;
|
||||||
std::atomic<unsigned int> fftSize;
|
std::atomic<unsigned int> fftSize;
|
||||||
|
|
||||||
|
@ -2,16 +2,13 @@
|
|||||||
// SPDX-License-Identifier: GPL-2.0+
|
// SPDX-License-Identifier: GPL-2.0+
|
||||||
|
|
||||||
#include "FFTVisualDataThread.h"
|
#include "FFTVisualDataThread.h"
|
||||||
#include "CubicSDR.h"
|
|
||||||
|
|
||||||
FFTVisualDataThread::FFTVisualDataThread() {
|
FFTVisualDataThread::FFTVisualDataThread() {
|
||||||
linesPerSecond.store(DEFAULT_WATERFALL_LPS);
|
linesPerSecond.store(DEFAULT_WATERFALL_LPS);
|
||||||
lpsChanged.store(true);
|
lpsChanged.store(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
FFTVisualDataThread::~FFTVisualDataThread() {
|
FFTVisualDataThread::~FFTVisualDataThread() = default;
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void FFTVisualDataThread::setLinesPerSecond(int lps) {
|
void FFTVisualDataThread::setLinesPerSecond(int lps) {
|
||||||
linesPerSecond.store(lps);
|
linesPerSecond.store(lps);
|
||||||
|
@ -10,15 +10,15 @@
|
|||||||
class FFTVisualDataThread : public IOThread {
|
class FFTVisualDataThread : public IOThread {
|
||||||
public:
|
public:
|
||||||
FFTVisualDataThread();
|
FFTVisualDataThread();
|
||||||
~FFTVisualDataThread();
|
~FFTVisualDataThread() override;
|
||||||
|
|
||||||
void setLinesPerSecond(int lps);
|
void setLinesPerSecond(int lps);
|
||||||
int getLinesPerSecond();
|
int getLinesPerSecond();
|
||||||
SpectrumVisualProcessor *getProcessor();
|
SpectrumVisualProcessor *getProcessor();
|
||||||
|
|
||||||
virtual void run();
|
void run() override;
|
||||||
|
|
||||||
virtual void terminate();
|
void terminate() override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
FFTDataDistributor fftDistrib;
|
FFTDataDistributor fftDistrib;
|
||||||
|
@ -3,7 +3,6 @@
|
|||||||
|
|
||||||
#include "ScopeVisualProcessor.h"
|
#include "ScopeVisualProcessor.h"
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
#include <string>
|
|
||||||
|
|
||||||
ScopeVisualProcessor::ScopeVisualProcessor(): outputBuffers("ScopeVisualProcessorBuffers") {
|
ScopeVisualProcessor::ScopeVisualProcessor(): outputBuffers("ScopeVisualProcessorBuffers") {
|
||||||
scopeEnabled.store(true);
|
scopeEnabled.store(true);
|
||||||
|
@ -19,9 +19,7 @@ public:
|
|||||||
int fft_size;
|
int fft_size;
|
||||||
double fft_floor, fft_ceil;
|
double fft_floor, fft_ceil;
|
||||||
|
|
||||||
virtual ~ScopeRenderData() {
|
virtual ~ScopeRenderData() = default;
|
||||||
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef std::shared_ptr<ScopeRenderData> ScopeRenderDataPtr;
|
typedef std::shared_ptr<ScopeRenderData> ScopeRenderDataPtr;
|
||||||
@ -33,12 +31,12 @@ typedef std::shared_ptr<ScopeRenderDataQueue> ScopeRenderDataQueuePtr;
|
|||||||
class ScopeVisualProcessor : public VisualProcessor<AudioThreadInput, ScopeRenderData> {
|
class ScopeVisualProcessor : public VisualProcessor<AudioThreadInput, ScopeRenderData> {
|
||||||
public:
|
public:
|
||||||
ScopeVisualProcessor();
|
ScopeVisualProcessor();
|
||||||
~ScopeVisualProcessor();
|
~ScopeVisualProcessor() override;
|
||||||
void setup(int fftSize_in);
|
void setup(int fftSize_in);
|
||||||
void setScopeEnabled(bool scopeEnable);
|
void setScopeEnabled(bool scopeEnable);
|
||||||
void setSpectrumEnabled(bool spectrumEnable);
|
void setSpectrumEnabled(bool spectrumEnable);
|
||||||
protected:
|
protected:
|
||||||
virtual void process();
|
void process() override;
|
||||||
ReBuffer<ScopeRenderData> outputBuffers;
|
ReBuffer<ScopeRenderData> outputBuffers;
|
||||||
|
|
||||||
std::atomic_bool scopeEnabled;
|
std::atomic_bool scopeEnabled;
|
||||||
|
@ -2,14 +2,10 @@
|
|||||||
// SPDX-License-Identifier: GPL-2.0+
|
// SPDX-License-Identifier: GPL-2.0+
|
||||||
|
|
||||||
#include "SpectrumVisualDataThread.h"
|
#include "SpectrumVisualDataThread.h"
|
||||||
#include "CubicSDR.h"
|
|
||||||
|
|
||||||
SpectrumVisualDataThread::SpectrumVisualDataThread() {
|
SpectrumVisualDataThread::SpectrumVisualDataThread() = default;
|
||||||
}
|
|
||||||
|
|
||||||
SpectrumVisualDataThread::~SpectrumVisualDataThread() {
|
SpectrumVisualDataThread::~SpectrumVisualDataThread() = default;
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
SpectrumVisualProcessor *SpectrumVisualDataThread::getProcessor() {
|
SpectrumVisualProcessor *SpectrumVisualDataThread::getProcessor() {
|
||||||
return &sproc;
|
return &sproc;
|
||||||
|
@ -9,12 +9,12 @@
|
|||||||
class SpectrumVisualDataThread : public IOThread {
|
class SpectrumVisualDataThread : public IOThread {
|
||||||
public:
|
public:
|
||||||
SpectrumVisualDataThread();
|
SpectrumVisualDataThread();
|
||||||
~SpectrumVisualDataThread();
|
~SpectrumVisualDataThread() override;
|
||||||
SpectrumVisualProcessor *getProcessor();
|
SpectrumVisualProcessor *getProcessor();
|
||||||
|
|
||||||
virtual void run();
|
void run() override;
|
||||||
|
|
||||||
virtual void terminate();
|
void terminate() override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
SpectrumVisualProcessor sproc;
|
SpectrumVisualProcessor sproc;
|
||||||
|
@ -201,11 +201,11 @@ unsigned int SpectrumVisualProcessor::getFFTSize() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void SpectrumVisualProcessor::setHideDC(bool hideDC) {
|
void SpectrumVisualProcessor::setHideDC(bool hideDC_in) {
|
||||||
|
|
||||||
std::lock_guard < std::mutex > busy_lock(busy_run);
|
std::lock_guard < std::mutex > busy_lock(busy_run);
|
||||||
|
|
||||||
this->hideDC = hideDC;
|
hideDC = hideDC_in;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -274,7 +274,7 @@ void SpectrumVisualProcessor::process() {
|
|||||||
|
|
||||||
std::vector<liquid_float_complex> *data = &iqData->data;
|
std::vector<liquid_float_complex> *data = &iqData->data;
|
||||||
|
|
||||||
if (data && data->size()) {
|
if (data && !data->empty()) {
|
||||||
unsigned int num_written;
|
unsigned int num_written;
|
||||||
long resampleBw = iqData->sampleRate;
|
long resampleBw = iqData->sampleRate;
|
||||||
bool newResampler = false;
|
bool newResampler = false;
|
||||||
|
@ -19,7 +19,7 @@ public:
|
|||||||
long long centerFreq;
|
long long centerFreq;
|
||||||
int bandwidth;
|
int bandwidth;
|
||||||
|
|
||||||
virtual ~SpectrumVisualData() {};
|
virtual ~SpectrumVisualData() = default;;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef std::shared_ptr<SpectrumVisualData> SpectrumVisualDataPtr;
|
typedef std::shared_ptr<SpectrumVisualData> SpectrumVisualDataPtr;
|
||||||
@ -29,7 +29,7 @@ typedef std::shared_ptr<SpectrumVisualDataQueue> SpectrumVisualDataQueuePtr;
|
|||||||
class SpectrumVisualProcessor : public VisualProcessor<DemodulatorThreadIQData, SpectrumVisualData> {
|
class SpectrumVisualProcessor : public VisualProcessor<DemodulatorThreadIQData, SpectrumVisualData> {
|
||||||
public:
|
public:
|
||||||
SpectrumVisualProcessor();
|
SpectrumVisualProcessor();
|
||||||
~SpectrumVisualProcessor();
|
~SpectrumVisualProcessor() override;
|
||||||
|
|
||||||
bool isView();
|
bool isView();
|
||||||
void setView(bool bView);
|
void setView(bool bView);
|
||||||
@ -52,13 +52,13 @@ public:
|
|||||||
void setup(unsigned int fftSize);
|
void setup(unsigned int fftSize);
|
||||||
void setFFTSize(unsigned int fftSize);
|
void setFFTSize(unsigned int fftSize);
|
||||||
unsigned int getFFTSize();
|
unsigned int getFFTSize();
|
||||||
void setHideDC(bool hideDC);
|
void setHideDC(bool hideDC_in);
|
||||||
|
|
||||||
void setScaleFactor(float sf);
|
void setScaleFactor(float sf);
|
||||||
float getScaleFactor();
|
float getScaleFactor();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void process();
|
void process() override;
|
||||||
|
|
||||||
ReBuffer<SpectrumVisualData> outputBuffers;
|
ReBuffer<SpectrumVisualData> outputBuffers;
|
||||||
|
|
||||||
|
@ -24,8 +24,7 @@ public:
|
|||||||
typedef std::shared_ptr<VisualInputQueueType> VisualInputQueueTypePtr;
|
typedef std::shared_ptr<VisualInputQueueType> VisualInputQueueTypePtr;
|
||||||
typedef std::shared_ptr<VisualOutputQueueType> VisualOutputQueueTypePtr;
|
typedef std::shared_ptr<VisualOutputQueueType> VisualOutputQueueTypePtr;
|
||||||
|
|
||||||
virtual ~VisualProcessor() {
|
virtual ~VisualProcessor();
|
||||||
}
|
|
||||||
|
|
||||||
bool isInputEmpty() {
|
bool isInputEmpty() {
|
||||||
std::lock_guard < std::mutex > busy_lock(busy_update);
|
std::lock_guard < std::mutex > busy_lock(busy_update);
|
||||||
@ -155,6 +154,9 @@ protected:
|
|||||||
std::mutex busy_update;
|
std::mutex busy_update;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
template<typename InputDataType, typename OutputDataType>
|
||||||
|
VisualProcessor<InputDataType, OutputDataType>::~VisualProcessor() = default;
|
||||||
|
|
||||||
//Specialization much like VisualDataReDistributor, except
|
//Specialization much like VisualDataReDistributor, except
|
||||||
//the input (pointer) is directly re-dispatched
|
//the input (pointer) is directly re-dispatched
|
||||||
//to outputs, so that all output indeed SHARE the same instance.
|
//to outputs, so that all output indeed SHARE the same instance.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user