3#ifndef IPTVSTREAMHANDLER_H
4#define IPTVSTREAMHANDLER_H
14#include <QNetworkAccessManager>
20static constexpr std::chrono::milliseconds
RTCP_TIMER { 10s };
90 const QString& output_file = QString()) override
99 void run(
void)
override;
104 std::array<IPTVStreamHandlerReadHelper*,IPTV_SOCKET_COUNT>
m_readHelpers {};
105 std::array<QHostAddress,IPTV_SOCKET_COUNT>
m_sender;
This class is intended to detect the presence of needed tables.
IPTVStreamHandler * m_parent
IPTVStreamHandlerReadHelper(IPTVStreamHandler *p, QUdpSocket *s, uint stream)
uint m_previousLastSequenceNumber
void SendRTCPReport(void)
void timerEvent(QTimerEvent *event) override
IPTVStreamHandlerWriteHelper(IPTVStreamHandler *p)
IPTVStreamHandler * m_parent
~IPTVStreamHandlerWriteHelper() override
uint m_lastSequenceNumber
std::array< QHostAddress, IPTV_SOCKET_COUNT > m_sender
IPTVStreamHandler(const IPTVTuningData &tuning, int inputid)
void run(void) override
Runs the Qt event loop unless we have a QRunnable, in which case we run the runnable run instead.
static QMap< QString, uint > s_iptvhandlers_refcnt
void timerEvent(QTimerEvent *)
std::array< QUdpSocket *, IPTV_SOCKET_COUNT > m_sockets
std::array< IPTVStreamHandlerReadHelper *, IPTV_SOCKET_COUNT > m_readHelpers
static IPTVStreamHandler * Get(const IPTVTuningData &tuning, int inputid)
static QMutex s_iptvhandlers_lock
static QMap< QString, IPTVStreamHandler * > s_iptvhandlers
static void Return(IPTVStreamHandler *&ref, int inputid)
IPTVStreamHandlerWriteHelper * m_writeHelper
void AddListener(MPEGStreamData *data, bool=false, bool=false, const QString &output_file=QString()) override
Encapsulates data about MPEG stream and emits events for each table.
virtual void AddListener(MPEGStreamData *data, bool allow_section_reader=false, bool needs_buffering=false, const QString &output_file=QString())
static constexpr std::chrono::milliseconds RTCP_TIMER
static constexpr size_t IPTV_SOCKET_COUNT