From 0a2223b7e0e501544033c992d30c9c49ce4f6613 Mon Sep 17 00:00:00 2001 From: f4exb Date: Mon, 3 Apr 2017 18:37:26 +0200 Subject: [PATCH] ATV Modulator: implememted horizontal sync leap standard with very slow 60 and 32 lines modes --- plugins/channeltx/modatv/atvmod.cpp | 28 +++++++++++++++++++------- plugins/channeltx/modatv/atvmod.h | 5 +++-- plugins/channeltx/modatv/atvmodgui.cpp | 6 ++++++ plugins/channeltx/modatv/atvmodgui.ui | 17 +++++++++++++++- 4 files changed, 46 insertions(+), 10 deletions(-) diff --git a/plugins/channeltx/modatv/atvmod.cpp b/plugins/channeltx/modatv/atvmod.cpp index 2f20ebf51..1b045242a 100644 --- a/plugins/channeltx/modatv/atvmod.cpp +++ b/plugins/channeltx/modatv/atvmod.cpp @@ -288,6 +288,10 @@ void ATVMod::pullVideo(Real& sample) pullImageLine(sample); } } + else if (m_running.m_atvStd == ATVStdHLeap) // HLeap special + { + pullImageLine(sample, true); // pull image line without sync + } else // odd image { int iLine = m_lineCount - m_nbLines2 - 1; @@ -825,8 +829,22 @@ void ATVMod::applyStandard() switch(m_config.m_atvStd) { - case ATVStdShort: // Follows loosely the 405 lines standard - // what is left in a 64 us line for the image + case ATVStdHLeap: + m_nbImageLines = m_nbLines; // lines less the total number of sync lines + m_nbImageLines2 = m_nbImageLines; // force non interleaved for vbars + m_interleaved = false; + m_nbSyncLinesHeadE = 0; // number of sync lines on the top of a frame even + m_nbSyncLinesHeadO = 0; // number of sync lines on the top of a frame odd + m_nbSyncLinesBottom = -1; // force no vsync in even block + m_nbLongSyncLines = 0; + m_nbHalfLongSync = 0; + m_nbWholeEqLines = 0; + m_singleLongSync = true; + m_nbBlankLines = 0; + m_blankLineLvel = 0.7f; + m_nbLines2 = m_nbLines - 2; // force last line to slip from the even block + break; + case ATVStdShort: m_nbImageLines = m_nbLines - 2; // lines less the total number of sync lines m_nbImageLines2 = m_nbImageLines; // force non interleaved for vbars m_interleaved = false; @@ -841,8 +859,7 @@ void ATVMod::applyStandard() m_blankLineLvel = 0.7f; m_nbLines2 = m_nbLines; // force non interleaved => treated as even for all lines break; - case ATVStdShortInterleaved: // Follows loosely the 405 lines standard - // what is left in a 64 us line for the image + case ATVStdShortInterleaved: m_nbImageLines = m_nbLines - 2; // lines less the total number of sync lines m_nbImageLines2 = m_nbImageLines / 2; m_interleaved = true; @@ -857,7 +874,6 @@ void ATVMod::applyStandard() m_blankLineLvel = 0.7f; break; case ATVStd405: // Follows loosely the 405 lines standard - // what is left in a 64 us line for the image m_nbImageLines = m_nbLines - 15; // lines less the total number of sync lines m_nbImageLines2 = m_nbImageLines / 2; m_interleaved = true; @@ -872,7 +888,6 @@ void ATVMod::applyStandard() m_blankLineLvel = m_blackLevel; break; case ATVStdPAL525: // Follows PAL-M standard - // what is left in a 64/1.008 us line for the image m_nbImageLines = m_nbLines - 15; m_nbImageLines2 = m_nbImageLines / 2; m_interleaved = true; @@ -888,7 +903,6 @@ void ATVMod::applyStandard() break; case ATVStdPAL625: // Follows PAL-B/G/H standard default: - // what is left in a 64 us line for the image m_nbImageLines = m_nbLines - 15; m_nbImageLines2 = m_nbImageLines / 2; m_interleaved = true; diff --git a/plugins/channeltx/modatv/atvmod.h b/plugins/channeltx/modatv/atvmod.h index 2ef202e97..b866c5588 100644 --- a/plugins/channeltx/modatv/atvmod.h +++ b/plugins/channeltx/modatv/atvmod.h @@ -45,6 +45,7 @@ public: ATVStd405, ATVStdShortInterleaved, ATVStdShort, + ATVStdHLeap, } ATVStd; typedef enum @@ -721,11 +722,11 @@ private: void resizeCamera(); void mixImageAndText(cv::Mat& image); - inline void pullImageLine(Real& sample) + inline void pullImageLine(Real& sample, bool noHSync = false) { if (m_horizontalCount < m_pointsPerSync) // sync pulse { - sample = 0.0f; // ultra-black + sample = noHSync ? m_blackLevel : 0.0f; // ultra-black } else if (m_horizontalCount < m_pointsPerSync + m_pointsPerBP) // back porch { diff --git a/plugins/channeltx/modatv/atvmodgui.cpp b/plugins/channeltx/modatv/atvmodgui.cpp index 699243658..026333bfb 100644 --- a/plugins/channeltx/modatv/atvmodgui.cpp +++ b/plugins/channeltx/modatv/atvmodgui.cpp @@ -288,6 +288,12 @@ int ATVModGUI::getNbLines() case 6: return 90; break; + case 7: + return 60; + break; + case 8: + return 32; + break; case 0: default: return 625; diff --git a/plugins/channeltx/modatv/atvmodgui.ui b/plugins/channeltx/modatv/atvmodgui.ui index d203b6fac..601e2d3fb 100644 --- a/plugins/channeltx/modatv/atvmodgui.ui +++ b/plugins/channeltx/modatv/atvmodgui.ui @@ -574,6 +574,16 @@ 90 + + + 60 + + + + + 32 + + @@ -656,7 +666,7 @@ - 405L + PAL405 @@ -669,6 +679,11 @@ SHni + + + HLeap + +