ATV Demod: put interpolator in place

This commit is contained in:
f4exb 2017-03-18 05:37:52 +01:00
parent c3c6b79de4
commit 93a45e88f5
2 changed files with 299 additions and 271 deletions

View File

@ -131,12 +131,13 @@ void ATVDemod::feed(const SampleVector::const_iterator& begin, const SampleVecto
float fltQ;
float fltNormI;
float fltNormQ;
Complex ci;
float fltNorm=0.00f;
float fltVal;
int intVal;
qint16 * ptrBufferToRelease=NULL;
qint16 * ptrBufferToRelease = 0;
bool blnComputeImage=false;
@ -147,7 +148,6 @@ void ATVDemod::feed(const SampleVector::const_iterator& begin, const SampleVecto
m_objSettingsMutex.lock();
//********** Accessing ATV Screen context **********
if(m_intImageIndex==0)
@ -191,13 +191,51 @@ void ATVDemod::feed(const SampleVector::const_iterator& begin, const SampleVecto
fltI = it->real();
fltQ = it->imag();
#endif
Complex c(fltI, fltQ);
if (m_objRFRunning.m_intFrequencyOffset != 0)
{
m_nco.nextIQMul(fltI, fltQ);
c *= m_nco.nextIQ();
}
if (m_objRFRunning.m_blndecimatorEnable)
{
if (m_interpolator.decimate(&m_interpolatorDistanceRemain, c, &ci))
{
demod(ci);
m_interpolatorDistanceRemain += m_interpolatorDistance;
}
}
else
{
demod(c);
}
}
if (ptrBufferToRelease != 0)
{
delete ptrBufferToRelease;
}
m_objSettingsMutex.unlock();
}
void ATVDemod::demod(Complex& c)
{
float fltDivSynchroBlack = 1.0f - m_objRunning.m_fltVoltLevelSynchroBlack;
int intSynchroTimeSamples= (3*m_intNumberSamplePerLine)/4;
float fltSynchroTrameLevel = 0.5f*((float)intSynchroTimeSamples) * m_objRunning.m_fltVoltLevelSynchroBlack;
float fltNormI;
float fltNormQ;
float fltNorm;
float fltVal;
int intVal;
//********** demodulation **********
float& fltI = c.real();
float& fltQ = c.imag();
double magSq = fltI*fltI + fltQ*fltQ;
m_objMagSqAverage.feed(magSq);
@ -296,7 +334,7 @@ void ATVDemod::feed(const SampleVector::const_iterator& begin, const SampleVecto
//********** Filling pixels **********
blnComputeImage = (m_objRunning.m_fltRatioOfRowsToDisplay != 0.5f);
bool blnComputeImage = (m_objRunning.m_fltRatioOfRowsToDisplay != 0.5f);
if (!blnComputeImage)
{
@ -468,17 +506,6 @@ void ATVDemod::feed(const SampleVector::const_iterator& begin, const SampleVecto
m_intImageIndex ++;
}
//////////////////////
}
if(ptrBufferToRelease!=NULL)
{
delete ptrBufferToRelease;
}
m_objSettingsMutex.unlock();
}
void ATVDemod::start()

View File

@ -281,6 +281,7 @@ private:
static const float m_fltSecondToUs;
void applySettings();
void demod(Complex& c);
};