MythTV  master
Public Member Functions | Static Public Member Functions | Public Attributes | Private Member Functions | Private Attributes | Static Private Attributes | Friends | List of all members
SatIPStreamHandler Class Reference

#include <satipstreamhandler.h>

Inheritance diagram for SatIPStreamHandler:
Inheritance graph
[legend]
Collaboration diagram for SatIPStreamHandler:
Collaboration graph
[legend]

Public Member Functions

void AddListener (MPEGStreamData *data, bool=false, bool=false, const QString &output_file=QString()) override
 
bool UpdateFilters () override
 
bool Tune (const DTVMultiplex &tuning)
 
bool HasLock ()
 
int GetSignalStrength ()
 
void SetSigmonValues (bool lock, int level)
 
- Public Member Functions inherited from StreamHandler
virtual void RemoveListener (MPEGStreamData *data)
 
bool IsRunning (void) const
 
bool HasError (void) const
 
virtual bool AddNamedOutputFile (const QString &filename)
 Called with _listener_lock locked just after adding new output file. More...
 
virtual void RemoveNamedOutputFile (const QString &filename)
 Called with _listener_lock locked just before removing old output file. More...
 

Static Public Member Functions

static SatIPStreamHandlerGet (const QString &devname, int inputid)
 
static void Return (SatIPStreamHandler *&ref, int inputid)
 
static uint GetUDPReceiveBufferSize (QUdpSocket *socket)
 Get receive buffer size of UDP socket. More...
 
static uint SetUDPReceiveBufferSize (QUdpSocket *socket, uint rcvbuffersize)
 Set receive buffer size of UDP socket. More...
 

Public Attributes

int m_inputId {0}
 
int m_satipsrc {1}
 
QUdpSocket * m_dsocket {nullptr}
 
QUdpSocket * m_csocket {nullptr}
 
ushort m_dport {0}
 
ushort m_cport {0}
 
SatIPRTSPm_rtsp {nullptr}
 
SatIPDataReadHelperm_dataReadHelper {nullptr}
 
SatIPControlReadHelperm_controlReadHelper {nullptr}
 

Private Member Functions

 SatIPStreamHandler (const QString &device, int inputid)
 
 ~SatIPStreamHandler () override
 
bool Open (void)
 
void Close (void)
 
void run (void) override
 Runs the Qt event loop unless we have a QRunnable, in which case we run the runnable run instead. More...
 

Private Attributes

DTVTunerType m_tunerType
 
QString m_device
 
uint m_frontend {UINT_MAX}
 
QUrl m_baseurl
 
QUrl m_tuningurl
 
QUrl m_oldtuningurl
 
bool m_setupinvoked {false}
 
QRecursiveMutex m_tunelock
 
QStringList m_oldpids
 
QMutex m_sigmonLock
 
bool m_hasLock {false}
 
int m_signalStrength {0}
 

Static Private Attributes

static QMap< QString, SatIPStreamHandler * > s_handlers
 
static QMap< QString, uints_handlersRefCnt
 
static QMutex s_handlersLock
 

Friends

class SatIPDataReadHelper
 

Additional Inherited Members

- Protected Types inherited from StreamHandler
using StreamDataList = QHash< MPEGStreamData *, QString >
 
- Protected Member Functions inherited from StreamHandler
 StreamHandler (QString device, int inputid)
 
 ~StreamHandler () override
 
void Start (void)
 
void Stop (void)
 
void SetRunning (bool running, bool using_buffering, bool using_section_reader)
 
bool AddPIDFilter (PIDInfo *info)
 
bool RemovePIDFilter (uint pid)
 
bool RemoveAllPIDFilters (void)
 
void UpdateListeningForEIT (void)
 
bool UpdateFiltersFromStreamData (void)
 
virtual void CycleFiltersByPriority ()
 
PIDPriority GetPIDPriority (uint pid) const
 
void ReaderPaused (int fd) override
 
void PriorityEvent (int fd) override
 
virtual PIDInfoCreatePIDInfo (uint pid, uint stream_type, int pes_type)
 
void WriteMPTS (const unsigned char *buffer, uint len)
 Write out a copy of the raw MPTS. More...
 
virtual void SetRunningDesired (bool desired)
 At minimum this sets _running_desired, this may also send signals to anything that might be blocking the run() loop. More...
 
