CubicSDR/src/process/FFTDataDistributor.h
vsonnier 4609386648 COMMENTS,POLISHING: comments fenzy around VisualProcessor machinery,
make process() a true interface as strong hint for derived classes,
plus misc define added for understanding.

BUGFIX: FFTDataDistributor loses incoming samples when compacting internal buffers.

BUGFIX2: FFTDistributor: Frozen Waterfall if internal buffer is no bigger than fftSize
2017-02-05 12:41:43 +01:00

32 lines
797 B
C++

// Copyright (c) Charles J. Cliffe
// SPDX-License-Identifier: GPL-2.0+
#pragma once
#include "VisualProcessor.h"
#include "DemodDefs.h"
#include <cmath>
#include <cstring>
#include <atomic>
class FFTDataDistributor : public VisualProcessor<DemodulatorThreadIQData, DemodulatorThreadIQData> {
public:
FFTDataDistributor();
void setFFTSize(unsigned int size);
void setLinesPerSecond(unsigned int lines);
unsigned int getLinesPerSecond();
protected:
virtual void process();
DemodulatorThreadIQData inputBuffer, tempBuffer;
ReBuffer<DemodulatorThreadIQData> outputBuffers;
std::atomic<unsigned int> fftSize;
unsigned int linesPerSecond;
double lineRateAccum;
size_t bufferMax = 0;
size_t bufferOffset = 0;
size_t bufferedItems = 0;
};