ATV demod: implement video inversion

This commit is contained in:
f4exb 2017-03-19 19:10:48 +01:00
parent 71181c94fb
commit 481923f8ff
5 changed files with 47 additions and 8 deletions

View File

@ -95,7 +95,8 @@ void ATVDemod::configure(
float fltVoltLevelSynchroTop, float fltVoltLevelSynchroTop,
float fltVoltLevelSynchroBlack, float fltVoltLevelSynchroBlack,
bool blnHSync, bool blnHSync,
bool blnVSync) bool blnVSync,
bool blnInvertVideo)
{ {
Message* msgCmd = MsgConfigureATVDemod::create( Message* msgCmd = MsgConfigureATVDemod::create(
fltLineDurationUs, fltLineDurationUs,
@ -105,7 +106,8 @@ void ATVDemod::configure(
fltVoltLevelSynchroTop, fltVoltLevelSynchroTop,
fltVoltLevelSynchroBlack, fltVoltLevelSynchroBlack,
blnHSync, blnHSync,
blnVSync); blnVSync,
blnInvertVideo);
objMessageQueue->push(msgCmd); objMessageQueue->push(msgCmd);
} }
@ -371,6 +373,8 @@ void ATVDemod::demod(Complex& c)
fltVal = 0.0f; fltVal = 0.0f;
} }
fltVal = m_objRunning.m_blnInvertVideo ? 1.0f - fltVal : fltVal;
m_fltAmpLineAverage += fltVal; m_fltAmpLineAverage += fltVal;
//********** gray level ********** //********** gray level **********

View File

@ -63,6 +63,7 @@ public:
float m_fltVoltLevelSynchroBlack; float m_fltVoltLevelSynchroBlack;
bool m_blnHSync; bool m_blnHSync;
bool m_blnVSync; bool m_blnVSync;
bool m_blnInvertVideo;
ATVConfig() : ATVConfig() :
m_intSampleRate(0), m_intSampleRate(0),
@ -73,7 +74,8 @@ public:
m_fltVoltLevelSynchroTop(0.0f), m_fltVoltLevelSynchroTop(0.0f),
m_fltVoltLevelSynchroBlack(1.0f), m_fltVoltLevelSynchroBlack(1.0f),
m_blnHSync(false), m_blnHSync(false),
m_blnVSync(false) m_blnVSync(false),
m_blnInvertVideo(false)
{ {
} }
}; };
@ -132,7 +134,8 @@ public:
float fltVoltLevelSynchroTop, float fltVoltLevelSynchroTop,
float fltVoltLevelSynchroBlack, float fltVoltLevelSynchroBlack,
bool blnHSync, bool blnHSync,
bool blnVSync); bool blnVSync,
bool blnInvertVideo);
void configureRF(MessageQueue* objMessageQueue, void configureRF(MessageQueue* objMessageQueue,
ATVModulation enmModulation, ATVModulation enmModulation,
@ -176,7 +179,8 @@ private:
float fltVoltLevelSynchroTop, float fltVoltLevelSynchroTop,
float fltVoltLevelSynchroBlack, float fltVoltLevelSynchroBlack,
bool blnHSync, bool blnHSync,
bool blnVSync) bool blnVSync,
bool blnInvertVideo)
{ {
return new MsgConfigureATVDemod( return new MsgConfigureATVDemod(
fltLineDurationUs, fltLineDurationUs,
@ -186,7 +190,8 @@ private:
fltVoltLevelSynchroTop, fltVoltLevelSynchroTop,
fltVoltLevelSynchroBlack, fltVoltLevelSynchroBlack,
blnHSync, blnHSync,
blnVSync); blnVSync,
blnInvertVideo);
} }
ATVConfig m_objMsgConfig; ATVConfig m_objMsgConfig;
@ -200,7 +205,8 @@ private:
float fltVoltLevelSynchroTop, float fltVoltLevelSynchroTop,
float fltVoltLevelSynchroBlack, float fltVoltLevelSynchroBlack,
bool blnHSync, bool blnHSync,
bool blnVSync) : bool blnVSync,
bool blnInvertVideo) :
Message() Message()
{ {
m_objMsgConfig.m_fltVoltLevelSynchroBlack = fltVoltLevelSynchroBlack; m_objMsgConfig.m_fltVoltLevelSynchroBlack = fltVoltLevelSynchroBlack;
@ -211,6 +217,7 @@ private:
m_objMsgConfig.m_fltRatioOfRowsToDisplay = flatRatioOfRowsToDisplay; m_objMsgConfig.m_fltRatioOfRowsToDisplay = flatRatioOfRowsToDisplay;
m_objMsgConfig.m_blnHSync = blnHSync; m_objMsgConfig.m_blnHSync = blnHSync;
m_objMsgConfig.m_blnVSync = blnVSync; m_objMsgConfig.m_blnVSync = blnVSync;
m_objMsgConfig.m_blnInvertVideo = blnInvertVideo;
} }
}; };

