From 1c0aa9cd8e11e0c3c33559a54f94a7484055ab57 Mon Sep 17 00:00:00 2001 From: f4exb Date: Sun, 4 Apr 2021 13:12:38 +0200 Subject: [PATCH] DATV demod: player refactoring: preliminary cleanup (2) and fix avio buffer size --- plugins/channelrx/demoddatv/datvdemodgui.cpp | 3 +-- plugins/channelrx/demoddatv/datvdemodgui.h | 2 +- .../channelrx/demoddatv/datvideorender.cpp | 2 +- .../channelrx/demoddatv/datvideostream.cpp | 21 +++++++------------ plugins/channelrx/demoddatv/datvideostream.h | 8 +++---- 5 files changed, 14 insertions(+), 22 deletions(-) diff --git a/plugins/channelrx/demoddatv/datvdemodgui.cpp b/plugins/channelrx/demoddatv/datvdemodgui.cpp index 3b9a37fa7..e6670bbf4 100644 --- a/plugins/channelrx/demoddatv/datvdemodgui.cpp +++ b/plugins/channelrx/demoddatv/datvdemodgui.cpp @@ -726,9 +726,8 @@ QString DATVDemodGUI::formatBytes(qint64 intBytes) } -void DATVDemodGUI::on_StreamDataAvailable(int *intPackets, int *intBytes, int *intPercent, qint64 *intTotalReceived) +void DATVDemodGUI::on_StreamDataAvailable(int *intBytes, int *intPercent, qint64 *intTotalReceived) { - (void) intPackets; ui->lblStatus->setText(QString("Data: %1B").arg(formatBytes(*intTotalReceived))); m_intLastDecodedData = *intTotalReceived; diff --git a/plugins/channelrx/demoddatv/datvdemodgui.h b/plugins/channelrx/demoddatv/datvdemodgui.h index 10e7c079d..0532f36ca 100644 --- a/plugins/channelrx/demoddatv/datvdemodgui.h +++ b/plugins/channelrx/demoddatv/datvdemodgui.h @@ -78,7 +78,7 @@ private slots: void on_chkAllowDrift_clicked(); void on_fullScreen_clicked(); void on_mouseEvent(QMouseEvent* obj); - void on_StreamDataAvailable(int *intPackets, int *intBytes, int *intPercent, qint64 *intTotalReceived); + void on_StreamDataAvailable(int *intBytes, int *intPercent, qint64 *intTotalReceived); void on_StreamMetaDataChanged(DataTSMetaData2 *objMetaData); void on_chkFastlock_clicked(); void on_cmbFilter_currentIndexChanged(int index); diff --git a/plugins/channelrx/demoddatv/datvideorender.cpp b/plugins/channelrx/demoddatv/datvideorender.cpp index 381575ac5..077e138be 100644 --- a/plugins/channelrx/demoddatv/datvideorender.cpp +++ b/plugins/channelrx/demoddatv/datvideorender.cpp @@ -343,7 +343,7 @@ bool DATVideoRender::PreprocessStream() bool DATVideoRender::OpenStream(DATVideostream *device) { - int ioBufferSize = 32768; + int ioBufferSize = DATVideostream::m_defaultMemoryLimit; unsigned char *ptrIOBuffer = nullptr; AVIOContext *ioCtx = nullptr; diff --git a/plugins/channelrx/demoddatv/datvideostream.cpp b/plugins/channelrx/demoddatv/datvideostream.cpp index 387c12e0b..aa3727d99 100644 --- a/plugins/channelrx/demoddatv/datvideostream.cpp +++ b/plugins/channelrx/demoddatv/datvideostream.cpp @@ -25,7 +25,7 @@ DATVideostream::DATVideostream(): cleanUp(); m_intTotalReceived = 0; m_intPacketReceived = 0; - m_intMemoryLimit = DefaultMemoryLimit; + m_intMemoryLimit = m_defaultMemoryLimit; MultiThreaded = false; ThreadTimeOut = -1; @@ -50,14 +50,13 @@ void DATVideostream::cleanUp() m_intBytesAvailable = 0; m_intBytesWaiting = 0; - m_intQueueWaiting = 0; m_intPercentBuffer = 0; } void DATVideostream::resetTotalReceived() { m_intTotalReceived = 0; - emit onDataPackets(&m_intQueueWaiting, &m_intBytesWaiting, &m_intPercentBuffer, &m_intTotalReceived); + emit onDataPackets(&m_intBytesWaiting, &m_intPercentBuffer, &m_intTotalReceived); } int DATVideostream::pushData(const char * chrData, int intSize) @@ -78,17 +77,14 @@ int DATVideostream::pushData(const char * chrData, int intSize) m_objFIFO.enqueue(QByteArray(chrData,intSize)); m_intBytesAvailable = m_objFIFO.head().size(); m_intTotalReceived += intSize; - m_intQueueWaiting=m_objFIFO.count(); m_objMutex.unlock(); - if ((m_objeventLoop.isRunning()) - && (m_intQueueWaiting >= MinStackSize)) - { + if (m_objeventLoop.isRunning()) { emit onDataAvailable(); } - if (m_intPacketReceived % MinStackSize == 1) + if (m_intPacketReceived % m_minStackSize == 1) { m_intPercentBuffer = (100*m_intBytesWaiting)/m_intMemoryLimit; @@ -96,7 +92,7 @@ int DATVideostream::pushData(const char * chrData, int intSize) m_intPercentBuffer = 100; } - emit onDataPackets(&m_intQueueWaiting, &m_intBytesWaiting, &m_intPercentBuffer, &m_intTotalReceived); + emit onDataPackets(&m_intBytesWaiting, &m_intPercentBuffer, &m_intTotalReceived); } return intSize; @@ -146,7 +142,7 @@ qint64 DATVideostream::readData(char *data, qint64 len) m_objMutex.lock(); //DATA in FIFO ? -> Waiting for DATA - if ((m_objFIFO.isEmpty()) || (m_objFIFO.count() #include -#define MinStackSize 4 -#define DefaultMemoryLimit 2048000 - class DATVideostream : public QIODevice { Q_OBJECT @@ -39,6 +36,8 @@ public: bool MultiThreaded; int ThreadTimeOut; + static const int m_defaultMemoryLimit = 2048000; + static const int m_minStackSize = 4; int pushData(const char * chrData, int intSize); void resetTotalReceived(); @@ -54,7 +53,7 @@ public: signals: void onDataAvailable(); - void onDataPackets(int *intDataPackets, int *intDataBytes, int *intPercentBuffer,qint64 *intTotalReceived); + void onDataPackets(int *intDataBytes, int *intPercentBuffer,qint64 *intTotalReceived); protected: @@ -69,7 +68,6 @@ private: int m_intMemoryLimit; int m_intBytesAvailable; int m_intBytesWaiting; - int m_intQueueWaiting; int m_intPercentBuffer; qint64 m_intTotalReceived; qint64 m_intPacketReceived;