From 0ae5955b76ebaffc3229eb1674ee6acaa130dc22 Mon Sep 17 00:00:00 2001 From: f4exb Date: Sun, 9 Sep 2018 17:39:36 +0200 Subject: [PATCH] SDRDaemon: fixed passing number of sample bits and sample bytes --- plugins/channelrx/daemonsink/daemonsink.cpp | 4 ++-- plugins/samplesink/sdrdaemonsink/udpsinkfec.cpp | 6 +++--- .../sdrdaemonsource/sdrdaemonsourcegui.cpp | 4 ++++ .../sdrdaemonsource/sdrdaemonsourcegui.h | 1 + .../sdrdaemonsource/sdrdaemonsourcegui.ui | 10 ++++++++++ .../sdrdaemonsource/sdrdaemonsourceinput.h | 14 ++++++++++---- .../sdrdaemonsource/sdrdaemonsourceudphandler.cpp | 4 +++- 7 files changed, 33 insertions(+), 10 deletions(-) diff --git a/plugins/channelrx/daemonsink/daemonsink.cpp b/plugins/channelrx/daemonsink/daemonsink.cpp index 051101adf..4ca7ae2e8 100644 --- a/plugins/channelrx/daemonsink/daemonsink.cpp +++ b/plugins/channelrx/daemonsink/daemonsink.cpp @@ -114,8 +114,8 @@ void DaemonSink::feed(const SampleVector::const_iterator& begin, const SampleVec metaData.m_centerFrequency = m_centerFrequency; metaData.m_sampleRate = m_sampleRate; - metaData.m_sampleBytes = m_sampleBytes; - metaData.m_sampleBits = 0; // TODO: deprecated + metaData.m_sampleBytes = m_sampleBytes & 0xF; + metaData.m_sampleBits = SDR_RX_SAMP_SZ; metaData.m_nbOriginalBlocks = SDRDaemonNbOrginalBlocks; metaData.m_nbFECBlocks = m_nbBlocksFEC; metaData.m_tv_sec = tv.tv_sec; diff --git a/plugins/samplesink/sdrdaemonsink/udpsinkfec.cpp b/plugins/samplesink/sdrdaemonsink/udpsinkfec.cpp index d00213e87..fdd7bad6a 100644 --- a/plugins/samplesink/sdrdaemonsink/udpsinkfec.cpp +++ b/plugins/samplesink/sdrdaemonsink/udpsinkfec.cpp @@ -29,8 +29,8 @@ MESSAGE_CLASS_DEFINITION(UDPSinkFECWorker::MsgConfigureRemoteAddress, Message) UDPSinkFEC::UDPSinkFEC() : m_sampleRate(48000), - m_sampleBytes(1), - m_sampleBits(8), + m_sampleBytes(SDR_TX_SAMP_SZ == 24 ? 4 : 2), + m_sampleBits(SDR_TX_SAMP_SZ), m_nbSamples(0), m_nbBlocksFEC(0), m_txDelay(0), @@ -104,7 +104,7 @@ void UDPSinkFEC::write(const SampleVector::iterator& begin, uint32_t sampleChunk // create meta data TODO: semaphore metaData.m_centerFrequency = 0; // frequency not set by stream metaData.m_sampleRate = m_sampleRate; - metaData.m_sampleBytes = m_sampleBytes; + metaData.m_sampleBytes = m_sampleBytes & 0xF; metaData.m_sampleBits = m_sampleBits; metaData.m_nbOriginalBlocks = m_nbOriginalBlocks; metaData.m_nbFECBlocks = m_nbBlocksFEC; diff --git a/plugins/samplesource/sdrdaemonsource/sdrdaemonsourcegui.cpp b/plugins/samplesource/sdrdaemonsource/sdrdaemonsourcegui.cpp index 61933dfac..a272dcf3b 100644 --- a/plugins/samplesource/sdrdaemonsource/sdrdaemonsourcegui.cpp +++ b/plugins/samplesource/sdrdaemonsource/sdrdaemonsourcegui.cpp @@ -56,6 +56,7 @@ SDRdaemonSourceGui::SDRdaemonSourceGui(DeviceUISet *deviceUISet, QWidget* parent m_bufferGauge(-50), m_nbOriginalBlocks(128), m_nbFECBlocks(0), + m_sampleBits(16), m_samplesCount(0), m_tickCount(0), m_addressEdited(false), @@ -209,6 +210,7 @@ bool SDRdaemonSourceGui::handleMessage(const Message& message) m_avgNbOriginalBlocks = ((SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamTiming&)message).getAvgNbOriginalBlocks(); m_avgNbRecovery = ((SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamTiming&)message).getAvgNbRecovery(); m_nbOriginalBlocks = ((SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamTiming&)message).getNbOriginalBlocksPerFrame(); + m_sampleBits = ((SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamTiming&)message).getSampleBits(); int nbFECBlocks = ((SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamTiming&)message).getNbFECBlocksPerFrame(); @@ -493,6 +495,8 @@ void SDRdaemonSourceGui::updateWithStreamTime() QString s1 = QString("%1").arg(m_nbFECBlocks, 2, 10, QChar('0')); ui->nominalNbBlocksText->setText(tr("%1/%2").arg(s).arg(s1)); + ui->sampleBitsText->setText(tr("%1b").arg(m_sampleBits)); + if (updateEventCounts) { displayEventCounts(); diff --git a/plugins/samplesource/sdrdaemonsource/sdrdaemonsourcegui.h b/plugins/samplesource/sdrdaemonsource/sdrdaemonsourcegui.h index b0b5577d5..89cb6dc0c 100644 --- a/plugins/samplesource/sdrdaemonsource/sdrdaemonsourcegui.h +++ b/plugins/samplesource/sdrdaemonsource/sdrdaemonsourcegui.h @@ -85,6 +85,7 @@ private: float m_avgNbRecovery; int m_nbOriginalBlocks; int m_nbFECBlocks; + int m_sampleBits; int m_samplesCount; std::size_t m_tickCount; diff --git a/plugins/samplesource/sdrdaemonsource/sdrdaemonsourcegui.ui b/plugins/samplesource/sdrdaemonsource/sdrdaemonsourcegui.ui index 65506f809..837506fe2 100644 --- a/plugins/samplesource/sdrdaemonsource/sdrdaemonsourcegui.ui +++ b/plugins/samplesource/sdrdaemonsource/sdrdaemonsourcegui.ui @@ -373,6 +373,16 @@ + + + + Sample size (bits) + + + 16b + + + diff --git a/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceinput.h b/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceinput.h index 44bc818e6..86dd05c90 100644 --- a/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceinput.h +++ b/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceinput.h @@ -140,6 +140,7 @@ public: float getAvgNbRecovery() const { return m_avgNbRecovery; } int getNbOriginalBlocksPerFrame() const { return m_nbOriginalBlocksPerFrame; } int getNbFECBlocksPerFrame() const { return m_nbFECBlocksPerFrame; } + int getSampleBits() const { return m_sampleBits; } static MsgReportSDRdaemonSourceStreamTiming* create(uint32_t tv_sec, uint32_t tv_usec, @@ -154,7 +155,8 @@ public: float avgNbOriginalBlocks, float avgNbRecovery, int nbOriginalBlocksPerFrame, - int nbFECBlocksPerFrame) + int nbFECBlocksPerFrame, + int sampleBits) { return new MsgReportSDRdaemonSourceStreamTiming(tv_sec, tv_usec, @@ -169,7 +171,8 @@ public: avgNbOriginalBlocks, avgNbRecovery, nbOriginalBlocksPerFrame, - nbFECBlocksPerFrame); + nbFECBlocksPerFrame, + sampleBits); } protected: @@ -187,6 +190,7 @@ public: float m_avgNbRecovery; int m_nbOriginalBlocksPerFrame; int m_nbFECBlocksPerFrame; + int m_sampleBits; MsgReportSDRdaemonSourceStreamTiming(uint32_t tv_sec, uint32_t tv_usec, @@ -201,7 +205,8 @@ public: float avgNbOriginalBlocks, float avgNbRecovery, int nbOriginalBlocksPerFrame, - int nbFECBlocksPerFrame) : + int nbFECBlocksPerFrame, + int sampleBits) : Message(), m_tv_sec(tv_sec), m_tv_usec(tv_usec), @@ -216,7 +221,8 @@ public: m_avgNbOriginalBlocks(avgNbOriginalBlocks), m_avgNbRecovery(avgNbRecovery), m_nbOriginalBlocksPerFrame(nbOriginalBlocksPerFrame), - m_nbFECBlocksPerFrame(nbFECBlocksPerFrame) + m_nbFECBlocksPerFrame(nbFECBlocksPerFrame), + m_sampleBits(sampleBits) { } }; diff --git a/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceudphandler.cpp b/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceudphandler.cpp index 5577e55d5..9402b7a79 100644 --- a/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceudphandler.cpp +++ b/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceudphandler.cpp @@ -307,6 +307,7 @@ void SDRdaemonSourceUDPHandler::tick() int minNbOriginalBlocks = m_sdrDaemonBuffer.getMinOriginalBlocks(); int nbOriginalBlocks = m_sdrDaemonBuffer.getCurrentMeta().m_nbOriginalBlocks; int nbFECblocks = m_sdrDaemonBuffer.getCurrentMeta().m_nbFECBlocks; + int sampleBits = m_sdrDaemonBuffer.getCurrentMeta().m_sampleBits; //framesDecodingStatus = (minNbOriginalBlocks == nbOriginalBlocks ? 2 : (minNbOriginalBlocks < nbOriginalBlocks - nbFECblocks ? 0 : 1)); if (minNbBlocks < nbOriginalBlocks) { @@ -331,7 +332,8 @@ void SDRdaemonSourceUDPHandler::tick() m_sdrDaemonBuffer.getAvgOriginalBlocks(), m_sdrDaemonBuffer.getAvgNbRecovery(), nbOriginalBlocks, - nbFECblocks); + nbFECblocks, + sampleBits); m_outputMessageQueueToGUI->push(report); }