View File

@ -83,6 +83,14 @@ void ATVDemodGUI::resetToDefaults()
ui->hSync->setChecked(true); ui->hSync->setChecked(true);
ui->vSync->setChecked(true); ui->vSync->setChecked(true);
ui->halfImage->setChecked(false); ui->halfImage->setChecked(false);
ui->invertVideo->setChecked(false);
//********** RF Default values **********
ui->decimatorEnable->setChecked(false);
ui->rfFiltering->setChecked(false);
ui->rfBW->setValue(10);
ui->rfOppBW->setValue(10);
ui->bfo->setValue(0);
blockApplySettings(false); blockApplySettings(false);
applySettings(); applySettings();
@ -106,6 +114,7 @@ QByteArray ATVDemodGUI::serialize() const
s.writeS32(12, ui->rfBW->value()); s.writeS32(12, ui->rfBW->value());
s.writeS32(13, ui->rfOppBW->value()); s.writeS32(13, ui->rfOppBW->value());
s.writeS32(14, ui->bfo->value()); s.writeS32(14, ui->bfo->value());
s.writeBool(15, ui->invertVideo->isChecked());
return s.final(); return s.final();
} }
@ -163,6 +172,8 @@ bool ATVDemodGUI::deserialize(const QByteArray& arrData)
ui->rfOppBW->setValue(tmp); ui->rfOppBW->setValue(tmp);
d.readS32(14, &tmp, 10); d.readS32(14, &tmp, 10);
ui->bfo->setValue(tmp); ui->bfo->setValue(tmp);
d.readBool(15, &booltmp, true);
ui->invertVideo->setChecked(booltmp);
blockApplySettings(false); blockApplySettings(false);
m_objChannelMarker.blockSignals(false); m_objChannelMarker.blockSignals(false);
@ -322,7 +333,8 @@ void ATVDemodGUI::applySettings()
ui->synchLevel->value() / 1000.0f, ui->synchLevel->value() / 1000.0f,
ui->blackLevel->value() / 1000.0f, ui->blackLevel->value() / 1000.0f,
ui->hSync->isChecked(), ui->hSync->isChecked(),
ui->vSync->isChecked()); ui->vSync->isChecked(),
ui->invertVideo->isChecked());
qDebug() << "ATVDemodGUI::applySettings:" qDebug() << "ATVDemodGUI::applySettings:"
<< " m_objChannelizer.inputSampleRate: " << m_objChannelizer->getInputSampleRate() << " m_objChannelizer.inputSampleRate: " << m_objChannelizer->getInputSampleRate()
@ -466,6 +478,11 @@ void ATVDemodGUI::on_vSync_clicked()
applySettings(); applySettings();
} }
void ATVDemodGUI::on_invertVideo_clicked()
{
applySettings();
}
void ATVDemodGUI::on_halfImage_clicked() void ATVDemodGUI::on_halfImage_clicked()
{ {
applySettings(); applySettings();

View File

@ -69,6 +69,7 @@ private slots:
void on_topTime_valueChanged(int value); void on_topTime_valueChanged(int value);
void on_hSync_clicked(); void on_hSync_clicked();
void on_vSync_clicked(); void on_vSync_clicked();
void on_invertVideo_clicked();
void on_halfImage_clicked(); void on_halfImage_clicked();
void on_modulation_currentIndexChanged(int index); void on_modulation_currentIndexChanged(int index);
void on_fps_currentIndexChanged(int index); void on_fps_currentIndexChanged(int index);

View File

@ -494,6 +494,16 @@
</property> </property>
</widget> </widget>
</item> </item>
<item>
<widget class="QCheckBox" name="invertVideo">
<property name="toolTip">
<string>Toggle video inversion</string>
</property>
<property name="text">
<string>Inv</string>
</property>
</widget>
</item>
<item> <item>
<widget class="QCheckBox" name="halfImage"> <widget class="QCheckBox" name="halfImage">
<property name="toolTip"> <property name="toolTip">