1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2025-09-05 06:37:51 -04:00

Prepare unique sample thread for scope and spectrum views

This commit is contained in:
f4exb 2015-06-23 09:15:06 +02:00
parent d7c7023bb5
commit 87300d3f98
4 changed files with 18 additions and 30 deletions

View File

@ -26,9 +26,8 @@
MESSAGE_CLASS_DEFINITION(ChannelAnalyzer::MsgConfigureChannelAnalyzer, Message) MESSAGE_CLASS_DEFINITION(ChannelAnalyzer::MsgConfigureChannelAnalyzer, Message)
ChannelAnalyzer::ChannelAnalyzer(SampleSink* spectrumSink, SampleSink* scopeSink) : ChannelAnalyzer::ChannelAnalyzer(SampleSink* sampleSink) :
m_spectrumSink(spectrumSink), m_sampleSink(sampleSink)
m_scopeSink(scopeSink)
{ {
m_Bandwidth = 5000; m_Bandwidth = 5000;
m_LowCutoff = 300; m_LowCutoff = 300;
@ -102,14 +101,9 @@ void ChannelAnalyzer::feed(SampleVector::const_iterator begin, SampleVector::con
} }
} }
if(m_spectrumSink != NULL) if(m_sampleSink != NULL)
{ {
m_spectrumSink->feed(m_sampleBuffer.begin(), m_sampleBuffer.end(), m_ssb); // m_ssb = positive only m_sampleSink->feed(m_sampleBuffer.begin(), m_sampleBuffer.end(), m_ssb); // m_ssb = positive only
}
if(m_scopeSink != NULL)
{
m_scopeSink->feed(m_sampleBuffer.begin(), m_sampleBuffer.end(), false); // positive only is unused
} }
m_sampleBuffer.clear(); m_sampleBuffer.clear();
@ -166,8 +160,8 @@ bool ChannelAnalyzer::handleMessage(Message* cmd)
cmd->completed(); cmd->completed();
return true; return true;
} else { } else {
if(m_spectrumSink != NULL) if(m_sampleSink != NULL)
return m_spectrumSink->handleMessage(cmd); return m_sampleSink->handleMessage(cmd);
else return false; else return false;
} }
} }

View File

