1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2025-09-06 07:07:48 -04:00

ATV Demodulator: implememted horizontal sync leap standard with very slow 60 and 32 lines modes

This commit is contained in:
f4exb 2017-04-03 18:57:48 +02:00
parent 0a2223b7e0
commit e3b1aad053
4 changed files with 70 additions and 6 deletions

View File

@ -461,11 +461,41 @@ void ATVDemod::demod(Complex& c)
blnNewLine = true; blnNewLine = true;
} }
else if (m_intColIndex >= m_intNumberSamplePerLine + m_intNumberSamplePerTop) // No valid H sync else if (m_intColIndex >= m_intNumberSamplePerLine + m_intNumberSamplePerTop) // No valid H sync
{
if (m_objRunning.m_enmATVStandard == ATVStdHLeap) // new image in hSync leap mode
{
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);
m_intLineIndex = 0;
m_intImageIndex++;
blnNewLine = false; // done already
}
else
{ {
//qDebug("HLine: %d", m_intColIndex); //qDebug("HLine: %d", m_intColIndex);
m_intColIndex = 0; m_intColIndex = 0;
blnNewLine = true; blnNewLine = true;
} }
}
if (blnNewLine) if (blnNewLine)
{ {
@ -489,7 +519,7 @@ void ATVDemod::demod(Complex& c)
// Vertical sync and image rendering // Vertical sync and image rendering
if (m_objRunning.m_blnVSync) // VSync activated if ((m_objRunning.m_blnVSync) && (m_objRunning.m_enmATVStandard != ATVStdHLeap)) // VSync activated
{ {
if (m_intColIndex >= intSynchroTimeSamples) if (m_intColIndex >= intSynchroTimeSamples)
{ {
@ -781,6 +811,12 @@ void ATVDemod::applyStandard()
{ {
switch(m_objConfig.m_enmATVStandard) switch(m_objConfig.m_enmATVStandard)
{ {
case ATVStdHLeap:
// what is left in a line for the image
m_intNumberOfSyncLines = 0;
m_intNumberOfBlackLines = 0;
m_interleaved = false;
break;
case ATVStdShort: case ATVStdShort:
// what is left in a line for the image // what is left in a line for the image
m_intNumberOfSyncLines = 4; m_intNumberOfSyncLines = 4;

View File

@ -51,7 +51,8 @@ public:
ATVStdPAL525, ATVStdPAL525,
ATVStd405, ATVStd405,
ATVStdShortInterleaved, ATVStdShortInterleaved,
ATVStdShort ATVStdShort,
ATVStdHLeap
}; };
enum ATVModulation { enum ATVModulation {

View File

@ -736,6 +736,12 @@ float ATVDemodGUI::getNominalLineTime(int nbLinesIndex, int fpsIndex)
case 6: case 6:
return 1.0f / (90 * fps); return 1.0f / (90 * fps);
break; break;
case 7:
return 1.0f / (60 * fps);
break;
case 8:
return 1.0f / (32 * fps);
break;
case 0: case 0:
default: default:
return 1.0f / (625 * fps); return 1.0f / (625 * fps);
@ -765,6 +771,12 @@ int ATVDemodGUI::getNumberOfLines(int nbLinesIndex)
case 6: case 6:
return 90; return 90;
break; break;
case 7:
return 60;
break;
case 8:
return 32;
break;
case 0: case 0:
default: default:
return 625; return 625;

View File

@ -542,6 +542,16 @@
<string>90</string> <string>90</string>
</property> </property>
</item> </item>
<item>
<property name="text">
<string>60</string>
</property>
</item>
<item>
<property name="text">
<string>32</string>
</property>
</item>
</widget> </widget>
</item> </item>
<item> <item>
@ -598,7 +608,7 @@
</item> </item>
<item> <item>
<property name="text"> <property name="text">
<string>405L</string> <string>PAL405</string>
</property> </property>
</item> </item>
<item> <item>
@ -611,6 +621,11 @@
<string>SHni</string> <string>SHni</string>
</property> </property>
</item> </item>
<item>
<property name="text">
<string>HLeap</string>
</property>
</item>
</widget> </widget>
</item> </item>
<item> <item>