- Protected Member Functions inherited from MThread
int exec (void)
 Enters the qt event loop. call exit or quit to exit thread. More...
 
 MThread (const QString &objectName)
 Standard constructor. More...
 
 MThread (const QString &objectName, QRunnable *runnable)
 Use this constructor if you want the default run() method to run the QRunnable's run() method instead of entering the Qt event loop. More...
 
virtual ~MThread ()
 
 MThread (const MThread &)=delete
 
MThreadoperator= (const MThread &)=delete
 
void RunProlog (void)
 Sets up a thread, call this if you reimplement run(). More...
 
void RunEpilog (void)
 Cleans up a thread's resources, call this if you reimplement run(). More...
 
QThread * qthread (void)
 Returns the thread, this will always return the same pointer no matter how often you restart the thread. More...
 
void setObjectName (const QString &name)
 
QString objectName (void) const
 
void setPriority (QThread::Priority priority)
 
QThread::Priority priority (void) const
 
bool isFinished (void) const
 
bool isRunning (void) const
 
void setStackSize (uint stackSize)
 
uint stackSize (void) const
 
void exit (int retcode=0)
 Use this to exit from the thread if you are using a Qt event loop. More...
 
void start (QThread::Priority p=QThread::InheritPriority)
 Tell MThread to start running the thread in the near future. More...
 
void terminate (void)
 Kill a thread unsafely. More...
 
void quit (void)
 calls exit(0) More...
 
bool wait (std::chrono::milliseconds time=std::chrono::milliseconds::max())
 Wait for the MThread to exit, with a maximum timeout. More...
 
- Protected Member Functions inherited from DeviceReaderCB
virtual ~DeviceReaderCB ()=default
 
- Static Protected Member Functions inherited from MThread
static void setTerminationEnabled (bool enabled=true)
 
static void usleep (std::chrono::microseconds time)
 
template<typename R , typename P >
static std::enable_if_t< std::chrono::treat_as_floating_point< R >::value, void > usleep (std::chrono::duration< R, P > time)
 
static void ThreadSetup (const QString &name)
 This is to be called on startup in those few threads that haven't been ported to MThread. More...
 
static void ThreadCleanup (void)
 This is to be called on exit in those few threads that haven't been ported to MThread. More...
 
static void Cleanup (void)
 This will print out all the running threads, call exit(1) on each and then wait up to 5 seconds total for all the threads to exit. More...
 
static void GetAllThreadNames (QStringList &list)
 
static void GetAllRunningThreadNames (QStringList &list)
 
- Protected Attributes inherited from StreamHandler
QString m_device
 
int m_inputId
 
bool m_needsBuffering {false}
 
bool m_allowSectionReader {false}
 
QMutex m_addRmLock
 
QMutex m_startStopLock
 
volatile bool m_runningDesired {false}
 
volatile bool m_bError {false}
 
bool m_running {false}
 
bool m_restarting {false}
 
bool m_usingBuffering {false}
 
bool m_usingSectionReader {false}
 
QWaitCondition m_runningStateChanged
 
QRecursiveMutex m_pidLock
 
std::vector< uintm_eitPids
 
PIDInfoMap m_pidInfo
 
uint m_openPidFilters {0}
 
bool m_filtersChanged {false}
 
MythTimer m_cycleTimer
 
ThreadedFileWriterm_mptsTfw {nullptr}
 
QSet< QString > m_mptsFiles
 
QString m_mptsBaseFile
 
QMutex m_mptsLock
 
QRecursiveMutex m_listenerLock
 
StreamDataList m_streamDataList
 
- Protected Attributes inherited from MThread
MThreadInternalm_thread {nullptr}
 
QRunnable * m_runnable {nullptr}
 
bool m_prologExecuted {true}
 
bool m_epilogExecuted {true}
 

Detailed Description

Definition at line 22 of file satipstreamhandler.h.

Constructor & Destructor Documentation

◆ SatIPStreamHandler()

SatIPStreamHandler::SatIPStreamHandler ( const QString &  device,
int  inputid 
)
explicitprivate

Definition at line 108 of file satipstreamhandler.cpp.

Referenced by Get().

◆ ~SatIPStreamHandler()

SatIPStreamHandler::~SatIPStreamHandler ( )
overrideprivate

