mirror of
https://github.com/f4exb/sdrangel.git
synced 2025-08-03 06:22:25 -04:00
Demod DATV: improve UDP TS output detection
This commit is contained in:
parent
ce007419e8
commit
002f5e8af3
@ -162,7 +162,6 @@ bool DATVDemodSink::udpRunning()
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool udpRunning = r_videoplayer->isUDPRunning();
|
bool udpRunning = r_videoplayer->isUDPRunning();
|
||||||
r_videoplayer->resetUDPRunning();
|
|
||||||
|
|
||||||
return udpRunning;
|
return udpRunning;
|
||||||
}
|
}
|
||||||
@ -879,6 +878,7 @@ void DATVDemodSink::InitDATVFramework()
|
|||||||
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
r_videoplayer->setSymbolRate(m_settings.m_symbolRate);
|
||||||
m_blnDVBInitialized = true;
|
m_blnDVBInitialized = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1212,6 +1212,7 @@ void DATVDemodSink::InitDATVS2Framework()
|
|||||||
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
r_videoplayer->setSymbolRate(m_settings.m_symbolRate);
|
||||||
m_blnDVBInitialized = true;
|
m_blnDVBInitialized = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1419,8 +1420,19 @@ void DATVDemodSink::applySettings(const DATVDemodSettings& settings, bool force)
|
|||||||
m_nco.setFreq(-(float) settings.m_centerFrequency, (float) m_channelSampleRate);
|
m_nco.setFreq(-(float) settings.m_centerFrequency, (float) m_channelSampleRate);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((m_settings.m_udpTS != settings.m_udpTS) || force) {
|
if ((m_settings.m_udpTS != settings.m_udpTS) || force)
|
||||||
|
{
|
||||||
m_udpStream.setActive(settings.m_udpTS);
|
m_udpStream.setActive(settings.m_udpTS);
|
||||||
|
|
||||||
|
if (r_videoplayer && !settings.m_udpTS) {
|
||||||
|
r_videoplayer->resetUDPRunning();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((m_settings.m_symbolRate != settings.m_symbolRate) || force) {
|
||||||
|
if (r_videoplayer) {
|
||||||
|
r_videoplayer->setSymbolRate(settings.m_symbolRate);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((m_settings.m_udpTSAddress != settings.m_udpTSAddress) || force) {
|
if ((m_settings.m_udpTSAddress != settings.m_udpTSAddress) || force) {
|
||||||
|
@ -42,7 +42,9 @@ template<typename T> struct datvvideoplayer: runnable
|
|||||||
in(_in),
|
in(_in),
|
||||||
m_videoStream(videoStream),
|
m_videoStream(videoStream),
|
||||||
m_udpStream(udpStream),
|
m_udpStream(udpStream),
|
||||||
m_atomicUDPRunning(0)
|
m_atomicUDPRunning(0),
|
||||||
|
m_count(0),
|
||||||
|
m_sr(1500000)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -50,7 +52,18 @@ template<typename T> struct datvvideoplayer: runnable
|
|||||||
{
|
{
|
||||||
int size = in.readable() * sizeof(T);
|
int size = in.readable() * sizeof(T);
|
||||||
|
|
||||||
if (!size) {
|
if (!size)
|
||||||
|
{
|
||||||
|
if (m_count == 0)
|
||||||
|
{
|
||||||
|
#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)
|
||||||
|
m_atomicUDPRunning.storeRelaxed(0);
|
||||||
|
#else
|
||||||
|
m_atomicUDPRunning.store(0);
|
||||||
|
#endif
|
||||||
|
} else {
|
||||||
|
m_count--;
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -62,6 +75,8 @@ template<typename T> struct datvvideoplayer: runnable
|
|||||||
#else
|
#else
|
||||||
m_atomicUDPRunning.store(m_udpStream->isActive() && (size > 0) ? 1 : 0);
|
m_atomicUDPRunning.store(m_udpStream->isActive() && (size > 0) ? 1 : 0);
|
||||||
#endif
|
#endif
|
||||||
|
m_count = m_sr / 10000;
|
||||||
|
|
||||||
if (m_videoStream)
|
if (m_videoStream)
|
||||||
{
|
{
|
||||||
nw = m_videoStream->pushData((const char *) in.rd(), size);
|
nw = m_videoStream->pushData((const char *) in.rd(), size);
|
||||||
@ -114,11 +129,18 @@ template<typename T> struct datvvideoplayer: runnable
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void setSymbolRate(unsigned int sr)
|
||||||
|
{
|
||||||
|
m_sr = sr;
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
pipereader<T> in;
|
pipereader<T> in;
|
||||||
DATVideostream *m_videoStream;
|
DATVideostream *m_videoStream;
|
||||||
DATVUDPStream *m_udpStream;
|
DATVUDPStream *m_udpStream;
|
||||||
QAtomicInt m_atomicUDPRunning;
|
QAtomicInt m_atomicUDPRunning;
|
||||||
|
unsigned int m_count;
|
||||||
|
unsigned int m_sr; // Symbol rate in S/s used for UDP running detection
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user