mirror of
https://github.com/cjcliffe/CubicSDR.git
synced 2024-09-27 15:56:48 -04:00
51 lines
1.3 KiB
C++
51 lines
1.3 KiB
C++
#pragma once
|
|
|
|
#include "VisualProcessor.h"
|
|
#include "AudioThread.h"
|
|
#include "ScopePanel.h"
|
|
|
|
class ScopeRenderData: public ReferenceCounter {
|
|
public:
|
|
std::vector<float> waveform_points;
|
|
ScopePanel::ScopeMode mode;
|
|
int inputRate;
|
|
int sampleRate;
|
|
int channels;
|
|
bool spectrum;
|
|
int fft_size;
|
|
double fft_floor, fft_ceil;
|
|
};
|
|
|
|
typedef ThreadQueue<ScopeRenderData *> ScopeRenderDataQueue;
|
|
|
|
class ScopeVisualProcessor : public VisualProcessor<AudioThreadInput, ScopeRenderData> {
|
|
public:
|
|
ScopeVisualProcessor();
|
|
~ScopeVisualProcessor();
|
|
void setup(int fftSize_in);
|
|
void setScopeEnabled(bool scopeEnable);
|
|
void setSpectrumEnabled(bool spectrumEnable);
|
|
protected:
|
|
void process();
|
|
ReBuffer<ScopeRenderData> outputBuffers;
|
|
|
|
std::atomic_bool scopeEnabled;
|
|
std::atomic_bool spectrumEnabled;
|
|
|
|
std::vector<liquid_float_complex> fftInData;
|
|
std::vector<liquid_float_complex> fftOutput;
|
|
fftplan fftPlan;
|
|
|
|
unsigned int fftSize;
|
|
int desiredInputSize;
|
|
unsigned int maxScopeSamples;
|
|
|
|
double fft_ceil_ma, fft_ceil_maa;
|
|
double fft_floor_ma, fft_floor_maa;
|
|
double fft_average_rate;
|
|
|
|
std::vector<double> fft_result;
|
|
std::vector<double> fft_result_ma;
|
|
std::vector<double> fft_result_maa;
|
|
};
|