1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2025-04-05 19:18:38 -04:00

ATV Demod: passing floats from GUI to demod

This commit is contained in:
f4exb 2017-03-17 00:12:12 +01:00
parent 5df5ee5a5d
commit 7d63bdb902
3 changed files with 64 additions and 43 deletions

View File

@ -76,9 +76,28 @@ bool ATVDemod::SetATVScreen(ATVScreen *objScreen)
m_objRegisteredATVScreen = objScreen;
}
void ATVDemod::configure(MessageQueue* objMessageQueue, int intLineDurationUs, int intTopDurationUs, int intFramePerS, int intPercentOfRowsToDisplay, float fltVoltLevelSynchroTop, float fltVoltLevelSynchroBlack, ATVModulation enmModulation, bool blnHSync, bool blnVSync)
void ATVDemod::configure(
MessageQueue* objMessageQueue,
float fltLineDurationUs,
float fltTopDurationUs,
float fltFramePerS,
float fltRatioOfRowsToDisplay,
float fltVoltLevelSynchroTop,
float fltVoltLevelSynchroBlack,
ATVModulation enmModulation,
bool blnHSync,
bool blnVSync)
{
Message* msgCmd = MsgConfigureATVDemod::create(intLineDurationUs, intTopDurationUs, intFramePerS, intPercentOfRowsToDisplay, fltVoltLevelSynchroTop, fltVoltLevelSynchroBlack, enmModulation,blnHSync,blnVSync);
Message* msgCmd = MsgConfigureATVDemod::create(
fltLineDurationUs,
fltTopDurationUs,
fltFramePerS,
fltRatioOfRowsToDisplay,
fltVoltLevelSynchroTop,
fltVoltLevelSynchroBlack,
enmModulation,
blnHSync,
blnVSync);
objMessageQueue->push(msgCmd);
}
@ -86,15 +105,15 @@ void ATVDemod::InitATVParameters(
int intSampleRate,
float fltLineDurationUs,
float fltTopDurationUs,
int intFramePerS,
int intPercentOfRowsToDisplay,
float fltFramePerS,
float fltRatioOfRowsToDisplay,
float fltVoltLevelSynchroTop,
float fltVoltLevelSynchroBlack,
ATVModulation enmModulation,
bool blnHSync,
bool blnVSync)
{
float fltImagesPerSeconds = (float) intFramePerS;
// float fltImagesPerSeconds = (float) intFramePerS;
int intNumberSamplePerLine;
int intNumberOfLines;
bool blnNewOpenGLScreen = false;
@ -105,7 +124,7 @@ void ATVDemod::InitATVParameters(
m_fltVoltLevelSynchroBlack = fltVoltLevelSynchroBlack;
intNumberSamplePerLine = (int) ((fltLineDurationUs * intSampleRate) / m_fltSecondToUs);
intNumberOfLines = (int) ((m_fltSecondToUs/fltImagesPerSeconds) /round(fltLineDurationUs));
intNumberOfLines = (int) ((m_fltSecondToUs/fltFramePerS) /round(fltLineDurationUs));
if((intNumberSamplePerLine != m_intNumberSamplePerLine)
|| (intNumberOfLines != m_intNumberOfLines))
@ -116,7 +135,7 @@ void ATVDemod::InitATVParameters(
m_intNumberSamplePerLine= intNumberSamplePerLine;
m_intNumberSamplePerTop=(int)((fltTopDurationUs * intSampleRate) / m_fltSecondToUs);
m_intNumberOfLines = intNumberOfLines;
m_intNumberOfRowsToDisplay = (int)((((float)intPercentOfRowsToDisplay) * fltLineDurationUs * intSampleRate) / (m_fltSecondToUs*100.0f));
m_intNumberOfRowsToDisplay = (int) ((fltRatioOfRowsToDisplay * fltLineDurationUs * intSampleRate) / m_fltSecondToUs);
m_intRowsLimit = m_intNumberOfLines-1;
m_intImageIndex = 0;
@ -135,11 +154,11 @@ void ATVDemod::InitATVParameters(
m_objRunning.m_enmModulation = m_enmModulation;
m_objRunning.m_fltVoltLevelSynchroBlack = m_fltVoltLevelSynchroBlack;
m_objRunning.m_fltVoltLevelSynchroTop = m_fltVoltLevelSynchroTop;
m_objRunning.m_intFramePerS = intFramePerS;
m_objRunning.m_fltFramePerS = fltFramePerS;
m_objRunning.m_fltLineDurationUs = fltLineDurationUs;
m_objRunning.m_fltTopDurationUs = fltTopDurationUs;
m_objRunning.m_intSampleRate = intSampleRate;
m_objRunning.m_intPercentOfRowsToDisplay = intPercentOfRowsToDisplay;
m_objRunning.m_fltRatioOfRowsToDisplay = fltRatioOfRowsToDisplay;
m_objRunning.m_blnHSync = blnHSync;
m_objRunning.m_blnVSync = blnVSync;
@ -149,7 +168,8 @@ void ATVDemod::InitATVParameters(
<< " - Sample rate S/s: " << intSampleRate
<< " - Line us: " << fltLineDurationUs
<< " - Top us: " << fltTopDurationUs
<< " - Frame/s: " << intFramePerS
<< " - Frame/s: " << fltFramePerS
<< " - Frame display ratio: " << fltRatioOfRowsToDisplay
<< " <=> "
<< " - Samples per Line: " << m_intNumberSamplePerLine
<< " - Samples per Top: " << m_intNumberSamplePerTop
@ -327,11 +347,11 @@ void ATVDemod::feed(const SampleVector::const_iterator& begin, const SampleVecto
//********** Filling pixels **********
blnComputeImage=(m_objRunning.m_intPercentOfRowsToDisplay!=50);
blnComputeImage = (m_objRunning.m_fltRatioOfRowsToDisplay != 0.5f);
if (!blnComputeImage)
{
blnComputeImage=((m_intImageIndex/2)%2==0);
blnComputeImage = ((m_intImageIndex/2) % 2 == 0);
}
if (blnComputeImage)
@ -547,9 +567,9 @@ bool ATVDemod::handleMessage(const Message& cmd)
m_objConfig.m_enmModulation = objCfg.m_objMsgConfig.m_enmModulation;
m_objConfig.m_fltVoltLevelSynchroBlack = objCfg.m_objMsgConfig.m_fltVoltLevelSynchroBlack;
m_objConfig.m_fltVoltLevelSynchroTop = objCfg.m_objMsgConfig.m_fltVoltLevelSynchroTop;
m_objConfig.m_intFramePerS = objCfg.m_objMsgConfig.m_intFramePerS;
m_objConfig.m_fltFramePerS = objCfg.m_objMsgConfig.m_fltFramePerS;
m_objConfig.m_fltLineDurationUs = objCfg.m_objMsgConfig.m_fltLineDurationUs;
m_objConfig.m_intPercentOfRowsToDisplay = objCfg.m_objMsgConfig.m_intPercentOfRowsToDisplay;
m_objConfig.m_fltRatioOfRowsToDisplay = objCfg.m_objMsgConfig.m_fltRatioOfRowsToDisplay;
m_objConfig.m_fltTopDurationUs = objCfg.m_objMsgConfig.m_fltTopDurationUs;
m_objConfig.m_blnHSync = objCfg.m_objMsgConfig.m_blnHSync;
m_objConfig.m_blnVSync = objCfg.m_objMsgConfig.m_blnVSync;
@ -557,9 +577,9 @@ bool ATVDemod::handleMessage(const Message& cmd)
if((objCfg.m_objMsgConfig.m_enmModulation != m_objRunning.m_enmModulation)
|| (objCfg.m_objMsgConfig.m_fltVoltLevelSynchroBlack != m_objRunning.m_fltVoltLevelSynchroBlack)
|| (objCfg.m_objMsgConfig.m_fltVoltLevelSynchroTop != m_objRunning.m_fltVoltLevelSynchroTop)
|| (objCfg.m_objMsgConfig.m_intFramePerS != m_objRunning.m_intFramePerS)
|| (objCfg.m_objMsgConfig.m_fltFramePerS != m_objRunning.m_fltFramePerS)
|| (objCfg.m_objMsgConfig.m_fltLineDurationUs != m_objRunning.m_fltLineDurationUs)
|| (objCfg.m_objMsgConfig.m_intPercentOfRowsToDisplay != m_objRunning.m_intPercentOfRowsToDisplay)
|| (objCfg.m_objMsgConfig.m_fltRatioOfRowsToDisplay != m_objRunning.m_fltRatioOfRowsToDisplay)
|| (objCfg.m_objMsgConfig.m_fltTopDurationUs != m_objRunning.m_fltTopDurationUs)
|| (objCfg.m_objMsgConfig.m_blnHSync != m_objRunning.m_blnHSync)
|| (objCfg.m_objMsgConfig.m_blnVSync != m_objRunning.m_blnVSync))
@ -567,9 +587,9 @@ bool ATVDemod::handleMessage(const Message& cmd)
m_objRunning.m_enmModulation = objCfg.m_objMsgConfig.m_enmModulation;
m_objRunning.m_fltVoltLevelSynchroBlack = objCfg.m_objMsgConfig.m_fltVoltLevelSynchroBlack;
m_objRunning.m_fltVoltLevelSynchroTop = objCfg.m_objMsgConfig.m_fltVoltLevelSynchroTop;
m_objRunning.m_intFramePerS = objCfg.m_objMsgConfig.m_intFramePerS;
m_objRunning.m_fltFramePerS = objCfg.m_objMsgConfig.m_fltFramePerS;
m_objRunning.m_fltLineDurationUs = objCfg.m_objMsgConfig.m_fltLineDurationUs;
m_objRunning.m_intPercentOfRowsToDisplay = objCfg.m_objMsgConfig.m_intPercentOfRowsToDisplay;
m_objRunning.m_fltRatioOfRowsToDisplay = objCfg.m_objMsgConfig.m_fltRatioOfRowsToDisplay;
m_objRunning.m_fltTopDurationUs = objCfg.m_objMsgConfig.m_fltTopDurationUs;
m_objRunning.m_blnHSync = objCfg.m_objMsgConfig.m_blnHSync;
m_objRunning.m_blnVSync = objCfg.m_objMsgConfig.m_blnVSync;
@ -598,8 +618,8 @@ void ATVDemod::ApplySettings()
m_objRunning.m_intSampleRate,
m_objRunning.m_fltLineDurationUs,
m_objRunning.m_fltTopDurationUs,
m_objRunning.m_intFramePerS,
m_objRunning.m_intPercentOfRowsToDisplay,
m_objRunning.m_fltFramePerS,
m_objRunning.m_fltRatioOfRowsToDisplay,
m_objRunning.m_fltVoltLevelSynchroTop,
m_objRunning.m_fltVoltLevelSynchroBlack,
m_objRunning.m_enmModulation,

View File

@ -51,8 +51,8 @@ public:
int m_intSampleRate;
float m_fltLineDurationUs;
float m_fltTopDurationUs;
int m_intFramePerS;
int m_intPercentOfRowsToDisplay;
float m_fltFramePerS;
float m_fltRatioOfRowsToDisplay;
float m_fltVoltLevelSynchroTop;
float m_fltVoltLevelSynchroBlack;
ATVModulation m_enmModulation;
@ -63,8 +63,8 @@ public:
m_intSampleRate(0),
m_fltLineDurationUs(0.0f),
m_fltTopDurationUs(0.0f),
m_intFramePerS(0),
m_intPercentOfRowsToDisplay(0),
m_fltFramePerS(0.0f),
m_fltRatioOfRowsToDisplay(0.0f),
m_fltVoltLevelSynchroTop(0),
m_fltVoltLevelSynchroBlack(0),
m_enmModulation(ATV_FM1),
@ -78,10 +78,10 @@ public:
~ATVDemod();
void configure(MessageQueue* objMessageQueue,
int intLineDurationUs,
int intTopDurationUs,
int intFramePerS,
int intPercentOfRowsToDisplay,
float fltLineDurationUs,
float fltTopDurationUs,
float fltFramePerS,
float fltRatioOfRowsToDisplay,
float fltVoltLevelSynchroTop,
float fltVoltLevelSynchroBlack,
ATVModulation enmModulation,
@ -97,8 +97,8 @@ public:
void InitATVParameters(int intMsps,
float fltLineDurationUs,
float fltTopDurationUs,
int intFramePerS,
int intPercentOfRowsToDisplay,
float fltFramePerS,
float fltRatioOfRowsToDisplay,
float fltVoltLevelSynchroTop,
float fltVoltLevelSynchroBlack,
ATVModulation enmModulation,
@ -116,8 +116,8 @@ private:
public:
static MsgConfigureATVDemod* create(float fltLineDurationUs,
float fltTopDurationUs,
int intFramePerS,
int intPercentOfRowsToDisplay,
float fltFramePerS,
float fltRatioOfRowsToDisplay,
float fltVoltLevelSynchroTop,
float fltVoltLevelSynchroBlack,
ATVModulation enmModulation,
@ -126,8 +126,8 @@ private:
{
return new MsgConfigureATVDemod(fltLineDurationUs,
fltTopDurationUs,
intFramePerS,
intPercentOfRowsToDisplay,
fltFramePerS,
fltRatioOfRowsToDisplay,
fltVoltLevelSynchroTop,
fltVoltLevelSynchroBlack,
enmModulation,
@ -138,10 +138,11 @@ private:
ATVConfig m_objMsgConfig;
private:
MsgConfigureATVDemod(float fltLineDurationUs,
MsgConfigureATVDemod(
float fltLineDurationUs,
float fltTopDurationUs,
int intFramePerS,
int intPercentOfRowsToDisplay,
float fltFramePerS,
float flatRatioOfRowsToDisplay,
float fltVoltLevelSynchroTop,
float fltVoltLevelSynchroBlack,
ATVModulation enmModulation,
@ -152,10 +153,10 @@ private:
m_objMsgConfig.m_enmModulation = enmModulation;
m_objMsgConfig.m_fltVoltLevelSynchroBlack = fltVoltLevelSynchroBlack;
m_objMsgConfig.m_fltVoltLevelSynchroTop = fltVoltLevelSynchroTop;
m_objMsgConfig.m_intFramePerS = intFramePerS;
m_objMsgConfig.m_fltFramePerS = fltFramePerS;
m_objMsgConfig.m_fltLineDurationUs = fltLineDurationUs;
m_objMsgConfig.m_fltTopDurationUs = fltTopDurationUs;
m_objMsgConfig.m_intPercentOfRowsToDisplay = intPercentOfRowsToDisplay;
m_objMsgConfig.m_fltRatioOfRowsToDisplay = flatRatioOfRowsToDisplay;
m_objMsgConfig.m_blnHSync = blnHSync;
m_objMsgConfig.m_blnVSync = blnVSync;
}

View File

@ -279,10 +279,10 @@ void ATVDemodGUI::applySettings()
m_objATVDemod->configure(m_objATVDemod->getInputMessageQueue(),
ui->lineTime->value() / 10.0f,
ui->topTime->value() * 1.0f,
(ui->fps->currentIndex() == 0) ? 25 : 30,
(ui->halfImage->checkState() == Qt::Checked) ? 50 : 100,
((float) (ui->synchLevel->value())) / 1000.0f,
((float) (ui->blackLevel->value())) / 1000.0f,
(ui->fps->currentIndex() == 0) ? 25.0f : 30.0f,
(ui->halfImage->checkState() == Qt::Checked) ? 0.5f : 1.0f,
ui->synchLevel->value() / 1000.0f,
ui->blackLevel->value() / 1000.0f,
(ATVDemod::ATVModulation) ui->modulation->currentIndex(),
ui->hSync->isChecked(),
ui->vSync->isChecked());