mirror of
https://github.com/f4exb/sdrangel.git
synced 2025-03-26 14:18:30 -04:00
DATV demod: API updates and small fixes
This commit is contained in:
parent
4b1a861717
commit
b0c49f3b50
@ -114,7 +114,7 @@ template<typename T> struct datvconstellation: runnable
|
|||||||
unsigned long decimation;
|
unsigned long decimation;
|
||||||
long pixels_per_frame;
|
long pixels_per_frame;
|
||||||
cstln_lut<eucl_ss, 256> **cstln; // Optional ptr to optional constellation
|
cstln_lut<eucl_ss, 256> **cstln; // Optional ptr to optional constellation
|
||||||
TVScreen *m_objDATVScreen;
|
TVScreen *m_tvScreen;
|
||||||
pipereader<std::complex<T> > in;
|
pipereader<std::complex<T> > in;
|
||||||
unsigned long phase;
|
unsigned long phase;
|
||||||
std::vector<int> cstln_rows;
|
std::vector<int> cstln_rows;
|
||||||
@ -126,14 +126,14 @@ template<typename T> struct datvconstellation: runnable
|
|||||||
T _xymin,
|
T _xymin,
|
||||||
T _xymax,
|
T _xymax,
|
||||||
const char *_name = nullptr,
|
const char *_name = nullptr,
|
||||||
TVScreen *objDATVScreen = nullptr) :
|
TVScreen *tvScreen = nullptr) :
|
||||||
runnable(sch, _name ? _name : _in.name),
|
runnable(sch, _name ? _name : _in.name),
|
||||||
xymin(_xymin),
|
xymin(_xymin),
|
||||||
xymax(_xymax),
|
xymax(_xymax),
|
||||||
decimation(DEFAULT_GUI_DECIMATION),
|
decimation(DEFAULT_GUI_DECIMATION),
|
||||||
pixels_per_frame(1024),
|
pixels_per_frame(1024),
|
||||||
cstln(0),
|
cstln(0),
|
||||||
m_objDATVScreen(objDATVScreen),
|
m_tvScreen(tvScreen),
|
||||||
in(_in),
|
in(_in),
|
||||||
phase(0)
|
phase(0)
|
||||||
{
|
{
|
||||||
@ -144,16 +144,16 @@ template<typename T> struct datvconstellation: runnable
|
|||||||
//Symbols
|
//Symbols
|
||||||
while (in.readable() >= pixels_per_frame)
|
while (in.readable() >= pixels_per_frame)
|
||||||
{
|
{
|
||||||
if ((!phase) && m_objDATVScreen)
|
if ((!phase) && m_tvScreen)
|
||||||
{
|
{
|
||||||
m_objDATVScreen->resetImage();
|
m_tvScreen->resetImage();
|
||||||
|
|
||||||
std::complex<T> *p = in.rd(), *pend = p + pixels_per_frame;
|
std::complex<T> *p = in.rd(), *pend = p + pixels_per_frame;
|
||||||
|
|
||||||
for (; p < pend; ++p)
|
for (; p < pend; ++p)
|
||||||
{
|
{
|
||||||
m_objDATVScreen->selectRow(256 * (p->real() - xymin) / (xymax - xymin));
|
m_tvScreen->selectRow(256 * (p->real() - xymin) / (xymax - xymin));
|
||||||
m_objDATVScreen->setDataColor(
|
m_tvScreen->setDataColor(
|
||||||
256 - 256 * ((p->imag() - xymin) / (xymax - xymin)),
|
256 - 256 * ((p->imag() - xymin) / (xymax - xymin)),
|
||||||
255, 0, 255);
|
255, 0, 255);
|
||||||
}
|
}
|
||||||
@ -166,12 +166,12 @@ template<typename T> struct datvconstellation: runnable
|
|||||||
|
|
||||||
for (;(row_it != cstln_rows.end()) && (col_it != cstln_cols.end()); ++row_it, ++col_it)
|
for (;(row_it != cstln_rows.end()) && (col_it != cstln_cols.end()); ++row_it, ++col_it)
|
||||||
{
|
{
|
||||||
m_objDATVScreen->selectRow(*row_it);
|
m_tvScreen->selectRow(*row_it);
|
||||||
m_objDATVScreen->setDataColor(*col_it, 250, 250, 5);
|
m_tvScreen->setDataColor(*col_it, 250, 250, 5);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m_objDATVScreen->renderImage(0);
|
m_tvScreen->renderImage(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
in.read(pixels_per_frame);
|
in.read(pixels_per_frame);
|
||||||
|
@ -129,9 +129,106 @@ void DATVDemod::applySettings(const DATVDemodSettings& settings, bool force)
|
|||||||
QString debugMsg = tr("DATVDemod::applySettings: force: %1").arg(force);
|
QString debugMsg = tr("DATVDemod::applySettings: force: %1").arg(force);
|
||||||
settings.debug(debugMsg);
|
settings.debug(debugMsg);
|
||||||
|
|
||||||
|
QList<QString> reverseAPIKeys;
|
||||||
|
|
||||||
|
if (settings.m_rgbColor != m_settings.m_rgbColor) {
|
||||||
|
reverseAPIKeys.append("rgbColor");
|
||||||
|
}
|
||||||
|
if (settings.m_title != m_settings.m_title) {
|
||||||
|
reverseAPIKeys.append("title");
|
||||||
|
}
|
||||||
|
if (settings.m_rfBandwidth != m_settings.m_rfBandwidth) {
|
||||||
|
reverseAPIKeys.append("rfBandwidth");
|
||||||
|
}
|
||||||
|
if (settings.m_centerFrequency != m_settings.m_centerFrequency) {
|
||||||
|
reverseAPIKeys.append("centerFrequency");
|
||||||
|
}
|
||||||
|
if (settings.m_standard != m_settings.m_standard) {
|
||||||
|
reverseAPIKeys.append("standard");
|
||||||
|
}
|
||||||
|
if (settings.m_modulation != m_settings.m_modulation) {
|
||||||
|
reverseAPIKeys.append("modulation");
|
||||||
|
}
|
||||||
|
if (settings.m_fec != m_settings.m_fec) {
|
||||||
|
reverseAPIKeys.append("fec");
|
||||||
|
}
|
||||||
|
if (settings.m_softLDPC != m_settings.m_softLDPC) {
|
||||||
|
reverseAPIKeys.append("softLDPC");
|
||||||
|
}
|
||||||
|
if (settings.m_softLDPCToolPath != m_settings.m_softLDPCToolPath) {
|
||||||
|
reverseAPIKeys.append("softLDPCToolPath");
|
||||||
|
}
|
||||||
|
if (settings.m_softLDPCMaxTrials != m_settings.m_softLDPCMaxTrials) {
|
||||||
|
reverseAPIKeys.append("softLDPCMaxTrials");
|
||||||
|
}
|
||||||
|
if (settings.m_maxBitflips != m_settings.m_maxBitflips) {
|
||||||
|
reverseAPIKeys.append("maxBitflips");
|
||||||
|
}
|
||||||
|
if (settings.m_audioMute != m_settings.m_audioMute) {
|
||||||
|
reverseAPIKeys.append("audioMute");
|
||||||
|
}
|
||||||
|
if (settings.m_audioDeviceName != m_settings.m_audioDeviceName) {
|
||||||
|
reverseAPIKeys.append("audioDeviceName");
|
||||||
|
}
|
||||||
|
if (settings.m_symbolRate != m_settings.m_symbolRate) {
|
||||||
|
reverseAPIKeys.append("symbolRate");
|
||||||
|
}
|
||||||
|
if (settings.m_notchFilters != m_settings.m_notchFilters) {
|
||||||
|
reverseAPIKeys.append("notchFilters");
|
||||||
|
}
|
||||||
|
if (settings.m_allowDrift != m_settings.m_allowDrift) {
|
||||||
|
reverseAPIKeys.append("allowDrift");
|
||||||
|
}
|
||||||
|
if (settings.m_fastLock != m_settings.m_fastLock) {
|
||||||
|
reverseAPIKeys.append("fastLock");
|
||||||
|
}
|
||||||
|
if (settings.m_filter != m_settings.m_filter) {
|
||||||
|
reverseAPIKeys.append("filter");
|
||||||
|
}
|
||||||
|
if (settings.m_hardMetric != m_settings.m_hardMetric) {
|
||||||
|
reverseAPIKeys.append("hardMetric");
|
||||||
|
}
|
||||||
|
if (settings.m_rollOff != m_settings.m_rollOff) {
|
||||||
|
reverseAPIKeys.append("rollOff");
|
||||||
|
}
|
||||||
|
if (settings.m_viterbi != m_settings.m_viterbi) {
|
||||||
|
reverseAPIKeys.append("viterbi");
|
||||||
|
}
|
||||||
|
if (settings.m_excursion != m_settings.m_excursion) {
|
||||||
|
reverseAPIKeys.append("excursion");
|
||||||
|
}
|
||||||
|
if (settings.m_audioVolume != m_settings.m_audioVolume) {
|
||||||
|
reverseAPIKeys.append("audioVolume");
|
||||||
|
}
|
||||||
|
if (settings.m_videoMute != m_settings.m_videoMute) {
|
||||||
|
reverseAPIKeys.append("videoMute");
|
||||||
|
}
|
||||||
|
if (settings.m_udpTSAddress != m_settings.m_udpTSAddress) {
|
||||||
|
reverseAPIKeys.append("udpTSAddress");
|
||||||
|
}
|
||||||
|
if (settings.m_udpTSPort != m_settings.m_udpTSPort) {
|
||||||
|
reverseAPIKeys.append("udpTSPort");
|
||||||
|
}
|
||||||
|
if (settings.m_udpTS != m_settings.m_udpTS) {
|
||||||
|
reverseAPIKeys.append("udpTS");
|
||||||
|
}
|
||||||
|
if (settings.m_playerEnable != m_settings.m_playerEnable) {
|
||||||
|
reverseAPIKeys.append("playerEnable");
|
||||||
|
}
|
||||||
|
|
||||||
DATVDemodBaseband::MsgConfigureDATVDemodBaseband *msg = DATVDemodBaseband::MsgConfigureDATVDemodBaseband::create(settings, force);
|
DATVDemodBaseband::MsgConfigureDATVDemodBaseband *msg = DATVDemodBaseband::MsgConfigureDATVDemodBaseband::create(settings, force);
|
||||||
m_basebandSink->getInputMessageQueue()->push(msg);
|
m_basebandSink->getInputMessageQueue()->push(msg);
|
||||||
|
|
||||||
|
if (settings.m_useReverseAPI)
|
||||||
|
{
|
||||||
|
bool fullUpdate = ((m_settings.m_useReverseAPI != settings.m_useReverseAPI) && settings.m_useReverseAPI) ||
|
||||||
|
(m_settings.m_reverseAPIAddress != settings.m_reverseAPIAddress) ||
|
||||||
|
(m_settings.m_reverseAPIPort != settings.m_reverseAPIPort) ||
|
||||||
|
(m_settings.m_reverseAPIDeviceIndex != settings.m_reverseAPIDeviceIndex) ||
|
||||||
|
(m_settings.m_reverseAPIChannelIndex != settings.m_reverseAPIChannelIndex);
|
||||||
|
webapiReverseSendSettings(reverseAPIKeys, settings, fullUpdate || force);
|
||||||
|
}
|
||||||
|
|
||||||
m_settings = settings;
|
m_settings = settings;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -274,6 +371,9 @@ void DATVDemod::webapiUpdateChannelSettings(
|
|||||||
if (channelSettingsKeys.contains("udpTS")) {
|
if (channelSettingsKeys.contains("udpTS")) {
|
||||||
settings.m_udpTS = response.getDatvDemodSettings()->getUdpTs() == 1;
|
settings.m_udpTS = response.getDatvDemodSettings()->getUdpTs() == 1;
|
||||||
}
|
}
|
||||||
|
if (channelSettingsKeys.contains("playerEnable")) {
|
||||||
|
settings.m_playerEnable = response.getDatvDemodSettings()->getPlayerEnable() == 1;
|
||||||
|
}
|
||||||
if (channelSettingsKeys.contains("streamIndex")) {
|
if (channelSettingsKeys.contains("streamIndex")) {
|
||||||
settings.m_streamIndex = response.getDatvDemodSettings()->getStreamIndex();
|
settings.m_streamIndex = response.getDatvDemodSettings()->getStreamIndex();
|
||||||
}
|
}
|
||||||
@ -346,6 +446,8 @@ void DATVDemod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& res
|
|||||||
}
|
}
|
||||||
|
|
||||||
response.getDatvDemodSettings()->setUdpTsPort(settings.m_udpTSPort);
|
response.getDatvDemodSettings()->setUdpTsPort(settings.m_udpTSPort);
|
||||||
|
response.getDatvDemodSettings()->setUdpTs(settings.m_udpTS ? 1 : 0);
|
||||||
|
response.getDatvDemodSettings()->setPlayerEnable(settings.m_playerEnable ? 1 : 0);
|
||||||
response.getDatvDemodSettings()->setStreamIndex(settings.m_streamIndex);
|
response.getDatvDemodSettings()->setStreamIndex(settings.m_streamIndex);
|
||||||
response.getDatvDemodSettings()->setUseReverseApi(settings.m_useReverseAPI ? 1 : 0);
|
response.getDatvDemodSettings()->setUseReverseApi(settings.m_useReverseAPI ? 1 : 0);
|
||||||
|
|
||||||
@ -372,6 +474,8 @@ void DATVDemod::webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& respons
|
|||||||
response.getDatvDemodReport()->setUdpRunning(udpRunning() ? 1 : 0);
|
response.getDatvDemodReport()->setUdpRunning(udpRunning() ? 1 : 0);
|
||||||
response.getDatvDemodReport()->setVideoActive(videoActive() ? 1 : 0);
|
response.getDatvDemodReport()->setVideoActive(videoActive() ? 1 : 0);
|
||||||
response.getDatvDemodReport()->setVideoDecodeOk(videoDecodeOK() ? 1 : 0);
|
response.getDatvDemodReport()->setVideoDecodeOk(videoDecodeOK() ? 1 : 0);
|
||||||
|
response.getDatvDemodReport()->setMer(getMERAvg());
|
||||||
|
response.getDatvDemodReport()->setCnr(getCNRAvg());
|
||||||
}
|
}
|
||||||
|
|
||||||
void DATVDemod::sendChannelSettings(
|
void DATVDemod::sendChannelSettings(
|
||||||
@ -493,6 +597,9 @@ void DATVDemod::webapiFormatChannelSettings(
|
|||||||
if (channelSettingsKeys.contains("udpTS") || force) {
|
if (channelSettingsKeys.contains("udpTS") || force) {
|
||||||
swgDATVDemodSettings->setUdpTs(settings.m_udpTS ? 1 : 0);
|
swgDATVDemodSettings->setUdpTs(settings.m_udpTS ? 1 : 0);
|
||||||
}
|
}
|
||||||
|
if (channelSettingsKeys.contains("playerEnable") || force) {
|
||||||
|
swgDATVDemodSettings->setPlayerEnable(settings.m_playerEnable ? 1 : 0);
|
||||||
|
}
|
||||||
if (channelSettingsKeys.contains("streamIndex") || force) {
|
if (channelSettingsKeys.contains("streamIndex") || force) {
|
||||||
swgDATVDemodSettings->setStreamIndex(settings.m_streamIndex);
|
swgDATVDemodSettings->setStreamIndex(settings.m_streamIndex);
|
||||||
}
|
}
|
||||||
|
@ -99,7 +99,7 @@ public:
|
|||||||
m_basebandSink->setMessageQueueToGUI(queue);
|
m_basebandSink->setMessageQueueToGUI(queue);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetTVScreen(TVScreen *objScreen) { m_basebandSink->setTVScreen(objScreen); }
|
void SetTVScreen(TVScreen *tvScreen) { m_basebandSink->setTVScreen(tvScreen); }
|
||||||
void SetVideoRender(DATVideoRender *objScreen) { m_basebandSink->SetVideoRender(objScreen); }
|
void SetVideoRender(DATVideoRender *objScreen) { m_basebandSink->SetVideoRender(objScreen); }
|
||||||
DATVideostream *getVideoStream() { return m_basebandSink->getVideoStream(); }
|
DATVideostream *getVideoStream() { return m_basebandSink->getVideoStream(); }
|
||||||
DATVUDPStream *getUDPStream() { return m_basebandSink->getUDPStream(); }
|
DATVUDPStream *getUDPStream() { return m_basebandSink->getUDPStream(); }
|
||||||
|
@ -167,7 +167,7 @@ void DATVDemodGUI::onMenuDialogCalled(const QPoint &p)
|
|||||||
else if ((m_contextMenuType == ContextMenuStreamSettings) && (m_deviceUISet->m_deviceMIMOEngine))
|
else if ((m_contextMenuType == ContextMenuStreamSettings) && (m_deviceUISet->m_deviceMIMOEngine))
|
||||||
{
|
{
|
||||||
DeviceStreamSelectionDialog dialog(this);
|
DeviceStreamSelectionDialog dialog(this);
|
||||||
dialog.setNumberOfStreams(m_objDATVDemod->getNumberOfDeviceStreams());
|
dialog.setNumberOfStreams(m_datvDemod->getNumberOfDeviceStreams());
|
||||||
dialog.setStreamIndex(m_settings.m_streamIndex);
|
dialog.setStreamIndex(m_settings.m_streamIndex);
|
||||||
dialog.move(p);
|
dialog.move(p);
|
||||||
dialog.exec();
|
dialog.exec();
|
||||||
@ -196,6 +196,7 @@ DATVDemodGUI::DATVDemodGUI(PluginAPI* objPluginAPI, DeviceUISet *deviceUISet, Ba
|
|||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
ui->screenTV->setColor(true);
|
ui->screenTV->setColor(true);
|
||||||
|
ui->screenTV->resizeTVScreen(256,256);
|
||||||
setAttribute(Qt::WA_DeleteOnClose, true);
|
setAttribute(Qt::WA_DeleteOnClose, true);
|
||||||
connect(this, SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool)));
|
connect(this, SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool)));
|
||||||
connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onMenuDialogCalled(const QPoint &)));
|
connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onMenuDialogCalled(const QPoint &)));
|
||||||
@ -209,16 +210,16 @@ DATVDemodGUI::DATVDemodGUI(PluginAPI* objPluginAPI, DeviceUISet *deviceUISet, Ba
|
|||||||
ui->cnrMeter->setRange(0, 30);
|
ui->cnrMeter->setRange(0, 30);
|
||||||
ui->cnrMeter->setAverageSmoothing(2);
|
ui->cnrMeter->setAverageSmoothing(2);
|
||||||
|
|
||||||
m_objDATVDemod = (DATVDemod*) rxChannel;
|
m_datvDemod = (DATVDemod*) rxChannel;
|
||||||
m_objDATVDemod->setMessageQueueToGUI(getInputMessageQueue());
|
m_datvDemod->setMessageQueueToGUI(getInputMessageQueue());
|
||||||
|
|
||||||
m_objDATVDemod->SetTVScreen(ui->screenTV);
|
m_datvDemod->SetTVScreen(ui->screenTV);
|
||||||
m_objDATVDemod->SetVideoRender(ui->screenTV_2);
|
m_datvDemod->SetVideoRender(ui->screenTV_2);
|
||||||
|
|
||||||
if (m_settings.m_playerEnable) {
|
if (m_settings.m_playerEnable) {
|
||||||
connect(m_objDATVDemod->getVideoStream(), &DATVideostream::fifoData, this, &DATVDemodGUI::on_StreamDataAvailable);
|
connect(m_datvDemod->getVideoStream(), &DATVideostream::fifoData, this, &DATVDemodGUI::on_StreamDataAvailable);
|
||||||
} else {
|
} else {
|
||||||
connect(m_objDATVDemod->getUDPStream(), &DATVUDPStream::fifoData, this, &DATVDemodGUI::on_StreamDataAvailable);
|
connect(m_datvDemod->getUDPStream(), &DATVUDPStream::fifoData, this, &DATVDemodGUI::on_StreamDataAvailable);
|
||||||
}
|
}
|
||||||
|
|
||||||
connect(ui->screenTV_2, &DATVideoRender::onMetaDataChanged, this, &DATVDemodGUI::on_StreamMetaDataChanged);
|
connect(ui->screenTV_2, &DATVideoRender::onMetaDataChanged, this, &DATVDemodGUI::on_StreamMetaDataChanged);
|
||||||
@ -377,13 +378,13 @@ void DATVDemodGUI::displaySettings()
|
|||||||
|
|
||||||
if (m_settings.m_playerEnable)
|
if (m_settings.m_playerEnable)
|
||||||
{
|
{
|
||||||
disconnect(m_objDATVDemod->getUDPStream(), &DATVUDPStream::fifoData, this, &DATVDemodGUI::on_StreamDataAvailable);
|
disconnect(m_datvDemod->getUDPStream(), &DATVUDPStream::fifoData, this, &DATVDemodGUI::on_StreamDataAvailable);
|
||||||
connect(m_objDATVDemod->getVideoStream(), &DATVideostream::fifoData, this, &DATVDemodGUI::on_StreamDataAvailable);
|
connect(m_datvDemod->getVideoStream(), &DATVideostream::fifoData, this, &DATVDemodGUI::on_StreamDataAvailable);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
disconnect(m_objDATVDemod->getVideoStream(), &DATVideostream::fifoData, this, &DATVDemodGUI::on_StreamDataAvailable);
|
disconnect(m_datvDemod->getVideoStream(), &DATVideostream::fifoData, this, &DATVDemodGUI::on_StreamDataAvailable);
|
||||||
connect(m_objDATVDemod->getUDPStream(), &DATVUDPStream::fifoData, this, &DATVDemodGUI::on_StreamDataAvailable);
|
connect(m_datvDemod->getUDPStream(), &DATVUDPStream::fifoData, this, &DATVDemodGUI::on_StreamDataAvailable);
|
||||||
}
|
}
|
||||||
|
|
||||||
blockApplySettings(false);
|
blockApplySettings(false);
|
||||||
@ -454,7 +455,7 @@ void DATVDemodGUI::applySettings(bool force)
|
|||||||
m_settings.debug(msg);
|
m_settings.debug(msg);
|
||||||
|
|
||||||
DATVDemod::MsgConfigureDATVDemod* message = DATVDemod::MsgConfigureDATVDemod::create(m_settings, force);
|
DATVDemod::MsgConfigureDATVDemod* message = DATVDemod::MsgConfigureDATVDemod::create(m_settings, force);
|
||||||
m_objDATVDemod->getInputMessageQueue()->push(message);
|
m_datvDemod->getInputMessageQueue()->push(message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -502,16 +503,16 @@ void DATVDemodGUI::ldpcToolSelect()
|
|||||||
|
|
||||||
void DATVDemodGUI::tick()
|
void DATVDemodGUI::tick()
|
||||||
{
|
{
|
||||||
if (m_objDATVDemod)
|
if (m_datvDemod)
|
||||||
{
|
{
|
||||||
m_objMagSqAverage(m_objDATVDemod->getMagSq());
|
m_objMagSqAverage(m_datvDemod->getMagSq());
|
||||||
double magSqDB = CalcDb::dbPower(m_objMagSqAverage / (SDR_RX_SCALED*SDR_RX_SCALED));
|
double magSqDB = CalcDb::dbPower(m_objMagSqAverage / (SDR_RX_SCALED*SDR_RX_SCALED));
|
||||||
ui->channePowerText->setText(tr("%1 dB").arg(magSqDB, 0, 'f', 1));
|
ui->channePowerText->setText(tr("%1 dB").arg(magSqDB, 0, 'f', 1));
|
||||||
|
|
||||||
if ((m_modcodModulationIndex != m_objDATVDemod->getModcodModulation()) || (m_modcodCodeRateIndex != m_objDATVDemod->getModcodCodeRate()))
|
if ((m_modcodModulationIndex != m_datvDemod->getModcodModulation()) || (m_modcodCodeRateIndex != m_datvDemod->getModcodCodeRate()))
|
||||||
{
|
{
|
||||||
m_modcodModulationIndex = m_objDATVDemod->getModcodModulation();
|
m_modcodModulationIndex = m_datvDemod->getModcodModulation();
|
||||||
m_modcodCodeRateIndex = m_objDATVDemod->getModcodCodeRate();
|
m_modcodCodeRateIndex = m_datvDemod->getModcodCodeRate();
|
||||||
DATVDemodSettings::DATVModulation modulation = DATVDemodSettings::getModulationFromLeanDVBCode(m_modcodModulationIndex);
|
DATVDemodSettings::DATVModulation modulation = DATVDemodSettings::getModulationFromLeanDVBCode(m_modcodModulationIndex);
|
||||||
DATVDemodSettings::DATVCodeRate rate = DATVDemodSettings::getCodeRateFromLeanDVBCode(m_modcodCodeRateIndex);
|
DATVDemodSettings::DATVCodeRate rate = DATVDemodSettings::getCodeRateFromLeanDVBCode(m_modcodCodeRateIndex);
|
||||||
QString modcodModulationStr = DATVDemodSettings::getStrFromModulation(modulation);
|
QString modcodModulationStr = DATVDemodSettings::getStrFromModulation(modulation);
|
||||||
@ -519,9 +520,9 @@ void DATVDemodGUI::tick()
|
|||||||
ui->statusText->setText(tr("MCOD %1 %2").arg(modcodModulationStr).arg(modcodCodeRateStr));
|
ui->statusText->setText(tr("MCOD %1 %2").arg(modcodModulationStr).arg(modcodCodeRateStr));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_cstlnSetByModcod != m_objDATVDemod->isCstlnSetByModcod())
|
if (m_cstlnSetByModcod != m_datvDemod->isCstlnSetByModcod())
|
||||||
{
|
{
|
||||||
m_cstlnSetByModcod = m_objDATVDemod->isCstlnSetByModcod();
|
m_cstlnSetByModcod = m_datvDemod->isCstlnSetByModcod();
|
||||||
|
|
||||||
if (m_cstlnSetByModcod) {
|
if (m_cstlnSetByModcod) {
|
||||||
ui->statusText->setStyleSheet("QLabel { background-color : green; }");
|
ui->statusText->setStyleSheet("QLabel { background-color : green; }");
|
||||||
@ -537,9 +538,9 @@ void DATVDemodGUI::tick()
|
|||||||
ui->lblRate->setText(QString("Speed: %1b/s").arg(formatBytes(m_intLastSpeed)));
|
ui->lblRate->setText(QString("Speed: %1b/s").arg(formatBytes(m_intLastSpeed)));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_objDATVDemod->audioActive())
|
if (m_datvDemod->audioActive())
|
||||||
{
|
{
|
||||||
if (m_objDATVDemod->audioDecodeOK()) {
|
if (m_datvDemod->audioDecodeOK()) {
|
||||||
ui->audioMute->setStyleSheet("QToolButton { background-color : green; }");
|
ui->audioMute->setStyleSheet("QToolButton { background-color : green; }");
|
||||||
} else {
|
} else {
|
||||||
ui->audioMute->setStyleSheet("QToolButton { background-color : red; }");
|
ui->audioMute->setStyleSheet("QToolButton { background-color : red; }");
|
||||||
@ -550,9 +551,9 @@ void DATVDemodGUI::tick()
|
|||||||
ui->audioMute->setStyleSheet("QToolButton { background:rgb(79,79,79); }");
|
ui->audioMute->setStyleSheet("QToolButton { background:rgb(79,79,79); }");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_objDATVDemod->videoActive())
|
if (m_datvDemod->videoActive())
|
||||||
{
|
{
|
||||||
if (m_objDATVDemod->videoDecodeOK()) {
|
if (m_datvDemod->videoDecodeOK()) {
|
||||||
ui->videoMute->setStyleSheet("QToolButton { background-color : green; }");
|
ui->videoMute->setStyleSheet("QToolButton { background-color : green; }");
|
||||||
} else {
|
} else {
|
||||||
ui->videoMute->setStyleSheet("QToolButton { background-color : red; }");
|
ui->videoMute->setStyleSheet("QToolButton { background-color : red; }");
|
||||||
@ -566,7 +567,7 @@ void DATVDemodGUI::tick()
|
|||||||
m_intPreviousDecodedData = m_intLastDecodedData;
|
m_intPreviousDecodedData = m_intLastDecodedData;
|
||||||
|
|
||||||
//Try to start video rendering
|
//Try to start video rendering
|
||||||
bool success = m_objDATVDemod->playVideo();
|
bool success = m_datvDemod->playVideo();
|
||||||
|
|
||||||
if (success) {
|
if (success) {
|
||||||
ui->playerIndicator->setStyleSheet("QLabel { background-color: rgb(85, 232, 85); border-radius: 8px; }"); // green
|
ui->playerIndicator->setStyleSheet("QLabel { background-color: rgb(85, 232, 85); border-radius: 8px; }"); // green
|
||||||
@ -574,7 +575,7 @@ void DATVDemodGUI::tick()
|
|||||||
ui->playerIndicator->setStyleSheet("QLabel { background-color: gray; border-radius: 8px; }");
|
ui->playerIndicator->setStyleSheet("QLabel { background-color: gray; border-radius: 8px; }");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_objDATVDemod->udpRunning()) {
|
if (m_datvDemod->udpRunning()) {
|
||||||
ui->udpIndicator->setStyleSheet("QLabel { background-color: rgb(85, 232, 85); border-radius: 8px; }"); // green
|
ui->udpIndicator->setStyleSheet("QLabel { background-color: rgb(85, 232, 85); border-radius: 8px; }"); // green
|
||||||
} else {
|
} else {
|
||||||
ui->udpIndicator->setStyleSheet("QLabel { background-color: gray; border-radius: 8px; }");
|
ui->udpIndicator->setStyleSheet("QLabel { background-color: gray; border-radius: 8px; }");
|
||||||
@ -583,10 +584,10 @@ void DATVDemodGUI::tick()
|
|||||||
|
|
||||||
void DATVDemodGUI::tickMeter()
|
void DATVDemodGUI::tickMeter()
|
||||||
{
|
{
|
||||||
ui->merMeter->levelChanged(m_objDATVDemod->getMERRMS(), m_objDATVDemod->getMERPeak(), m_objDATVDemod->getMERNbAvg());
|
ui->merMeter->levelChanged(m_datvDemod->getMERRMS(), m_datvDemod->getMERPeak(), m_datvDemod->getMERNbAvg());
|
||||||
ui->cnrMeter->levelChanged(m_objDATVDemod->getCNRRMS(), m_objDATVDemod->getCNRPeak(), m_objDATVDemod->getCNRNbAvg());
|
ui->cnrMeter->levelChanged(m_datvDemod->getCNRRMS(), m_datvDemod->getCNRPeak(), m_datvDemod->getCNRNbAvg());
|
||||||
ui->merText->setText(QString("%1").arg(m_objDATVDemod->getMERAvg(), 0, 'f', 1));
|
ui->merText->setText(QString("%1").arg(m_datvDemod->getMERAvg(), 0, 'f', 1));
|
||||||
ui->cnrText->setText(QString("%1").arg(m_objDATVDemod->getCNRAvg(), 0, 'f', 1));
|
ui->cnrText->setText(QString("%1").arg(m_datvDemod->getCNRAvg(), 0, 'f', 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
void DATVDemodGUI::on_cmbStandard_currentIndexChanged(int index)
|
void DATVDemodGUI::on_cmbStandard_currentIndexChanged(int index)
|
||||||
@ -844,13 +845,13 @@ void DATVDemodGUI::on_playerEnable_clicked()
|
|||||||
|
|
||||||
if (m_settings.m_playerEnable)
|
if (m_settings.m_playerEnable)
|
||||||
{
|
{
|
||||||
disconnect(m_objDATVDemod->getUDPStream(), &DATVUDPStream::fifoData, this, &DATVDemodGUI::on_StreamDataAvailable);
|
disconnect(m_datvDemod->getUDPStream(), &DATVUDPStream::fifoData, this, &DATVDemodGUI::on_StreamDataAvailable);
|
||||||
connect(m_objDATVDemod->getVideoStream(), &DATVideostream::fifoData, this, &DATVDemodGUI::on_StreamDataAvailable);
|
connect(m_datvDemod->getVideoStream(), &DATVideostream::fifoData, this, &DATVDemodGUI::on_StreamDataAvailable);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
disconnect(m_objDATVDemod->getVideoStream(), &DATVideostream::fifoData, this, &DATVDemodGUI::on_StreamDataAvailable);
|
disconnect(m_datvDemod->getVideoStream(), &DATVideostream::fifoData, this, &DATVDemodGUI::on_StreamDataAvailable);
|
||||||
connect(m_objDATVDemod->getUDPStream(), &DATVUDPStream::fifoData, this, &DATVDemodGUI::on_StreamDataAvailable);
|
connect(m_datvDemod->getUDPStream(), &DATVUDPStream::fifoData, this, &DATVDemodGUI::on_StreamDataAvailable);
|
||||||
}
|
}
|
||||||
|
|
||||||
applySettings();
|
applySettings();
|
||||||
|
@ -101,7 +101,7 @@ private:
|
|||||||
DeviceUISet* m_deviceUISet;
|
DeviceUISet* m_deviceUISet;
|
||||||
|
|
||||||
ChannelMarker m_objChannelMarker;
|
ChannelMarker m_objChannelMarker;
|
||||||
DATVDemod* m_objDATVDemod;
|
DATVDemod* m_datvDemod;
|
||||||
MessageQueue m_inputMessageQueue;
|
MessageQueue m_inputMessageQueue;
|
||||||
DATVDemodSettings m_settings;
|
DATVDemodSettings m_settings;
|
||||||
|
|
||||||
|
@ -34,11 +34,11 @@ const unsigned int DATVDemodSink::m_rfFilterFftLength = 1024;
|
|||||||
|
|
||||||
DATVDemodSink::DATVDemodSink() :
|
DATVDemodSink::DATVDemodSink() :
|
||||||
m_blnNeedConfigUpdate(false),
|
m_blnNeedConfigUpdate(false),
|
||||||
m_objRegisteredTVScreen(nullptr),
|
m_tvScreen(nullptr),
|
||||||
m_objRegisteredVideoRender(nullptr),
|
m_videoRender(nullptr),
|
||||||
m_objVideoStream(new DATVideostream()),
|
m_videoStream(new DATVideostream()),
|
||||||
m_udpStream(leansdr::tspacket::SIZE),
|
m_udpStream(leansdr::tspacket::SIZE),
|
||||||
m_objRenderThread(nullptr),
|
m_videoThread(nullptr),
|
||||||
m_audioFifo(48000),
|
m_audioFifo(48000),
|
||||||
m_blnRenderingVideo(false),
|
m_blnRenderingVideo(false),
|
||||||
m_cstlnSetByModcod(false),
|
m_cstlnSetByModcod(false),
|
||||||
@ -60,14 +60,14 @@ DATVDemodSink::~DATVDemodSink()
|
|||||||
m_blnInitialized = false;
|
m_blnInitialized = false;
|
||||||
|
|
||||||
//Immediately exit from DATVideoStream if waiting for data before killing thread
|
//Immediately exit from DATVideoStream if waiting for data before killing thread
|
||||||
m_objVideoStream->setThreadTimeout(0);
|
m_videoStream->setThreadTimeout(0);
|
||||||
m_objVideoStream->deleteLater();
|
m_videoStream->deleteLater();
|
||||||
|
|
||||||
stopVideo();
|
stopVideo();
|
||||||
CleanUpDATVFramework();
|
CleanUpDATVFramework();
|
||||||
|
|
||||||
if (m_objRenderThread) {
|
if (m_videoThread) {
|
||||||
delete m_objRenderThread;
|
delete m_videoThread;
|
||||||
}
|
}
|
||||||
|
|
||||||
delete m_objRFFilter;
|
delete m_objRFFilter;
|
||||||
@ -75,34 +75,33 @@ DATVDemodSink::~DATVDemodSink()
|
|||||||
|
|
||||||
void DATVDemodSink::stopVideo()
|
void DATVDemodSink::stopVideo()
|
||||||
{
|
{
|
||||||
if (m_objRenderThread)
|
if (m_videoThread)
|
||||||
{
|
{
|
||||||
if (m_objRenderThread->isRunning())
|
if (m_videoThread->isRunning())
|
||||||
{
|
{
|
||||||
m_objRenderThread->stopRendering();
|
m_videoThread->stopRendering();
|
||||||
m_objRenderThread->quit();
|
m_videoThread->quit();
|
||||||
m_objRenderThread->wait();
|
m_videoThread->wait();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DATVDemodSink::setTVScreen(TVScreen *objScreen)
|
void DATVDemodSink::setTVScreen(TVScreen *tvScreen)
|
||||||
{
|
{
|
||||||
m_objRegisteredTVScreen = objScreen;
|
m_tvScreen = tvScreen;
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DATVDemodSink::SetVideoRender(DATVideoRender *objScreen)
|
void DATVDemodSink::SetVideoRender(DATVideoRender *screen)
|
||||||
{
|
{
|
||||||
m_objRegisteredVideoRender = objScreen;
|
m_videoRender = screen;
|
||||||
m_objRegisteredVideoRender->setAudioFIFO(&m_audioFifo);
|
m_videoRender->setAudioFIFO(&m_audioFifo);
|
||||||
m_objRenderThread = new DATVideoRenderThread(m_objRegisteredVideoRender, m_objVideoStream);
|
m_videoThread = new DATVideoRenderThread(m_videoRender, m_videoStream);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DATVDemodSink::audioActive()
|
bool DATVDemodSink::audioActive()
|
||||||
{
|
{
|
||||||
if (m_objRegisteredVideoRender) {
|
if (m_videoRender) {
|
||||||
return m_objRegisteredVideoRender->getAudioStreamIndex() >= 0;
|
return m_videoRender->getAudioStreamIndex() >= 0;
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -110,8 +109,8 @@ bool DATVDemodSink::audioActive()
|
|||||||
|
|
||||||
bool DATVDemodSink::videoActive()
|
bool DATVDemodSink::videoActive()
|
||||||
{
|
{
|
||||||
if (m_objRegisteredVideoRender) {
|
if (m_videoRender) {
|
||||||
return m_objRegisteredVideoRender->getVideoStreamIndex() >= 0;
|
return m_videoRender->getVideoStreamIndex() >= 0;
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -119,8 +118,8 @@ bool DATVDemodSink::videoActive()
|
|||||||
|
|
||||||
bool DATVDemodSink::audioDecodeOK()
|
bool DATVDemodSink::audioDecodeOK()
|
||||||
{
|
{
|
||||||
if (m_objRegisteredVideoRender) {
|
if (m_videoRender) {
|
||||||
return m_objRegisteredVideoRender->getAudioDecodeOK();
|
return m_videoRender->getAudioDecodeOK();
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -128,8 +127,8 @@ bool DATVDemodSink::audioDecodeOK()
|
|||||||
|
|
||||||
bool DATVDemodSink::videoDecodeOK()
|
bool DATVDemodSink::videoDecodeOK()
|
||||||
{
|
{
|
||||||
if (m_objRegisteredVideoRender) {
|
if (m_videoRender) {
|
||||||
return m_objRegisteredVideoRender->getVideoDecodeOK();
|
return m_videoRender->getVideoDecodeOK();
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -151,27 +150,27 @@ bool DATVDemodSink::playVideo()
|
|||||||
{
|
{
|
||||||
QMutexLocker mlock(&m_mutex);
|
QMutexLocker mlock(&m_mutex);
|
||||||
|
|
||||||
if (m_objVideoStream == nullptr) {
|
if (m_videoStream == nullptr) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_objRegisteredVideoRender == nullptr) {
|
if (m_videoRender == nullptr) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_objRenderThread == nullptr) {
|
if (m_videoThread == nullptr) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_objRenderThread->isRunning()) {
|
if (m_videoThread->isRunning()) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_objVideoStream->bytesAvailable() > 0)
|
if (m_videoStream->bytesAvailable() > 0)
|
||||||
{
|
{
|
||||||
m_objVideoStream->setMultiThreaded(true);
|
m_videoStream->setMultiThreaded(true);
|
||||||
m_objVideoStream->setThreadTimeout(DATVideoRenderThread::videoThreadTimeoutMs);
|
m_videoStream->setThreadTimeout(DATVideoRenderThread::videoThreadTimeoutMs);
|
||||||
m_objRenderThread->start();
|
m_videoThread->start();
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
@ -179,8 +178,8 @@ bool DATVDemodSink::playVideo()
|
|||||||
|
|
||||||
void DATVDemodSink::CleanUpDATVFramework()
|
void DATVDemodSink::CleanUpDATVFramework()
|
||||||
{
|
{
|
||||||
if (m_objVideoStream) {
|
if (m_videoStream) {
|
||||||
m_objVideoStream->cleanUp();
|
m_videoStream->cleanUp();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_objScheduler != nullptr)
|
if (m_objScheduler != nullptr)
|
||||||
@ -556,7 +555,7 @@ void DATVDemodSink::InitDATVFramework()
|
|||||||
m_objCfg.rrc_rej = (float) m_settings.m_excursion; //dB
|
m_objCfg.rrc_rej = (float) m_settings.m_excursion; //dB
|
||||||
m_objCfg.rrc_steps = 0; //auto
|
m_objCfg.rrc_steps = 0; //auto
|
||||||
|
|
||||||
m_objVideoStream->resetTotalReceived();
|
m_videoStream->resetTotalReceived();
|
||||||
m_udpStream.resetTotalReceived();
|
m_udpStream.resetTotalReceived();
|
||||||
|
|
||||||
switch(m_settings.m_modulation)
|
switch(m_settings.m_modulation)
|
||||||
@ -769,12 +768,11 @@ void DATVDemodSink::InitDATVFramework()
|
|||||||
|
|
||||||
//constellation
|
//constellation
|
||||||
|
|
||||||
if (m_objRegisteredTVScreen)
|
if (m_tvScreen)
|
||||||
{
|
{
|
||||||
qDebug("DATVDemodSink::InitDATVFramework: Register DVBSTVSCREEN");
|
qDebug("DATVDemodSink::InitDATVFramework: Register DVB constellation TV screen");
|
||||||
|
|
||||||
m_objRegisteredTVScreen->resizeTVScreen(256,256);
|
r_scope_symbols = new leansdr::datvconstellation<leansdr::f32>(m_objScheduler, *p_sampled, -128,128, nullptr, m_tvScreen);
|
||||||
r_scope_symbols = new leansdr::datvconstellation<leansdr::f32>(m_objScheduler, *p_sampled, -128,128, nullptr, m_objRegisteredTVScreen);
|
|
||||||
r_scope_symbols->decimation = 1;
|
r_scope_symbols->decimation = 1;
|
||||||
r_scope_symbols->cstln = &m_objDemodulator->cstln;
|
r_scope_symbols->cstln = &m_objDemodulator->cstln;
|
||||||
r_scope_symbols->calculate_cstln_points();
|
r_scope_symbols->calculate_cstln_points();
|
||||||
@ -850,7 +848,7 @@ void DATVDemodSink::InitDATVFramework()
|
|||||||
|
|
||||||
// OUTPUT
|
// OUTPUT
|
||||||
if (m_settings.m_playerEnable) {
|
if (m_settings.m_playerEnable) {
|
||||||
r_videoplayer = new leansdr::datvvideoplayer<leansdr::tspacket>(m_objScheduler, *p_tspackets, m_objVideoStream, &m_udpStream);
|
r_videoplayer = new leansdr::datvvideoplayer<leansdr::tspacket>(m_objScheduler, *p_tspackets, m_videoStream, &m_udpStream);
|
||||||
} else {
|
} else {
|
||||||
r_videoplayer = new leansdr::datvvideoplayer<leansdr::tspacket>(m_objScheduler, *p_tspackets, nullptr, &m_udpStream);
|
r_videoplayer = new leansdr::datvvideoplayer<leansdr::tspacket>(m_objScheduler, *p_tspackets, nullptr, &m_udpStream);
|
||||||
}
|
}
|
||||||
@ -895,7 +893,7 @@ void DATVDemodSink::InitDATVS2Framework()
|
|||||||
m_objCfg.rrc_rej = (float) m_settings.m_excursion; //dB
|
m_objCfg.rrc_rej = (float) m_settings.m_excursion; //dB
|
||||||
m_objCfg.rrc_steps = 0; //auto
|
m_objCfg.rrc_steps = 0; //auto
|
||||||
|
|
||||||
m_objVideoStream->resetTotalReceived();
|
m_videoStream->resetTotalReceived();
|
||||||
m_udpStream.resetTotalReceived();
|
m_udpStream.resetTotalReceived();
|
||||||
|
|
||||||
switch(m_settings.m_modulation)
|
switch(m_settings.m_modulation)
|
||||||
@ -1075,11 +1073,10 @@ void DATVDemodSink::InitDATVS2Framework()
|
|||||||
|
|
||||||
//constellation
|
//constellation
|
||||||
|
|
||||||
if (m_objRegisteredTVScreen)
|
if (m_tvScreen)
|
||||||
{
|
{
|
||||||
qDebug("DATVDemodSink::InitDATVS2Framework: Register DVBS 2 TVSCREEN");
|
qDebug("DATVDemodSink::InitDATVS2Framework: Register DVBS 2 TVSCREEN");
|
||||||
m_objRegisteredTVScreen->resizeTVScreen(256,256);
|
r_scope_symbols_dvbs2 = new leansdr::datvdvbs2constellation<leansdr::f32>(m_objScheduler, *p_cstln /* *p_sampled */ /* *p_cstln */, -128,128, nullptr, m_tvScreen);
|
||||||
r_scope_symbols_dvbs2 = new leansdr::datvdvbs2constellation<leansdr::f32>(m_objScheduler, *p_cstln /* *p_sampled */ /* *p_cstln */, -128,128, nullptr, m_objRegisteredTVScreen);
|
|
||||||
r_scope_symbols_dvbs2->decimation = 1;
|
r_scope_symbols_dvbs2->decimation = 1;
|
||||||
r_scope_symbols_dvbs2->cstln = (leansdr::cstln_base**) &objDemodulatorDVBS2->cstln;
|
r_scope_symbols_dvbs2->cstln = (leansdr::cstln_base**) &objDemodulatorDVBS2->cstln;
|
||||||
r_scope_symbols_dvbs2->calculate_cstln_points();
|
r_scope_symbols_dvbs2->calculate_cstln_points();
|
||||||
@ -1213,7 +1210,7 @@ void DATVDemodSink::InitDATVS2Framework()
|
|||||||
|
|
||||||
// OUTPUT
|
// OUTPUT
|
||||||
if (m_settings.m_playerEnable) {
|
if (m_settings.m_playerEnable) {
|
||||||
r_videoplayer = new leansdr::datvvideoplayer<leansdr::tspacket>(m_objScheduler, *p_tspackets, m_objVideoStream, &m_udpStream);
|
r_videoplayer = new leansdr::datvvideoplayer<leansdr::tspacket>(m_objScheduler, *p_tspackets, m_videoStream, &m_udpStream);
|
||||||
} else {
|
} else {
|
||||||
r_videoplayer = new leansdr::datvvideoplayer<leansdr::tspacket>(m_objScheduler, *p_tspackets, nullptr, &m_udpStream);
|
r_videoplayer = new leansdr::datvvideoplayer<leansdr::tspacket>(m_objScheduler, *p_tspackets, nullptr, &m_udpStream);
|
||||||
}
|
}
|
||||||
@ -1410,22 +1407,22 @@ void DATVDemodSink::applySettings(const DATVDemodSettings& settings, bool force)
|
|||||||
|
|
||||||
if ((settings.m_audioVolume) != (m_settings.m_audioVolume) || force)
|
if ((settings.m_audioVolume) != (m_settings.m_audioVolume) || force)
|
||||||
{
|
{
|
||||||
if (m_objRegisteredVideoRender) {
|
if (m_videoRender) {
|
||||||
m_objRegisteredVideoRender->setAudioVolume(settings.m_audioVolume);
|
m_videoRender->setAudioVolume(settings.m_audioVolume);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((settings.m_audioMute) != (m_settings.m_audioMute) || force)
|
if ((settings.m_audioMute) != (m_settings.m_audioMute) || force)
|
||||||
{
|
{
|
||||||
if (m_objRegisteredVideoRender) {
|
if (m_videoRender) {
|
||||||
m_objRegisteredVideoRender->setAudioMute(settings.m_audioMute);
|
m_videoRender->setAudioMute(settings.m_audioMute);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((settings.m_videoMute) != (m_settings.m_videoMute) || force)
|
if ((settings.m_videoMute) != (m_settings.m_videoMute) || force)
|
||||||
{
|
{
|
||||||
if (m_objRegisteredVideoRender) {
|
if (m_videoRender) {
|
||||||
m_objRegisteredVideoRender->setVideoMute(settings.m_videoMute);
|
m_videoRender->setVideoMute(settings.m_videoMute);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -51,7 +51,6 @@
|
|||||||
class TVScreen;
|
class TVScreen;
|
||||||
class DATVideoRender;
|
class DATVideoRender;
|
||||||
class QLabel;
|
class QLabel;
|
||||||
class LevelMeterSignalDB;
|
|
||||||
|
|
||||||
class DATVDemodSink : public ChannelSampleSink {
|
class DATVDemodSink : public ChannelSampleSink {
|
||||||
public:
|
public:
|
||||||
@ -60,9 +59,9 @@ public:
|
|||||||
|
|
||||||
virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end);
|
virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end);
|
||||||
|
|
||||||
bool setTVScreen(TVScreen *objScreen);
|
void setTVScreen(TVScreen *tvScreen);
|
||||||
void SetVideoRender(DATVideoRender *objScreen);
|
void SetVideoRender(DATVideoRender *screen);
|
||||||
DATVideostream *getVideoStream() { return m_objVideoStream; }
|
DATVideostream *getVideoStream() { return m_videoStream; }
|
||||||
DATVUDPStream *getUDPStream() { return &m_udpStream; }
|
DATVUDPStream *getUDPStream() { return &m_udpStream; }
|
||||||
bool audioActive();
|
bool audioActive();
|
||||||
bool audioDecodeOK();
|
bool audioDecodeOK();
|
||||||
@ -318,11 +317,11 @@ private:
|
|||||||
leansdr::datvmeter *r_cnrMeter;
|
leansdr::datvmeter *r_cnrMeter;
|
||||||
|
|
||||||
//*************** DATV PARAMETERS ***************
|
//*************** DATV PARAMETERS ***************
|
||||||
TVScreen *m_objRegisteredTVScreen;
|
TVScreen *m_tvScreen;
|
||||||
DATVideoRender *m_objRegisteredVideoRender;
|
DATVideoRender *m_videoRender;
|
||||||
DATVideostream *m_objVideoStream;
|
DATVideostream *m_videoStream;
|
||||||
DATVUDPStream m_udpStream;
|
DATVUDPStream m_udpStream;
|
||||||
DATVideoRenderThread *m_objRenderThread;
|
DATVideoRenderThread *m_videoThread;
|
||||||
|
|
||||||
// Audio
|
// Audio
|
||||||
AudioFifo m_audioFifo;
|
AudioFifo m_audioFifo;
|
||||||
|
@ -23,6 +23,8 @@
|
|||||||
#include <QIODevice>
|
#include <QIODevice>
|
||||||
#include <QThread>
|
#include <QThread>
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
|
#include <QTextStream>
|
||||||
|
#include <QDebug>
|
||||||
|
|
||||||
#include "datvideostream.h"
|
#include "datvideostream.h"
|
||||||
#include "gui/tvscreen.h"
|
#include "gui/tvscreen.h"
|
||||||
|
@ -3799,15 +3799,23 @@ margin-bottom: 20px;
|
|||||||
},
|
},
|
||||||
"modcodModulation" : {
|
"modcodModulation" : {
|
||||||
"type" : "integer",
|
"type" : "integer",
|
||||||
"description" : "Modulation set by DVB-S2 MODCOD\n * 0: BPSK\n * 1: QPSK\n * 2: PSK8\n * 3: APSK16\n * 4: APSK32\n * 5: APSK64E\n * 6: QAM16\n * 7: QAM64\n * 8: QAM256\n"
|
"description" : "Modulation set by DVB-S2 MODCOD\n * -1: Unset\n * 0: BPSK\n * 1: QPSK\n * 2: PSK8\n * 3: APSK16\n * 4: APSK32\n * 5: APSK64E\n * 6: QAM16\n * 7: QAM64\n * 8: QAM256\n"
|
||||||
},
|
},
|
||||||
"modcodCodeRate" : {
|
"modcodCodeRate" : {
|
||||||
"type" : "integer",
|
"type" : "integer",
|
||||||
"description" : "Code rate (FEC) set by DVB-S2 MODCOD\n * 0: 1/2\n * 1: 2/3\n * 2: 4/6\n * 3: 3/4\n * 4: 5/6\n * 5: 7/8\n * 6: 4/5\n * 7: 8/9\n * 8: 9/10\n * 9: 1/4\n * 10: 1/3\n * 11: 2/5\n * 12: 3/5\n"
|
"description" : "Code rate (FEC) set by DVB-S2 MODCOD\n * -1: Unset\n * 0: 1/2\n * 1: 2/3\n * 2: 4/6\n * 3: 3/4\n * 4: 5/6\n * 5: 7/8\n * 6: 4/5\n * 7: 8/9\n * 8: 9/10\n * 9: 1/4\n * 10: 1/3\n * 11: 2/5\n * 12: 3/5\n"
|
||||||
},
|
},
|
||||||
"setByModcod" : {
|
"setByModcod" : {
|
||||||
"type" : "integer",
|
"type" : "integer",
|
||||||
"description" : "Modulation and code rate set by DVB-S2 MODCOD (1 for yes, 0 for no)"
|
"description" : "Modulation and code rate set by DVB-S2 MODCOD (1 for yes, 0 for no)"
|
||||||
|
},
|
||||||
|
"mer" : {
|
||||||
|
"type" : "number",
|
||||||
|
"format" : "float"
|
||||||
|
},
|
||||||
|
"cnr" : {
|
||||||
|
"type" : "number",
|
||||||
|
"format" : "float"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"description" : "DATVDemod"
|
"description" : "DATVDemod"
|
||||||
@ -3913,6 +3921,10 @@ margin-bottom: 20px;
|
|||||||
"type" : "integer",
|
"type" : "integer",
|
||||||
"description" : "boolean"
|
"description" : "boolean"
|
||||||
},
|
},
|
||||||
|
"playerEnable" : {
|
||||||
|
"type" : "integer",
|
||||||
|
"description" : "boolean"
|
||||||
|
},
|
||||||
"streamIndex" : {
|
"streamIndex" : {
|
||||||
"type" : "integer",
|
"type" : "integer",
|
||||||
"description" : "MIMO channel. Not relevant when connected to SI (single Rx)."
|
"description" : "MIMO channel. Not relevant when connected to SI (single Rx)."
|
||||||
@ -7905,14 +7917,15 @@ margin-bottom: 20px;
|
|||||||
"fftCount" : {
|
"fftCount" : {
|
||||||
"type" : "integer"
|
"type" : "integer"
|
||||||
},
|
},
|
||||||
"frequencySpec" : {
|
"sweepSpec" : {
|
||||||
"type" : "integer"
|
"type" : "integer",
|
||||||
|
"description" : "(0 - Range, 1 - Step, 2 - List)"
|
||||||
},
|
},
|
||||||
"startFrequency" : {
|
"startValue" : {
|
||||||
"type" : "number",
|
"type" : "number",
|
||||||
"format" : "float"
|
"format" : "float"
|
||||||
},
|
},
|
||||||
"stopFrequency" : {
|
"stopValue" : {
|
||||||
"type" : "number",
|
"type" : "number",
|
||||||
"format" : "float"
|
"format" : "float"
|
||||||
},
|
},
|
||||||
@ -7923,9 +7936,13 @@ margin-bottom: 20px;
|
|||||||
"type" : "number",
|
"type" : "number",
|
||||||
"format" : "float"
|
"format" : "float"
|
||||||
},
|
},
|
||||||
"frequencies" : {
|
"list" : {
|
||||||
"type" : "string"
|
"type" : "string"
|
||||||
},
|
},
|
||||||
|
"setting" : {
|
||||||
|
"type" : "string",
|
||||||
|
"description" : "The device setting to sweep (E.g. centerFrequency or gain)"
|
||||||
|
},
|
||||||
"visaDevice" : {
|
"visaDevice" : {
|
||||||
"type" : "string"
|
"type" : "string"
|
||||||
},
|
},
|
||||||
@ -51207,7 +51224,7 @@ except ApiException as e:
|
|||||||
</div>
|
</div>
|
||||||
<div id="generator">
|
<div id="generator">
|
||||||
<div class="content">
|
<div class="content">
|
||||||
Generated 2021-10-26T22:25:01.367+02:00
|
Generated 2021-10-29T08:40:21.343+02:00
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -104,6 +104,9 @@ DATVDemodSettings:
|
|||||||
udpTS:
|
udpTS:
|
||||||
description: boolean
|
description: boolean
|
||||||
type: integer
|
type: integer
|
||||||
|
playerEnable:
|
||||||
|
description: boolean
|
||||||
|
type: integer
|
||||||
streamIndex:
|
streamIndex:
|
||||||
description: MIMO channel. Not relevant when connected to SI (single Rx).
|
description: MIMO channel. Not relevant when connected to SI (single Rx).
|
||||||
type: integer
|
type: integer
|
||||||
@ -145,34 +148,40 @@ DATVDemodReport:
|
|||||||
type: integer
|
type: integer
|
||||||
description: >
|
description: >
|
||||||
Modulation set by DVB-S2 MODCOD
|
Modulation set by DVB-S2 MODCOD
|
||||||
* 0: BPSK
|
* -1: Unset
|
||||||
* 1: QPSK
|
* 0: BPSK
|
||||||
* 2: PSK8
|
* 1: QPSK
|
||||||
* 3: APSK16
|
* 2: PSK8
|
||||||
* 4: APSK32
|
* 3: APSK16
|
||||||
* 5: APSK64E
|
* 4: APSK32
|
||||||
* 6: QAM16
|
* 5: APSK64E
|
||||||
* 7: QAM64
|
* 6: QAM16
|
||||||
* 8: QAM256
|
* 7: QAM64
|
||||||
|
* 8: QAM256
|
||||||
modcodCodeRate:
|
modcodCodeRate:
|
||||||
type: integer
|
type: integer
|
||||||
description: >
|
description: >
|
||||||
Code rate (FEC) set by DVB-S2 MODCOD
|
Code rate (FEC) set by DVB-S2 MODCOD
|
||||||
* 0: 1/2
|
* -1: Unset
|
||||||
* 1: 2/3
|
* 0: 1/2
|
||||||
* 2: 4/6
|
* 1: 2/3
|
||||||
* 3: 3/4
|
* 2: 4/6
|
||||||
* 4: 5/6
|
* 3: 3/4
|
||||||
* 5: 7/8
|
* 4: 5/6
|
||||||
* 6: 4/5
|
* 5: 7/8
|
||||||
* 7: 8/9
|
* 6: 4/5
|
||||||
* 8: 9/10
|
* 7: 8/9
|
||||||
* 9: 1/4
|
* 8: 9/10
|
||||||
|
* 9: 1/4
|
||||||
* 10: 1/3
|
* 10: 1/3
|
||||||
* 11: 2/5
|
* 11: 2/5
|
||||||
* 12: 3/5
|
* 12: 3/5
|
||||||
setByModcod:
|
setByModcod:
|
||||||
type: integer
|
type: integer
|
||||||
description: Modulation and code rate set by DVB-S2 MODCOD (1 for yes, 0 for no)
|
description: Modulation and code rate set by DVB-S2 MODCOD (1 for yes, 0 for no)
|
||||||
|
mer:
|
||||||
|
type: number
|
||||||
|
format: float
|
||||||
|
cnr:
|
||||||
|
type: number
|
||||||
|
format: float
|
||||||
|
@ -8,12 +8,13 @@ NoiseFigureSettings:
|
|||||||
type: integer
|
type: integer
|
||||||
fftCount:
|
fftCount:
|
||||||
type: integer
|
type: integer
|
||||||
frequencySpec:
|
sweepSpec:
|
||||||
|
description: "(0 - Range, 1 - Step, 2 - List)"
|
||||||
type: integer
|
type: integer
|
||||||
startFrequency:
|
startValue:
|
||||||
type: number
|
type: number
|
||||||
format: float
|
format: float
|
||||||
stopFrequency:
|
stopValue:
|
||||||
type: number
|
type: number
|
||||||
format: float
|
format: float
|
||||||
steps:
|
steps:
|
||||||
@ -21,7 +22,10 @@ NoiseFigureSettings:
|
|||||||
step:
|
step:
|
||||||
type: number
|
type: number
|
||||||
format: float
|
format: float
|
||||||
frequencies:
|
list:
|
||||||
|
type: string
|
||||||
|
setting:
|
||||||
|
description: "The device setting to sweep (E.g. centerFrequency or gain)"
|
||||||
type: string
|
type: string
|
||||||
visaDevice:
|
visaDevice:
|
||||||
type: string
|
type: string
|
||||||
|
@ -104,6 +104,9 @@ DATVDemodSettings:
|
|||||||
udpTS:
|
udpTS:
|
||||||
description: boolean
|
description: boolean
|
||||||
type: integer
|
type: integer
|
||||||
|
playerEnable:
|
||||||
|
description: boolean
|
||||||
|
type: integer
|
||||||
streamIndex:
|
streamIndex:
|
||||||
description: MIMO channel. Not relevant when connected to SI (single Rx).
|
description: MIMO channel. Not relevant when connected to SI (single Rx).
|
||||||
type: integer
|
type: integer
|
||||||
@ -176,5 +179,9 @@ DATVDemodReport:
|
|||||||
setByModcod:
|
setByModcod:
|
||||||
type: integer
|
type: integer
|
||||||
description: Modulation and code rate set by DVB-S2 MODCOD (1 for yes, 0 for no)
|
description: Modulation and code rate set by DVB-S2 MODCOD (1 for yes, 0 for no)
|
||||||
|
mer:
|
||||||
|
type: number
|
||||||
|
format: float
|
||||||
|
cnr:
|
||||||
|
type: number
|
||||||
|
format: float
|
||||||
|
@ -3799,15 +3799,23 @@ margin-bottom: 20px;
|
|||||||
},
|
},
|
||||||
"modcodModulation" : {
|
"modcodModulation" : {
|
||||||
"type" : "integer",
|
"type" : "integer",
|
||||||
"description" : "Modulation set by DVB-S2 MODCOD\n * 0: BPSK\n * 1: QPSK\n * 2: PSK8\n * 3: APSK16\n * 4: APSK32\n * 5: APSK64E\n * 6: QAM16\n * 7: QAM64\n * 8: QAM256\n"
|
"description" : "Modulation set by DVB-S2 MODCOD\n * -1: Unset\n * 0: BPSK\n * 1: QPSK\n * 2: PSK8\n * 3: APSK16\n * 4: APSK32\n * 5: APSK64E\n * 6: QAM16\n * 7: QAM64\n * 8: QAM256\n"
|
||||||
},
|
},
|
||||||
"modcodCodeRate" : {
|
"modcodCodeRate" : {
|
||||||
"type" : "integer",
|
"type" : "integer",
|
||||||
"description" : "Code rate (FEC) set by DVB-S2 MODCOD\n * 0: 1/2\n * 1: 2/3\n * 2: 4/6\n * 3: 3/4\n * 4: 5/6\n * 5: 7/8\n * 6: 4/5\n * 7: 8/9\n * 8: 9/10\n * 9: 1/4\n * 10: 1/3\n * 11: 2/5\n * 12: 3/5\n"
|
"description" : "Code rate (FEC) set by DVB-S2 MODCOD\n * -1: Unset\n * 0: 1/2\n * 1: 2/3\n * 2: 4/6\n * 3: 3/4\n * 4: 5/6\n * 5: 7/8\n * 6: 4/5\n * 7: 8/9\n * 8: 9/10\n * 9: 1/4\n * 10: 1/3\n * 11: 2/5\n * 12: 3/5\n"
|
||||||
},
|
},
|
||||||
"setByModcod" : {
|
"setByModcod" : {
|
||||||
"type" : "integer",
|
"type" : "integer",
|
||||||
"description" : "Modulation and code rate set by DVB-S2 MODCOD (1 for yes, 0 for no)"
|
"description" : "Modulation and code rate set by DVB-S2 MODCOD (1 for yes, 0 for no)"
|
||||||
|
},
|
||||||
|
"mer" : {
|
||||||
|
"type" : "number",
|
||||||
|
"format" : "float"
|
||||||
|
},
|
||||||
|
"cnr" : {
|
||||||
|
"type" : "number",
|
||||||
|
"format" : "float"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"description" : "DATVDemod"
|
"description" : "DATVDemod"
|
||||||
@ -3913,6 +3921,10 @@ margin-bottom: 20px;
|
|||||||
"type" : "integer",
|
"type" : "integer",
|
||||||
"description" : "boolean"
|
"description" : "boolean"
|
||||||
},
|
},
|
||||||
|
"playerEnable" : {
|
||||||
|
"type" : "integer",
|
||||||
|
"description" : "boolean"
|
||||||
|
},
|
||||||
"streamIndex" : {
|
"streamIndex" : {
|
||||||
"type" : "integer",
|
"type" : "integer",
|
||||||
"description" : "MIMO channel. Not relevant when connected to SI (single Rx)."
|
"description" : "MIMO channel. Not relevant when connected to SI (single Rx)."
|
||||||
@ -7905,14 +7917,15 @@ margin-bottom: 20px;
|
|||||||
"fftCount" : {
|
"fftCount" : {
|
||||||
"type" : "integer"
|
"type" : "integer"
|
||||||
},
|
},
|
||||||
"frequencySpec" : {
|
"sweepSpec" : {
|
||||||
"type" : "integer"
|
"type" : "integer",
|
||||||
|
"description" : "(0 - Range, 1 - Step, 2 - List)"
|
||||||
},
|
},
|
||||||
"startFrequency" : {
|
"startValue" : {
|
||||||
"type" : "number",
|
"type" : "number",
|
||||||
"format" : "float"
|
"format" : "float"
|
||||||
},
|
},
|
||||||
"stopFrequency" : {
|
"stopValue" : {
|
||||||
"type" : "number",
|
"type" : "number",
|
||||||
"format" : "float"
|
"format" : "float"
|
||||||
},
|
},
|
||||||
@ -7923,9 +7936,13 @@ margin-bottom: 20px;
|
|||||||
"type" : "number",
|
"type" : "number",
|
||||||
"format" : "float"
|
"format" : "float"
|
||||||
},
|
},
|
||||||
"frequencies" : {
|
"list" : {
|
||||||
"type" : "string"
|
"type" : "string"
|
||||||
},
|
},
|
||||||
|
"setting" : {
|
||||||
|
"type" : "string",
|
||||||
|
"description" : "The device setting to sweep (E.g. centerFrequency or gain)"
|
||||||
|
},
|
||||||
"visaDevice" : {
|
"visaDevice" : {
|
||||||
"type" : "string"
|
"type" : "string"
|
||||||
},
|
},
|
||||||
@ -51207,7 +51224,7 @@ except ApiException as e:
|
|||||||
</div>
|
</div>
|
||||||
<div id="generator">
|
<div id="generator">
|
||||||
<div class="content">
|
<div class="content">
|
||||||
Generated 2021-10-26T22:25:01.367+02:00
|
Generated 2021-10-29T08:40:21.343+02:00
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -46,6 +46,10 @@ SWGDATVDemodReport::SWGDATVDemodReport() {
|
|||||||
m_modcod_code_rate_isSet = false;
|
m_modcod_code_rate_isSet = false;
|
||||||
set_by_modcod = 0;
|
set_by_modcod = 0;
|
||||||
m_set_by_modcod_isSet = false;
|
m_set_by_modcod_isSet = false;
|
||||||
|
mer = 0.0f;
|
||||||
|
m_mer_isSet = false;
|
||||||
|
cnr = 0.0f;
|
||||||
|
m_cnr_isSet = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
SWGDATVDemodReport::~SWGDATVDemodReport() {
|
SWGDATVDemodReport::~SWGDATVDemodReport() {
|
||||||
@ -72,6 +76,10 @@ SWGDATVDemodReport::init() {
|
|||||||
m_modcod_code_rate_isSet = false;
|
m_modcod_code_rate_isSet = false;
|
||||||
set_by_modcod = 0;
|
set_by_modcod = 0;
|
||||||
m_set_by_modcod_isSet = false;
|
m_set_by_modcod_isSet = false;
|
||||||
|
mer = 0.0f;
|
||||||
|
m_mer_isSet = false;
|
||||||
|
cnr = 0.0f;
|
||||||
|
m_cnr_isSet = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -85,6 +93,8 @@ SWGDATVDemodReport::cleanup() {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SWGDATVDemodReport*
|
SWGDATVDemodReport*
|
||||||
@ -116,6 +126,10 @@ SWGDATVDemodReport::fromJsonObject(QJsonObject &pJson) {
|
|||||||
|
|
||||||
::SWGSDRangel::setValue(&set_by_modcod, pJson["setByModcod"], "qint32", "");
|
::SWGSDRangel::setValue(&set_by_modcod, pJson["setByModcod"], "qint32", "");
|
||||||
|
|
||||||
|
::SWGSDRangel::setValue(&mer, pJson["mer"], "float", "");
|
||||||
|
|
||||||
|
::SWGSDRangel::setValue(&cnr, pJson["cnr"], "float", "");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QString
|
QString
|
||||||
@ -159,6 +173,12 @@ SWGDATVDemodReport::asJsonObject() {
|
|||||||
if(m_set_by_modcod_isSet){
|
if(m_set_by_modcod_isSet){
|
||||||
obj->insert("setByModcod", QJsonValue(set_by_modcod));
|
obj->insert("setByModcod", QJsonValue(set_by_modcod));
|
||||||
}
|
}
|
||||||
|
if(m_mer_isSet){
|
||||||
|
obj->insert("mer", QJsonValue(mer));
|
||||||
|
}
|
||||||
|
if(m_cnr_isSet){
|
||||||
|
obj->insert("cnr", QJsonValue(cnr));
|
||||||
|
}
|
||||||
|
|
||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
@ -253,6 +273,26 @@ SWGDATVDemodReport::setSetByModcod(qint32 set_by_modcod) {
|
|||||||
this->m_set_by_modcod_isSet = true;
|
this->m_set_by_modcod_isSet = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
float
|
||||||
|
SWGDATVDemodReport::getMer() {
|
||||||
|
return mer;
|
||||||
|
}
|
||||||
|
void
|
||||||
|
SWGDATVDemodReport::setMer(float mer) {
|
||||||
|
this->mer = mer;
|
||||||
|
this->m_mer_isSet = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
float
|
||||||
|
SWGDATVDemodReport::getCnr() {
|
||||||
|
return cnr;
|
||||||
|
}
|
||||||
|
void
|
||||||
|
SWGDATVDemodReport::setCnr(float cnr) {
|
||||||
|
this->cnr = cnr;
|
||||||
|
this->m_cnr_isSet = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool
|
bool
|
||||||
SWGDATVDemodReport::isSet(){
|
SWGDATVDemodReport::isSet(){
|
||||||
@ -285,6 +325,12 @@ SWGDATVDemodReport::isSet(){
|
|||||||
if(m_set_by_modcod_isSet){
|
if(m_set_by_modcod_isSet){
|
||||||
isObjectUpdated = true; break;
|
isObjectUpdated = true; break;
|
||||||
}
|
}
|
||||||
|
if(m_mer_isSet){
|
||||||
|
isObjectUpdated = true; break;
|
||||||
|
}
|
||||||
|
if(m_cnr_isSet){
|
||||||
|
isObjectUpdated = true; break;
|
||||||
|
}
|
||||||
}while(false);
|
}while(false);
|
||||||
return isObjectUpdated;
|
return isObjectUpdated;
|
||||||
}
|
}
|
||||||
|
@ -68,6 +68,12 @@ public:
|
|||||||
qint32 getSetByModcod();
|
qint32 getSetByModcod();
|
||||||
void setSetByModcod(qint32 set_by_modcod);
|
void setSetByModcod(qint32 set_by_modcod);
|
||||||
|
|
||||||
|
float getMer();
|
||||||
|
void setMer(float mer);
|
||||||
|
|
||||||
|
float getCnr();
|
||||||
|
void setCnr(float cnr);
|
||||||
|
|
||||||
|
|
||||||
virtual bool isSet() override;
|
virtual bool isSet() override;
|
||||||
|
|
||||||
@ -99,6 +105,12 @@ private:
|
|||||||
qint32 set_by_modcod;
|
qint32 set_by_modcod;
|
||||||
bool m_set_by_modcod_isSet;
|
bool m_set_by_modcod_isSet;
|
||||||
|
|
||||||
|
float mer;
|
||||||
|
bool m_mer_isSet;
|
||||||
|
|
||||||
|
float cnr;
|
||||||
|
bool m_cnr_isSet;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -82,6 +82,8 @@ SWGDATVDemodSettings::SWGDATVDemodSettings() {
|
|||||||
m_udp_ts_port_isSet = false;
|
m_udp_ts_port_isSet = false;
|
||||||
udp_ts = 0;
|
udp_ts = 0;
|
||||||
m_udp_ts_isSet = false;
|
m_udp_ts_isSet = false;
|
||||||
|
player_enable = 0;
|
||||||
|
m_player_enable_isSet = false;
|
||||||
stream_index = 0;
|
stream_index = 0;
|
||||||
m_stream_index_isSet = false;
|
m_stream_index_isSet = false;
|
||||||
use_reverse_api = 0;
|
use_reverse_api = 0;
|
||||||
@ -156,6 +158,8 @@ SWGDATVDemodSettings::init() {
|
|||||||
m_udp_ts_port_isSet = false;
|
m_udp_ts_port_isSet = false;
|
||||||
udp_ts = 0;
|
udp_ts = 0;
|
||||||
m_udp_ts_isSet = false;
|
m_udp_ts_isSet = false;
|
||||||
|
player_enable = 0;
|
||||||
|
m_player_enable_isSet = false;
|
||||||
stream_index = 0;
|
stream_index = 0;
|
||||||
m_stream_index_isSet = false;
|
m_stream_index_isSet = false;
|
||||||
use_reverse_api = 0;
|
use_reverse_api = 0;
|
||||||
@ -209,6 +213,7 @@ SWGDATVDemodSettings::cleanup() {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if(reverse_api_address != nullptr) {
|
if(reverse_api_address != nullptr) {
|
||||||
delete reverse_api_address;
|
delete reverse_api_address;
|
||||||
}
|
}
|
||||||
@ -282,6 +287,8 @@ SWGDATVDemodSettings::fromJsonObject(QJsonObject &pJson) {
|
|||||||
|
|
||||||
::SWGSDRangel::setValue(&udp_ts, pJson["udpTS"], "qint32", "");
|
::SWGSDRangel::setValue(&udp_ts, pJson["udpTS"], "qint32", "");
|
||||||
|
|
||||||
|
::SWGSDRangel::setValue(&player_enable, pJson["playerEnable"], "qint32", "");
|
||||||
|
|
||||||
::SWGSDRangel::setValue(&stream_index, pJson["streamIndex"], "qint32", "");
|
::SWGSDRangel::setValue(&stream_index, pJson["streamIndex"], "qint32", "");
|
||||||
|
|
||||||
::SWGSDRangel::setValue(&use_reverse_api, pJson["useReverseAPI"], "qint32", "");
|
::SWGSDRangel::setValue(&use_reverse_api, pJson["useReverseAPI"], "qint32", "");
|
||||||
@ -391,6 +398,9 @@ SWGDATVDemodSettings::asJsonObject() {
|
|||||||
if(m_udp_ts_isSet){
|
if(m_udp_ts_isSet){
|
||||||
obj->insert("udpTS", QJsonValue(udp_ts));
|
obj->insert("udpTS", QJsonValue(udp_ts));
|
||||||
}
|
}
|
||||||
|
if(m_player_enable_isSet){
|
||||||
|
obj->insert("playerEnable", QJsonValue(player_enable));
|
||||||
|
}
|
||||||
if(m_stream_index_isSet){
|
if(m_stream_index_isSet){
|
||||||
obj->insert("streamIndex", QJsonValue(stream_index));
|
obj->insert("streamIndex", QJsonValue(stream_index));
|
||||||
}
|
}
|
||||||
@ -683,6 +693,16 @@ SWGDATVDemodSettings::setUdpTs(qint32 udp_ts) {
|
|||||||
this->m_udp_ts_isSet = true;
|
this->m_udp_ts_isSet = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
qint32
|
||||||
|
SWGDATVDemodSettings::getPlayerEnable() {
|
||||||
|
return player_enable;
|
||||||
|
}
|
||||||
|
void
|
||||||
|
SWGDATVDemodSettings::setPlayerEnable(qint32 player_enable) {
|
||||||
|
this->player_enable = player_enable;
|
||||||
|
this->m_player_enable_isSet = true;
|
||||||
|
}
|
||||||
|
|
||||||
qint32
|
qint32
|
||||||
SWGDATVDemodSettings::getStreamIndex() {
|
SWGDATVDemodSettings::getStreamIndex() {
|
||||||
return stream_index;
|
return stream_index;
|
||||||
@ -829,6 +849,9 @@ SWGDATVDemodSettings::isSet(){
|
|||||||
if(m_udp_ts_isSet){
|
if(m_udp_ts_isSet){
|
||||||
isObjectUpdated = true; break;
|
isObjectUpdated = true; break;
|
||||||
}
|
}
|
||||||
|
if(m_player_enable_isSet){
|
||||||
|
isObjectUpdated = true; break;
|
||||||
|
}
|
||||||
if(m_stream_index_isSet){
|
if(m_stream_index_isSet){
|
||||||
isObjectUpdated = true; break;
|
isObjectUpdated = true; break;
|
||||||
}
|
}
|
||||||
|
@ -123,6 +123,9 @@ public:
|
|||||||
qint32 getUdpTs();
|
qint32 getUdpTs();
|
||||||
void setUdpTs(qint32 udp_ts);
|
void setUdpTs(qint32 udp_ts);
|
||||||
|
|
||||||
|
qint32 getPlayerEnable();
|
||||||
|
void setPlayerEnable(qint32 player_enable);
|
||||||
|
|
||||||
qint32 getStreamIndex();
|
qint32 getStreamIndex();
|
||||||
void setStreamIndex(qint32 stream_index);
|
void setStreamIndex(qint32 stream_index);
|
||||||
|
|
||||||
@ -226,6 +229,9 @@ private:
|
|||||||
qint32 udp_ts;
|
qint32 udp_ts;
|
||||||
bool m_udp_ts_isSet;
|
bool m_udp_ts_isSet;
|
||||||
|
|
||||||
|
qint32 player_enable;
|
||||||
|
bool m_player_enable_isSet;
|
||||||
|
|
||||||
qint32 stream_index;
|
qint32 stream_index;
|
||||||
bool m_stream_index_isSet;
|
bool m_stream_index_isSet;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user