v2.0.0
Loading...
Searching...
No Matches
rt_noise.h
Go to the documentation of this file.
1//=============================================================================================================
35
36#ifndef RT_NOISE_RTPROCESSING_H
37#define RT_NOISE_RTPROCESSING_H
38
39//=============================================================================================================
40// INCLUDES
41//=============================================================================================================
42
43#include "../dsp_global.h"
44
45#include <fiff/fiff_info.h>
46
47//=============================================================================================================
48// QT INCLUDES
49//=============================================================================================================
50
51#include <QThread>
52#include <QMutex>
53#include <QSharedPointer>
54
55//=============================================================================================================
56// EIGEN INCLUDES
57//=============================================================================================================
58
59#include <Eigen/Core>
60
61//=============================================================================================================
62// DEFINE NAMESPACE RTPROCESSINGLIB
63//=============================================================================================================
64
65namespace RTPROCESSINGLIB
66{
67
68//=============================================================================================================
72class DSPSHARED_EXPORT RtNoiseWorker : public QObject
73{
74 Q_OBJECT
75
76public:
77 //=========================================================================================================
85 explicit RtNoiseWorker(qint32 iFftLength,
87 qint32 iDataLength);
88
89 //=========================================================================================================
95 void doWork(const Eigen::MatrixXd& matData);
96
97signals:
103 void resultReady(const Eigen::MatrixXd& matSpecData);
104
105private:
106 static QVector<float> hanning(int N, short itype);
107
108 qint32 m_iFftLength;
109 double m_dFs;
110 qint32 m_iDataLength;
111 QVector<float> m_fWin;
112
113 int m_iNumOfBlocks = 0;
114 int m_iBlockSize = 0;
115 int m_iSensors = 0;
116 int m_iBlockIndex = 0;
117 bool m_bFirstBlock = true;
118 Eigen::MatrixXd m_matCircBuf;
119};
120
121//=============================================================================================================
125class DSPSHARED_EXPORT RtNoise : public QObject
126{
127 Q_OBJECT
128
129public:
130 typedef QSharedPointer<RtNoise> SPtr;
131 typedef QSharedPointer<const RtNoise> ConstSPtr;
132
133 //=========================================================================================================
142 explicit RtNoise(qint32 iFftLength,
143 FIFFLIB::FiffInfo::SPtr pFiffInfo,
144 qint32 iDataLength,
145 QObject *parent = nullptr);
146
147 //=========================================================================================================
151 ~RtNoise();
152
153 //=========================================================================================================
159 void append(const Eigen::MatrixXd& matData);
160
161 //=========================================================================================================
165 bool isRunning() const;
166
167 //=========================================================================================================
173 bool start();
174
175 //=========================================================================================================
181 bool stop();
182
183 //=========================================================================================================
187 bool wait(unsigned long time = ULONG_MAX);
188
189signals:
193 void SpecCalculated(const Eigen::MatrixXd& matSpecData);
194
198 void operate(const Eigen::MatrixXd& matData);
199
200private:
201 QThread m_workerThread;
202 bool m_bIsRunning = false;
203};
204
205//=============================================================================================================
206// INLINE DEFINITIONS
207//=============================================================================================================
208
209} // NAMESPACE
210
211#endif // RT_NOISE_RTPROCESSING_H
FiffInfo class declaration.
dsp library export/import macros.
#define DSPSHARED_EXPORT
Definition dsp_global.h:56
void resultReady(const Eigen::MatrixXd &matSpecData)
RtNoiseWorker(qint32 iFftLength, FIFFLIB::FiffInfo::SPtr pFiffInfo, qint32 iDataLength)
Definition rt_noise.cpp:72
void doWork(const Eigen::MatrixXd &matData)
Definition rt_noise.cpp:84
bool wait(unsigned long time=ULONG_MAX)
Definition rt_noise.cpp:265
void operate(const Eigen::MatrixXd &matData)
QSharedPointer< const RtNoise > ConstSPtr
Definition rt_noise.h:131
void SpecCalculated(const Eigen::MatrixXd &matSpecData)
RtNoise(qint32 iFftLength, FIFFLIB::FiffInfo::SPtr pFiffInfo, qint32 iDataLength, QObject *parent=nullptr)
Definition rt_noise.cpp:198
void append(const Eigen::MatrixXd &matData)
Definition rt_noise.cpp:228
QSharedPointer< RtNoise > SPtr
Definition rt_noise.h:130
QSharedPointer< FiffInfo > SPtr
Definition fiff_info.h:88