SDRAngel  4.11.5
Developer docs for <a href="https://github.com/f4exb/sdrangel">SDRangel<\a>, an Open Source Qt5 / OpenGL 3.0+ SDR and signal analyzer frontend to various hardware.
Classes | Public Types | Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
SpectrumVis Class Reference

#include <spectrumvis.h>

+ Inheritance diagram for SpectrumVis:
+ Collaboration diagram for SpectrumVis:

Classes

class  MsgConfigureSpectrumVis
 

Public Types

enum  AvgMode { AvgModeNone, AvgModeMovingAvg, AvgModeFixedAvg, AvgModeMax }
 

Public Member Functions

 SpectrumVis (Real scalef, GLSpectrum *glSpectrum=0)
 
virtual ~SpectrumVis ()
 
void configure (MessageQueue *msgQueue, int fftSize, int overlapPercent, unsigned int averagingNb, int averagingMode, FFTWindow::Function window, bool m_linear)
 
virtual void feed (const SampleVector::const_iterator &begin, const SampleVector::const_iterator &end, bool positiveOnly)
 
void feedTriggered (const SampleVector::const_iterator &triggerPoint, const SampleVector::const_iterator &end, bool positiveOnly)
 
virtual void start ()
 
virtual void stop ()
 
virtual bool handleMessage (const Message &message)
 Processing of a message. Returns true if message has actually been processed. More...
 
- Public Member Functions inherited from BasebandSampleSink
 BasebandSampleSink ()
 
virtual ~BasebandSampleSink ()
 
MessageQueuegetInputMessageQueue ()
 Get the queue for asynchronous inbound communication. More...
 
virtual void setMessageQueueToGUI (MessageQueue *queue)
 
MessageQueuegetMessageQueueToGUI ()
 

Private Member Functions

void handleConfigure (int fftSize, int overlapPercent, unsigned int averageNb, AvgMode averagingMode, FFTWindow::Function window, bool linear)
 

Private Attributes

FFTEnginem_fft
 
FFTWindow m_window
 
std::vector< Complexm_fftBuffer
 
std::vector< Realm_powerSpectrum
 
std::size_t m_fftSize
 
std::size_t m_overlapPercent
 
std::size_t m_overlapSize
 
std::size_t m_refillSize
 
std::size_t m_fftBufferFill
 
bool m_needMoreSamples
 
Real m_scalef
 
GLSpectrumm_glSpectrum
 
MovingAverage2D< double > m_movingAverage
 
FixedAverage2D< double > m_fixedAverage
 
Max2D< double > m_max
 
unsigned int m_averageNb
 
AvgMode m_avgMode
 
bool m_linear
 
Real m_ofs
 
Real m_powFFTDiv
 
QMutex m_mutex
 

Static Private Attributes

static const Real m_mult = (10.0f / log2f(10.0f))
 

Additional Inherited Members

- Protected Slots inherited from BasebandSampleSink
void handleInputMessages ()
 
- Protected Attributes inherited from BasebandSampleSink
MessageQueue m_inputMessageQueue
 Queue for asynchronous inbound communication. More...
 
MessageQueuem_guiMessageQueue
 Input message queue to the GUI. More...
 

Detailed Description

Definition at line 17 of file spectrumvis.h.

Member Enumeration Documentation

◆ AvgMode

Enumerator
AvgModeNone 
AvgModeMovingAvg 
AvgModeFixedAvg 
AvgModeMax 

Definition at line 20 of file spectrumvis.h.

Constructor & Destructor Documentation

◆ SpectrumVis()

SpectrumVis::SpectrumVis ( Real  scalef,
GLSpectrum glSpectrum = 0 
)

Definition at line 19 of file spectrumvis.cpp.

References AvgModeNone, FFTWindow::BlackmanHarris, and handleConfigure().

