diff --git a/plugins/channelrx/demodatv/atvdemod.cpp b/plugins/channelrx/demodatv/atvdemod.cpp index c7463d65e..aa5071527 100644 --- a/plugins/channelrx/demodatv/atvdemod.cpp +++ b/plugins/channelrx/demodatv/atvdemod.cpp @@ -534,11 +534,25 @@ void ATVDemod::applySettings() } if ((m_objConfig.m_intSampleRate != m_objRunning.m_intSampleRate) - || (m_objRFConfig.m_fltRFBandwidth != m_objRFRunning.m_fltRFBandwidth)) + || (m_objRFConfig.m_fltRFBandwidth != m_objRFRunning.m_fltRFBandwidth) + || (m_objConfig.m_fltFramePerS != m_objRunning.m_fltFramePerS) + || (m_objConfig.m_intNumberOfLines != m_objRunning.m_intNumberOfLines)) { m_objSettingsMutex.lock(); - m_objConfigPrivate.m_intTVSampleRate = m_objConfig.m_intSampleRate; + int linesPerSecond = m_objConfig.m_intNumberOfLines * m_objConfig.m_fltFramePerS; + + int maxPoints = m_objConfig.m_intSampleRate / linesPerSecond; + int i = maxPoints; + + for (; i > 0; i--) + { + if ((i * linesPerSecond) % 10 == 0) + break; + } + + int nbPointsPerRateUnit = i == 0 ? maxPoints : i; + m_objConfigPrivate.m_intTVSampleRate = nbPointsPerRateUnit * linesPerSecond; if (m_objConfigPrivate.m_intTVSampleRate > 0) { diff --git a/plugins/channelrx/demodatv/atvdemodgui.cpp b/plugins/channelrx/demodatv/atvdemodgui.cpp index 04b7832d3..d36896b6a 100644 --- a/plugins/channelrx/demodatv/atvdemodgui.cpp +++ b/plugins/channelrx/demodatv/atvdemodgui.cpp @@ -210,7 +210,7 @@ bool ATVDemodGUI::handleMessage(const Message& objMessage) { int sampleRate = ((ATVDemod::MsgReportEffectiveSampleRate&)objMessage).getSampleRate(); int nbPointsPerLine = ((ATVDemod::MsgReportEffectiveSampleRate&)objMessage).getNbPointsPerLine(); - ui->channelSampleRateText->setText(tr("%1k").arg(sampleRate/1000.0f, 0, 'f', 0)); + ui->channelSampleRateText->setText(tr("%1k").arg(sampleRate/1000.0f, 0, 'f', 2)); ui->nbPointsPerLineText->setText(tr("%1p").arg(nbPointsPerLine)); m_objScopeVis->setSampleRate(sampleRate); setRFFiltersSlidersRange(sampleRate); diff --git a/plugins/channelrx/demodatv/atvdemodgui.ui b/plugins/channelrx/demodatv/atvdemodgui.ui index 60762d15e..f97bc0745 100644 --- a/plugins/channelrx/demodatv/atvdemodgui.ui +++ b/plugins/channelrx/demodatv/atvdemodgui.ui @@ -135,7 +135,7 @@ - 52 + 66 0 @@ -143,7 +143,7 @@ Effective channel sample rate (kS/s) - 00000k + 00000.00k Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter diff --git a/plugins/channeltx/modatv/atvmod.cpp b/plugins/channeltx/modatv/atvmod.cpp index 57e57a230..ecb436337 100644 --- a/plugins/channeltx/modatv/atvmod.cpp +++ b/plugins/channeltx/modatv/atvmod.cpp @@ -776,7 +776,7 @@ void ATVMod::getBaseValues(int outputSampleRate, int linesPerSecond, int& sample for (; i > 0; i--) { - if ((i * linesPerSecond) % 1000 == 0) + if ((i * linesPerSecond) % 10 == 0) break; } diff --git a/plugins/channeltx/modatv/atvmodgui.cpp b/plugins/channeltx/modatv/atvmodgui.cpp index 3ac2b0cd9..15fb5941c 100644 --- a/plugins/channeltx/modatv/atvmodgui.cpp +++ b/plugins/channeltx/modatv/atvmodgui.cpp @@ -218,7 +218,7 @@ bool ATVModGUI::handleMessage(const Message& message) { int sampleRate = ((ATVMod::MsgReportEffectiveSampleRate&)message).getSampleRate(); uint32_t nbPointsPerLine = ((ATVMod::MsgReportEffectiveSampleRate&)message).gatNbPointsPerLine(); - ui->channelSampleRateText->setText(tr("%1k").arg(sampleRate/1000.0f, 0, 'f', 0)); + ui->channelSampleRateText->setText(tr("%1k").arg(sampleRate/1000.0f, 0, 'f', 2)); ui->nbPointsPerLineText->setText(tr("%1p").arg(nbPointsPerLine)); setRFFiltersSlidersRange(sampleRate); return true; diff --git a/plugins/channeltx/modatv/atvmodgui.ui b/plugins/channeltx/modatv/atvmodgui.ui index c78efbd8b..64144eca5 100644 --- a/plugins/channeltx/modatv/atvmodgui.ui +++ b/plugins/channeltx/modatv/atvmodgui.ui @@ -148,12 +148,12 @@ - 52 + 66 0 - 00000k + 00000.00k Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter