1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2025-06-24 13:05:21 -04:00

DATV demod: player refactoring: preliminary cleanup (2) and fix avio buffer size

This commit is contained in:
f4exb 2021-04-04 13:12:38 +02:00
parent 45b12a1c2d
commit 1c0aa9cd8e
5 changed files with 14 additions and 22 deletions

View File

@ -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))); ui->lblStatus->setText(QString("Data: %1B").arg(formatBytes(*intTotalReceived)));
m_intLastDecodedData = *intTotalReceived; m_intLastDecodedData = *intTotalReceived;

View File

@ -78,7 +78,7 @@ private slots:
void on_chkAllowDrift_clicked(); void on_chkAllowDrift_clicked();
void on_fullScreen_clicked(); void on_fullScreen_clicked();
void on_mouseEvent(QMouseEvent* obj); 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_StreamMetaDataChanged(DataTSMetaData2 *objMetaData);
void on_chkFastlock_clicked(); void on_chkFastlock_clicked();
void on_cmbFilter_currentIndexChanged(int index); void on_cmbFilter_currentIndexChanged(int index);

View File

@ -343,7 +343,7 @@ bool DATVideoRender::PreprocessStream()
bool DATVideoRender::OpenStream(DATVideostream *device) bool DATVideoRender::OpenStream(DATVideostream *device)
{ {
int ioBufferSize = 32768; int ioBufferSize = DATVideostream::m_defaultMemoryLimit;
unsigned char *ptrIOBuffer = nullptr; unsigned char *ptrIOBuffer = nullptr;
AVIOContext *ioCtx = nullptr; AVIOContext *ioCtx = nullptr;

View File

@ -25,7 +25,7 @@ DATVideostream::DATVideostream():
cleanUp(); cleanUp();
m_intTotalReceived = 0; m_intTotalReceived = 0;
m_intPacketReceived = 0; m_intPacketReceived = 0;
m_intMemoryLimit = DefaultMemoryLimit; m_intMemoryLimit = m_defaultMemoryLimit;
MultiThreaded = false; MultiThreaded = false;
ThreadTimeOut = -1; ThreadTimeOut = -1;
@ -50,14 +50,13 @@ void DATVideostream::cleanUp()
m_intBytesAvailable = 0; m_intBytesAvailable = 0;
m_intBytesWaiting = 0; m_intBytesWaiting = 0;
m_intQueueWaiting = 0;
m_intPercentBuffer = 0; m_intPercentBuffer = 0;
} }
void DATVideostream::resetTotalReceived() void DATVideostream::resetTotalReceived()
{ {
m_intTotalReceived = 0; 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) 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_objFIFO.enqueue(QByteArray(chrData,intSize));
m_intBytesAvailable = m_objFIFO.head().size(); m_intBytesAvailable = m_objFIFO.head().size();
m_intTotalReceived += intSize; m_intTotalReceived += intSize;
m_intQueueWaiting=m_objFIFO.count();
m_objMutex.unlock(); m_objMutex.unlock();
if ((m_objeventLoop.isRunning()) if (m_objeventLoop.isRunning()) {
&& (m_intQueueWaiting >= MinStackSize))
{
emit onDataAvailable(); emit onDataAvailable();
} }
if (m_intPacketReceived % MinStackSize == 1) if (m_intPacketReceived % m_minStackSize == 1)
{ {
m_intPercentBuffer = (100*m_intBytesWaiting)/m_intMemoryLimit; m_intPercentBuffer = (100*m_intBytesWaiting)/m_intMemoryLimit;
@ -96,7 +92,7 @@ int DATVideostream::pushData(const char * chrData, int intSize)
m_intPercentBuffer = 100; m_intPercentBuffer = 100;
} }
emit onDataPackets(&m_intQueueWaiting, &m_intBytesWaiting, &m_intPercentBuffer, &m_intTotalReceived); emit onDataPackets(&m_intBytesWaiting, &m_intPercentBuffer, &m_intTotalReceived);
} }
return intSize; return intSize;
@ -146,7 +142,7 @@ qint64 DATVideostream::readData(char *data, qint64 len)
m_objMutex.lock(); m_objMutex.lock();
//DATA in FIFO ? -> Waiting for DATA //DATA in FIFO ? -> Waiting for DATA
if ((m_objFIFO.isEmpty()) || (m_objFIFO.count()<MinStackSize)) if ((m_objFIFO.isEmpty()) || (m_objFIFO.count() < m_minStackSize))
{ {
m_objMutex.unlock(); m_objMutex.unlock();
@ -154,7 +150,7 @@ qint64 DATVideostream::readData(char *data, qint64 len)
{ {
intThreadLoop=0; intThreadLoop=0;
while ((m_objFIFO.isEmpty()) || (m_objFIFO.count() < MinStackSize)) while ((m_objFIFO.isEmpty()) || (m_objFIFO.count() < m_minStackSize))
{ {
QThread::msleep(5); QThread::msleep(5);
intThreadLoop++; intThreadLoop++;
@ -195,10 +191,9 @@ qint64 DATVideostream::readData(char *data, qint64 len)
m_intBytesWaiting -= intEffectiveLen; m_intBytesWaiting -= intEffectiveLen;
} }
m_intQueueWaiting = m_objFIFO.count();
m_intPercentBuffer = (100*m_intBytesWaiting) / m_intMemoryLimit; m_intPercentBuffer = (100*m_intBytesWaiting) / m_intMemoryLimit;
emit onDataPackets(&m_intQueueWaiting, &m_intBytesWaiting, &m_intPercentBuffer, &m_intTotalReceived); emit onDataPackets(&m_intBytesWaiting, &m_intPercentBuffer, &m_intTotalReceived);
//Next available DATA //Next available DATA
m_intBytesAvailable = m_objFIFO.head().size(); m_intBytesAvailable = m_objFIFO.head().size();

View File

@ -26,9 +26,6 @@
#include <QMutex> #include <QMutex>
#include <QThread> #include <QThread>
#define MinStackSize 4
#define DefaultMemoryLimit 2048000
class DATVideostream : public QIODevice class DATVideostream : public QIODevice
{ {
Q_OBJECT Q_OBJECT
@ -39,6 +36,8 @@ public:
bool MultiThreaded; bool MultiThreaded;
int ThreadTimeOut; int ThreadTimeOut;
static const int m_defaultMemoryLimit = 2048000;
static const int m_minStackSize = 4;
int pushData(const char * chrData, int intSize); int pushData(const char * chrData, int intSize);
void resetTotalReceived(); void resetTotalReceived();
@ -54,7 +53,7 @@ public:
signals: signals:
void onDataAvailable(); void onDataAvailable();
void onDataPackets(int *intDataPackets, int *intDataBytes, int *intPercentBuffer,qint64 *intTotalReceived); void onDataPackets(int *intDataBytes, int *intPercentBuffer,qint64 *intTotalReceived);
protected: protected:
@ -69,7 +68,6 @@ private:
int m_intMemoryLimit; int m_intMemoryLimit;
int m_intBytesAvailable; int m_intBytesAvailable;
int m_intBytesWaiting; int m_intBytesWaiting;
int m_intQueueWaiting;
int m_intPercentBuffer; int m_intPercentBuffer;
qint64 m_intTotalReceived; qint64 m_intTotalReceived;
qint64 m_intPacketReceived; qint64 m_intPacketReceived;