mirror of
https://github.com/f4exb/sdrangel.git
synced 2025-05-28 21:12:26 -04:00
DATV demod: refactoring of classes
This commit is contained in:
parent
735f1cdbb4
commit
6ee705fcd7
File diff suppressed because it is too large
Load Diff
@ -24,36 +24,14 @@ class DeviceAPI;
|
|||||||
class ThreadedBasebandSampleSink;
|
class ThreadedBasebandSampleSink;
|
||||||
class DownChannelizer;
|
class DownChannelizer;
|
||||||
|
|
||||||
#include "datvconstellation.h"
|
|
||||||
#include "datvdvbs2constellation.h"
|
|
||||||
#include "datvvideoplayer.h"
|
|
||||||
#include "datvideostream.h"
|
|
||||||
#include "datvudpstream.h"
|
|
||||||
#include "datvideorender.h"
|
|
||||||
#include "datvdemodsettings.h"
|
|
||||||
|
|
||||||
#include "channel/channelapi.h"
|
#include "channel/channelapi.h"
|
||||||
#include "dsp/basebandsamplesink.h"
|
#include "dsp/basebandsamplesink.h"
|
||||||
#include "dsp/devicesamplesource.h"
|
#include "dsp/devicesamplesource.h"
|
||||||
#include "dsp/dspcommands.h"
|
#include "dsp/dspcommands.h"
|
||||||
#include "dsp/downchannelizer.h"
|
|
||||||
#include "dsp/fftfilt.h"
|
|
||||||
#include "dsp/nco.h"
|
|
||||||
#include "dsp/interpolator.h"
|
|
||||||
#include "dsp/movingaverage.h"
|
|
||||||
#include "dsp/agc.h"
|
|
||||||
#include "audio/audiofifo.h"
|
|
||||||
#include "util/message.h"
|
#include "util/message.h"
|
||||||
#include "util/movingaverage.h"
|
|
||||||
|
|
||||||
#include <QMutex>
|
|
||||||
|
|
||||||
#include "datvdemodbaseband.h"
|
#include "datvdemodbaseband.h"
|
||||||
|
|
||||||
// enum DATVModulation { BPSK, QPSK, PSK8, APSK16, APSK32, APSK64E, QAM16, QAM64, QAM256 };
|
|
||||||
// enum dvb_version { DVB_S, DVB_S2 };
|
|
||||||
// enum dvb_sampler { SAMP_NEAREST, SAMP_LINEAR, SAMP_RRC };
|
|
||||||
|
|
||||||
|
|
||||||
class DATVDemod : public BasebandSampleSink, public ChannelAPI
|
class DATVDemod : public BasebandSampleSink, public ChannelAPI
|
||||||
{
|
{
|
||||||
@ -135,7 +113,6 @@ private:
|
|||||||
int m_basebandSampleRate; //!< stored from device message used when starting baseband sink
|
int m_basebandSampleRate; //!< stored from device message used when starting baseband sink
|
||||||
|
|
||||||
void applySettings(const DATVDemodSettings& settings, bool force = false);
|
void applySettings(const DATVDemodSettings& settings, bool force = false);
|
||||||
void applyChannelSettings(int inputSampleRate, int inputFrequencyOffset, bool force = false);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // INCLUDE_DATVDEMOD_H
|
#endif // INCLUDE_DATVDEMOD_H
|
||||||
|
@ -151,6 +151,13 @@ void DATVDemodBaseband::applySettings(const DATVDemodSettings& settings, bool fo
|
|||||||
m_sink.applyChannelSettings(m_channelizer->getChannelSampleRate(), m_channelizer->getChannelFrequencyOffset());
|
m_sink.applyChannelSettings(m_channelizer->getChannelSampleRate(), m_channelizer->getChannelFrequencyOffset());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((settings.m_audioDeviceName != m_settings.m_audioDeviceName) || force)
|
||||||
|
{
|
||||||
|
AudioDeviceManager *audioDeviceManager = DSPEngine::instance()->getAudioDeviceManager();
|
||||||
|
int audioDeviceIndex = audioDeviceManager->getOutputDeviceIndex(settings.m_audioDeviceName);
|
||||||
|
audioDeviceManager->addAudioSink(m_sink.getAudioFifo(), getInputMessageQueue(), audioDeviceIndex);
|
||||||
|
}
|
||||||
|
|
||||||
m_sink.applySettings(settings, force);
|
m_sink.applySettings(settings, force);
|
||||||
m_settings = settings;
|
m_settings = settings;
|
||||||
}
|
}
|
||||||
|
@ -21,21 +21,21 @@
|
|||||||
#include <QMainWindow>
|
#include <QMainWindow>
|
||||||
#include <QMediaMetaData>
|
#include <QMediaMetaData>
|
||||||
|
|
||||||
#include "datvdemodgui.h"
|
|
||||||
|
|
||||||
#include "device/deviceuiset.h"
|
#include "device/deviceuiset.h"
|
||||||
#include "dsp/downchannelizer.h"
|
#include "dsp/downchannelizer.h"
|
||||||
|
|
||||||
#include "dsp/threadedbasebandsamplesink.h"
|
#include "dsp/threadedbasebandsamplesink.h"
|
||||||
#include "ui_datvdemodgui.h"
|
#include "dsp/dspengine.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"
|
||||||
#include "dsp/dspengine.h"
|
#include "ui_datvdemodgui.h"
|
||||||
#include "gui/crightclickenabler.h"
|
#include "gui/crightclickenabler.h"
|
||||||
#include "gui/audioselectdialog.h"
|
#include "gui/audioselectdialog.h"
|
||||||
#include "mainwindow.h"
|
#include "mainwindow.h"
|
||||||
|
|
||||||
|
#include "datvdemodreport.h"
|
||||||
|
#include "datvdemodgui.h"
|
||||||
|
|
||||||
const QString DATVDemodGUI::m_strChannelID = "sdrangel.channel.demoddatv";
|
const QString DATVDemodGUI::m_strChannelID = "sdrangel.channel.demoddatv";
|
||||||
|
|
||||||
DATVDemodGUI* DATVDemodGUI::create(PluginAPI* objPluginAPI,
|
DATVDemodGUI* DATVDemodGUI::create(PluginAPI* objPluginAPI,
|
||||||
@ -101,9 +101,9 @@ bool DATVDemodGUI::deserialize(const QByteArray& arrData)
|
|||||||
|
|
||||||
bool DATVDemodGUI::handleMessage(const Message& message)
|
bool DATVDemodGUI::handleMessage(const Message& message)
|
||||||
{
|
{
|
||||||
if (DATVDemod::MsgReportModcodCstlnChange::match(message))
|
if (DATVDemodReport::MsgReportModcodCstlnChange::match(message))
|
||||||
{
|
{
|
||||||
DATVDemod::MsgReportModcodCstlnChange& notif = (DATVDemod::MsgReportModcodCstlnChange&) message;
|
DATVDemodReport::MsgReportModcodCstlnChange& notif = (DATVDemodReport::MsgReportModcodCstlnChange&) message;
|
||||||
m_settings.m_fec = notif.getCodeRate();
|
m_settings.m_fec = notif.getCodeRate();
|
||||||
m_settings.m_modulation = notif.getModulation();
|
m_settings.m_modulation = notif.getModulation();
|
||||||
m_settings.validateSystemConfiguration();
|
m_settings.validateSystemConfiguration();
|
||||||
@ -351,9 +351,6 @@ void DATVDemodGUI::applySettings(bool force)
|
|||||||
{
|
{
|
||||||
qDebug("DATVDemodGUI::applySettings");
|
qDebug("DATVDemodGUI::applySettings");
|
||||||
|
|
||||||
DATVDemod::MsgConfigureChannelizer *msgChan = DATVDemod::MsgConfigureChannelizer::create(m_objChannelMarker.getCenterFrequency());
|
|
||||||
m_objDATVDemod->getInputMessageQueue()->push(msgChan);
|
|
||||||
|
|
||||||
setTitleColor(m_objChannelMarker.getColor());
|
setTitleColor(m_objChannelMarker.getColor());
|
||||||
|
|
||||||
QString msg = tr("DATVDemodGUI::applySettings: force: %1").arg(force ? "true" : "false");
|
QString msg = tr("DATVDemodGUI::applySettings: force: %1").arg(force ? "true" : "false");
|
||||||
@ -403,8 +400,8 @@ void DATVDemodGUI::tick()
|
|||||||
{
|
{
|
||||||
m_modcodModulationIndex = m_objDATVDemod->getModcodModulation();
|
m_modcodModulationIndex = m_objDATVDemod->getModcodModulation();
|
||||||
m_modcodCodeRateIndex = m_objDATVDemod->getModcodCodeRate();
|
m_modcodCodeRateIndex = m_objDATVDemod->getModcodCodeRate();
|
||||||
DATVDemodSettings::DATVModulation modulation = DATVDemod::getModulationFromLeanDVBCode(m_modcodModulationIndex);
|
DATVDemodSettings::DATVModulation modulation = DATVDemodSettings::getModulationFromLeanDVBCode(m_modcodModulationIndex);
|
||||||
DATVDemodSettings::DATVCodeRate rate = DATVDemod::getCodeRateFromLeanDVBCode(m_modcodCodeRateIndex);
|
DATVDemodSettings::DATVCodeRate rate = DATVDemodSettings::getCodeRateFromLeanDVBCode(m_modcodCodeRateIndex);
|
||||||
QString modcodModulationStr = DATVDemodSettings::getStrFromModulation(modulation);
|
QString modcodModulationStr = DATVDemodSettings::getStrFromModulation(modulation);
|
||||||
QString modcodCodeRateStr = DATVDemodSettings::getStrFromCodeRate(rate);
|
QString modcodCodeRateStr = DATVDemodSettings::getStrFromCodeRate(rate);
|
||||||
ui->statusText->setText(tr("MCOD %1 %2").arg(modcodModulationStr).arg(modcodCodeRateStr));
|
ui->statusText->setText(tr("MCOD %1 %2").arg(modcodModulationStr).arg(modcodCodeRateStr));
|
||||||
|
@ -18,6 +18,9 @@
|
|||||||
#include <QColor>
|
#include <QColor>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
|
||||||
|
#include "leansdr/dvb.h"
|
||||||
|
#include "leansdr/sdr.h"
|
||||||
|
|
||||||
#include "dsp/dspengine.h"
|
#include "dsp/dspengine.h"
|
||||||
#include "util/simpleserializer.h"
|
#include "util/simpleserializer.h"
|
||||||
#include "settings/serializable.h"
|
#include "settings/serializable.h"
|
||||||
@ -457,3 +460,62 @@ void DATVDemodSettings::getAvailableCodeRates(dvb_version dvbStandard, DATVModul
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DATVDemodSettings::DATVCodeRate DATVDemodSettings::getCodeRateFromLeanDVBCode(int leanDVBCodeRate)
|
||||||
|
{
|
||||||
|
if (leanDVBCodeRate == leansdr::code_rate::FEC12) {
|
||||||
|
return DATVDemodSettings::DATVCodeRate::FEC12;
|
||||||
|
} else if (leanDVBCodeRate == leansdr::code_rate::FEC13) {
|
||||||
|
return DATVDemodSettings::DATVCodeRate::FEC13;
|
||||||
|
} else if (leanDVBCodeRate == leansdr::code_rate::FEC14) {
|
||||||
|
return DATVDemodSettings::DATVCodeRate::FEC14;
|
||||||
|
} else if (leanDVBCodeRate == leansdr::code_rate::FEC23) {
|
||||||
|
return DATVDemodSettings::DATVCodeRate::FEC23;
|
||||||
|
} else if (leanDVBCodeRate == leansdr::code_rate::FEC25) {
|
||||||
|
return DATVDemodSettings::DATVCodeRate::FEC25;
|
||||||
|
} else if (leanDVBCodeRate == leansdr::code_rate::FEC34) {
|
||||||
|
return DATVDemodSettings::DATVCodeRate::FEC34;
|
||||||
|
} else if (leanDVBCodeRate == leansdr::code_rate::FEC35) {
|
||||||
|
return DATVDemodSettings::DATVCodeRate::FEC35;
|
||||||
|
} else if (leanDVBCodeRate == leansdr::code_rate::FEC45) {
|
||||||
|
return DATVDemodSettings::DATVCodeRate::FEC45;
|
||||||
|
} else if (leanDVBCodeRate == leansdr::code_rate::FEC46) {
|
||||||
|
return DATVDemodSettings::DATVCodeRate::FEC46;
|
||||||
|
} else if (leanDVBCodeRate == leansdr::code_rate::FEC56) {
|
||||||
|
return DATVDemodSettings::DATVCodeRate::FEC56;
|
||||||
|
} else if (leanDVBCodeRate == leansdr::code_rate::FEC78) {
|
||||||
|
return DATVDemodSettings::DATVCodeRate::FEC78;
|
||||||
|
} else if (leanDVBCodeRate == leansdr::code_rate::FEC89) {
|
||||||
|
return DATVDemodSettings::DATVCodeRate::FEC89;
|
||||||
|
} else if (leanDVBCodeRate == leansdr::code_rate::FEC910) {
|
||||||
|
return DATVDemodSettings::DATVCodeRate::FEC910;
|
||||||
|
} else {
|
||||||
|
return DATVDemodSettings::DATVCodeRate::RATE_UNSET;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
DATVDemodSettings::DATVModulation DATVDemodSettings::getModulationFromLeanDVBCode(int leanDVBModulation)
|
||||||
|
{
|
||||||
|
if (leanDVBModulation == leansdr::cstln_base::predef::APSK16) {
|
||||||
|
return DATVDemodSettings::DATVModulation::APSK16;
|
||||||
|
} else if (leanDVBModulation == leansdr::cstln_base::predef::APSK32) {
|
||||||
|
return DATVDemodSettings::DATVModulation::APSK32;
|
||||||
|
} else if (leanDVBModulation == leansdr::cstln_base::predef::APSK64E) {
|
||||||
|
return DATVDemodSettings::DATVModulation::APSK64E;
|
||||||
|
} else if (leanDVBModulation == leansdr::cstln_base::predef::BPSK) {
|
||||||
|
return DATVDemodSettings::DATVModulation::BPSK;
|
||||||
|
} else if (leanDVBModulation == leansdr::cstln_base::predef::PSK8) {
|
||||||
|
return DATVDemodSettings::DATVModulation::PSK8;
|
||||||
|
} else if (leanDVBModulation == leansdr::cstln_base::predef::QAM16) {
|
||||||
|
return DATVDemodSettings::DATVModulation::QAM16;
|
||||||
|
} else if (leanDVBModulation == leansdr::cstln_base::predef::QAM64) {
|
||||||
|
return DATVDemodSettings::DATVModulation::QAM64;
|
||||||
|
} else if (leanDVBModulation == leansdr::cstln_base::predef::QAM256) {
|
||||||
|
return DATVDemodSettings::DATVModulation::QAM256;
|
||||||
|
} else if (leanDVBModulation == leansdr::cstln_base::predef::QPSK) {
|
||||||
|
return DATVDemodSettings::DATVModulation::QPSK;
|
||||||
|
} else {
|
||||||
|
return DATVDemodSettings::DATVModulation::MOD_UNSET;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -112,6 +112,8 @@ struct DATVDemodSettings
|
|||||||
static QString getStrFromCodeRate(const DATVCodeRate codeRate);
|
static QString getStrFromCodeRate(const DATVCodeRate codeRate);
|
||||||
static void getAvailableModulations(dvb_version dvbStandard, std::vector<DATVModulation>& modulations);
|
static void getAvailableModulations(dvb_version dvbStandard, std::vector<DATVModulation>& modulations);
|
||||||
static void getAvailableCodeRates(dvb_version dvbStandard, DATVModulation modulation, std::vector<DATVCodeRate>& codeRates);
|
static void getAvailableCodeRates(dvb_version dvbStandard, DATVModulation modulation, std::vector<DATVCodeRate>& codeRates);
|
||||||
|
static DATVDemodSettings::DATVCodeRate getCodeRateFromLeanDVBCode(int leanDVBCodeRate);
|
||||||
|
static DATVDemodSettings::DATVModulation getModulationFromLeanDVBCode(int leanDVBModulation);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // PLUGINS_CHANNELRX_DEMODATV_DATVDEMODSETTINGS_H_
|
#endif // PLUGINS_CHANNELRX_DEMODATV_DATVDEMODSETTINGS_H_
|
@ -15,23 +15,21 @@
|
|||||||
// along with this program. If not, see <http://www.gnu.org/licenses/>. //
|
// along with this program. If not, see <http://www.gnu.org/licenses/>. //
|
||||||
///////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
#include "datvdemodreport.h"
|
|
||||||
#include "datvdemodsink.h"
|
#include "datvdemodsink.h"
|
||||||
|
|
||||||
#include "leansdr/dvbs2.h"
|
#include "leansdr/dvbs2.h"
|
||||||
|
|
||||||
#include <QTime>
|
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include <stdio.h>
|
|
||||||
#include <complex.h>
|
|
||||||
#include "audio/audiooutput.h"
|
#include "audio/audiooutput.h"
|
||||||
#include "dsp/dspengine.h"
|
#include "dsp/dspengine.h"
|
||||||
|
|
||||||
#include "dsp/downchannelizer.h"
|
#include "dsp/downchannelizer.h"
|
||||||
#include "dsp/threadedbasebandsamplesink.h"
|
#include "dsp/threadedbasebandsamplesink.h"
|
||||||
#include "device/deviceapi.h"
|
#include "device/deviceapi.h"
|
||||||
|
|
||||||
|
#include "datvdemodreport.h"
|
||||||
|
|
||||||
const unsigned int DATVDemodSink::m_rfFilterFftLength = 1024;
|
const unsigned int DATVDemodSink::m_rfFilterFftLength = 1024;
|
||||||
|
|
||||||
DATVDemodSink::DATVDemodSink() :
|
DATVDemodSink::DATVDemodSink() :
|
||||||
@ -1174,7 +1172,7 @@ void DATVDemodSink::feed(const SampleVector::const_iterator& begin, const Sample
|
|||||||
|
|
||||||
if (m_blnNeedConfigUpdate)
|
if (m_blnNeedConfigUpdate)
|
||||||
{
|
{
|
||||||
qDebug("DATVDemod::feed: Settings applied. Standard : %d...", m_settings.m_standard);
|
qDebug("DATVDemodSink::feed: Settings applied. Standard : %d...", m_settings.m_standard);
|
||||||
m_blnNeedConfigUpdate=false;
|
m_blnNeedConfigUpdate=false;
|
||||||
|
|
||||||
if(m_settings.m_standard==DATVDemodSettings::DVB_S2)
|
if(m_settings.m_standard==DATVDemodSettings::DVB_S2)
|
||||||
@ -1238,7 +1236,7 @@ void DATVDemodSink::feed(const SampleVector::const_iterator& begin, const Sample
|
|||||||
|
|
||||||
if (objDemodulatorDVBS2->cstln->m_setByModcod && !m_cstlnSetByModcod)
|
if (objDemodulatorDVBS2->cstln->m_setByModcod && !m_cstlnSetByModcod)
|
||||||
{
|
{
|
||||||
qDebug("DATVDemod::feed: change by MODCOD detected");
|
qDebug("DATVDemodSink::feed: change by MODCOD detected");
|
||||||
|
|
||||||
if (r_scope_symbols_dvbs2) {
|
if (r_scope_symbols_dvbs2) {
|
||||||
r_scope_symbols_dvbs2->calculate_cstln_points();
|
r_scope_symbols_dvbs2->calculate_cstln_points();
|
||||||
@ -1247,8 +1245,8 @@ void DATVDemodSink::feed(const SampleVector::const_iterator& begin, const Sample
|
|||||||
if (getMessageQueueToGUI())
|
if (getMessageQueueToGUI())
|
||||||
{
|
{
|
||||||
DATVDemodReport::MsgReportModcodCstlnChange *msg = DATVDemodReport::MsgReportModcodCstlnChange::create(
|
DATVDemodReport::MsgReportModcodCstlnChange *msg = DATVDemodReport::MsgReportModcodCstlnChange::create(
|
||||||
getModulationFromLeanDVBCode(objDemodulatorDVBS2->cstln->m_typeCode),
|
DATVDemodSettings::getModulationFromLeanDVBCode(objDemodulatorDVBS2->cstln->m_typeCode),
|
||||||
getCodeRateFromLeanDVBCode(objDemodulatorDVBS2->cstln->m_rateCode)
|
DATVDemodSettings::getCodeRateFromLeanDVBCode(objDemodulatorDVBS2->cstln->m_rateCode)
|
||||||
);
|
);
|
||||||
|
|
||||||
getMessageQueueToGUI()->push(msg);
|
getMessageQueueToGUI()->push(msg);
|
||||||
@ -1273,7 +1271,7 @@ void DATVDemodSink::applyChannelSettings(int channelSampleRate, int channelFrequ
|
|||||||
(m_channelSampleRate != channelSampleRate) || force)
|
(m_channelSampleRate != channelSampleRate) || force)
|
||||||
{
|
{
|
||||||
m_objNCO.setFreq(-(float) channelFrequencyOffset, (float) channelSampleRate);
|
m_objNCO.setFreq(-(float) channelFrequencyOffset, (float) channelSampleRate);
|
||||||
qDebug("DATVDemod::applyChannelSettings: NCO: IF: %d <> TF: %d ISR: %d",
|
qDebug("DATVDemodSink::applyChannelSettings: NCO: IF: %d <> TF: %d ISR: %d",
|
||||||
channelFrequencyOffset, m_settings.m_centerFrequency, channelSampleRate);
|
channelFrequencyOffset, m_settings.m_centerFrequency, channelSampleRate);
|
||||||
callApplySettings = true;
|
callApplySettings = true;
|
||||||
}
|
}
|
||||||
@ -1362,64 +1360,6 @@ void DATVDemodSink::applySettings(const DATVDemodSettings& settings, bool force)
|
|||||||
m_settings = settings;
|
m_settings = settings;
|
||||||
}
|
}
|
||||||
|
|
||||||
DATVDemodSettings::DATVCodeRate DATVDemodSink::getCodeRateFromLeanDVBCode(int leanDVBCodeRate)
|
|
||||||
{
|
|
||||||
if (leanDVBCodeRate == leansdr::code_rate::FEC12) {
|
|
||||||
return DATVDemodSettings::DATVCodeRate::FEC12;
|
|
||||||
} else if (leanDVBCodeRate == leansdr::code_rate::FEC13) {
|
|
||||||
return DATVDemodSettings::DATVCodeRate::FEC13;
|
|
||||||
} else if (leanDVBCodeRate == leansdr::code_rate::FEC14) {
|
|
||||||
return DATVDemodSettings::DATVCodeRate::FEC14;
|
|
||||||
} else if (leanDVBCodeRate == leansdr::code_rate::FEC23) {
|
|
||||||
return DATVDemodSettings::DATVCodeRate::FEC23;
|
|
||||||
} else if (leanDVBCodeRate == leansdr::code_rate::FEC25) {
|
|
||||||
return DATVDemodSettings::DATVCodeRate::FEC25;
|
|
||||||
} else if (leanDVBCodeRate == leansdr::code_rate::FEC34) {
|
|
||||||
return DATVDemodSettings::DATVCodeRate::FEC34;
|
|
||||||
} else if (leanDVBCodeRate == leansdr::code_rate::FEC35) {
|
|
||||||
return DATVDemodSettings::DATVCodeRate::FEC35;
|
|
||||||
} else if (leanDVBCodeRate == leansdr::code_rate::FEC45) {
|
|
||||||
return DATVDemodSettings::DATVCodeRate::FEC45;
|
|
||||||
} else if (leanDVBCodeRate == leansdr::code_rate::FEC46) {
|
|
||||||
return DATVDemodSettings::DATVCodeRate::FEC46;
|
|
||||||
} else if (leanDVBCodeRate == leansdr::code_rate::FEC56) {
|
|
||||||
return DATVDemodSettings::DATVCodeRate::FEC56;
|
|
||||||
} else if (leanDVBCodeRate == leansdr::code_rate::FEC78) {
|
|
||||||
return DATVDemodSettings::DATVCodeRate::FEC78;
|
|
||||||
} else if (leanDVBCodeRate == leansdr::code_rate::FEC89) {
|
|
||||||
return DATVDemodSettings::DATVCodeRate::FEC89;
|
|
||||||
} else if (leanDVBCodeRate == leansdr::code_rate::FEC910) {
|
|
||||||
return DATVDemodSettings::DATVCodeRate::FEC910;
|
|
||||||
} else {
|
|
||||||
return DATVDemodSettings::DATVCodeRate::RATE_UNSET;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
DATVDemodSettings::DATVModulation DATVDemodSink::getModulationFromLeanDVBCode(int leanDVBModulation)
|
|
||||||
{
|
|
||||||
if (leanDVBModulation == leansdr::cstln_base::predef::APSK16) {
|
|
||||||
return DATVDemodSettings::DATVModulation::APSK16;
|
|
||||||
} else if (leanDVBModulation == leansdr::cstln_base::predef::APSK32) {
|
|
||||||
return DATVDemodSettings::DATVModulation::APSK32;
|
|
||||||
} else if (leanDVBModulation == leansdr::cstln_base::predef::APSK64E) {
|
|
||||||
return DATVDemodSettings::DATVModulation::APSK64E;
|
|
||||||
} else if (leanDVBModulation == leansdr::cstln_base::predef::BPSK) {
|
|
||||||
return DATVDemodSettings::DATVModulation::BPSK;
|
|
||||||
} else if (leanDVBModulation == leansdr::cstln_base::predef::PSK8) {
|
|
||||||
return DATVDemodSettings::DATVModulation::PSK8;
|
|
||||||
} else if (leanDVBModulation == leansdr::cstln_base::predef::QAM16) {
|
|
||||||
return DATVDemodSettings::DATVModulation::QAM16;
|
|
||||||
} else if (leanDVBModulation == leansdr::cstln_base::predef::QAM64) {
|
|
||||||
return DATVDemodSettings::DATVModulation::QAM64;
|
|
||||||
} else if (leanDVBModulation == leansdr::cstln_base::predef::QAM256) {
|
|
||||||
return DATVDemodSettings::DATVModulation::QAM256;
|
|
||||||
} else if (leanDVBModulation == leansdr::cstln_base::predef::QPSK) {
|
|
||||||
return DATVDemodSettings::DATVModulation::QPSK;
|
|
||||||
} else {
|
|
||||||
return DATVDemodSettings::DATVModulation::MOD_UNSET;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int DATVDemodSink::getLeanDVBCodeRateFromDATV(DATVDemodSettings::DATVCodeRate datvCodeRate)
|
int DATVDemodSink::getLeanDVBCodeRateFromDATV(DATVDemodSettings::DATVCodeRate datvCodeRate)
|
||||||
{
|
{
|
||||||
if (datvCodeRate == DATVDemodSettings::DATVCodeRate::FEC12) {
|
if (datvCodeRate == DATVDemodSettings::DATVCodeRate::FEC12) {
|
||||||
|
@ -35,28 +35,47 @@
|
|||||||
#include "datvideorender.h"
|
#include "datvideorender.h"
|
||||||
#include "datvdemodsettings.h"
|
#include "datvdemodsettings.h"
|
||||||
|
|
||||||
#include "channel/channelapi.h"
|
|
||||||
#include "dsp/channelsamplesink.h"
|
#include "dsp/channelsamplesink.h"
|
||||||
#include "dsp/basebandsamplesink.h"
|
|
||||||
#include "dsp/devicesamplesource.h"
|
|
||||||
#include "dsp/dspcommands.h"
|
|
||||||
#include "dsp/downchannelizer.h"
|
|
||||||
#include "dsp/fftfilt.h"
|
#include "dsp/fftfilt.h"
|
||||||
#include "dsp/nco.h"
|
#include "dsp/nco.h"
|
||||||
#include "dsp/interpolator.h"
|
#include "dsp/interpolator.h"
|
||||||
#include "dsp/movingaverage.h"
|
#include "dsp/movingaverage.h"
|
||||||
#include "dsp/agc.h"
|
#include "dsp/agc.h"
|
||||||
#include "audio/audiofifo.h"
|
#include "audio/audiofifo.h"
|
||||||
#include "util/message.h"
|
#include "util/messagequeue.h"
|
||||||
#include "util/movingaverage.h"
|
#include "util/movingaverage.h"
|
||||||
|
|
||||||
#include <QMutex>
|
|
||||||
|
|
||||||
class TVScreen;
|
class TVScreen;
|
||||||
class DATVideoRender;
|
class DATVideoRender;
|
||||||
|
|
||||||
class DATVDemodSink : public ChannelSampleSink {
|
class DATVDemodSink : public ChannelSampleSink {
|
||||||
public:
|
public:
|
||||||
|
DATVDemodSink();
|
||||||
|
~DATVDemodSink();
|
||||||
|
|
||||||
|
virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end);
|
||||||
|
|
||||||
|
bool setTVScreen(TVScreen *objScreen);
|
||||||
|
DATVideostream * SetVideoRender(DATVideoRender *objScreen);
|
||||||
|
bool audioActive();
|
||||||
|
bool audioDecodeOK();
|
||||||
|
bool videoActive();
|
||||||
|
bool videoDecodeOK();
|
||||||
|
|
||||||
|
bool PlayVideo(bool blnStartStop);
|
||||||
|
|
||||||
|
int GetSampleRate();
|
||||||
|
double getMagSq() const { return m_objMagSqAverage; } //!< Beware this is scaled to 2^30
|
||||||
|
int getModcodModulation() const { return m_modcodModulation; }
|
||||||
|
int getModcodCodeRate() const { return m_modcodCodeRate; }
|
||||||
|
bool isCstlnSetByModcod() const { return m_cstlnSetByModcod; }
|
||||||
|
void setMessageQueueToGUI(MessageQueue *messageQueue) { m_messageQueueToGUI = messageQueue; }
|
||||||
|
AudioFifo *getAudioFifo() { return &m_audioFifo; }
|
||||||
|
|
||||||
|
void applySettings(const DATVDemodSettings& settings, bool force = false);
|
||||||
|
void applyChannelSettings(int channelSampleRate, int channelFrequencyOffset, bool force = false);
|
||||||
|
|
||||||
|
private:
|
||||||
struct config
|
struct config
|
||||||
{
|
{
|
||||||
DATVDemodSettings::dvb_version standard;
|
DATVDemodSettings::dvb_version standard;
|
||||||
@ -114,41 +133,17 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
DATVDemodSink();
|
|
||||||
~DATVDemodSink();
|
|
||||||
|
|
||||||
virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end);
|
|
||||||
|
|
||||||
bool setTVScreen(TVScreen *objScreen);
|
|
||||||
DATVideostream * SetVideoRender(DATVideoRender *objScreen);
|
|
||||||
bool audioActive();
|
|
||||||
bool audioDecodeOK();
|
|
||||||
bool videoActive();
|
|
||||||
bool videoDecodeOK();
|
|
||||||
|
|
||||||
bool PlayVideo(bool blnStartStop);
|
|
||||||
|
|
||||||
int GetSampleRate();
|
|
||||||
double getMagSq() const { return m_objMagSqAverage; } //!< Beware this is scaled to 2^30
|
|
||||||
int getModcodModulation() const { return m_modcodModulation; }
|
|
||||||
int getModcodCodeRate() const { return m_modcodCodeRate; }
|
|
||||||
bool isCstlnSetByModcod() const { return m_cstlnSetByModcod; }
|
|
||||||
static DATVDemodSettings::DATVCodeRate getCodeRateFromLeanDVBCode(int leanDVBCodeRate);
|
|
||||||
static DATVDemodSettings::DATVModulation getModulationFromLeanDVBCode(int leanDVBModulation);
|
|
||||||
static int getLeanDVBCodeRateFromDATV(DATVDemodSettings::DATVCodeRate datvCodeRate);
|
|
||||||
static int getLeanDVBModulationFromDATV(DATVDemodSettings::DATVModulation datvModulation);
|
|
||||||
void setMessageQueueToGUI(MessageQueue *messageQueue) { m_messageQueueToGUI = messageQueue; }
|
|
||||||
|
|
||||||
void applySettings(const DATVDemodSettings& settings, bool force = false);
|
|
||||||
void applyChannelSettings(int channelSampleRate, int channelFrequencyOffset, bool force = false);
|
|
||||||
|
|
||||||
private:
|
|
||||||
inline int decimation(float Fin, float Fout) { int d = Fin / Fout; return std::max(d, 1); }
|
inline int decimation(float Fin, float Fout) { int d = Fin / Fout; return std::max(d, 1); }
|
||||||
|
|
||||||
void CleanUpDATVFramework(bool blnRelease);
|
void CleanUpDATVFramework(bool blnRelease);
|
||||||
void InitDATVFramework();
|
void InitDATVFramework();
|
||||||
void InitDATVS2Framework();
|
void InitDATVS2Framework();
|
||||||
|
|
||||||
|
static int getLeanDVBCodeRateFromDATV(DATVDemodSettings::DATVCodeRate datvCodeRate);
|
||||||
|
static int getLeanDVBModulationFromDATV(DATVDemodSettings::DATVModulation datvModulation);
|
||||||
|
|
||||||
|
MessageQueue *getMessageQueueToGUI() { return m_messageQueueToGUI; }
|
||||||
|
|
||||||
unsigned long m_lngExpectedReadIQ;
|
unsigned long m_lngExpectedReadIQ;
|
||||||
long m_lngReadIQ;
|
long m_lngReadIQ;
|
||||||
|
|
||||||
@ -308,9 +303,6 @@ private:
|
|||||||
MessageQueue *m_messageQueueToGUI;
|
MessageQueue *m_messageQueueToGUI;
|
||||||
|
|
||||||
static const unsigned int m_rfFilterFftLength;
|
static const unsigned int m_rfFilterFftLength;
|
||||||
|
|
||||||
MessageQueue *getMessageQueueToGUI() { return m_messageQueueToGUI; }
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // INCLUDE_DATVDEMODSINK_H
|
#endif // INCLUDE_DATVDEMODSINK_H
|
Loading…
x
Reference in New Issue
Block a user