mirror of
https://github.com/f4exb/sdrangel.git
synced 2025-05-23 18:52:28 -04:00
FFT factory: reuse flag
This commit is contained in:
parent
37082ce41d
commit
30694b4be7
@ -16,6 +16,8 @@ public:
|
||||
virtual Complex* in() = 0;
|
||||
virtual Complex* out() = 0;
|
||||
|
||||
virtual void setReuse(bool reuse) = 0;
|
||||
|
||||
static FFTEngine* create(const QString& fftWisdomFileName);
|
||||
};
|
||||
|
||||
|
@ -53,6 +53,7 @@ void FFTFactory::preallocate(
|
||||
{
|
||||
fftEngines.push_back(AllocatedEngine());
|
||||
fftEngines.back().m_engine = FFTEngine::create(m_fftwWisdomFileName);
|
||||
fftEngines.back().m_engine->setReuse(false);
|
||||
fftEngines.back().m_engine->configure(fftSize, false);
|
||||
}
|
||||
|
||||
@ -60,6 +61,7 @@ void FFTFactory::preallocate(
|
||||
{
|
||||
invFFTEngines.push_back(AllocatedEngine());
|
||||
invFFTEngines.back().m_engine = FFTEngine::create(m_fftwWisdomFileName);
|
||||
fftEngines.back().m_engine->setReuse(false);
|
||||
invFFTEngines.back().m_engine->configure(fftSize, true);
|
||||
}
|
||||
}
|
||||
@ -79,6 +81,7 @@ unsigned int FFTFactory::getEngine(unsigned int fftSize, bool inverse, FFTEngine
|
||||
engines.push_back(AllocatedEngine());
|
||||
engines.back().m_inUse = true;
|
||||
engines.back().m_engine = FFTEngine::create(m_fftwWisdomFileName);
|
||||
engines.back().m_engine->setReuse(false);
|
||||
engines.back().m_engine->configure(fftSize, true);
|
||||
*engine = engines.back().m_engine;
|
||||
return 0;
|
||||
@ -108,6 +111,7 @@ unsigned int FFTFactory::getEngine(unsigned int fftSize, bool inverse, FFTEngine
|
||||
engines.push_back(AllocatedEngine());
|
||||
engines.back().m_inUse = true;
|
||||
engines.back().m_engine = FFTEngine::create(m_fftwWisdomFileName);
|
||||
engines.back().m_engine->setReuse(false);
|
||||
engines.back().m_engine->configure(fftSize, true);
|
||||
*engine = engines.back().m_engine;
|
||||
return engines.size() - 1;
|
||||
|
@ -4,7 +4,12 @@
|
||||
FFTWEngine::FFTWEngine(const QString& fftWisdomFileName) :
|
||||
m_fftWisdomFileName(fftWisdomFileName),
|
||||
m_plans(),
|
||||
<<<<<<< ours
|
||||
m_currentPlan(NULL)
|
||||
=======
|
||||
m_currentPlan(nullptr),
|
||||
m_reuse(true)
|
||||
>>>>>>> theirs
|
||||
{
|
||||
}
|
||||
|
||||
@ -15,12 +20,26 @@ FFTWEngine::~FFTWEngine()
|
||||
|
||||
void FFTWEngine::configure(int n, bool inverse)
|
||||
{
|
||||
<<<<<<< ours
|
||||
for(Plans::const_iterator it = m_plans.begin(); it != m_plans.end(); ++it) {
|
||||
if(((*it)->n == n) && ((*it)->inverse == inverse)) {
|
||||
m_currentPlan = *it;
|
||||
return;
|
||||
}
|
||||
}
|
||||
=======
|
||||
if (m_reuse)
|
||||
{
|
||||
for (Plans::const_iterator it = m_plans.begin(); it != m_plans.end(); ++it)
|
||||
{
|
||||
if (((*it)->n == n) && ((*it)->inverse == inverse))
|
||||
{
|
||||
m_currentPlan = *it;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
>>>>>>> theirs
|
||||
|
||||
m_currentPlan = new Plan;
|
||||
m_currentPlan->n = n;
|
||||
|
@ -12,13 +12,15 @@
|
||||
class SDRBASE_API FFTWEngine : public FFTEngine {
|
||||
public:
|
||||
FFTWEngine(const QString& fftWisdomFileName);
|
||||
~FFTWEngine();
|
||||
virtual ~FFTWEngine();
|
||||
|
||||
void configure(int n, bool inverse);
|
||||
void transform();
|
||||
virtual void configure(int n, bool inverse);
|
||||
virtual void transform();
|
||||
|
||||
Complex* in();
|
||||
Complex* out();
|
||||
virtual Complex* in();
|
||||
virtual Complex* out();
|
||||
|
||||
virtual void setReuse(bool reuse) { m_reuse = reuse; }
|
||||
|
||||
protected:
|
||||
static QMutex m_globalPlanMutex;
|
||||
@ -34,6 +36,7 @@ protected:
|
||||
typedef std::list<Plan*> Plans;
|
||||
Plans m_plans;
|
||||
Plan* m_currentPlan;
|
||||
bool m_reuse;
|
||||
|
||||
void freeAll();
|
||||
};
|
||||
|
@ -23,3 +23,8 @@ Complex* KissEngine::out()
|
||||
{
|
||||
return &m_out[0];
|
||||
}
|
||||
|
||||
void KissEngine::setReuse(bool reuse)
|
||||
{
|
||||
(void) reuse;
|
||||
}
|
@ -7,11 +7,13 @@
|
||||
|
||||
class SDRBASE_API KissEngine : public FFTEngine {
|
||||
public:
|
||||
void configure(int n, bool inverse);
|
||||
void transform();
|
||||
virtual void configure(int n, bool inverse);
|
||||
virtual void transform();
|
||||
|
||||
Complex* in();
|
||||
Complex* out();
|
||||
virtual Complex* in();
|
||||
virtual Complex* out();
|
||||
|
||||
virtual void setReuse(bool reuse);
|
||||
|
||||
protected:
|
||||
typedef kissfft<Real, Complex> KissFFT;
|
||||
|
Loading…
x
Reference in New Issue
Block a user