19  :
24  m_fftBufferFill(0),
25  m_needMoreSamples(false),
26  m_scalef(scalef),
27  m_glSpectrum(glSpectrum),
28  m_averageNb(0),
30  m_linear(false),
31  m_ofs(0),
32  m_powFFTDiv(1.0),
33  m_mutex(QMutex::Recursive)
34 {
35  setObjectName("SpectrumVis");
37 }
QMutex m_mutex
Definition: spectrumvis.h:109
GLSpectrum * m_glSpectrum
Definition: spectrumvis.h:97
bool m_needMoreSamples
Definition: spectrumvis.h:94
#define MAX_FFT_SIZE
Definition: spectrumvis.cpp:6
Real m_scalef
Definition: spectrumvis.h:96
Real m_powFFTDiv
Definition: spectrumvis.h:106
FFTEngine * m_fft
Definition: spectrumvis.h:83
unsigned int m_averageNb
Definition: spectrumvis.h:101
std::vector< Real > m_powerSpectrum
Definition: spectrumvis.h:87
std::size_t m_fftBufferFill
Definition: spectrumvis.h:93
void handleConfigure(int fftSize, int overlapPercent, unsigned int averageNb, AvgMode averagingMode, FFTWindow::Function window, bool linear)
AvgMode m_avgMode
Definition: spectrumvis.h:102
static FFTEngine * create()
Definition: fftengine.cpp:13
std::vector< Complex > m_fftBuffer
Definition: spectrumvis.h:86
+ Here is the call graph for this function:

◆ ~SpectrumVis()

SpectrumVis::~SpectrumVis ( )
virtual

Definition at line 39 of file spectrumvis.cpp.

References m_fft.

40 {
41  delete m_fft;
42 }
FFTEngine * m_fft
Definition: spectrumvis.h:83

Member Function Documentation

◆ configure()

void SpectrumVis::configure ( MessageQueue msgQueue,
int  fftSize,
int  overlapPercent,
unsigned int  averagingNb,
int  averagingMode,
FFTWindow::Function  window,
bool  m_linear 
)

Definition at line 44 of file spectrumvis.cpp.

References MessageQueue::push().

Referenced by GLSpectrumGUI::applySettings(), BFMDemodGUI::BFMDemodGUI(), GLSpectrumGUI::on_averaging_currentIndexChanged(), GLSpectrumGUI::on_averagingMode_currentIndexChanged(), GLSpectrumGUI::on_fftSize_currentIndexChanged(), GLSpectrumGUI::on_fftWindow_currentIndexChanged(), GLSpectrumGUI::on_linscale_toggled(), UDPSinkGUI::UDPSinkGUI(), and UDPSourceGUI::UDPSourceGUI().

51 {
52  MsgConfigureSpectrumVis* cmd = new MsgConfigureSpectrumVis(fftSize, overlapPercent, averagingNb, averagingMode, window, linear);
53  msgQueue->push(cmd);
54 }
void push(Message *message, bool emitSignal=true)
Push message onto queue.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ feed()

void SpectrumVis::feed ( const SampleVector::const_iterator &  begin,
const SampleVector::const_iterator &  end,
bool  positiveOnly 
)
virtual

Implements BasebandSampleSink.

Definition at line 77 of file spectrumvis.cpp.

References FFTWindow::apply(), AvgModeFixedAvg, AvgModeMax, AvgModeMovingAvg, AvgModeNone, i, FFTEngine::in(), log2f(), m_avgMode, m_fft, m_fftBuffer, m_fftBufferFill, m_fftSize, m_fixedAverage, m_glSpectrum, m_linear, m_max, m_movingAverage, m_mult, m_mutex, m_needMoreSamples, m_ofs, m_overlapSize, m_powerSpectrum, m_powFFTDiv, m_refillSize, m_scalef, m_window, leansdr::max(), GLSpectrum::newSpectrum(), FixedAverage2D< T >::nextAverage(), MovingAverage2D< T >::nextAverage(), Max2D< T >::nextMax(), FFTEngine::out(), FixedAverage2D< T >::storeAndGetAvg(), MovingAverage2D< T >::storeAndGetAvg(), Max2D< T >::storeAndGetMax(), and FFTEngine::transform().

Referenced by feedTriggered().

