AM Demod: fixed AM range calculation by moving it to new line detection

This commit is contained in:
f4exb 2017-04-05 07:35:48 +02:00
parent ca76d695f7
commit 09cff7acca
2 changed files with 39 additions and 52 deletions

View File

@ -332,7 +332,8 @@ void ATVDemod::demod(Complex& c)
magSq = fltI*fltI + fltQ*fltQ;
m_objMagSqAverage.feed(magSq);
fltNorm = sqrt(magSq);
fltVal = fltNorm;
fltVal = fltNorm / (1<<15);
//fltVal = magSq / (1<<30);
//********** Mini and Maxi Amplitude tracking **********
@ -403,6 +404,7 @@ void ATVDemod::demod(Complex& c)
fltVal = 0.0f;
}
fltVal = (fltVal < -1.0f) ? -1.0f : (fltVal > 1.0f) ? 1.0f : fltVal;
m_objScopeSampleBuffer.push_back(Sample(fltVal*32767.0f, 0.0f));
fltVal = m_objRunning.m_blnInvertVideo ? 1.0f - fltVal : fltVal;

View File

@ -451,24 +451,6 @@ private:
m_intAvgColIndex = m_intColIndex;
m_objRegisteredATVScreen->renderImage(0);
if ((m_objRFRunning.m_enmModulation == ATV_AM)
|| (m_objRFRunning.m_enmModulation == ATV_LSB)
|| (m_objRFRunning.m_enmModulation == ATV_USB))
{
m_fltAmpMin = m_fltEffMin;
m_fltAmpMax = m_fltEffMax;
m_fltAmpDelta = m_fltEffMax-m_fltEffMin;
if(m_fltAmpDelta<=0.0)
{
m_fltAmpDelta=1.0f;
}
//Reset extrema
m_fltEffMin = 2000000.0f;
m_fltEffMax = -2000000.0f;
}
m_intImageIndex++;
m_intLineIndex = 0;
m_intRowIndex = 0;
@ -497,6 +479,24 @@ private:
m_intColIndex = m_intNumberSamplePerTop;
}
if ((m_objRFRunning.m_enmModulation == ATV_AM)
|| (m_objRFRunning.m_enmModulation == ATV_USB)
|| (m_objRFRunning.m_enmModulation == ATV_LSB))
{
m_fltAmpMin = m_fltEffMin;
m_fltAmpMax = m_fltEffMax;
m_fltAmpDelta = m_fltEffMax-m_fltEffMin;
if(m_fltAmpDelta<=0.0)
{
m_fltAmpDelta=1.0f;
}
//Reset extrema
m_fltEffMin = 2000000.0f;
m_fltEffMax = -2000000.0f;
}
m_objRegisteredATVScreen->selectRow(m_intRowIndex);
m_intLineIndex++;
m_intRowIndex++;
@ -548,22 +548,6 @@ private:
{
m_objRegisteredATVScreen->renderImage(0);
if (m_objRFRunning.m_enmModulation == ATV_AM)
{
m_fltAmpMin = m_fltEffMin;
m_fltAmpMax = m_fltEffMax;
m_fltAmpDelta = m_fltEffMax-m_fltEffMin;
if(m_fltAmpDelta<=0.0)
{
m_fltAmpDelta=1.0f;
}
//Reset extrema
m_fltEffMin = 2000000.0f;
m_fltEffMax = -2000000.0f;
}
m_intColIndex = m_intNumberSamplePerTop; // catch up with passed samples from the line length point
m_intRowIndex = 0;
m_objRegisteredATVScreen->selectRow(m_intRowIndex);
@ -581,6 +565,24 @@ private:
if (blnNewLine)
{
if ((m_objRFRunning.m_enmModulation == ATV_AM)
|| (m_objRFRunning.m_enmModulation == ATV_USB)
|| (m_objRFRunning.m_enmModulation == ATV_LSB))
{
m_fltAmpMin = m_fltEffMin;
m_fltAmpMax = m_fltEffMax;
m_fltAmpDelta = m_fltEffMax-m_fltEffMin;
if(m_fltAmpDelta<=0.0)
{
m_fltAmpDelta=1.0f;
}
//Reset extrema
m_fltEffMin = 2000000.0f;
m_fltEffMax = -2000000.0f;
}
m_fltAmpLineAverage=0.0f;
//New line + Interleaving
@ -616,23 +618,6 @@ private:
if ((m_intLineIndex % 2 == 0) || !m_interleaved) // even => odd image
{
m_objRegisteredATVScreen->renderImage(0);
if (m_objRFRunning.m_enmModulation == ATV_AM)
{
m_fltAmpMin = m_fltEffMin;
m_fltAmpMax = m_fltEffMax;
m_fltAmpDelta = m_fltEffMax-m_fltEffMin;
if(m_fltAmpDelta<=0.0)
{
m_fltAmpDelta=1.0f;
}
//Reset extrema
m_fltEffMin = 2000000.0f;
m_fltEffMax = -2000000.0f;
}
m_intRowIndex = 1;
}
else