@ -32,7 +32,7 @@
class ChannelAnalyzer : public SampleSink { class ChannelAnalyzer : public SampleSink {
public: public:
ChannelAnalyzer(SampleSink* spectrumSink, SampleSink* scopeSink); ChannelAnalyzer(SampleSink* m_sampleSink);
~ChannelAnalyzer(); ~ChannelAnalyzer();
void configure(MessageQueue* messageQueue, void configure(MessageQueue* messageQueue,
@ -100,8 +100,7 @@ private:
fftfilt* SSBFilter; fftfilt* SSBFilter;
fftfilt* DSBFilter; fftfilt* DSBFilter;
SampleSink* m_spectrumSink; SampleSink* m_sampleSink;
SampleSink* m_scopeSink;
SampleVector m_sampleBuffer; SampleVector m_sampleBuffer;
}; };

View File

@ -249,12 +249,10 @@ ChannelAnalyzerGUI::ChannelAnalyzerGUI(PluginAPI* pluginAPI, QWidget* parent) :
m_spectrumVis = new SpectrumVis(ui->glSpectrum); m_spectrumVis = new SpectrumVis(ui->glSpectrum);
m_scopeVis = new ScopeVis(ui->glScope); m_scopeVis = new ScopeVis(ui->glScope);
m_channelAnalyzer = new ChannelAnalyzer(m_spectrumVis, m_scopeVis); m_channelAnalyzer = new ChannelAnalyzer(m_spectrumVis);
m_channelizer = new Channelizer(m_channelAnalyzer); m_channelizer = new Channelizer(m_channelAnalyzer);
m_threadedSpectrumSampleSink = new ThreadedSampleSink(m_channelizer); m_threadedSampleSink = new ThreadedSampleSink(m_channelizer);
m_pluginAPI->addSampleSink(m_threadedSpectrumSampleSink); m_pluginAPI->addSampleSink(m_threadedSampleSink);
m_threadedScopeSampleSink = new ThreadedSampleSink(m_channelizer);
m_pluginAPI->addSampleSink(m_threadedScopeSampleSink);
ui->glSpectrum->setCenterFrequency(m_rate/2); ui->glSpectrum->setCenterFrequency(m_rate/2);
ui->glSpectrum->setSampleRate(m_rate); ui->glSpectrum->setSampleRate(m_rate);
@ -271,8 +269,8 @@ ChannelAnalyzerGUI::ChannelAnalyzerGUI(PluginAPI* pluginAPI, QWidget* parent) :
connect(m_channelMarker, SIGNAL(changed()), this, SLOT(viewChanged())); connect(m_channelMarker, SIGNAL(changed()), this, SLOT(viewChanged()));
m_pluginAPI->addChannelMarker(m_channelMarker); m_pluginAPI->addChannelMarker(m_channelMarker);
ui->spectrumGUI->setBuddies(m_threadedSpectrumSampleSink->getMessageQueue(), m_spectrumVis, ui->glSpectrum); ui->spectrumGUI->setBuddies(m_threadedSampleSink->getMessageQueue(), m_spectrumVis, ui->glSpectrum);
ui->scopeGUI->setBuddies(m_threadedScopeSampleSink->getMessageQueue(), m_scopeVis, ui->glScope); ui->scopeGUI->setBuddies(m_threadedSampleSink->getMessageQueue(), m_scopeVis, ui->glScope);
applySettings(); applySettings();
} }
@ -280,10 +278,8 @@ ChannelAnalyzerGUI::ChannelAnalyzerGUI(PluginAPI* pluginAPI, QWidget* parent) :
ChannelAnalyzerGUI::~ChannelAnalyzerGUI() ChannelAnalyzerGUI::~ChannelAnalyzerGUI()
{ {
m_pluginAPI->removeChannelInstance(this); m_pluginAPI->removeChannelInstance(this);
m_pluginAPI->removeSampleSink(m_threadedSpectrumSampleSink); m_pluginAPI->removeSampleSink(m_threadedSampleSink);
m_pluginAPI->removeSampleSink(m_threadedScopeSampleSink); delete m_threadedSampleSink;
delete m_threadedSpectrumSampleSink;
delete m_threadedScopeSampleSink;
delete m_channelizer; delete m_channelizer;
delete m_channelAnalyzer; delete m_channelAnalyzer;
delete m_spectrumVis; delete m_spectrumVis;
@ -353,10 +349,10 @@ void ChannelAnalyzerGUI::applySettings()
setTitleColor(m_channelMarker->getColor()); setTitleColor(m_channelMarker->getColor());
ui->deltaFrequency->setValue(abs(m_channelMarker->getCenterFrequency())); ui->deltaFrequency->setValue(abs(m_channelMarker->getCenterFrequency()));
ui->deltaMinus->setChecked(m_channelMarker->getCenterFrequency() < 0); ui->deltaMinus->setChecked(m_channelMarker->getCenterFrequency() < 0);
m_channelizer->configure(m_threadedSpectrumSampleSink->getMessageQueue(), m_channelizer->configure(m_threadedSampleSink->getMessageQueue(),
48000, 48000,
m_channelMarker->getCenterFrequency()); m_channelMarker->getCenterFrequency());
m_channelAnalyzer->configure(m_threadedSpectrumSampleSink->getMessageQueue(), m_channelAnalyzer->configure(m_threadedSampleSink->getMessageQueue(),
ui->BW->value() * 100.0, ui->BW->value() * 100.0,
ui->lowCut->value() * 100.0, ui->lowCut->value() * 100.0,
m_spanLog2, m_spanLog2,

View File

@ -53,8 +53,7 @@ private:
int m_rate; int m_rate;
int m_spanLog2; int m_spanLog2;
ThreadedSampleSink* m_threadedSpectrumSampleSink; ThreadedSampleSink* m_threadedSampleSink;
ThreadedSampleSink* m_threadedScopeSampleSink;
Channelizer* m_channelizer; Channelizer* m_channelizer;
ChannelAnalyzer* m_channelAnalyzer; ChannelAnalyzer* m_channelAnalyzer;
SpectrumVis* m_spectrumVis; SpectrumVis* m_spectrumVis;