78 {
79  // if no visualisation is set, send the samples to /dev/null
80 
81  if (m_glSpectrum == 0) {
82  return;
83  }
84 
85  if (!m_mutex.tryLock(0)) { // prevent conflicts with configuration process
86  return;
87  }
88 
89  SampleVector::const_iterator begin(cbegin);
90 
91  while (begin < end)
92  {
93  std::size_t todo = end - begin;
94  std::size_t samplesNeeded = m_refillSize - m_fftBufferFill;
95 
96  if (todo >= samplesNeeded)
97  {
98  // fill up the buffer
99  std::vector<Complex>::iterator it = m_fftBuffer.begin() + m_fftBufferFill;
100 
101  for (std::size_t i = 0; i < samplesNeeded; ++i, ++begin)
102  {
103  *it++ = Complex(begin->real() / m_scalef, begin->imag() / m_scalef);
104  }
105 
106  // apply fft window (and copy from m_fftBuffer to m_fftIn)
107  m_window.apply(&m_fftBuffer[0], m_fft->in());
108 
109  // calculate FFT
110  m_fft->transform();
111 
112  // extract power spectrum and reorder buckets
113  const Complex* fftOut = m_fft->out();
114  Complex c;
115  Real v;
116  std::size_t halfSize = m_fftSize / 2;
117 
118  if (m_avgMode == AvgModeNone)
119  {
120  if ( positiveOnly )
121  {
122  for (std::size_t i = 0; i < halfSize; i++)
123  {
124  c = fftOut[i];
125  v = c.real() * c.real() + c.imag() * c.imag();
126  v = m_linear ? v/m_powFFTDiv : m_mult * log2f(v) + m_ofs;
127  m_powerSpectrum[i * 2] = v;
128  m_powerSpectrum[i * 2 + 1] = v;
129  }
130  }
131  else
132  {
133  for (std::size_t i = 0; i < halfSize; i++)
134  {
135  c = fftOut[i + halfSize];
136  v = c.real() * c.real() + c.imag() * c.imag();
137  v = m_linear ? v/m_powFFTDiv : m_mult * log2f(v) + m_ofs;
138  m_powerSpectrum[i] = v;
139 
140  c = fftOut[i];
141  v = c.real() * c.real() + c.imag() * c.imag();
142  v = m_linear ? v/m_powFFTDiv : m_mult * log2f(v) + m_ofs;
143  m_powerSpectrum[i + halfSize] = v;
144  }
145  }
146 
147  // send new data to visualisation
149  }
150  else if (m_avgMode == AvgModeMovingAvg)
151  {
152  if ( positiveOnly )
153  {
154  for (std::size_t i = 0; i < halfSize; i++)
155  {
156  c = fftOut[i];
157  v = c.real() * c.real() + c.imag() * c.imag();
159  v = m_linear ? v/m_powFFTDiv : m_mult * log2f(v) + m_ofs;
160  m_powerSpectrum[i * 2] = v;
161  m_powerSpectrum[i * 2 + 1] = v;
162  }
163  }
164  else
165  {
166  for (std::size_t i = 0; i < halfSize; i++)
167  {
168  c = fftOut[i + halfSize];
169  v = c.real() * c.real() + c.imag() * c.imag();
170  v = m_movingAverage.storeAndGetAvg(v, i+halfSize);
171  v = m_linear ? v/m_powFFTDiv : m_mult * log2f(v) + m_ofs;
172  m_powerSpectrum[i] = v;
173 
174  c = fftOut[i];
175  v = c.real() * c.real() + c.imag() * c.imag();
177  v = m_linear ? v/m_powFFTDiv : m_mult * log2f(v) + m_ofs;
178  m_powerSpectrum[i + halfSize] = v;
179  }
180  }
181 
182  // send new data to visualisation
185  }
186  else if (m_avgMode == AvgModeFixedAvg)
187  {
188  double avg;
189 
190  if ( positiveOnly )
191  {
192  for (std::size_t i = 0; i < halfSize; i++)
193  {
194  c = fftOut[i];
195  v = c.real() * c.real() + c.imag() * c.imag();
196 
197  if (m_fixedAverage.storeAndGetAvg(avg, v, i))
198  {
199  avg = m_linear ? avg/m_powFFTDiv : m_mult * log2f(avg) + m_ofs;
200  m_powerSpectrum[i * 2] = avg;
201  m_powerSpectrum[i * 2 + 1] = avg;
202  }
203  }
204  }
205  else
206  {
207  for (std::size_t i = 0; i < halfSize; i++)
208  {
209  c = fftOut[i + halfSize];
210  v = c.real() * c.real() + c.imag() * c.imag();
211 
212  if (m_fixedAverage.storeAndGetAvg(avg, v, i+halfSize))
213  { // result available
214  avg = m_linear ? avg/m_powFFTDiv : m_mult * log2f(avg) + m_ofs;
215  m_powerSpectrum[i] = avg;
216  }
217 
218  c = fftOut[i];
219  v = c.real() * c.real() + c.imag() * c.imag();
220 
221  if (m_fixedAverage.storeAndGetAvg(avg, v, i))
222  { // result available
223  avg = m_linear ? avg/m_powFFTDiv : m_mult * log2f(avg) + m_ofs;
224  m_powerSpectrum[i + halfSize] = avg;
225  }
226  }
227  }
228 
229  if (m_fixedAverage.nextAverage()) { // result available
230  m_glSpectrum->newSpectrum(m_powerSpectrum, m_fftSize); // send new data to visualisation
231  }
232  }
233  else if (m_avgMode == AvgModeMax)
234  {
235  double max;
236 
237  if ( positiveOnly )
238  {
239  for (std::size_t i = 0; i < halfSize; i++)
240  {
241  c = fftOut[i];
242  v = c.real() * c.real() + c.imag() * c.imag();
243 
244  if (m_max.storeAndGetMax(max, v, i))
245  {
246  max = m_linear ? max/m_powFFTDiv : m_mult * log2f(max) + m_ofs;
247  m_powerSpectrum[i * 2] = max;
248  m_powerSpectrum[i * 2 + 1] = max;
249  }
250  }
251  }
252  else
253  {
254  for (std::size_t i = 0; i < halfSize; i++)
255  {
256  c = fftOut[i + halfSize];
257  v = c.real() * c.real() + c.imag() * c.imag();
258 
259  if (m_max.storeAndGetMax(max, v, i+halfSize))
260  { // result available
261  max = m_linear ? max/m_powFFTDiv : m_mult * log2f(max) + m_ofs;
262  m_powerSpectrum[i] = max;
263  }
264 
265  c = fftOut[i];
266  v = c.real() * c.real() + c.imag() * c.imag();
267 
268  if (m_max.storeAndGetMax(max, v, i))
269  { // result available
270  max = m_linear ? max/m_powFFTDiv : m_mult * log2f(max) + m_ofs;
271  m_powerSpectrum[i + halfSize] = max;
272  }
273  }
274  }
275 
276  if (m_max.nextMax()) { // result available
277  m_glSpectrum->newSpectrum(m_powerSpectrum, m_fftSize); // send new data to visualisation
278  }
279  }
280 
281  // advance buffer respecting the fft overlap factor
282  std::copy(m_fftBuffer.begin() + m_refillSize, m_fftBuffer.end(), m_fftBuffer.begin());
283 
284  // start over
285  m_fftBufferFill = m_overlapSize;
286  m_needMoreSamples = false;
287  }
288  else
289  {
290  // not enough samples for FFT - just fill in new data and return
291  for(std::vector<Complex>::iterator it = m_fftBuffer.begin() + m_fftBufferFill; begin < end; ++begin)
292  {
293  *it++ = Complex(begin->real() / m_scalef, begin->imag() / m_scalef);
294  }
295 
296  m_fftBufferFill += todo;
297  m_needMoreSamples = true;
298  }
299  }
300 
301  m_mutex.unlock();
302 }
QMutex m_mutex
Definition: spectrumvis.h:109
virtual Complex * in()=0
GLSpectrum * m_glSpectrum
Definition: spectrumvis.h:97
std::size_t m_overlapSize
Definition: spectrumvis.h:91
bool m_needMoreSamples
Definition: spectrumvis.h:94
FixedAverage2D< double > m_fixedAverage
Definition: spectrumvis.h:99
void apply(const std::vector< Real > &in, std::vector< Real > *out)
Definition: fftwindow.cpp:58
Real m_scalef
Definition: spectrumvis.h:96
bool storeAndGetAvg(T &avg, T v, unsigned int index)
virtual void transform()=0
Real m_powFFTDiv
Definition: spectrumvis.h:106
bool storeAndGetMax(T &max, T v, unsigned int index)
Definition: max2d.h:55
std::size_t m_refillSize
Definition: spectrumvis.h:92
FFTEngine * m_fft
Definition: spectrumvis.h:83
std::vector< Real > m_powerSpectrum
Definition: spectrumvis.h:87
int32_t i
Definition: decimators.h:244
std::size_t m_fftBufferFill
Definition: spectrumvis.h:93
void newSpectrum(const std::vector< Real > &spectrum, int fftSize)
Definition: glspectrum.cpp:343
std::size_t m_fftSize
Definition: spectrumvis.h:89
static const Real m_mult
Definition: spectrumvis.h:107
bool nextMax()
Definition: max2d.h:81
Max2D< double > m_max
Definition: spectrumvis.h:100
AvgMode m_avgMode
Definition: spectrumvis.h:102
virtual Complex * out()=0
T storeAndGetAvg(T v, unsigned int index)
FFTWindow m_window
Definition: spectrumvis.h:84
MovingAverage2D< double > m_movingAverage
Definition: spectrumvis.h:98
std::complex< Real > Complex
Definition: dsptypes.h:43
double log2f(double n)
Definition: spectrumvis.cpp:9
float Real
Definition: dsptypes.h:42
T max(const T &x, const T &y)
Definition: framework.h:446
std::vector< Complex > m_fftBuffer
Definition: spectrumvis.h:86
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ feedTriggered()

