mirror of
https://github.com/f4exb/sdrangel.git
synced 2025-09-05 22:57:47 -04:00
SDRdaemonFEC plugin: improve stats on GUI
This commit is contained in:
parent
286ea81470
commit
aa68c907fa
@ -33,6 +33,7 @@ SDRdaemonFECBuffer::SDRdaemonFECBuffer(uint32_t throttlems) :
|
|||||||
m_decoderIndexHead(nbDecoderSlots/2),
|
m_decoderIndexHead(nbDecoderSlots/2),
|
||||||
m_curNbBlocks(0),
|
m_curNbBlocks(0),
|
||||||
m_minNbBlocks(256),
|
m_minNbBlocks(256),
|
||||||
|
m_minOriginalBlocks(128),
|
||||||
m_curNbRecovery(0),
|
m_curNbRecovery(0),
|
||||||
m_maxNbRecovery(0),
|
m_maxNbRecovery(0),
|
||||||
m_framesDecoded(true),
|
m_framesDecoded(true),
|
||||||
@ -89,8 +90,10 @@ void SDRdaemonFECBuffer::initDecodeSlot(int slotIndex)
|
|||||||
// collect stats before voiding the slot
|
// collect stats before voiding the slot
|
||||||
|
|
||||||
m_curNbBlocks = m_decoderSlots[slotIndex].m_blockCount;
|
m_curNbBlocks = m_decoderSlots[slotIndex].m_blockCount;
|
||||||
|
m_curOriginalBlocks = m_decoderSlots[slotIndex].m_originalCount;
|
||||||
m_curNbRecovery = m_decoderSlots[slotIndex].m_recoveryCount;
|
m_curNbRecovery = m_decoderSlots[slotIndex].m_recoveryCount;
|
||||||
m_avgNbBlocks(m_curNbBlocks);
|
m_avgNbBlocks(m_curNbBlocks);
|
||||||
|
m_avgOrigBlocks(m_curOriginalBlocks);
|
||||||
m_avgNbRecovery(m_curNbRecovery);
|
m_avgNbRecovery(m_curNbRecovery);
|
||||||
m_framesDecoded = m_framesDecoded && m_decoderSlots[slotIndex].m_decoded;
|
m_framesDecoded = m_framesDecoded && m_decoderSlots[slotIndex].m_decoded;
|
||||||
|
|
||||||
@ -98,6 +101,10 @@ void SDRdaemonFECBuffer::initDecodeSlot(int slotIndex)
|
|||||||
m_minNbBlocks = m_curNbBlocks;
|
m_minNbBlocks = m_curNbBlocks;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (m_curOriginalBlocks < m_minOriginalBlocks) {
|
||||||
|
m_minOriginalBlocks = m_curOriginalBlocks;
|
||||||
|
}
|
||||||
|
|
||||||
if (m_curNbRecovery > m_maxNbRecovery) {
|
if (m_curNbRecovery > m_maxNbRecovery) {
|
||||||
m_maxNbRecovery = m_curNbRecovery;
|
m_maxNbRecovery = m_curNbRecovery;
|
||||||
}
|
}
|
||||||
|
@ -100,8 +100,10 @@ public:
|
|||||||
// stats
|
// stats
|
||||||
|
|
||||||
int getCurNbBlocks() const { return m_curNbBlocks; }
|
int getCurNbBlocks() const { return m_curNbBlocks; }
|
||||||
|
int getCurOriginalBlocks() const { return m_curOriginalBlocks; }
|
||||||
int getCurNbRecovery() const { return m_curNbRecovery; }
|
int getCurNbRecovery() const { return m_curNbRecovery; }
|
||||||
float getAvgNbBlocks() const { return m_avgNbBlocks; }
|
float getAvgNbBlocks() const { return m_avgNbBlocks; }
|
||||||
|
float getAvgOriginalBlocks() const { return m_avgOrigBlocks; }
|
||||||
float getAvgNbRecovery() const { return m_avgNbRecovery; }
|
float getAvgNbRecovery() const { return m_avgNbRecovery; }
|
||||||
|
|
||||||
int getMinNbBlocks()
|
int getMinNbBlocks()
|
||||||
@ -111,6 +113,13 @@ public:
|
|||||||
return minNbBlocks;
|
return minNbBlocks;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int getMinOriginalBlocks()
|
||||||
|
{
|
||||||
|
int minOriginalBlocks = m_minOriginalBlocks;
|
||||||
|
m_minOriginalBlocks = 128;
|
||||||
|
return minOriginalBlocks;
|
||||||
|
}
|
||||||
|
|
||||||
int getMaxNbRecovery()
|
int getMaxNbRecovery()
|
||||||
{
|
{
|
||||||
int maxNbRecovery = m_maxNbRecovery;
|
int maxNbRecovery = m_maxNbRecovery;
|
||||||
@ -183,9 +192,12 @@ private:
|
|||||||
int m_frameHead; //!< index of the current head frame sent
|
int m_frameHead; //!< index of the current head frame sent
|
||||||
int m_curNbBlocks; //!< (stats) instantaneous number of blocks received
|
int m_curNbBlocks; //!< (stats) instantaneous number of blocks received
|
||||||
int m_minNbBlocks; //!< (stats) minimum number of blocks received since last poll
|
int m_minNbBlocks; //!< (stats) minimum number of blocks received since last poll
|
||||||
|
int m_curOriginalBlocks; //!< (stats) instantanous number of original blocks received
|
||||||
|
int m_minOriginalBlocks; //!< (stats) minimum number of original blocks received since last poll
|
||||||
int m_curNbRecovery; //!< (stats) instantaneous number of recovery blocks used
|
int m_curNbRecovery; //!< (stats) instantaneous number of recovery blocks used
|
||||||
int m_maxNbRecovery; //!< (stats) maximum number of recovery blocks used since last poll
|
int m_maxNbRecovery; //!< (stats) maximum number of recovery blocks used since last poll
|
||||||
MovingAverage<int, int, 10> m_avgNbBlocks; //!< (stats) average number of blocks received
|
MovingAverage<int, int, 10> m_avgNbBlocks; //!< (stats) average number of blocks received
|
||||||
|
MovingAverage<int, int, 10> m_avgOrigBlocks; //!< (stats) average number of original blocks received
|
||||||
MovingAverage<int, int, 10> m_avgNbRecovery; //!< (stats) average number of recovery blocks used
|
MovingAverage<int, int, 10> m_avgNbRecovery; //!< (stats) average number of recovery blocks used
|
||||||
bool m_framesDecoded; //!< [stats] true if all frames were decoded since last poll
|
bool m_framesDecoded; //!< [stats] true if all frames were decoded since last poll
|
||||||
int m_readIndex; //!< current byte read index in frames buffer
|
int m_readIndex; //!< current byte read index in frames buffer
|
||||||
|
@ -291,8 +291,10 @@ bool SDRdaemonFECGui::handleMessage(const Message& message)
|
|||||||
m_bufferLengthInSecs = ((SDRdaemonFECInput::MsgReportSDRdaemonFECStreamTiming&)message).getBufferLengthInSecs();
|
m_bufferLengthInSecs = ((SDRdaemonFECInput::MsgReportSDRdaemonFECStreamTiming&)message).getBufferLengthInSecs();
|
||||||
m_bufferGauge = ((SDRdaemonFECInput::MsgReportSDRdaemonFECStreamTiming&)message).getBufferGauge();
|
m_bufferGauge = ((SDRdaemonFECInput::MsgReportSDRdaemonFECStreamTiming&)message).getBufferGauge();
|
||||||
m_minNbBlocks = ((SDRdaemonFECInput::MsgReportSDRdaemonFECStreamTiming&)message).getMinNbBlocks();
|
m_minNbBlocks = ((SDRdaemonFECInput::MsgReportSDRdaemonFECStreamTiming&)message).getMinNbBlocks();
|
||||||
m_maxNbRecovery = ((SDRdaemonFECInput::MsgReportSDRdaemonFECStreamTiming&)message).getmAXNbRecovery();
|
m_minNbOriginalBlocks = ((SDRdaemonFECInput::MsgReportSDRdaemonFECStreamTiming&)message).getMinNbOriginalBlocks();
|
||||||
|
m_maxNbRecovery = ((SDRdaemonFECInput::MsgReportSDRdaemonFECStreamTiming&)message).getMaxNbRecovery();
|
||||||
m_avgNbBlocks = ((SDRdaemonFECInput::MsgReportSDRdaemonFECStreamTiming&)message).getAvgNbBlocks();
|
m_avgNbBlocks = ((SDRdaemonFECInput::MsgReportSDRdaemonFECStreamTiming&)message).getAvgNbBlocks();
|
||||||
|
m_avgNbOriginalBlocks = ((SDRdaemonFECInput::MsgReportSDRdaemonFECStreamTiming&)message).getAvgNbOriginalBlocks();
|
||||||
m_avgNbRecovery = ((SDRdaemonFECInput::MsgReportSDRdaemonFECStreamTiming&)message).getAvgNbRecovery();
|
m_avgNbRecovery = ((SDRdaemonFECInput::MsgReportSDRdaemonFECStreamTiming&)message).getAvgNbRecovery();
|
||||||
m_nbOriginalBlocks = ((SDRdaemonFECInput::MsgReportSDRdaemonFECStreamTiming&)message).getNbOriginalBlocksPerFrame();
|
m_nbOriginalBlocks = ((SDRdaemonFECInput::MsgReportSDRdaemonFECStreamTiming&)message).getNbOriginalBlocksPerFrame();
|
||||||
m_nbFECBlocks = ((SDRdaemonFECInput::MsgReportSDRdaemonFECStreamTiming&)message).getNbFECBlocksPerFrame();
|
m_nbFECBlocks = ((SDRdaemonFECInput::MsgReportSDRdaemonFECStreamTiming&)message).getNbFECBlocksPerFrame();
|
||||||
@ -625,8 +627,11 @@ void SDRdaemonFECGui::updateWithStreamTime()
|
|||||||
s = QString::number(m_avgNbBlocks, 'f', 1);
|
s = QString::number(m_avgNbBlocks, 'f', 1);
|
||||||
ui->avgNbBlocksText->setText(tr("%1").arg(s));
|
ui->avgNbBlocksText->setText(tr("%1").arg(s));
|
||||||
|
|
||||||
|
s = QString::number(m_minNbOriginalBlocks, 'f', 0);
|
||||||
|
ui->minNbOriginalText->setText(tr("%1").arg(s));
|
||||||
|
|
||||||
s = QString::number(m_maxNbRecovery, 'f', 0);
|
s = QString::number(m_maxNbRecovery, 'f', 0);
|
||||||
ui->curNbRecoveryText->setText(tr("%1").arg(s));
|
ui->maxNbRecoveryText->setText(tr("%1").arg(s));
|
||||||
|
|
||||||
s = QString::number(m_avgNbRecovery, 'f', 1);
|
s = QString::number(m_avgNbRecovery, 'f', 1);
|
||||||
ui->avgNbRecoveryText->setText(tr("%1").arg(s));
|
ui->avgNbRecoveryText->setText(tr("%1").arg(s));
|
||||||
@ -672,4 +677,3 @@ void SDRdaemonFECGui::tick()
|
|||||||
m_sampleSource->getInputMessageQueue()->push(message);
|
m_sampleSource->getInputMessageQueue()->push(message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -68,8 +68,10 @@ private:
|
|||||||
float m_bufferLengthInSecs;
|
float m_bufferLengthInSecs;
|
||||||
int32_t m_bufferGauge;
|
int32_t m_bufferGauge;
|
||||||
int m_minNbBlocks;
|
int m_minNbBlocks;
|
||||||
|
int m_minNbOriginalBlocks;
|
||||||
int m_maxNbRecovery;
|
int m_maxNbRecovery;
|
||||||
float m_avgNbBlocks;
|
float m_avgNbBlocks;
|
||||||
|
float m_avgNbOriginalBlocks;
|
||||||
float m_avgNbRecovery;
|
float m_avgNbRecovery;
|
||||||
int m_nbOriginalBlocks;
|
int m_nbOriginalBlocks;
|
||||||
int m_nbFECBlocks;
|
int m_nbFECBlocks;
|
||||||
|
@ -29,7 +29,16 @@
|
|||||||
<property name="spacing">
|
<property name="spacing">
|
||||||
<number>3</number>
|
<number>3</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="margin">
|
<property name="leftMargin">
|
||||||
|
<number>2</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>2</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>2</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
<number>2</number>
|
<number>2</number>
|
||||||
</property>
|
</property>
|
||||||
<item>
|
<item>
|
||||||
@ -339,13 +348,6 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
|
||||||
<widget class="Line" name="lineStream3">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Vertical</enum>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="avgNbBlocksText">
|
<widget class="QLabel" name="avgNbBlocksText">
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
@ -373,7 +375,33 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="curNbRecoveryText">
|
<widget class="QLabel" name="minNbOriginalText">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>24</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Minimum number of original blocks retrieved per frame</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>000</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="Line" name="lineStream5">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="maxNbRecoveryText">
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>24</width>
|
<width>24</width>
|
||||||
@ -391,13 +419,6 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
|
||||||
<widget class="Line" name="lineStream5">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Vertical</enum>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="avgNbRecoveryText">
|
<widget class="QLabel" name="avgNbRecoveryText">
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
@ -906,6 +927,23 @@
|
|||||||
</customwidgets>
|
</customwidgets>
|
||||||
<resources>
|
<resources>
|
||||||
<include location="../../../sdrbase/resources/res.qrc"/>
|
<include location="../../../sdrbase/resources/res.qrc"/>
|
||||||
|
<include location="../../../sdrbase/resources/res.qrc"/>
|
||||||
|
<include location="../../../sdrbase/resources/res.qrc"/>
|
||||||
|
<include location="../../../sdrbase/resources/res.qrc"/>
|
||||||
|
<include location="../../../sdrbase/resources/res.qrc"/>
|
||||||
|
<include location="../../../sdrbase/resources/res.qrc"/>
|
||||||
|
<include location="../../../sdrbase/resources/res.qrc"/>
|
||||||
|
<include location="../../../sdrbase/resources/res.qrc"/>
|
||||||
|
<include location="../../../sdrbase/resources/res.qrc"/>
|
||||||
|
<include location="../../../sdrbase/resources/res.qrc"/>
|
||||||
|
<include location="../../../sdrbase/resources/res.qrc"/>
|
||||||
|
<include location="../../../sdrbase/resources/res.qrc"/>
|
||||||
|
<include location="../../../sdrbase/resources/res.qrc"/>
|
||||||
|
<include location="../../../sdrbase/resources/res.qrc"/>
|
||||||
|
<include location="../../../sdrbase/resources/res.qrc"/>
|
||||||
|
<include location="../../../sdrbase/resources/res.qrc"/>
|
||||||
|
<include location="../../../sdrbase/resources/res.qrc"/>
|
||||||
|
<include location="../../../sdrbase/resources/res.qrc"/>
|
||||||
</resources>
|
</resources>
|
||||||
<connections/>
|
<connections/>
|
||||||
</ui>
|
</ui>
|
||||||
|
@ -170,8 +170,10 @@ public:
|
|||||||
float getBufferLengthInSecs() const { return m_bufferLenSec; }
|
float getBufferLengthInSecs() const { return m_bufferLenSec; }
|
||||||
int32_t getBufferGauge() const { return m_bufferGauge; }
|
int32_t getBufferGauge() const { return m_bufferGauge; }
|
||||||
int getMinNbBlocks() const { return m_minNbBlocks; }
|
int getMinNbBlocks() const { return m_minNbBlocks; }
|
||||||
int getmAXNbRecovery() const { return m_maxNbRecovery; }
|
int getMinNbOriginalBlocks() const { return m_minNbOriginalBlocks; }
|
||||||
|
int getMaxNbRecovery() const { return m_maxNbRecovery; }
|
||||||
float getAvgNbBlocks() const { return m_avgNbBlocks; }
|
float getAvgNbBlocks() const { return m_avgNbBlocks; }
|
||||||
|
float getAvgNbOriginalBlocks() const { return m_avgNbOriginalBlocks; }
|
||||||
float getAvgNbRecovery() const { return m_avgNbRecovery; }
|
float getAvgNbRecovery() const { return m_avgNbRecovery; }
|
||||||
int getNbOriginalBlocksPerFrame() const { return m_nbOriginalBlocksPerFrame; }
|
int getNbOriginalBlocksPerFrame() const { return m_nbOriginalBlocksPerFrame; }
|
||||||
int getNbFECBlocksPerFrame() const { return m_nbFECBlocksPerFrame; }
|
int getNbFECBlocksPerFrame() const { return m_nbFECBlocksPerFrame; }
|
||||||
@ -181,9 +183,11 @@ public:
|
|||||||
float bufferLenSec,
|
float bufferLenSec,
|
||||||
int32_t bufferGauge,
|
int32_t bufferGauge,
|
||||||
int framesDecodingStatus,
|
int framesDecodingStatus,
|
||||||
int curNbBlocks,
|
int minNbBlocks,
|
||||||
int curNbRecovery,
|
int minNbOriginalBlocks,
|
||||||
|
int maxNbRecovery,
|
||||||
float avgNbBlocks,
|
float avgNbBlocks,
|
||||||
|
float avgNbOriginalBlocks,
|
||||||
float avgNbRecovery,
|
float avgNbRecovery,
|
||||||
int nbOriginalBlocksPerFrame,
|
int nbOriginalBlocksPerFrame,
|
||||||
int nbFECBlocksPerFrame)
|
int nbFECBlocksPerFrame)
|
||||||
@ -193,9 +197,11 @@ public:
|
|||||||
bufferLenSec,
|
bufferLenSec,
|
||||||
bufferGauge,
|
bufferGauge,
|
||||||
framesDecodingStatus,
|
framesDecodingStatus,
|
||||||
curNbBlocks,
|
minNbBlocks,
|
||||||
curNbRecovery,
|
minNbOriginalBlocks,
|
||||||
|
maxNbRecovery,
|
||||||
avgNbBlocks,
|
avgNbBlocks,
|
||||||
|
avgNbOriginalBlocks,
|
||||||
avgNbRecovery,
|
avgNbRecovery,
|
||||||
nbOriginalBlocksPerFrame,
|
nbOriginalBlocksPerFrame,
|
||||||
nbFECBlocksPerFrame);
|
nbFECBlocksPerFrame);
|
||||||
@ -208,8 +214,10 @@ public:
|
|||||||
float m_bufferLenSec;
|
float m_bufferLenSec;
|
||||||
int32_t m_bufferGauge;
|
int32_t m_bufferGauge;
|
||||||
int m_minNbBlocks;
|
int m_minNbBlocks;
|
||||||
|
int m_minNbOriginalBlocks;
|
||||||
int m_maxNbRecovery;
|
int m_maxNbRecovery;
|
||||||
float m_avgNbBlocks;
|
float m_avgNbBlocks;
|
||||||
|
float m_avgNbOriginalBlocks;
|
||||||
float m_avgNbRecovery;
|
float m_avgNbRecovery;
|
||||||
int m_nbOriginalBlocksPerFrame;
|
int m_nbOriginalBlocksPerFrame;
|
||||||
int m_nbFECBlocksPerFrame;
|
int m_nbFECBlocksPerFrame;
|
||||||
@ -219,9 +227,11 @@ public:
|
|||||||
float bufferLenSec,
|
float bufferLenSec,
|
||||||
int32_t bufferGauge,
|
int32_t bufferGauge,
|
||||||
int framesDecodingStatus,
|
int framesDecodingStatus,
|
||||||
int curNbBlocks,
|
int minNbBlocks,
|
||||||
int curNbRecovery,
|
int minNbOriginalBlocks,
|
||||||
|
int maxNbRecovery,
|
||||||
float avgNbBlocks,
|
float avgNbBlocks,
|
||||||
|
float avgNbOriginalBlocks,
|
||||||
float avgNbRecovery,
|
float avgNbRecovery,
|
||||||
int nbOriginalBlocksPerFrame,
|
int nbOriginalBlocksPerFrame,
|
||||||
int nbFECBlocksPerFrame) :
|
int nbFECBlocksPerFrame) :
|
||||||
@ -231,9 +241,11 @@ public:
|
|||||||
m_framesDecodingStatus(framesDecodingStatus),
|
m_framesDecodingStatus(framesDecodingStatus),
|
||||||
m_bufferLenSec(bufferLenSec),
|
m_bufferLenSec(bufferLenSec),
|
||||||
m_bufferGauge(bufferGauge),
|
m_bufferGauge(bufferGauge),
|
||||||
m_minNbBlocks(curNbBlocks),
|
m_minNbBlocks(minNbBlocks),
|
||||||
m_maxNbRecovery(curNbRecovery),
|
m_minNbOriginalBlocks(minNbOriginalBlocks),
|
||||||
|
m_maxNbRecovery(maxNbRecovery),
|
||||||
m_avgNbBlocks(avgNbBlocks),
|
m_avgNbBlocks(avgNbBlocks),
|
||||||
|
m_avgNbOriginalBlocks(avgNbOriginalBlocks),
|
||||||
m_avgNbRecovery(avgNbRecovery),
|
m_avgNbRecovery(avgNbRecovery),
|
||||||
m_nbOriginalBlocksPerFrame(nbOriginalBlocksPerFrame),
|
m_nbOriginalBlocksPerFrame(nbOriginalBlocksPerFrame),
|
||||||
m_nbFECBlocksPerFrame(nbFECBlocksPerFrame)
|
m_nbFECBlocksPerFrame(nbFECBlocksPerFrame)
|
||||||
|
@ -224,12 +224,13 @@ void SDRdaemonFECUDPHandler::tick()
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
int framesDecodingStatus;
|
int framesDecodingStatus;
|
||||||
int minNbBlocks = m_sdrDaemonBuffer.getMinNbBlocks();
|
int minNbBlocks = m_sdrDaemonBuffer.getMinNbBlocks();
|
||||||
|
int minNbOriginalBlocks = m_sdrDaemonBuffer.getMinOriginalBlocks();
|
||||||
int nbOriginalBlocks = m_sdrDaemonBuffer.getCurrentMeta().m_nbOriginalBlocks;
|
int nbOriginalBlocks = m_sdrDaemonBuffer.getCurrentMeta().m_nbOriginalBlocks;
|
||||||
int nbFECblocks = m_sdrDaemonBuffer.getCurrentMeta().m_nbFECBlocks;
|
int nbFECblocks = m_sdrDaemonBuffer.getCurrentMeta().m_nbFECBlocks;
|
||||||
m_tickCount = 0;
|
m_tickCount = 0;
|
||||||
|
|
||||||
framesDecodingStatus = (minNbBlocks < nbOriginalBlocks ? 0 : (minNbBlocks < nbOriginalBlocks + nbFECblocks ? 1 : 2));
|
framesDecodingStatus = (minNbOriginalBlocks == nbOriginalBlocks ? 2 : (minNbOriginalBlocks < nbOriginalBlocks - nbFECblocks ? 0 : 1));
|
||||||
|
|
||||||
SDRdaemonFECInput::MsgReportSDRdaemonFECStreamTiming *report = SDRdaemonFECInput::MsgReportSDRdaemonFECStreamTiming::create(
|
SDRdaemonFECInput::MsgReportSDRdaemonFECStreamTiming *report = SDRdaemonFECInput::MsgReportSDRdaemonFECStreamTiming::create(
|
||||||
m_tv_sec,
|
m_tv_sec,
|
||||||
@ -238,13 +239,13 @@ void SDRdaemonFECUDPHandler::tick()
|
|||||||
m_sdrDaemonBuffer.getBufferGauge(),
|
m_sdrDaemonBuffer.getBufferGauge(),
|
||||||
framesDecodingStatus,
|
framesDecodingStatus,
|
||||||
minNbBlocks,
|
minNbBlocks,
|
||||||
|
minNbOriginalBlocks,
|
||||||
m_sdrDaemonBuffer.getMaxNbRecovery(),
|
m_sdrDaemonBuffer.getMaxNbRecovery(),
|
||||||
m_sdrDaemonBuffer.getAvgNbBlocks(),
|
m_sdrDaemonBuffer.getAvgNbBlocks(),
|
||||||
|
m_sdrDaemonBuffer.getAvgOriginalBlocks(),
|
||||||
m_sdrDaemonBuffer.getAvgNbRecovery(),
|
m_sdrDaemonBuffer.getAvgNbRecovery(),
|
||||||
nbOriginalBlocks,
|
nbOriginalBlocks,
|
||||||
nbFECblocks);
|
nbFECblocks);
|
||||||
m_outputMessageQueueToGUI->push(report);
|
m_outputMessageQueueToGUI->push(report);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user