| 
									
										
										
										
											2014-05-18 16:52:39 +01:00
										 |  |  | #ifndef INCLUDE_SPECTRUMVIS_H
 | 
					
						
							|  |  |  | #define INCLUDE_SPECTRUMVIS_H
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include "dsp/samplesink.h"
 | 
					
						
							|  |  |  | #include "dsp/fftengine.h"
 | 
					
						
							|  |  |  | #include "fftwindow.h"
 | 
					
						
							|  |  |  | #include "util/export.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class GLSpectrum; | 
					
						
							|  |  |  | class MessageQueue; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class SDRANGELOVE_API SpectrumVis : public SampleSink { | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  | 	SpectrumVis(GLSpectrum* glSpectrum = NULL); | 
					
						
							|  |  |  | 	~SpectrumVis(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	void configure(MessageQueue* msgQueue, int fftSize, int overlapPercent, FFTWindow::Function window); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-06-15 09:32:25 +01:00
										 |  |  | 	void feed(SampleVector::const_iterator begin, SampleVector::const_iterator end, bool positiveOnly); | 
					
						
							| 
									
										
										
										
											2015-07-15 01:19:39 +02:00
										 |  |  | 	void feedTriggered(SampleVector::const_iterator triggerPoint, SampleVector::const_iterator begin, SampleVector::const_iterator end, bool positiveOnly); | 
					
						
							| 
									
										
										
										
											2014-05-18 16:52:39 +01:00
										 |  |  | 	void start(); | 
					
						
							|  |  |  | 	void stop(); | 
					
						
							| 
									
										
										
										
											2015-06-23 20:05:28 +02:00
										 |  |  | 	bool handleMessageKeep(Message* message); | 
					
						
							| 
									
										
										
										
											2014-05-18 16:52:39 +01:00
										 |  |  | 	bool handleMessage(Message* message); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | private: | 
					
						
							|  |  |  | 	FFTEngine* m_fft; | 
					
						
							|  |  |  | 	FFTWindow m_window; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	std::vector<Complex> m_fftBuffer; | 
					
						
							|  |  |  | 	std::vector<Real> m_logPowerSpectrum; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	size_t m_fftSize; | 
					
						
							|  |  |  | 	size_t m_overlapPercent; | 
					
						
							|  |  |  | 	size_t m_overlapSize; | 
					
						
							|  |  |  | 	size_t m_refillSize; | 
					
						
							|  |  |  | 	size_t m_fftBufferFill; | 
					
						
							| 
									
										
										
										
											2015-07-15 01:19:39 +02:00
										 |  |  | 	bool m_needMoreSamples; | 
					
						
							| 
									
										
										
										
											2014-05-18 16:52:39 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	GLSpectrum* m_glSpectrum; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	void handleConfigure(int fftSize, int overlapPercent, FFTWindow::Function window); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif // INCLUDE_SPECTRUMVIS_H
 |