void SpectrumVis::feedTriggered ( const SampleVector::const_iterator &  triggerPoint,
const SampleVector::const_iterator &  end,
bool  positiveOnly 
)

Definition at line 56 of file spectrumvis.cpp.

References feed().

Referenced by SpectrumScopeComboVis::feed().

57 {
58  feed(triggerPoint, end, positiveOnly); // normal feed from trigger point
59  /*
60  if (triggerPoint == end)
61  {
62  // the following piece of code allows to terminate the FFT that ends past the end of scope captured data
63  // that is the spectrum will include the captured data
64  // just do nothing if you want the spectrum to be included inside the scope captured data
65  // that is to drop the FFT that dangles past the end of captured data
66  if (m_needMoreSamples) {
67  feed(begin, end, positiveOnly);
68  m_needMoreSamples = false; // force finish
69  }
70  }
71  else
72  {
73  feed(triggerPoint, end, positiveOnly); // normal feed from trigger point
74  }*/
75 }
virtual void feed(const SampleVector::const_iterator &begin, const SampleVector::const_iterator &end, bool positiveOnly)
Definition: spectrumvis.cpp:77
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ handleConfigure()

void SpectrumVis::handleConfigure ( int  fftSize,
int  overlapPercent,
unsigned int  averageNb,
AvgMode  averagingMode,
FFTWindow::Function  window,
bool  linear 
)
private

