From f10d486b289f755f8b9d956c125408c581735d4c Mon Sep 17 00:00:00 2001 From: f4exb Date: Sun, 1 Oct 2017 16:02:34 +0200 Subject: [PATCH] BFM demod: fixed segfault --- plugins/channelrx/demodbfm/bfmdemod.cpp | 30 ++++++++++++++++++------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/plugins/channelrx/demodbfm/bfmdemod.cpp b/plugins/channelrx/demodbfm/bfmdemod.cpp index e0c0537d3..8fb23a96c 100644 --- a/plugins/channelrx/demodbfm/bfmdemod.cpp +++ b/plugins/channelrx/demodbfm/bfmdemod.cpp @@ -48,6 +48,27 @@ BFMDemod::BFMDemod(DeviceSourceAPI *deviceAPI) : { setObjectName("BFMDemod"); + m_magsq = 0.0f; + m_magsqSum = 0.0f; + m_magsqPeak = 0.0f; + m_magsqCount = 0; + + m_squelchLevel = 0; + + m_interpolatorDistance = 0.0f; + m_interpolatorDistanceRemain = 0.0f; + + m_interpolatorRDSDistance = 0.0f; + m_interpolatorRDSDistanceRemain = 0.0f; + + m_interpolatorStereoDistance = 0.0f; + m_interpolatorStereoDistanceRemain = 0.0f; + + m_sampleSink = 0; + m_m1Arg = 0; + + m_rfFilter = new fftfilt(-50000.0 / 384000.0, 50000.0 / 384000.0, filtFftLen); + m_channelizer = new DownChannelizer(this); m_threadedChannelizer = new ThreadedBasebandSampleSink(m_channelizer, this); connect(m_channelizer, SIGNAL(inputSampleRateChanged()), this, SLOT(channelSampleRateChanged())); @@ -62,20 +83,13 @@ BFMDemod::BFMDemod(DeviceSourceAPI *deviceAPI) : m_config.m_audioSampleRate = DSPEngine::instance()->getAudioSampleRate(); // normally 48 kHz m_deemphasisFilterX.configure(default_deemphasis * m_config.m_audioSampleRate * 1.0e-6); m_deemphasisFilterY.configure(default_deemphasis * m_config.m_audioSampleRate * 1.0e-6); - m_rfFilter = new fftfilt(-50000.0 / 384000.0, 50000.0 / 384000.0, filtFftLen); - m_phaseDiscri.setFMScaling(384000/m_fmExcursion); + m_phaseDiscri.setFMScaling(384000/m_fmExcursion); apply(); m_audioBuffer.resize(16384); m_audioBufferFill = 0; -// m_movingAverage.resize(16, 0); - m_magsq = 0.0f; - m_magsqSum = 0.0f; - m_magsqPeak = 0.0f; - m_magsqCount = 0; - DSPEngine::instance()->addAudioSink(&m_audioFifo); m_udpBufferAudio = new UDPSink(this, m_udpBlockSize, m_config.m_udpPort); }