mirror of
				https://github.com/f4exb/sdrangel.git
				synced 2025-11-03 21:20:31 -05:00 
			
		
		
		
	FFT correlator: use FFT factory
This commit is contained in:
		
							parent
							
								
									2764fd6083
								
							
						
					
					
						commit
						37082ce41d
					
				@ -20,14 +20,18 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include <algorithm>
 | 
					#include <algorithm>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "dsp/dspengine.h"
 | 
				
			||||||
 | 
					#include "dsp/fftfactory.h"
 | 
				
			||||||
#include "dsp/fftengine.h"
 | 
					#include "dsp/fftengine.h"
 | 
				
			||||||
#include "fftcorr.h"
 | 
					#include "fftcorr.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void fftcorr::init_fft()
 | 
					void fftcorr::init_fft()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    fftA->configure(flen, false);
 | 
					    FFTFactory *fftFactory = DSPEngine::instance()->getFFTFactory();
 | 
				
			||||||
    fftB->configure(flen, false);
 | 
					    fftASequence = fftFactory->getEngine(flen, false, &fftA);
 | 
				
			||||||
    fftInvA->configure(flen, true);
 | 
					    fftBSequence = fftFactory->getEngine(flen, false, &fftB);
 | 
				
			||||||
 | 
					    fftInvASequence = fftFactory->getEngine(flen, true, &fftInvA);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    m_window.create(FFTWindow::Hanning, flen);
 | 
					    m_window.create(FFTWindow::Hanning, flen);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    dataA    = new cmplx[flen];
 | 
					    dataA    = new cmplx[flen];
 | 
				
			||||||
@ -46,17 +50,22 @@ void fftcorr::init_fft()
 | 
				
			|||||||
fftcorr::fftcorr(int len) :
 | 
					fftcorr::fftcorr(int len) :
 | 
				
			||||||
    flen(len),
 | 
					    flen(len),
 | 
				
			||||||
    flen2(len>>1),
 | 
					    flen2(len>>1),
 | 
				
			||||||
    fftA(FFTEngine::create(QString(""))),   // TODO: use factory
 | 
					    fftA(nullptr),
 | 
				
			||||||
    fftB(FFTEngine::create(QString(""))),   // TODO: use factory
 | 
					    fftB(nullptr),
 | 
				
			||||||
    fftInvA(FFTEngine::create(QString(""))) // TODO: use factory
 | 
					    fftInvA(nullptr),
 | 
				
			||||||
 | 
					    fftASequence(0),
 | 
				
			||||||
 | 
					    fftBSequence(0),
 | 
				
			||||||
 | 
					    fftInvASequence(0)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    init_fft();
 | 
					    init_fft();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fftcorr::~fftcorr()
 | 
					fftcorr::~fftcorr()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    delete fftA;
 | 
					    FFTFactory *fftFactory = DSPEngine::instance()->getFFTFactory();
 | 
				
			||||||
    delete fftB;
 | 
					    fftFactory->releaseEngine(flen, false, fftASequence);
 | 
				
			||||||
 | 
					    fftFactory->releaseEngine(flen, false, fftBSequence);
 | 
				
			||||||
 | 
					    fftFactory->releaseEngine(flen, true, fftInvASequence);
 | 
				
			||||||
    delete[] dataA;
 | 
					    delete[] dataA;
 | 
				
			||||||
    delete[] dataB;
 | 
					    delete[] dataB;
 | 
				
			||||||
    delete[] dataBj;
 | 
					    delete[] dataBj;
 | 
				
			||||||
 | 
				
			|||||||
@ -44,6 +44,9 @@ private:
 | 
				
			|||||||
    FFTEngine *fftA;
 | 
					    FFTEngine *fftA;
 | 
				
			||||||
    FFTEngine *fftB;
 | 
					    FFTEngine *fftB;
 | 
				
			||||||
    FFTEngine *fftInvA;
 | 
					    FFTEngine *fftInvA;
 | 
				
			||||||
 | 
					    unsigned int fftASequence;
 | 
				
			||||||
 | 
					    unsigned int fftBSequence;
 | 
				
			||||||
 | 
					    unsigned int fftInvASequence;
 | 
				
			||||||
    FFTWindow m_window;
 | 
					    FFTWindow m_window;
 | 
				
			||||||
    cmplx *dataA;  // from A input
 | 
					    cmplx *dataA;  // from A input
 | 
				
			||||||
    cmplx *dataB;  // from B input
 | 
					    cmplx *dataB;  // from B input
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user