Definition at line 331 of file spectrumvis.cpp.

References FFTEngine::configure(), FFTWindow::create(), m_averageNb, m_avgMode, m_fft, m_fftBufferFill, m_fftSize, m_fixedAverage, m_linear, m_max, m_movingAverage, m_mutex, m_ofs, m_overlapPercent, m_overlapSize, m_powFFTDiv, m_refillSize, m_window, MAX_FFT_SIZE, Max2D< T >::resize(), FixedAverage2D< T >::resize(), and MovingAverage2D< T >::resize().

Referenced by handleMessage(), and SpectrumVis().

337 {
338 // qDebug("SpectrumVis::handleConfigure, fftSize: %d overlapPercent: %d averageNb: %u averagingMode: %d window: %d linear: %s",
339 // fftSize, overlapPercent, averageNb, (int) averagingMode, (int) window, linear ? "true" : "false");
340  QMutexLocker mutexLocker(&m_mutex);
341 
342  if (fftSize > MAX_FFT_SIZE)
343  {
344  fftSize = MAX_FFT_SIZE;
345  }
346  else if (fftSize < 64)
347  {
348  fftSize = 64;
349  }
350 
351  if (overlapPercent > 100)
352  {
353  m_overlapPercent = 100;
354  }
355  else if (overlapPercent < 0)
356  {
357  m_overlapPercent = 0;
358  }
359  else
360  {
361  m_overlapPercent = overlapPercent;
362  }
363 
364  m_fftSize = fftSize;
365  m_fft->configure(m_fftSize, false);
366  m_window.create(window, m_fftSize);
370  m_movingAverage.resize(fftSize, averageNb > 1000 ? 1000 : averageNb); // Capping to avoid out of memory condition
371  m_fixedAverage.resize(fftSize, averageNb);
372  m_max.resize(fftSize, averageNb);
373  m_averageNb = averageNb;
374  m_avgMode = averagingMode;
375  m_linear = linear;
376  m_ofs = 20.0f * log10f(1.0f / m_fftSize);
378 }
QMutex m_mutex
Definition: spectrumvis.h:109
void resize(unsigned int width, unsigned int depth)
std::size_t m_overlapSize
Definition: spectrumvis.h:91
void create(Function function, int n)
Definition: fftwindow.cpp:21
FixedAverage2D< double > m_fixedAverage
Definition: spectrumvis.h:99
#define MAX_FFT_SIZE
Definition: spectrumvis.cpp:6
std::size_t m_overlapPercent
Definition: spectrumvis.h:90
Real m_powFFTDiv
Definition: spectrumvis.h:106
std::size_t m_refillSize
Definition: spectrumvis.h:92
virtual void configure(int n, bool inverse)=0
FFTEngine * m_fft
Definition: spectrumvis.h:83
void resize(unsigned int width, unsigned int size)
unsigned int m_averageNb
Definition: spectrumvis.h:101
void resize(unsigned int width, unsigned int size)
Definition: max2d.h:37
std::size_t m_fftBufferFill
Definition: spectrumvis.h:93
std::size_t m_fftSize
Definition: spectrumvis.h:89
Max2D< double > m_max
Definition: spectrumvis.h:100
AvgMode m_avgMode
Definition: spectrumvis.h:102
FFTWindow m_window
Definition: spectrumvis.h:84
MovingAverage2D< double > m_movingAverage
Definition: spectrumvis.h:98
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ handleMessage()

