mirror of https://github.com/f4exb/sdrangel.git
DATV demod: implemented CNR display
This commit is contained in:
parent
0dc554b30b
commit
076eeb7704
|
@ -67,6 +67,7 @@ public:
|
||||||
|
|
||||||
void SetTVScreen(TVScreen *objScreen) { m_basebandSink->setTVScreen(objScreen); }
|
void SetTVScreen(TVScreen *objScreen) { m_basebandSink->setTVScreen(objScreen); }
|
||||||
void setMERLabel(QLabel *merLabel) { m_basebandSink->setMERLabel(merLabel); }
|
void setMERLabel(QLabel *merLabel) { m_basebandSink->setMERLabel(merLabel); }
|
||||||
|
void setCNRLabel(QLabel *cnrLabel) { m_basebandSink->setCNRLabel(cnrLabel); }
|
||||||
DATVideostream *SetVideoRender(DATVideoRender *objScreen) { return m_basebandSink->SetVideoRender(objScreen); }
|
DATVideostream *SetVideoRender(DATVideoRender *objScreen) { return m_basebandSink->SetVideoRender(objScreen); }
|
||||||
bool audioActive() { return m_basebandSink->audioActive(); }
|
bool audioActive() { return m_basebandSink->audioActive(); }
|
||||||
bool audioDecodeOK() { return m_basebandSink->audioDecodeOK(); }
|
bool audioDecodeOK() { return m_basebandSink->audioDecodeOK(); }
|
||||||
|
|
|
@ -87,6 +87,7 @@ public:
|
||||||
double getMagSq() const { return m_sink.getMagSq(); }
|
double getMagSq() const { return m_sink.getMagSq(); }
|
||||||
void setTVScreen(TVScreen *tvScreen) { m_sink.setTVScreen(tvScreen); }
|
void setTVScreen(TVScreen *tvScreen) { m_sink.setTVScreen(tvScreen); }
|
||||||
void setMERLabel(QLabel *merLabel) { m_sink.setMERLabel(merLabel); }
|
void setMERLabel(QLabel *merLabel) { m_sink.setMERLabel(merLabel); }
|
||||||
|
void setCNRLabel(QLabel *cnrLabel) { m_sink.setCNRLabel(cnrLabel); }
|
||||||
void setMessageQueueToGUI(MessageQueue *messageQueue) { m_sink.setMessageQueueToGUI(messageQueue); }
|
void setMessageQueueToGUI(MessageQueue *messageQueue) { m_sink.setMessageQueueToGUI(messageQueue); }
|
||||||
void setBasebandSampleRate(int sampleRate); //!< To be used when supporting thread is stopped
|
void setBasebandSampleRate(int sampleRate); //!< To be used when supporting thread is stopped
|
||||||
DATVideostream *SetVideoRender(DATVideoRender *objScreen) { return m_sink.SetVideoRender(objScreen); }
|
DATVideostream *SetVideoRender(DATVideoRender *objScreen) { return m_sink.SetVideoRender(objScreen); }
|
||||||
|
|
|
@ -196,6 +196,7 @@ DATVDemodGUI::DATVDemodGUI(PluginAPI* objPluginAPI, DeviceUISet *deviceUISet, Ba
|
||||||
|
|
||||||
m_objDATVDemod->SetTVScreen(ui->screenTV);
|
m_objDATVDemod->SetTVScreen(ui->screenTV);
|
||||||
m_objDATVDemod->setMERLabel(ui->merText);
|
m_objDATVDemod->setMERLabel(ui->merText);
|
||||||
|
m_objDATVDemod->setCNRLabel(ui->cnrText);
|
||||||
|
|
||||||
connect(m_objDATVDemod->SetVideoRender(ui->screenTV_2), &DATVideostream::onDataPackets, this, &DATVDemodGUI::on_StreamDataAvailable);
|
connect(m_objDATVDemod->SetVideoRender(ui->screenTV_2), &DATVideostream::onDataPackets, this, &DATVDemodGUI::on_StreamDataAvailable);
|
||||||
connect(ui->screenTV_2, &DATVideoRender::onMetaDataChanged, this, &DATVDemodGUI::on_StreamMetaDataChanged);
|
connect(ui->screenTV_2, &DATVideoRender::onMetaDataChanged, this, &DATVDemodGUI::on_StreamMetaDataChanged);
|
||||||
|
|
|
@ -38,6 +38,7 @@ DATVDemodSink::DATVDemodSink() :
|
||||||
m_udpStream(leansdr::tspacket::SIZE),
|
m_udpStream(leansdr::tspacket::SIZE),
|
||||||
m_objRenderThread(nullptr),
|
m_objRenderThread(nullptr),
|
||||||
m_merLabel(nullptr),
|
m_merLabel(nullptr),
|
||||||
|
m_cnrLabel(nullptr),
|
||||||
m_audioFifo(48000),
|
m_audioFifo(48000),
|
||||||
m_blnRenderingVideo(false),
|
m_blnRenderingVideo(false),
|
||||||
m_blnStartStopVideo(false),
|
m_blnStartStopVideo(false),
|
||||||
|
@ -87,11 +88,14 @@ bool DATVDemodSink::setTVScreen(TVScreen *objScreen)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DATVDemodSink::setMERLabel(QLabel *merLabel)
|
void DATVDemodSink::setMERLabel(QLabel *merLabel) {
|
||||||
{
|
|
||||||
m_merLabel = merLabel;
|
m_merLabel = merLabel;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DATVDemodSink::setCNRLabel(QLabel *cnrLabel) {
|
||||||
|
m_cnrLabel = cnrLabel;
|
||||||
|
}
|
||||||
|
|
||||||
DATVideostream *DATVDemodSink::SetVideoRender(DATVideoRender *objScreen)
|
DATVideostream *DATVDemodSink::SetVideoRender(DATVideoRender *objScreen)
|
||||||
{
|
{
|
||||||
m_objRegisteredVideoRender = objScreen;
|
m_objRegisteredVideoRender = objScreen;
|
||||||
|
@ -350,6 +354,9 @@ void DATVDemodSink::CleanUpDATVFramework(bool blnRelease)
|
||||||
if (r_merGauge != nullptr) {
|
if (r_merGauge != nullptr) {
|
||||||
delete r_merGauge;
|
delete r_merGauge;
|
||||||
}
|
}
|
||||||
|
if (r_cnrGauge != nullptr) {
|
||||||
|
delete r_cnrGauge;
|
||||||
|
}
|
||||||
|
|
||||||
// INPUT
|
// INPUT
|
||||||
//if(p_rawiq!=nullptr) delete p_rawiq;
|
//if(p_rawiq!=nullptr) delete p_rawiq;
|
||||||
|
@ -504,6 +511,7 @@ void DATVDemodSink::CleanUpDATVFramework(bool blnRelease)
|
||||||
//CONSTELLATION
|
//CONSTELLATION
|
||||||
r_scope_symbols = nullptr;
|
r_scope_symbols = nullptr;
|
||||||
r_merGauge = nullptr;
|
r_merGauge = nullptr;
|
||||||
|
r_cnrGauge = nullptr;
|
||||||
|
|
||||||
//DVB-S2
|
//DVB-S2
|
||||||
p_slots_dvbs2 = nullptr;
|
p_slots_dvbs2 = nullptr;
|
||||||
|
@ -650,7 +658,7 @@ void DATVDemodSink::InitDATVFramework()
|
||||||
if (m_objCfg.cnr == true)
|
if (m_objCfg.cnr == true)
|
||||||
{
|
{
|
||||||
r_cnr = new leansdr::cnr_fft<leansdr::f32>(m_objScheduler, *p_preprocessed, *p_cnr, m_objCfg.Fm/m_objCfg.Fs);
|
r_cnr = new leansdr::cnr_fft<leansdr::f32>(m_objScheduler, *p_preprocessed, *p_cnr, m_objCfg.Fm/m_objCfg.Fs);
|
||||||
r_cnr->decimation = decimation(m_objCfg.Fs, 1); // 1 Hz
|
r_cnr->decimation = decimation(m_objCfg.Fs, 5); // 5 Hz
|
||||||
}
|
}
|
||||||
|
|
||||||
// FILTERING
|
// FILTERING
|
||||||
|
@ -779,6 +787,10 @@ void DATVDemodSink::InitDATVFramework()
|
||||||
r_merGauge = new leansdr::datvgaugelabel(m_objScheduler, *p_mer, m_merLabel);
|
r_merGauge = new leansdr::datvgaugelabel(m_objScheduler, *p_mer, m_merLabel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (m_cnrLabel) {
|
||||||
|
r_cnrGauge = new leansdr::datvgaugelabel(m_objScheduler, *p_cnr, m_cnrLabel);
|
||||||
|
}
|
||||||
|
|
||||||
// DECONVOLUTION AND SYNCHRONIZATION
|
// DECONVOLUTION AND SYNCHRONIZATION
|
||||||
|
|
||||||
p_bytes = new leansdr::pipebuf<leansdr::u8>(m_objScheduler, "bytes", BUF_BYTES);
|
p_bytes = new leansdr::pipebuf<leansdr::u8>(m_objScheduler, "bytes", BUF_BYTES);
|
||||||
|
@ -972,15 +984,15 @@ void DATVDemodSink::InitDATVS2Framework()
|
||||||
//******** -> if ( m_objCfg.Fderot>0 )
|
//******** -> if ( m_objCfg.Fderot>0 )
|
||||||
|
|
||||||
// CNR ESTIMATION
|
// CNR ESTIMATION
|
||||||
/**
|
|
||||||
p_cnr = new leansdr::pipebuf<leansdr::f32>(m_objScheduler, "cnr", BUF_SLOW);
|
p_cnr = new leansdr::pipebuf<leansdr::f32>(m_objScheduler, "cnr", BUF_SLOW);
|
||||||
|
|
||||||
if (m_objCfg.cnr == true)
|
if (m_objCfg.cnr == true)
|
||||||
{
|
{
|
||||||
r_cnr = new leansdr::cnr_fft<leansdr::f32>(m_objScheduler, *p_preprocessed, *p_cnr, m_objCfg.Fm/m_objCfg.Fs);
|
r_cnr = new leansdr::cnr_fft<leansdr::f32>(m_objScheduler, *p_preprocessed, *p_cnr, m_objCfg.Fm/m_objCfg.Fs);
|
||||||
r_cnr->decimation = decimation(m_objCfg.Fs, 1); // 1 Hz
|
r_cnr->decimation = decimation(m_objCfg.Fs, 5); // 5 Hz
|
||||||
}
|
}
|
||||||
**/
|
|
||||||
// FILTERING
|
// FILTERING
|
||||||
|
|
||||||
//******** -> if ( m_objCfg.resample )
|
//******** -> if ( m_objCfg.resample )
|
||||||
|
@ -1087,6 +1099,10 @@ void DATVDemodSink::InitDATVS2Framework()
|
||||||
r_merGauge = new leansdr::datvgaugelabel(m_objScheduler, *p_mer, m_merLabel);
|
r_merGauge = new leansdr::datvgaugelabel(m_objScheduler, *p_mer, m_merLabel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (m_cnrLabel) {
|
||||||
|
r_cnrGauge = new leansdr::datvgaugelabel(m_objScheduler, *p_cnr, m_cnrLabel);
|
||||||
|
}
|
||||||
|
|
||||||
// Bit-flipping mode.
|
// Bit-flipping mode.
|
||||||
// Deinterleave into hard bits.
|
// Deinterleave into hard bits.
|
||||||
|
|
||||||
|
|
|
@ -59,6 +59,7 @@ public:
|
||||||
|
|
||||||
bool setTVScreen(TVScreen *objScreen);
|
bool setTVScreen(TVScreen *objScreen);
|
||||||
void setMERLabel(QLabel *merLabel);
|
void setMERLabel(QLabel *merLabel);
|
||||||
|
void setCNRLabel(QLabel *cnrLabel);
|
||||||
DATVideostream * SetVideoRender(DATVideoRender *objScreen);
|
DATVideostream * SetVideoRender(DATVideoRender *objScreen);
|
||||||
bool audioActive();
|
bool audioActive();
|
||||||
bool audioDecodeOK();
|
bool audioDecodeOK();
|
||||||
|
@ -114,7 +115,7 @@ private:
|
||||||
Fs(2.4e6),
|
Fs(2.4e6),
|
||||||
Fderot(0),
|
Fderot(0),
|
||||||
anf(0),
|
anf(0),
|
||||||
cnr(false),
|
cnr(true),
|
||||||
decim(0),
|
decim(0),
|
||||||
Fm(2e6),
|
Fm(2e6),
|
||||||
constellation(leansdr::cstln_lut<leansdr::eucl_ss, 256>::QPSK),
|
constellation(leansdr::cstln_lut<leansdr::eucl_ss, 256>::QPSK),
|
||||||
|
@ -275,6 +276,7 @@ private:
|
||||||
leansdr::datvconstellation<leansdr::f32> *r_scope_symbols;
|
leansdr::datvconstellation<leansdr::f32> *r_scope_symbols;
|
||||||
leansdr::datvdvbs2constellation<leansdr::f32> *r_scope_symbols_dvbs2;
|
leansdr::datvdvbs2constellation<leansdr::f32> *r_scope_symbols_dvbs2;
|
||||||
leansdr::datvgaugelabel *r_merGauge;
|
leansdr::datvgaugelabel *r_merGauge;
|
||||||
|
leansdr::datvgaugelabel *r_cnrGauge;
|
||||||
|
|
||||||
//*************** DATV PARAMETERS ***************
|
//*************** DATV PARAMETERS ***************
|
||||||
TVScreen *m_objRegisteredTVScreen;
|
TVScreen *m_objRegisteredTVScreen;
|
||||||
|
@ -283,6 +285,7 @@ private:
|
||||||
DATVUDPStream m_udpStream;
|
DATVUDPStream m_udpStream;
|
||||||
DATVideoRenderThread *m_objRenderThread;
|
DATVideoRenderThread *m_objRenderThread;
|
||||||
QLabel *m_merLabel;
|
QLabel *m_merLabel;
|
||||||
|
QLabel *m_cnrLabel;
|
||||||
|
|
||||||
// Audio
|
// Audio
|
||||||
AudioFifo m_audioFifo;
|
AudioFifo m_audioFifo;
|
||||||
|
|
Loading…
Reference in New Issue