diff --git a/plugins/channelrx/demodatv/atvdemod.cpp b/plugins/channelrx/demodatv/atvdemod.cpp
index 67a92b204..bed0da4be 100644
--- a/plugins/channelrx/demodatv/atvdemod.cpp
+++ b/plugins/channelrx/demodatv/atvdemod.cpp
@@ -462,9 +462,39 @@ void ATVDemod::demod(Complex& c)
}
else if (m_intColIndex >= m_intNumberSamplePerLine + m_intNumberSamplePerTop) // No valid H sync
{
- //qDebug("HLine: %d", m_intColIndex);
- m_intColIndex = 0;
- blnNewLine = true;
+ 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);
+ m_intColIndex = 0;
+ blnNewLine = true;
+ }
}
if (blnNewLine)
@@ -489,7 +519,7 @@ void ATVDemod::demod(Complex& c)
// 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)
{
@@ -781,6 +811,12 @@ void ATVDemod::applyStandard()
{
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:
// what is left in a line for the image
m_intNumberOfSyncLines = 4;
diff --git a/plugins/channelrx/demodatv/atvdemod.h b/plugins/channelrx/demodatv/atvdemod.h
index ca5f51093..65488e0c8 100644
--- a/plugins/channelrx/demodatv/atvdemod.h
+++ b/plugins/channelrx/demodatv/atvdemod.h
@@ -51,7 +51,8 @@ public:
ATVStdPAL525,
ATVStd405,
ATVStdShortInterleaved,
- ATVStdShort
+ ATVStdShort,
+ ATVStdHLeap
};
enum ATVModulation {
diff --git a/plugins/channelrx/demodatv/atvdemodgui.cpp b/plugins/channelrx/demodatv/atvdemodgui.cpp
index 080648dbe..bce633d4e 100644
--- a/plugins/channelrx/demodatv/atvdemodgui.cpp
+++ b/plugins/channelrx/demodatv/atvdemodgui.cpp
@@ -736,6 +736,12 @@ float ATVDemodGUI::getNominalLineTime(int nbLinesIndex, int fpsIndex)
case 6:
return 1.0f / (90 * fps);
break;
+ case 7:
+ return 1.0f / (60 * fps);
+ break;
+ case 8:
+ return 1.0f / (32 * fps);
+ break;
case 0:
default:
return 1.0f / (625 * fps);
@@ -765,6 +771,12 @@ int ATVDemodGUI::getNumberOfLines(int nbLinesIndex)
case 6:
return 90;
break;
+ case 7:
+ return 60;
+ break;
+ case 8:
+ return 32;
+ break;
case 0:
default:
return 625;
diff --git a/plugins/channelrx/demodatv/atvdemodgui.ui b/plugins/channelrx/demodatv/atvdemodgui.ui
index 318171a7c..1475a3166 100644
--- a/plugins/channelrx/demodatv/atvdemodgui.ui
+++ b/plugins/channelrx/demodatv/atvdemodgui.ui
@@ -542,6 +542,16 @@
90
+ -
+
+ 60
+
+
+ -
+
+ 32
+
+
-
@@ -598,7 +608,7 @@
-
- 405L
+ PAL405
-
@@ -611,6 +621,11 @@
SHni
+ -
+
+ HLeap
+
+
-