bool SpectrumVis::handleMessage ( const Message cmd)
virtual

Processing of a message. Returns true if message has actually been processed.

Implements BasebandSampleSink.

Definition at line 312 of file spectrumvis.cpp.

References SpectrumVis::MsgConfigureSpectrumVis::getAverageNb(), SpectrumVis::MsgConfigureSpectrumVis::getAvgMode(), SpectrumVis::MsgConfigureSpectrumVis::getFFTSize(), SpectrumVis::MsgConfigureSpectrumVis::getLinear(), SpectrumVis::MsgConfigureSpectrumVis::getOverlapPercent(), SpectrumVis::MsgConfigureSpectrumVis::getWindow(), handleConfigure(), and Message::match().

Referenced by SpectrumScopeComboVis::handleMessage().

313 {
314  if (MsgConfigureSpectrumVis::match(message))
315  {
316  MsgConfigureSpectrumVis& conf = (MsgConfigureSpectrumVis&) message;
317  handleConfigure(conf.getFFTSize(),
318  conf.getOverlapPercent(),
319  conf.getAverageNb(),
320  conf.getAvgMode(),
321  conf.getWindow(),
322  conf.getLinear());
323  return true;
324  }
325  else
326  {
327  return false;
328  }
329 }
static bool match(const Message *message)
Definition: message.cpp:45
void handleConfigure(int fftSize, int overlapPercent, unsigned int averageNb, AvgMode averagingMode, FFTWindow::Function window, bool linear)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ start()

void SpectrumVis::start ( )
virtual

Implements BasebandSampleSink.

Definition at line 304 of file spectrumvis.cpp.

Referenced by SpectrumScopeComboVis::start().

305 {
306 }
+ Here is the caller graph for this function:

◆ stop()

void SpectrumVis::stop ( )
virtual

