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

#include <libmythtv/recorders/hdhrstreamhandler.h>

Inheritance diagram for HDHRStreamHandler:
[legend]
Collaboration diagram for HDHRStreamHandler:
[legend]

Public Member Functions

void AddListener (MPEGStreamData *data, bool=false, bool=false, const QString &output_file=QString()) override
 
void GetTunerStatus (struct hdhomerun_tuner_status_t *status)
 
bool IsConnected (void) const
 
std::vector< DTVTunerTypeGetTunerTypes (void) const
 
bool TuneChannel (const QString &chanid)
 
bool TuneProgram (uint mpeg_prog_num)
 
bool TuneVChannel (const QString &vchn)
 
- 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 HDHRStreamHandlerGet (const QString &devname, int inputid, int majorid)
 
static void Return (HDHRStreamHandler *&ref, int inputid)
 

Private Member Functions

 HDHRStreamHandler (const QString &device, int inputid, int majorid)
 
bool Connect (void)
 
QString TunerGet (const QString &name)
 
QString TunerSet (const QString &name, const QString &value)
 
bool Open (void)
 
void Close (void)
 
void run (void) override
 Reads HDHomeRun socket for tables & data. More...
 
bool UpdateFilters (void) override
 

Private Attributes

hdhomerun_device_t * m_hdhomerunDevice {nullptr}
 
hdhomerun_device_selector_t * m_deviceSelector {nullptr}
 
int m_tuner {-1}
 
std::vector< DTVTunerTypem_tunerTypes
 
HDHRTuneMode m_tuneMode {hdhrTuneModeNone}
 
int m_majorId
 
QRecursiveMutex m_hdhrLock
 

Static Private Attributes

static QMutex s_handlersLock
 
static QMap< int, HDHRStreamHandler * > s_handlers
 
static QMap< int, uints_handlersRefCnt
 

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 47 of file hdhrstreamhandler.h.

Constructor & Destructor Documentation

◆ HDHRStreamHandler()

HDHRStreamHandler::HDHRStreamHandler ( const QString &  device,
int  inputid,
int  majorid 
)
explicitprivate

Definition at line 97 of file hdhrstreamhandler.cpp.

Referenced by Get().

Member Function Documentation

◆ Get()

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

◆ Return()

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

◆ AddListener()

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

Reimplemented from StreamHandler.

Definition at line 54 of file hdhrstreamhandler.h.

Referenced by HDHRRecorder::PauseAndWait(), HDHRRecorder::run(), and HDHRSignalMonitor::UpdateValues().

◆ GetTunerStatus()

void HDHRStreamHandler::GetTunerStatus ( struct hdhomerun_tuner_status_t *  status)

Definition at line 500 of file hdhrstreamhandler.cpp.

Referenced by HDHRSignalMonitor::UpdateValues().

◆ IsConnected()

bool HDHRStreamHandler::IsConnected ( void  ) const

Definition at line 507 of file hdhrstreamhandler.cpp.

Referenced by HDHRChannel::Open().

◆ GetTunerTypes()

std::vector<DTVTunerType> HDHRStreamHandler::GetTunerTypes ( void  ) const
inline

Definition at line 64 of file hdhrstreamhandler.h.

Referenced by HDHRChannel::Open().

◆ TuneChannel()

bool HDHRStreamHandler::TuneChannel ( const QString &  chanid)

Definition at line 512 of file hdhrstreamhandler.cpp.

Referenced by Close(), and HDHRChannel::Tune().

◆ TuneProgram()

bool HDHRStreamHandler::TuneProgram ( uint  mpeg_prog_num)

Definition at line 529 of file hdhrstreamhandler.cpp.

◆ TuneVChannel()

bool HDHRStreamHandler::TuneVChannel ( const QString &  vchn)

Definition at line 548 of file hdhrstreamhandler.cpp.

Referenced by HDHRChannel::Tune().