Definition at line 234 of file satipstreamhandler.cpp.

Member Function Documentation

◆ Get()

SatIPStreamHandler * SatIPStreamHandler::Get ( const QString &  devname,
int  inputid 
)
static

◆ Return()

void SatIPStreamHandler::Return ( SatIPStreamHandler *&  ref,
int  inputid 
)
static

◆ AddListener()

void SatIPStreamHandler::AddListener ( MPEGStreamData data,
bool  = false,
bool  = false,
const QString &  output_file = QString() 
)
inlineoverridevirtual

◆ UpdateFilters()

bool SatIPStreamHandler::UpdateFilters ( )
overridevirtual

Reimplemented from StreamHandler.

Definition at line 242 of file satipstreamhandler.cpp.

Referenced by run().

◆ Tune()

bool SatIPStreamHandler::Tune ( const DTVMultiplex tuning)

Definition at line 353 of file satipstreamhandler.cpp.

Referenced by SatIPChannel::Tune().

◆ Open()

bool SatIPStreamHandler::Open ( void  )
private

Definition at line 447 of file satipstreamhandler.cpp.

◆ Close()

void SatIPStreamHandler::Close ( void  )
private

Definition at line 485 of file satipstreamhandler.cpp.

◆ run()

void SatIPStreamHandler::run ( void  )
overrideprivatevirtual

Runs the Qt event loop unless we have a QRunnable, in which case we run the runnable run instead.

Note
If you override this method you must call RunProlog before you do any work and RunEpilog before you exit the run method.

Reimplemented from MThread.

Definition at line 287 of file satipstreamhandler.cpp.

◆ HasLock()

bool SatIPStreamHandler::HasLock ( )

Definition at line 492 of file satipstreamhandler.cpp.

Referenced by SatIPSignalMonitor::UpdateValues().

◆ GetSignalStrength()

int SatIPStreamHandler::GetSignalStrength ( )

Definition at line 498 of file satipstreamhandler.cpp.

Referenced by SatIPSignalMonitor::UpdateValues().

◆ SetSigmonValues()

void SatIPStreamHandler::SetSigmonValues ( bool  lock,
int  level 
)

Definition at line 504 of file satipstreamhandler.cpp.

Referenced by SatIPControlReadHelper::ReadPending().

◆ GetUDPReceiveBufferSize()

uint SatIPStreamHandler::GetUDPReceiveBufferSize ( QUdpSocket *  socket)
static

Get receive buffer size of UDP socket.

Parameters
socketSocket
Returns
Actual buffer size

Note that the size returned by ReceiverBufferSizeSocketOption is twice the actual buffer size hence the divide by two.

Definition at line 727 of file satipstreamhandler.cpp.

Referenced by SetUDPReceiveBufferSize().

◆ SetUDPReceiveBufferSize()

uint SatIPStreamHandler::SetUDPReceiveBufferSize ( QUdpSocket *  socket,
uint  rcvbuffersize 
)
static

Set receive buffer size of UDP socket.

Parameters
socketSocket
rcvbuffersizeRequested buffer size in bytes
Returns
Actual buffer size

Set the UDP buffer to the requested buffer size if the requested buffer size is larger than the current buffer size.

Definition at line 742 of file satipstreamhandler.cpp.

Referenced by SatIPStreamHandler().

Friends And Related Function Documentation

◆ SatIPDataReadHelper

friend class SatIPDataReadHelper
friend

Definition at line 24 of file satipstreamhandler.h.

Referenced by SatIPStreamHandler().

Member Data Documentation

◆ s_handlers

QMap< QString, SatIPStreamHandler * > SatIPStreamHandler::s_handlers
staticprivate

Definition at line 51 of file satipstreamhandler.h.

Referenced by Get(), and Return().

◆ s_handlersRefCnt

QMap< QString, uint > SatIPStreamHandler::s_handlersRefCnt
staticprivate

Definition at line 52 of file satipstreamhandler.h.

Referenced by Get(), and Return().

◆ s_handlersLock

QMutex SatIPStreamHandler::s_handlersLock
staticprivate

Definition at line 53 of file satipstreamhandler.h.

Referenced by Get(), and Return().

◆ m_inputId

int SatIPStreamHandler::m_inputId {0}