Implements BasebandSampleSink.

Definition at line 308 of file spectrumvis.cpp.

Referenced by SpectrumScopeComboVis::stop().

309 {
310 }
+ Here is the caller graph for this function:

Member Data Documentation

◆ m_averageNb

unsigned int SpectrumVis::m_averageNb
private

Definition at line 101 of file spectrumvis.h.

Referenced by handleConfigure().

◆ m_avgMode

AvgMode SpectrumVis::m_avgMode
private

Definition at line 102 of file spectrumvis.h.

Referenced by feed(), and handleConfigure().

◆ m_fft

FFTEngine* SpectrumVis::m_fft
private

Definition at line 83 of file spectrumvis.h.

Referenced by feed(), handleConfigure(), and ~SpectrumVis().

◆ m_fftBuffer

std::vector<Complex> SpectrumVis::m_fftBuffer
private

Definition at line 86 of file spectrumvis.h.

Referenced by feed().

◆ m_fftBufferFill

std::size_t SpectrumVis::m_fftBufferFill
private

Definition at line 93 of file spectrumvis.h.

Referenced by feed(), and handleConfigure().

◆ m_fftSize

std::size_t SpectrumVis::m_fftSize
private

Definition at line 89 of file spectrumvis.h.

Referenced by feed(), and handleConfigure().

◆ m_fixedAverage

FixedAverage2D<double> SpectrumVis::m_fixedAverage
private

Definition at line 99 of file spectrumvis.h.

Referenced by feed(), and handleConfigure().

◆ m_glSpectrum

GLSpectrum* SpectrumVis::m_glSpectrum
private

Definition at line 97 of file spectrumvis.h.

Referenced by feed().

◆ m_linear

bool SpectrumVis::m_linear
private

Definition at line 103 of file spectrumvis.h.

Referenced by feed(), and handleConfigure().

◆ m_max

Max2D<double> SpectrumVis::m_max
private

Definition at line 100 of file spectrumvis.h.

Referenced by feed(), and handleConfigure().

◆ m_movingAverage

MovingAverage2D<double> SpectrumVis::m_movingAverage
private

Definition at line 98 of file spectrumvis.h.

Referenced by feed(), and handleConfigure().

◆ m_mult

const Real SpectrumVis::m_mult = (10.0f / log2f(10.0f))
staticprivate

Definition at line 107 of file spectrumvis.h.

Referenced by feed(), and log2f().

◆ m_mutex

QMutex SpectrumVis::m_mutex
private

Definition at line 109 of file spectrumvis.h.

Referenced by feed(), and handleConfigure().

◆ m_needMoreSamples

bool SpectrumVis::m_needMoreSamples
private

Definition at line 94 of file spectrumvis.h.

Referenced by feed().

◆ m_ofs

Real SpectrumVis::m_ofs
private

Definition at line 105 of file spectrumvis.h.

Referenced by feed(), and handleConfigure().

◆ m_overlapPercent

std::size_t SpectrumVis::m_overlapPercent
private

Definition at line 90 of file spectrumvis.h.

Referenced by handleConfigure().

◆ m_overlapSize

std::size_t SpectrumVis::m_overlapSize
private

Definition at line 91 of file spectrumvis.h.

Referenced by feed(), and handleConfigure().

◆ m_powerSpectrum

std::vector<Real> SpectrumVis::m_powerSpectrum
private

Definition at line 87 of file spectrumvis.h.

Referenced by feed().

◆ m_powFFTDiv

Real SpectrumVis::m_powFFTDiv
private

Definition at line 106 of file spectrumvis.h.

Referenced by feed(), and handleConfigure().

◆ m_refillSize

std::size_t SpectrumVis::m_refillSize
private

Definition at line 92 of file spectrumvis.h.

Referenced by feed(), and handleConfigure().

◆ m_scalef

Real SpectrumVis::m_scalef
private

Definition at line 96 of file spectrumvis.h.

Referenced by feed().

◆ m_window

FFTWindow SpectrumVis::m_window
private

Definition at line 84 of file spectrumvis.h.

Referenced by feed(), and handleConfigure().


The documentation for this class was generated from the following files: