v2.0.0
Loading...
Searching...
No Matches
rt_noise.h
Go to the documentation of this file.
1//=============================================================================================================
26
27#ifndef RT_NOISE_RTPROCESSING_H
28#define RT_NOISE_RTPROCESSING_H
29
30//=============================================================================================================
31// INCLUDES
32//=============================================================================================================
33
34#include "../dsp_global.h"
35
36#include <fiff/fiff_info.h>
37
38//=============================================================================================================
39// QT INCLUDES
40//=============================================================================================================
41
42#include <QThread>
43#include <QMutex>
44#include <QSharedPointer>
45
46//=============================================================================================================
47// EIGEN INCLUDES
48//=============================================================================================================
49
50#include <Eigen/Core>
51
52//=============================================================================================================
53// DEFINE NAMESPACE RTPROCESSINGLIB
54//=============================================================================================================
55
56namespace RTPROCESSINGLIB
57{
58
59//=============================================================================================================
63class DSPSHARED_EXPORT RtNoiseWorker : public QObject
64{
65 Q_OBJECT
66
67public:
68 //=========================================================================================================
76 explicit RtNoiseWorker(qint32 iFftLength,
78 qint32 iDataLength);
79
80 //=========================================================================================================
86 void doWork(const Eigen::MatrixXd& matData);
87
88signals:
94 void resultReady(const Eigen::MatrixXd& matSpecData);
95
96private:
97 static QVector<float> hanning(int N, short itype);
98
99 qint32 m_iFftLength;
100 double m_dFs;
101 qint32 m_iDataLength;
102 QVector<float> m_fWin;
103
104 int m_iNumOfBlocks = 0;
105 int m_iBlockSize = 0;
106 int m_iSensors = 0;
107 int m_iBlockIndex = 0;
108 bool m_bFirstBlock = true;
109 Eigen::MatrixXd m_matCircBuf;
110};
111
112//=============================================================================================================
116class DSPSHARED_EXPORT RtNoise : public QObject
117{
118 Q_OBJECT
119
120public:
121 typedef QSharedPointer<RtNoise> SPtr;
122 typedef QSharedPointer<const RtNoise> ConstSPtr;
123
124 //=========================================================================================================
133 explicit RtNoise(qint32 iFftLength,
134 FIFFLIB::FiffInfo::SPtr pFiffInfo,
135 qint32 iDataLength,
136 QObject *parent = nullptr);
137
138 //=========================================================================================================
142 ~RtNoise();
143
144 //=========================================================================================================
150 void append(const Eigen::MatrixXd& matData);
151
152 //=========================================================================================================
156 bool isRunning() const;
157
158 //=========================================================================================================
164 bool start();
165
166 //=========================================================================================================
172 bool stop();
173
174 //=========================================================================================================
178 bool wait(unsigned long time = ULONG_MAX);
179
180signals:
184 void SpecCalculated(const Eigen::MatrixXd& matSpecData);
185
189 void operate(const Eigen::MatrixXd& matData);
190
191private:
192 QThread m_workerThread;
193 bool m_bIsRunning = false;
194};
195
196//=============================================================================================================
197// INLINE DEFINITIONS
198//=============================================================================================================
199
200} // NAMESPACE
201
202#endif // RT_NOISE_RTPROCESSING_H
Full FIFF measurement metadata: everything from FIFFB_MEAS / FIFFB_MEAS_INFO needed to interpret a re...
Export/import macros and namespace declaration for the DSP library.
#define DSPSHARED_EXPORT
Definition dsp_global.h:50
void resultReady(const Eigen::MatrixXd &matSpecData)
RtNoiseWorker(qint32 iFftLength, FIFFLIB::FiffInfo::SPtr pFiffInfo, qint32 iDataLength)
Definition rt_noise.cpp:49
void doWork(const Eigen::MatrixXd &matData)
Definition rt_noise.cpp:61
bool wait(unsigned long time=ULONG_MAX)
Definition rt_noise.cpp:242
void operate(const Eigen::MatrixXd &matData)
QSharedPointer< const RtNoise > ConstSPtr
Definition rt_noise.h:122
void SpecCalculated(const Eigen::MatrixXd &matSpecData)
RtNoise(qint32 iFftLength, FIFFLIB::FiffInfo::SPtr pFiffInfo, qint32 iDataLength, QObject *parent=nullptr)
Definition rt_noise.cpp:175
void append(const Eigen::MatrixXd &matData)
Definition rt_noise.cpp:205
QSharedPointer< RtNoise > SPtr
Definition rt_noise.h:121
QSharedPointer< FiffInfo > SPtr
Definition fiff_info.h:90