From 4c983abd0b3a78e7f71189a5494519edcb0e846a Mon Sep 17 00:00:00 2001 From: f4exb Date: Sat, 18 Mar 2017 09:19:51 +0100 Subject: [PATCH] ATV Demod: effectively implemented interpolator --- plugins/channelrx/demodatv/atvdemod.cpp | 13 +++++---- plugins/channelrx/demodatv/atvdemod.h | 1 + plugins/channelrx/demodatv/atvdemodgui.cpp | 6 ++-- plugins/channelrx/demodatv/atvdemodgui.h | 2 +- plugins/channelrx/demodatv/atvdemodgui.ui | 34 +++++++++++++--------- 5 files changed, 33 insertions(+), 23 deletions(-) diff --git a/plugins/channelrx/demodatv/atvdemod.cpp b/plugins/channelrx/demodatv/atvdemod.cpp index bb11bcb6f..a07262bdf 100644 --- a/plugins/channelrx/demodatv/atvdemod.cpp +++ b/plugins/channelrx/demodatv/atvdemod.cpp @@ -193,13 +193,13 @@ void ATVDemod::feed(const SampleVector::const_iterator& begin, const SampleVecto #endif Complex c(fltI, fltQ); - if (m_objRFRunning.m_intFrequencyOffset != 0) - { - c *= m_nco.nextIQ(); - } - if (m_objRFRunning.m_blndecimatorEnable) { + if (m_objRFRunning.m_intFrequencyOffset != 0) + { + c *= m_nco.nextIQ(); + } + if (m_interpolator.decimate(&m_interpolatorDistanceRemain, c, &ci)) { demod(ci); @@ -595,6 +595,7 @@ void ATVDemod::applySettings() if ((m_objConfig.m_intSampleRate != m_objRunning.m_intSampleRate) || (m_objRFConfig.m_fltRFBandwidth != m_objRFRunning.m_fltRFBandwidth)) { + m_objSettingsMutex.lock(); m_intTVSampleRate = (m_objConfig.m_intSampleRate / 1000000) * 1000000; // make sure working sample rate is a multiple of rate units if (m_intTVSampleRate > 0) @@ -604,12 +605,12 @@ void ATVDemod::applySettings() else { m_intTVSampleRate = m_objConfig.m_intSampleRate; - m_interpolatorDistanceRemain = 0; m_interpolatorDistance = 1.0f; } m_interpolatorDistanceRemain = 0; m_interpolator.create(48, m_intTVSampleRate, m_objRFConfig.m_fltRFBandwidth / 2.2, 3.0); + m_objSettingsMutex.unlock(); } if((m_objConfig.m_fltFramePerS != m_objRunning.m_fltFramePerS) diff --git a/plugins/channelrx/demodatv/atvdemod.h b/plugins/channelrx/demodatv/atvdemod.h index 0047f146b..606098535 100644 --- a/plugins/channelrx/demodatv/atvdemod.h +++ b/plugins/channelrx/demodatv/atvdemod.h @@ -213,6 +213,7 @@ private: m_objMsgConfig.m_fltRFBandwidth = fltRFBandwidth; m_objMsgConfig.m_fltRFOppBandwidth = fltRFOppBandwidth; m_objMsgConfig.m_blnFFTFiltering = blnFFTFiltering; + m_objMsgConfig.m_blndecimatorEnable = blndecimatorEnable; } }; diff --git a/plugins/channelrx/demodatv/atvdemodgui.cpp b/plugins/channelrx/demodatv/atvdemodgui.cpp index aa55b0be9..bff85a8b4 100644 --- a/plugins/channelrx/demodatv/atvdemodgui.cpp +++ b/plugins/channelrx/demodatv/atvdemodgui.cpp @@ -361,7 +361,7 @@ void ATVDemodGUI::applyRFSettings() ui->rfBW->value() * 100000.0f, ui->rfOppBW->value() * 100000.0f, ui->rfFiltering->isChecked(), - ui->decimator->isChecked()); + ui->decimatorEnable->isChecked()); } } @@ -490,6 +490,7 @@ void ATVDemodGUI::on_modulation_currentIndexChanged(int index) } else { + m_objChannelMarker.setBandwidth(ui->rfBW->value()*100000); m_objChannelMarker.setSidebands(ChannelMarker::dsb); } } @@ -565,6 +566,7 @@ void ATVDemodGUI::on_rfFiltering_toggled(bool checked) } else { + m_objChannelMarker.setOppositeBandwidth(ui->rfOppBW->value()*100000); m_objChannelMarker.setSidebands(ChannelMarker::dsb); } } @@ -578,7 +580,7 @@ void ATVDemodGUI::on_rfFiltering_toggled(bool checked) applyRFSettings(); } -void ATVDemodGUI::on_decimator_toggled(bool checked) +void ATVDemodGUI::on_decimatorEnable_toggled(bool checked) { applyRFSettings(); } diff --git a/plugins/channelrx/demodatv/atvdemodgui.h b/plugins/channelrx/demodatv/atvdemodgui.h index a627845e3..b463c5ce1 100644 --- a/plugins/channelrx/demodatv/atvdemodgui.h +++ b/plugins/channelrx/demodatv/atvdemodgui.h @@ -75,7 +75,7 @@ private slots: void on_rfBW_valueChanged(int value); void on_rfOppBW_valueChanged(int value); void on_rfFiltering_toggled(bool checked); - void on_decimator_toggled(bool checked); + void on_decimatorEnable_toggled(bool checked); void on_deltaFrequency_changed(quint64 value); void on_deltaFrequencyMinus_toggled(bool minus); diff --git a/plugins/channelrx/demodatv/atvdemodgui.ui b/plugins/channelrx/demodatv/atvdemodgui.ui index 5b867186c..85e9d13a3 100644 --- a/plugins/channelrx/demodatv/atvdemodgui.ui +++ b/plugins/channelrx/demodatv/atvdemodgui.ui @@ -52,6 +52,20 @@ + + + + + + + + :/arrow_down.png:/arrow_down.png + + + true + + + @@ -65,6 +79,9 @@ :/minus.png + + true + @@ -98,20 +115,6 @@ - - - - - - - - :/arrow_down.png:/arrow_down.png - - - true - - - @@ -195,6 +198,9 @@ + + Engage asymmertical bandpass FFT filter +