From 93b0b91f79fb6dd30fc1ef3237ae88e7c3765e96 Mon Sep 17 00:00:00 2001 From: f4exb Date: Thu, 7 Apr 2016 19:54:26 +0200 Subject: [PATCH] DSD demod plugin: added scope window on discriminator output --- plugins/channel/demoddsd/dsddemod.cpp | 34 ++++++------- plugins/channel/demoddsd/dsddemodgui.cpp | 13 +++-- plugins/channel/demoddsd/dsddemodgui.ui | 65 +++++++++--------------- 3 files changed, 51 insertions(+), 61 deletions(-) diff --git a/plugins/channel/demoddsd/dsddemod.cpp b/plugins/channel/demoddsd/dsddemod.cpp index 2ad2b628f..dce859c4c 100644 --- a/plugins/channel/demoddsd/dsddemod.cpp +++ b/plugins/channel/demoddsd/dsddemod.cpp @@ -41,7 +41,7 @@ DSDDemod::DSDDemod(SampleSink* sampleSink) : m_fmExcursion(24), m_settingsMutex(QMutex::Recursive), m_scope(sampleSink), - m_scopeEnabled(false) + m_scopeEnabled(true) { setObjectName("DSDDemod"); @@ -113,7 +113,7 @@ void DSDDemod::feed(const SampleVector::const_iterator& begin, const SampleVecto m_AGC.feed(ci); - Real demod = m_phaseDiscri.phaseDiscriminator(ci); + Real demod = 32768.0f * m_phaseDiscri.phaseDiscriminator(ci) * ((float) m_running.m_demodGain / 100.0f); m_sampleCount++; // AF processing @@ -144,21 +144,21 @@ void DSDDemod::feed(const SampleVector::const_iterator& begin, const SampleVecto Sample s(demod, 0.0); m_scopeSampleBuffer.push_back(s); -// m_audioBuffer[m_audioBufferFill].l = sample; -// m_audioBuffer[m_audioBufferFill].r = sample; -// ++m_audioBufferFill; -// -// if (m_audioBufferFill >= m_audioBuffer.size()) -// { -// uint res = m_audioFifo.write((const quint8*)&m_audioBuffer[0], m_audioBufferFill, 10); -// -// if (res != m_audioBufferFill) -// { -// qDebug("DSDDemod::feed: %u/%u audio samples written", res, m_audioBufferFill); -// } -// -// m_audioBufferFill = 0; -// } + m_audioBuffer[m_audioBufferFill].l = sample; + m_audioBuffer[m_audioBufferFill].r = sample; + ++m_audioBufferFill; + + if (m_audioBufferFill >= m_audioBuffer.size()) + { + uint res = m_audioFifo.write((const quint8*)&m_audioBuffer[0], m_audioBufferFill, 10); + + if (res != m_audioBufferFill) + { + qDebug("DSDDemod::feed: %u/%u audio samples written", res, m_audioBufferFill); + } + + m_audioBufferFill = 0; + } m_interpolatorDistanceRemain += m_interpolatorDistance; } diff --git a/plugins/channel/demoddsd/dsddemodgui.cpp b/plugins/channel/demoddsd/dsddemodgui.cpp index b34040845..320fc46f1 100644 --- a/plugins/channel/demoddsd/dsddemodgui.cpp +++ b/plugins/channel/demoddsd/dsddemodgui.cpp @@ -1,13 +1,11 @@ #include #include #include -#include "dsddemodgui.h" #include "ui_dsddemodgui.h" #include "dsp/threadedsamplesink.h" #include "dsp/channelizer.h" #include "dsp/scopevis.h" -#include "dsddemod.h" -#include "dsp/nullsink.h" +#include "gui/glscope.h" #include "plugin/pluginapi.h" #include "util/simpleserializer.h" #include "util/db.h" @@ -15,6 +13,9 @@ #include "dsp/dspengine.h" #include "mainwindow.h" +#include "dsddemod.h" +#include "dsddemodgui.h" + DSDDemodGUI* DSDDemodGUI::create(PluginAPI* pluginAPI) { DSDDemodGUI* gui = new DSDDemodGUI(pluginAPI); @@ -74,6 +75,7 @@ QByteArray DSDDemodGUI::serialize() const s.writeU32(7, m_channelMarker.getColor().rgb()); s.writeS32(8, ui->squelchGate->value()); s.writeS32(9, ui->volume->value()); + s.writeBlob(10, ui->scopeGUI->serialize()); return s.final(); } @@ -117,6 +119,8 @@ bool DSDDemodGUI::deserialize(const QByteArray& data) ui->squelchGate->setValue(tmp); d.readS32(9, &tmp, 20); ui->volume->setValue(tmp); + d.readBlob(10, &bytetmp); + ui->scopeGUI->deserialize(bytetmp); blockApplySettings(false); m_channelMarker.blockSignals(false); @@ -242,6 +246,9 @@ DSDDemodGUI::DSDDemodGUI(PluginAPI* pluginAPI, QWidget* parent) : m_dsdDemod = new DSDDemod(m_scopeVis); m_dsdDemod->registerGUI(this); + ui->glScope->setSampleRate(48000); + m_scopeVis->setSampleRate(48000); + ui->glScope->connectTimer(m_pluginAPI->getMainWindow()->getMasterTimer()); connect(&m_pluginAPI->getMainWindow()->getMasterTimer(), SIGNAL(timeout()), this, SLOT(tick())); diff --git a/plugins/channel/demoddsd/dsddemodgui.ui b/plugins/channel/demoddsd/dsddemodgui.ui index 37a672901..f050b5f59 100644 --- a/plugins/channel/demoddsd/dsddemodgui.ui +++ b/plugins/channel/demoddsd/dsddemodgui.ui @@ -7,7 +7,7 @@ 0 0 503 - 506 + 898 @@ -234,7 +234,7 @@ 50 - 150 + 200 1 @@ -525,50 +525,33 @@ - - - false - + - 0 + 10 180 - 501 - 291 + 481 + 651 - - - - 0 - 0 - 491 - 250 - - - - - 200 - 250 - - - - - Monospace - 8 - - - - - - - 0 - 260 - 481 - 26 - - - + + Discriminator Scope + + + + + + + 200 + 250 + + + + + + + +