mirror of
https://github.com/f4exb/sdrangel.git
synced 2024-09-28 15:56:33 -04:00
ATV Modulator: factorize vsync code. Use standard sync pulses at start of equalizing lines. New frame rates and number of lines
This commit is contained in:
parent
efad6f948c
commit
64b09910fd
@ -829,13 +829,7 @@ private:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void pullVSyncLine(Real& sample)
|
inline void pullVSyncLineLongPulses(Real& sample)
|
||||||
{
|
|
||||||
if (m_lineCount < m_nbLines2 + 1) // even
|
|
||||||
{
|
|
||||||
int fieldLine = m_lineCount;
|
|
||||||
|
|
||||||
if (fieldLine < m_nbLongSyncLines) // 0,1: Whole line "long" pulses
|
|
||||||
{
|
{
|
||||||
int halfIndex = m_horizontalCount % (m_nbHorizPoints/2);
|
int halfIndex = m_horizontalCount % (m_nbHorizPoints/2);
|
||||||
|
|
||||||
@ -845,10 +839,55 @@ private:
|
|||||||
}
|
}
|
||||||
else // black
|
else // black
|
||||||
{
|
{
|
||||||
|
if (m_singleLongSync && (m_horizontalCount < m_nbHorizPoints/2)) {
|
||||||
|
sample = 0.0f;
|
||||||
|
} else {
|
||||||
sample = m_blackLevel;
|
sample = m_blackLevel;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (fieldLine < m_nbLongSyncLines + m_nbHalfLongSync) // long pulse then equalizing pulse
|
}
|
||||||
|
|
||||||
|
inline void pullVSyncLineEqualizingPulses(Real& sample)
|
||||||
|
{
|
||||||
|
if (m_horizontalCount < m_pointsPerSync)
|
||||||
|
{
|
||||||
|
sample = 0.0f; // ultra-black
|
||||||
|
}
|
||||||
|
else if (m_horizontalCount < (m_nbHorizPoints/2))
|
||||||
|
{
|
||||||
|
sample = m_blackLevel; // black
|
||||||
|
}
|
||||||
|
else if (m_horizontalCount < (m_nbHorizPoints/2) + m_pointsPerFSync)
|
||||||
|
{
|
||||||
|
sample = 0.0f; // ultra-black
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sample = m_blackLevel; // black
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void pullVSyncLineEqualizingThenLongPulses(Real& sample)
|
||||||
|
{
|
||||||
|
if (m_horizontalCount < m_pointsPerSync)
|
||||||
|
{
|
||||||
|
sample = 0.0f; // ultra-black
|
||||||
|
}
|
||||||
|
else if (m_horizontalCount < (m_nbHorizPoints/2))
|
||||||
|
{
|
||||||
|
sample = m_blackLevel; // black
|
||||||
|
}
|
||||||
|
else if (m_horizontalCount < m_nbHorizPoints - m_pointsPerSync)
|
||||||
|
{
|
||||||
|
sample = 0.0f; // ultra-black
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sample = m_blackLevel; // black
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void pullVSyncLineLongThenEqualizingPulses(Real& sample)
|
||||||
{
|
{
|
||||||
if (m_horizontalCount < (m_nbHorizPoints/2) - m_pointsPerSync)
|
if (m_horizontalCount < (m_nbHorizPoints/2) - m_pointsPerSync)
|
||||||
{
|
{
|
||||||
@ -867,50 +906,32 @@ private:
|
|||||||
sample = m_blackLevel; // black
|
sample = m_blackLevel; // black
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline void pullVSyncLine(Real& sample)
|
||||||
|
{
|
||||||
|
if (m_lineCount < m_nbLines2 + 1) // even
|
||||||
|
{
|
||||||
|
int fieldLine = m_lineCount;
|
||||||
|
|
||||||
|
if (fieldLine < m_nbLongSyncLines) // 0,1: Whole line "long" pulses
|
||||||
|
{
|
||||||
|
pullVSyncLineLongPulses(sample);
|
||||||
|
}
|
||||||
|
else if (fieldLine < m_nbLongSyncLines + m_nbHalfLongSync) // long pulse then equalizing pulse
|
||||||
|
{
|
||||||
|
pullVSyncLineLongThenEqualizingPulses(sample);
|
||||||
|
}
|
||||||
else if (fieldLine < m_nbLongSyncLines + m_nbHalfLongSync + m_nbWholeEqLines) // Whole line equalizing pulses
|
else if (fieldLine < m_nbLongSyncLines + m_nbHalfLongSync + m_nbWholeEqLines) // Whole line equalizing pulses
|
||||||
{
|
{
|
||||||
int halfIndex = m_horizontalCount % (m_nbHorizPoints/2);
|
pullVSyncLineEqualizingPulses(sample);
|
||||||
|
|
||||||
if (halfIndex < m_pointsPerFSync) // ultra-black
|
|
||||||
{
|
|
||||||
sample = 0.0f;
|
|
||||||
}
|
|
||||||
else // black
|
|
||||||
{
|
|
||||||
sample = m_blackLevel;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (fieldLine > m_nbLines2 - m_nbHalfLongSync) // equalizing pulse then long pulse
|
else if (fieldLine > m_nbLines2 - m_nbHalfLongSync) // equalizing pulse then long pulse
|
||||||
{
|
{
|
||||||
if (m_horizontalCount < m_pointsPerFSync)
|
pullVSyncLineEqualizingThenLongPulses(sample);
|
||||||
{
|
|
||||||
sample = 0.0f; // ultra-black
|
|
||||||
}
|
|
||||||
else if (m_horizontalCount < (m_nbHorizPoints/2))
|
|
||||||
{
|
|
||||||
sample = m_blackLevel; // black
|
|
||||||
}
|
|
||||||
else if (m_horizontalCount < m_nbHorizPoints - m_pointsPerSync)
|
|
||||||
{
|
|
||||||
sample = 0.0f; // ultra-black
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
sample = m_blackLevel; // black
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (fieldLine > m_nbLines2 - m_nbHalfLongSync - m_nbWholeEqLines) // Whole line equalizing pulses
|
else if (fieldLine > m_nbLines2 - m_nbHalfLongSync - m_nbWholeEqLines) // Whole line equalizing pulses
|
||||||
{
|
{
|
||||||
int halfIndex = m_horizontalCount % (m_nbHorizPoints/2);
|
pullVSyncLineEqualizingPulses(sample);
|
||||||
|
|
||||||
if (halfIndex < m_pointsPerFSync) // ultra-black
|
|
||||||
{
|
|
||||||
sample = 0.0f;
|
|
||||||
}
|
|
||||||
else // black
|
|
||||||
{
|
|
||||||
sample = m_blackLevel;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else // black images
|
else // black images
|
||||||
{
|
{
|
||||||
@ -930,42 +951,15 @@ private:
|
|||||||
|
|
||||||
if (fieldLine < m_nbLongSyncLines) // 0,1: Whole line "long" pulses
|
if (fieldLine < m_nbLongSyncLines) // 0,1: Whole line "long" pulses
|
||||||
{
|
{
|
||||||
int halfIndex = m_horizontalCount % (m_nbHorizPoints/2);
|
pullVSyncLineLongPulses(sample);
|
||||||
|
|
||||||
if (halfIndex < (m_nbHorizPoints/2) - m_pointsPerSync) // ultra-black
|
|
||||||
{
|
|
||||||
sample = 0.0f;
|
|
||||||
}
|
|
||||||
else // black
|
|
||||||
{
|
|
||||||
sample = m_blackLevel;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (fieldLine < m_nbLongSyncLines + m_nbWholeEqLines) // Whole line equalizing pulses
|
else if (fieldLine < m_nbLongSyncLines + m_nbWholeEqLines) // Whole line equalizing pulses
|
||||||
{
|
{
|
||||||
int halfIndex = m_horizontalCount % (m_nbHorizPoints/2);
|
pullVSyncLineEqualizingPulses(sample);
|
||||||
|
|
||||||
if (halfIndex < m_pointsPerFSync) // ultra-black
|
|
||||||
{
|
|
||||||
sample = 0.0f;
|
|
||||||
}
|
|
||||||
else // black
|
|
||||||
{
|
|
||||||
sample = m_blackLevel;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (fieldLine > m_nbLines2 - 1 - m_nbWholeEqLines - m_nbHalfLongSync) // Whole line equalizing pulses
|
else if (fieldLine > m_nbLines2 - 1 - m_nbWholeEqLines - m_nbHalfLongSync) // Whole line equalizing pulses
|
||||||
{
|
{
|
||||||
int halfIndex = m_horizontalCount % (m_nbHorizPoints/2);
|
pullVSyncLineEqualizingPulses(sample);
|
||||||
|
|
||||||
if (halfIndex < m_pointsPerFSync) // ultra-black
|
|
||||||
{
|
|
||||||
sample = 0.0f;
|
|
||||||
}
|
|
||||||
else // black
|
|
||||||
{
|
|
||||||
sample = m_blackLevel;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else // black images
|
else // black images
|
||||||
{
|
{
|
||||||
|
@ -276,6 +276,18 @@ int ATVModGUI::getNbLines()
|
|||||||
case 2:
|
case 2:
|
||||||
return 405;
|
return 405;
|
||||||
break;
|
break;
|
||||||
|
case 3:
|
||||||
|
return 343;
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
return 240;
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
return 180;
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
return 90;
|
||||||
|
break;
|
||||||
case 0:
|
case 0:
|
||||||
default:
|
default:
|
||||||
return 625;
|
return 625;
|
||||||
@ -296,6 +308,12 @@ int ATVModGUI::getFPS()
|
|||||||
case 3:
|
case 3:
|
||||||
return 16;
|
return 16;
|
||||||
break;
|
break;
|
||||||
|
case 4:
|
||||||
|
return 12;
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
return 10;
|
||||||
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
default:
|
default:
|
||||||
return 25;
|
return 25;
|
||||||
|
@ -554,6 +554,26 @@
|
|||||||
<string>405</string>
|
<string>405</string>
|
||||||
</property>
|
</property>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>343</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>240</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>180</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>90</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
@ -594,6 +614,16 @@
|
|||||||
<string>16</string>
|
<string>16</string>
|
||||||
</property>
|
</property>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>12</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>10</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
|
Loading…
Reference in New Issue
Block a user