Definition at line 56 of file satipstreamhandler.h.

Referenced by SatIPStreamHandler().

◆ m_satipsrc

int SatIPStreamHandler::m_satipsrc {1}

Definition at line 57 of file satipstreamhandler.h.

Referenced by SatIPChannel::Tune(), and Tune().

◆ m_tunerType

DTVTunerType SatIPStreamHandler::m_tunerType
private

Definition at line 60 of file satipstreamhandler.h.

Referenced by Open(), and Tune().

◆ m_device

QString SatIPStreamHandler::m_device
private

Definition at line 61 of file satipstreamhandler.h.

Referenced by Open(), Return(), and ~SatIPStreamHandler().

◆ m_frontend

uint SatIPStreamHandler::m_frontend {UINT_MAX}
private

Definition at line 62 of file satipstreamhandler.h.

Referenced by Open(), and Tune().

◆ m_baseurl

QUrl SatIPStreamHandler::m_baseurl
private

Definition at line 63 of file satipstreamhandler.h.

Referenced by Close(), Open(), and Tune().

◆ m_tuningurl

QUrl SatIPStreamHandler::m_tuningurl
private

Definition at line 64 of file satipstreamhandler.h.

Referenced by run(), and Tune().

◆ m_oldtuningurl

QUrl SatIPStreamHandler::m_oldtuningurl
private

Definition at line 65 of file satipstreamhandler.h.

Referenced by run(), and Tune().

◆ m_setupinvoked

bool SatIPStreamHandler::m_setupinvoked {false}
private

Definition at line 66 of file satipstreamhandler.h.

Referenced by run(), and Tune().

◆ m_tunelock

QRecursiveMutex SatIPStreamHandler::m_tunelock
private

Definition at line 67 of file satipstreamhandler.h.

Referenced by run(), and Tune().

◆ m_oldpids

QStringList SatIPStreamHandler::m_oldpids
private

Definition at line 68 of file satipstreamhandler.h.

Referenced by Tune(), and UpdateFilters().

◆ m_dsocket

QUdpSocket* SatIPStreamHandler::m_dsocket {nullptr}

Definition at line 71 of file satipstreamhandler.h.

Referenced by SatIPStreamHandler().

◆ m_csocket

QUdpSocket* SatIPStreamHandler::m_csocket {nullptr}

Definition at line 72 of file satipstreamhandler.h.

Referenced by SatIPStreamHandler().

◆ m_dport

ushort SatIPStreamHandler::m_dport {0}

Definition at line 73 of file satipstreamhandler.h.

Referenced by run(), SatIPStreamHandler(), and Tune().

◆ m_cport

ushort SatIPStreamHandler::m_cport {0}

Definition at line 74 of file satipstreamhandler.h.

Referenced by run(), SatIPStreamHandler(), and Tune().

◆ m_rtsp

SatIPRTSP* SatIPStreamHandler::m_rtsp {nullptr}

Definition at line 77 of file satipstreamhandler.h.

Referenced by Close(), run(), SatIPStreamHandler(), Tune(), and UpdateFilters().

◆ m_dataReadHelper

SatIPDataReadHelper* SatIPStreamHandler::m_dataReadHelper {nullptr}

Definition at line 78 of file satipstreamhandler.h.

Referenced by SatIPStreamHandler(), and ~SatIPStreamHandler().

◆ m_controlReadHelper

SatIPControlReadHelper* SatIPStreamHandler::m_controlReadHelper {nullptr}

Definition at line 79 of file satipstreamhandler.h.

Referenced by SatIPStreamHandler(), and ~SatIPStreamHandler().

◆ m_sigmonLock

QMutex SatIPStreamHandler::m_sigmonLock
private

Definition at line 87 of file satipstreamhandler.h.

Referenced by GetSignalStrength(), HasLock(), and SetSigmonValues().

◆ m_hasLock

bool SatIPStreamHandler::m_hasLock {false}
private

Definition at line 88 of file satipstreamhandler.h.

Referenced by HasLock(), and SetSigmonValues().

◆ m_signalStrength

int SatIPStreamHandler::m_signalStrength {0}
private

Definition at line 89 of file satipstreamhandler.h.

Referenced by GetSignalStrength(), and SetSigmonValues().


The documentation for this class was generated from the following files: