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//=============================================================================================================
65class DSPSHARED_EXPORT RtNoiseWorker : public QObject
66{
67 Q_OBJECT
68
69public:
70 //=========================================================================================================
78 explicit RtNoiseWorker(qint32 iFftLength,
80 qint32 iDataLength);
81
82 //=========================================================================================================
88 void doWork(const Eigen::MatrixXd& matData);
89
90signals:
96 void resultReady(const Eigen::MatrixXd& matSpecData);
97
98private:
99 static QVector<float> hanning(int N, short itype);
100
101 qint32 m_iFftLength;
102 double m_dFs;
103 qint32 m_iDataLength;
104 QVector<float> m_fWin;
105
106 int m_iNumOfBlocks = 0;
107 int m_iBlockSize = 0;
108 int m_iSensors = 0;
109 int m_iBlockIndex = 0;
110 bool m_bFirstBlock = true;
111 Eigen::MatrixXd m_matCircBuf;
112};
113
114//=============================================================================================================
120class DSPSHARED_EXPORT RtNoise : public QObject
121{
122 Q_OBJECT
123
124public:
125 typedef QSharedPointer<RtNoise> SPtr;
126 typedef QSharedPointer<const RtNoise> ConstSPtr;
127
128 //=========================================================================================================
137 explicit RtNoise(qint32 iFftLength,
138 FIFFLIB::FiffInfo::SPtr pFiffInfo,
139 qint32 iDataLength,
140 QObject* parent = nullptr);
141
142 //=========================================================================================================
146 ~RtNoise();
147
148 //=========================================================================================================
154 void append(const Eigen::MatrixXd& matData);
155
156 //=========================================================================================================
162 bool isRunning() const;
163
164 //=========================================================================================================
170 bool start();
171
172 //=========================================================================================================
178 bool stop();
179
180 //=========================================================================================================
188 bool wait(unsigned long time = ULONG_MAX);
189
190signals:
194 void SpecCalculated(const Eigen::MatrixXd& matSpecData);
195
199 void operate(const Eigen::MatrixXd& matData);
200
201private:
202 QThread m_workerThread;
203 bool m_bIsRunning = false;
204};
205
206//=============================================================================================================
207// INLINE DEFINITIONS
208//=============================================================================================================
209
210} // NAMESPACE
211
212#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:241
void operate(const Eigen::MatrixXd &matData)
QSharedPointer< const RtNoise > ConstSPtr
Definition rt_noise.h:126
void SpecCalculated(const Eigen::MatrixXd &matSpecData)
RtNoise(qint32 iFftLength, FIFFLIB::FiffInfo::SPtr pFiffInfo, qint32 iDataLength, QObject *parent=nullptr)
Definition rt_noise.cpp:174
void append(const Eigen::MatrixXd &matData)
Definition rt_noise.cpp:204
QSharedPointer< RtNoise > SPtr
Definition rt_noise.h:125
QSharedPointer< FiffInfo > SPtr
Definition fiff_info.h:92