◆ Connect()

bool HDHRStreamHandler::Connect ( void  )
private

Definition at line 379 of file hdhrstreamhandler.cpp.

Referenced by Open().

◆ TunerGet()

QString HDHRStreamHandler::TunerGet ( const QString &  name)
private

Definition at line 418 of file hdhrstreamhandler.cpp.

Referenced by TuneChannel(), and TuneVChannel().

◆ TunerSet()

QString HDHRStreamHandler::TunerSet ( const QString &  name,
const QString &  value 
)
private

Definition at line 450 of file hdhrstreamhandler.cpp.

Referenced by TuneChannel(), TuneProgram(), TuneVChannel(), and UpdateFilters().

◆ Open()

bool HDHRStreamHandler::Open ( void  )
private

Definition at line 305 of file hdhrstreamhandler.cpp.

◆ Close()

void HDHRStreamHandler::Close ( void  )
private

Definition at line 364 of file hdhrstreamhandler.cpp.

Referenced by Return().

◆ run()

void HDHRStreamHandler::run ( void  )
overrideprivatevirtual

Reads HDHomeRun socket for tables & data.

Reimplemented from MThread.

Definition at line 108 of file hdhrstreamhandler.cpp.

◆ UpdateFilters()

bool HDHRStreamHandler::UpdateFilters ( void  )
overrideprivatevirtual

Reimplemented from StreamHandler.

Definition at line 235 of file hdhrstreamhandler.cpp.

Referenced by run().

Member Data Documentation

◆ m_hdhomerunDevice

hdhomerun_device_t* HDHRStreamHandler::m_hdhomerunDevice {nullptr}
private

Definition at line 87 of file hdhrstreamhandler.h.

Referenced by Close(), Connect(), GetTunerStatus(), IsConnected(), Open(), run(), TunerGet(), and TunerSet().

◆ m_deviceSelector

hdhomerun_device_selector_t* HDHRStreamHandler::m_deviceSelector {nullptr}
private

Definition at line 88 of file hdhrstreamhandler.h.

Referenced by Close(), and Connect().

◆ m_tuner

int HDHRStreamHandler::m_tuner {-1}
private

Definition at line 89 of file hdhrstreamhandler.h.

Referenced by Connect(), TunerGet(), and TunerSet().

◆ m_tunerTypes

std::vector<DTVTunerType> HDHRStreamHandler::m_tunerTypes
private

Definition at line 90 of file hdhrstreamhandler.h.

Referenced by GetTunerTypes(), and Open().

◆ m_tuneMode

HDHRTuneMode HDHRStreamHandler::m_tuneMode {hdhrTuneModeNone}
private

Definition at line 91 of file hdhrstreamhandler.h.

Referenced by run(), TuneChannel(), TuneProgram(), TuneVChannel(), and UpdateFilters().

◆ m_majorId

int HDHRStreamHandler::m_majorId
private

Definition at line 92 of file hdhrstreamhandler.h.

Referenced by Return().

◆ m_hdhrLock

QRecursiveMutex HDHRStreamHandler::m_hdhrLock
mutableprivate

Definition at line 94 of file hdhrstreamhandler.h.

Referenced by GetTunerStatus(), run(), TunerGet(), and TunerSet().

◆ s_handlersLock

QMutex HDHRStreamHandler::s_handlersLock
staticprivate

Definition at line 97 of file hdhrstreamhandler.h.

Referenced by Get(), and Return().

◆ s_handlers

QMap< int, HDHRStreamHandler * > HDHRStreamHandler::s_handlers
staticprivate

Definition at line 98 of file hdhrstreamhandler.h.

Referenced by Get(), and Return().

◆ s_handlersRefCnt

QMap< int, uint > HDHRStreamHandler::s_handlersRefCnt
staticprivate

Definition at line 99 of file hdhrstreamhandler.h.

Referenced by Get(), and Return().


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