From 3721b445b18972eda0dbd47e07b81f191a842ffd Mon Sep 17 00:00:00 2001 From: f4exb Date: Mon, 20 Mar 2017 05:06:33 +0100 Subject: [PATCH] ATV Demod: fixed interpolator rf bandwidth whe in SSB modes. Set interpolator taps per phase to 24 --- plugins/channelrx/demodatv/atvdemod.cpp | 27 ++++++++++++++++--- plugins/channelrx/demodatv/atvdemod.h | 2 +- plugins/channelrx/demodatv/atvdemodplugin.cpp | 2 +- 3 files changed, 26 insertions(+), 5 deletions(-) diff --git a/plugins/channelrx/demodatv/atvdemod.cpp b/plugins/channelrx/demodatv/atvdemod.cpp index a0ef3f93e..07ca22e2b 100644 --- a/plugins/channelrx/demodatv/atvdemod.cpp +++ b/plugins/channelrx/demodatv/atvdemod.cpp @@ -650,8 +650,9 @@ void ATVDemod::applySettings() return; } - if((m_objRFConfig.m_intFrequencyOffset != m_objRFRunning.m_intFrequencyOffset) || - (m_objConfig.m_intSampleRate != m_objRunning.m_intSampleRate)) + if((m_objRFConfig.m_intFrequencyOffset != m_objRFRunning.m_intFrequencyOffset) + || (m_objRFConfig.m_enmModulation != m_objRFRunning.m_enmModulation) + || (m_objConfig.m_intSampleRate != m_objRunning.m_intSampleRate)) { m_nco.setFreq(-m_objRFConfig.m_intFrequencyOffset, m_objConfig.m_intSampleRate); } @@ -674,7 +675,10 @@ void ATVDemod::applySettings() } m_interpolatorDistanceRemain = 0; - m_interpolator.create(16, m_objConfigPrivate.m_intTVSampleRate, m_objRFConfig.m_fltRFBandwidth / 2.2, 3.0); + m_interpolator.create(24, + m_objConfigPrivate.m_intTVSampleRate, + m_objRFConfig.m_fltRFBandwidth / getRFBandwidthDivisor(m_objRFConfig.m_enmModulation), + 3.0); m_objSettingsMutex.unlock(); } @@ -758,3 +762,20 @@ bool ATVDemod::getBFOLocked() return false; } } + +float ATVDemod::getRFBandwidthDivisor(ATVModulation modulation) +{ + switch(modulation) + { + case ATV_USB: + case ATV_LSB: + return 1.05f; + break; + case ATV_FM1: + case ATV_FM2: + case ATV_AM: + default: + return 2.2f; + } +} + diff --git a/plugins/channelrx/demodatv/atvdemod.h b/plugins/channelrx/demodatv/atvdemod.h index 80fe5be6f..c38d135cb 100644 --- a/plugins/channelrx/demodatv/atvdemod.h +++ b/plugins/channelrx/demodatv/atvdemod.h @@ -334,7 +334,7 @@ private: void applySettings(); void demod(Complex& c); - + static float getRFBandwidthDivisor(ATVModulation modulation); }; #endif // INCLUDE_ATVDEMOD_H diff --git a/plugins/channelrx/demodatv/atvdemodplugin.cpp b/plugins/channelrx/demodatv/atvdemodplugin.cpp index 8a972b8de..ab015d0c1 100644 --- a/plugins/channelrx/demodatv/atvdemodplugin.cpp +++ b/plugins/channelrx/demodatv/atvdemodplugin.cpp @@ -26,7 +26,7 @@ const PluginDescriptor ATVDemodPlugin::m_ptrPluginDescriptor = { QString("ATV Demodulator"), - QString("3.3.1"), + QString("3.3.2"), QString("(c) F4HKW for F4EXB / SDRAngel"), QString("https://github.com/f4exb/sdrangel"), true,