mirror of
https://github.com/f4exb/sdrangel.git
synced 2024-10-01 01:06:35 -04:00
DSD demod plugin: added scope window on discriminator output
This commit is contained in:
parent
d4cd66f433
commit
93b0b91f79
@ -41,7 +41,7 @@ DSDDemod::DSDDemod(SampleSink* sampleSink) :
|
|||||||
m_fmExcursion(24),
|
m_fmExcursion(24),
|
||||||
m_settingsMutex(QMutex::Recursive),
|
m_settingsMutex(QMutex::Recursive),
|
||||||
m_scope(sampleSink),
|
m_scope(sampleSink),
|
||||||
m_scopeEnabled(false)
|
m_scopeEnabled(true)
|
||||||
{
|
{
|
||||||
setObjectName("DSDDemod");
|
setObjectName("DSDDemod");
|
||||||
|
|
||||||
@ -113,7 +113,7 @@ void DSDDemod::feed(const SampleVector::const_iterator& begin, const SampleVecto
|
|||||||
|
|
||||||
m_AGC.feed(ci);
|
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++;
|
m_sampleCount++;
|
||||||
|
|
||||||
// AF processing
|
// AF processing
|
||||||
@ -144,21 +144,21 @@ void DSDDemod::feed(const SampleVector::const_iterator& begin, const SampleVecto
|
|||||||
Sample s(demod, 0.0);
|
Sample s(demod, 0.0);
|
||||||
m_scopeSampleBuffer.push_back(s);
|
m_scopeSampleBuffer.push_back(s);
|
||||||
|
|
||||||
// m_audioBuffer[m_audioBufferFill].l = sample;
|
m_audioBuffer[m_audioBufferFill].l = sample;
|
||||||
// m_audioBuffer[m_audioBufferFill].r = sample;
|
m_audioBuffer[m_audioBufferFill].r = sample;
|
||||||
// ++m_audioBufferFill;
|
++m_audioBufferFill;
|
||||||
//
|
|
||||||
// if (m_audioBufferFill >= m_audioBuffer.size())
|
if (m_audioBufferFill >= m_audioBuffer.size())
|
||||||
// {
|
{
|
||||||
// uint res = m_audioFifo.write((const quint8*)&m_audioBuffer[0], m_audioBufferFill, 10);
|
uint res = m_audioFifo.write((const quint8*)&m_audioBuffer[0], m_audioBufferFill, 10);
|
||||||
//
|
|
||||||
// if (res != m_audioBufferFill)
|
if (res != m_audioBufferFill)
|
||||||
// {
|
{
|
||||||
// qDebug("DSDDemod::feed: %u/%u audio samples written", res, m_audioBufferFill);
|
qDebug("DSDDemod::feed: %u/%u audio samples written", res, m_audioBufferFill);
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// m_audioBufferFill = 0;
|
m_audioBufferFill = 0;
|
||||||
// }
|
}
|
||||||
|
|
||||||
m_interpolatorDistanceRemain += m_interpolatorDistance;
|
m_interpolatorDistanceRemain += m_interpolatorDistance;
|
||||||
}
|
}
|
||||||
|
@ -1,13 +1,11 @@
|
|||||||
#include <QDockWidget>
|
#include <QDockWidget>
|
||||||
#include <QMainWindow>
|
#include <QMainWindow>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include "dsddemodgui.h"
|
|
||||||
#include "ui_dsddemodgui.h"
|
#include "ui_dsddemodgui.h"
|
||||||
#include "dsp/threadedsamplesink.h"
|
#include "dsp/threadedsamplesink.h"
|
||||||
#include "dsp/channelizer.h"
|
#include "dsp/channelizer.h"
|
||||||
#include "dsp/scopevis.h"
|
#include "dsp/scopevis.h"
|
||||||
#include "dsddemod.h"
|
#include "gui/glscope.h"
|
||||||
#include "dsp/nullsink.h"
|
|
||||||
#include "plugin/pluginapi.h"
|
#include "plugin/pluginapi.h"
|
||||||
#include "util/simpleserializer.h"
|
#include "util/simpleserializer.h"
|
||||||
#include "util/db.h"
|
#include "util/db.h"
|
||||||
@ -15,6 +13,9 @@
|
|||||||
#include "dsp/dspengine.h"
|
#include "dsp/dspengine.h"
|
||||||
#include "mainwindow.h"
|
#include "mainwindow.h"
|
||||||
|
|
||||||
|
#include "dsddemod.h"
|
||||||
|
#include "dsddemodgui.h"
|
||||||
|
|
||||||
DSDDemodGUI* DSDDemodGUI::create(PluginAPI* pluginAPI)
|
DSDDemodGUI* DSDDemodGUI::create(PluginAPI* pluginAPI)
|
||||||
{
|
{
|
||||||
DSDDemodGUI* gui = new DSDDemodGUI(pluginAPI);
|
DSDDemodGUI* gui = new DSDDemodGUI(pluginAPI);
|
||||||
@ -74,6 +75,7 @@ QByteArray DSDDemodGUI::serialize() const
|
|||||||
s.writeU32(7, m_channelMarker.getColor().rgb());
|
s.writeU32(7, m_channelMarker.getColor().rgb());
|
||||||
s.writeS32(8, ui->squelchGate->value());
|
s.writeS32(8, ui->squelchGate->value());
|
||||||
s.writeS32(9, ui->volume->value());
|
s.writeS32(9, ui->volume->value());
|
||||||
|
s.writeBlob(10, ui->scopeGUI->serialize());
|
||||||
return s.final();
|
return s.final();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -117,6 +119,8 @@ bool DSDDemodGUI::deserialize(const QByteArray& data)
|
|||||||
ui->squelchGate->setValue(tmp);
|
ui->squelchGate->setValue(tmp);
|
||||||
d.readS32(9, &tmp, 20);
|
d.readS32(9, &tmp, 20);
|
||||||
ui->volume->setValue(tmp);
|
ui->volume->setValue(tmp);
|
||||||
|
d.readBlob(10, &bytetmp);
|
||||||
|
ui->scopeGUI->deserialize(bytetmp);
|
||||||
|
|
||||||
blockApplySettings(false);
|
blockApplySettings(false);
|
||||||
m_channelMarker.blockSignals(false);
|
m_channelMarker.blockSignals(false);
|
||||||
@ -242,6 +246,9 @@ DSDDemodGUI::DSDDemodGUI(PluginAPI* pluginAPI, QWidget* parent) :
|
|||||||
m_dsdDemod = new DSDDemod(m_scopeVis);
|
m_dsdDemod = new DSDDemod(m_scopeVis);
|
||||||
m_dsdDemod->registerGUI(this);
|
m_dsdDemod->registerGUI(this);
|
||||||
|
|
||||||
|
ui->glScope->setSampleRate(48000);
|
||||||
|
m_scopeVis->setSampleRate(48000);
|
||||||
|
|
||||||
ui->glScope->connectTimer(m_pluginAPI->getMainWindow()->getMasterTimer());
|
ui->glScope->connectTimer(m_pluginAPI->getMainWindow()->getMasterTimer());
|
||||||
|
|
||||||
connect(&m_pluginAPI->getMainWindow()->getMasterTimer(), SIGNAL(timeout()), this, SLOT(tick()));
|
connect(&m_pluginAPI->getMainWindow()->getMasterTimer(), SIGNAL(timeout()), this, SLOT(tick()));
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>503</width>
|
<width>503</width>
|
||||||
<height>506</height>
|
<height>898</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
@ -234,7 +234,7 @@
|
|||||||
<number>50</number>
|
<number>50</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="maximum">
|
<property name="maximum">
|
||||||
<number>150</number>
|
<number>200</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="pageStep">
|
<property name="pageStep">
|
||||||
<number>1</number>
|
<number>1</number>
|
||||||
@ -525,50 +525,33 @@
|
|||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QWidget" name="scopeContainer" native="true">
|
<widget class="QWidget" name="verticalWidget" native="true">
|
||||||
<property name="enabled">
|
|
||||||
<bool>false</bool>
|
|
||||||
</property>
|
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>10</x>
|
||||||
<y>180</y>
|
<y>180</y>
|
||||||
<width>501</width>
|
<width>481</width>
|
||||||
<height>291</height>
|
<height>651</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<widget class="GLScope" name="glScope" native="true">
|
<property name="windowTitle">
|
||||||
<property name="geometry">
|
<string>Discriminator Scope</string>
|
||||||
<rect>
|
</property>
|
||||||
<x>0</x>
|
<layout class="QVBoxLayout" name="scopeContainer">
|
||||||
<y>0</y>
|
<item>
|
||||||
<width>491</width>
|
<widget class="GLScope" name="glScope" native="true">
|
||||||
<height>250</height>
|
<property name="minimumSize">
|
||||||
</rect>
|
<size>
|
||||||
</property>
|
<width>200</width>
|
||||||
<property name="minimumSize">
|
<height>250</height>
|
||||||
<size>
|
</size>
|
||||||
<width>200</width>
|
</property>
|
||||||
<height>250</height>
|
</widget>
|
||||||
</size>
|
</item>
|
||||||
</property>
|
<item>
|
||||||
<property name="font">
|
<widget class="GLScopeGUI" name="scopeGUI" native="true"/>
|
||||||
<font>
|
</item>
|
||||||
<family>Monospace</family>
|
</layout>
|
||||||
<pointsize>8</pointsize>
|
|
||||||
</font>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="GLScopeGUI" name="scopeGUI" native="true">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>0</x>
|
|
||||||
<y>260</y>
|
|
||||||
<width>481</width>
|
|
||||||
<height>26</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
<customwidgets>
|
<customwidgets>
|
||||||
|
Loading…
Reference in New Issue
Block a user