|
MythTV master
|
#include <libmythtv/recorders/dvbstreamhandler.h>
Public Member Functions | |
| void | RetuneMonitor (void) |
| bool | IsRetuneAllowed (void) const |
| void | SetRetuneAllowed (bool allow, DTVSignalMonitor *sigmon, DVBChannel *dvbchan) |
Public Member Functions inherited from StreamHandler | |
| virtual void | AddListener (MPEGStreamData *data, bool allow_section_reader=false, bool needs_buffering=false, const QString &output_file=QString()) |
| 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... | |
| void | ReaderPaused (int fd) override |
| void | PriorityEvent (int fd) override |
| virtual void | ReaderPaused (int fd)=0 |
| virtual void | PriorityEvent (int fd)=0 |
Static Public Member Functions | |
| static DVBStreamHandler * | Get (const QString &devname, int inputid) |
| static void | Return (DVBStreamHandler *&ref, int inputid) |
Protected Member Functions | |
| void | run (void) override |
| Runs the Qt event loop unless we have a QRunnable, in which case we run the runnable run instead. More... | |
| void | CycleFiltersByPriority (void) override |
| PIDInfo * | CreatePIDInfo (uint pid, uint stream_type, int pes_type) override |
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 bool | UpdateFilters (void) |
| virtual void | CycleFiltersByPriority () |
| PIDPriority | GetPIDPriority (uint pid) const |
| virtual PIDInfo * | CreatePIDInfo (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 | |
| virtual void | run (void) |
| Runs the Qt event loop unless we have a QRunnable, in which case we run the runnable run instead. More... | |
| 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 | |
| MThread & | operator= (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 |
| virtual void | ReaderPaused (int fd)=0 |
| virtual void | PriorityEvent (int fd)=0 |
Private Member Functions | |
| DVBStreamHandler (const QString &dvb_device, int inputid) | |
| void | RunTS (void) |
| Uses TS filtering devices to read a DVB device for tables & data. More... | |
| void | RunSR (void) |
| Uses "Section" reader to read a DVB device for tables. More... | |
| bool | SupportsTSMonitoring (void) |
| Returns true if TS monitoring is supported. More... | |
Private Attributes | |
| QString | m_dvrDevPath |
| volatile bool | m_allowRetune { false } |
| DTVSignalMonitor * | m_sigMon { nullptr } |
| DVBChannel * | m_dvbChannel { nullptr } |
| DeviceReadBuffer * | m_drb { nullptr } |
Static Private Attributes | |
| static QMutex | s_rec_supportsTsMonitoringLock |
| static QMap< QString, bool > | s_recSupportsTsMonitoring |
| static QMutex | s_handlersLock |
| static QMap< QString, DVBStreamHandler * > | s_handlers |
| static QMap< QString, uint > | s_handlersRefCnt |
Additional Inherited Members | |
Protected Types inherited from StreamHandler | |
| using | StreamDataList = QHash< MPEGStreamData *, QString > |
Static Protected Member Functions inherited from MThread | |
| static void | setTerminationEnabled (bool enabled=true) |
| 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< uint > | m_eitPids |
| PIDInfoMap | m_pidInfo |
| uint | m_openPidFilters {0} |
| bool | m_filtersChanged {false} |
| MythTimer | m_cycleTimer |
| ThreadedFileWriter * | m_mptsTfw {nullptr} |
| QSet< QString > | m_mptsFiles |
| QString | m_mptsBaseFile |
| QMutex | m_mptsLock |
| QRecursiveMutex | m_listenerLock |
| StreamDataList | m_streamDataList |
Protected Attributes inherited from MThread | |
| MThreadInternal * | m_thread {nullptr} |
| QRunnable * | m_runnable {nullptr} |
| bool | m_prologExecuted {true} |
| bool | m_epilogExecuted {true} |
Definition at line 32 of file dvbstreamhandler.h.
|
explicitprivate |
Definition at line 112 of file dvbstreamhandler.cpp.
Referenced by Get().
|
inlineoverrideprotectedvirtual |
Reimplemented from StreamHandler.
Definition at line 61 of file dvbstreamhandler.h.
|
overrideprotectedvirtual |
Reimplemented from StreamHandler.
Definition at line 388 of file dvbstreamhandler.cpp.
|
static |
Definition at line 45 of file dvbstreamhandler.cpp.
Referenced by DVBSignalMonitor::DVBSignalMonitor(), and DVBRecorder::Open().
|
inline |
Definition at line 42 of file dvbstreamhandler.h.
Referenced by DVBSignalMonitor::UpdateValues().
| void DVBStreamHandler::RetuneMonitor | ( | void | ) |
Definition at line 513 of file dvbstreamhandler.cpp.
Referenced by RunSR(), RunTS(), and DVBSignalMonitor::UpdateValues().
|
static |
Definition at line 75 of file dvbstreamhandler.cpp.
Referenced by DVBRecorder::Close(), and DVBSignalMonitor::~DVBSignalMonitor().
|
overrideprotectedvirtual |
Runs the Qt event loop unless we have a QRunnable, in which case we run the runnable run instead.
Reimplemented from MThread.
Definition at line 119 of file dvbstreamhandler.cpp.
|
private |
Uses "Section" reader to read a DVB device for tables.
This currently only supports DVB streams, ATSC and the raw MPEG streams used by some cable and satelite providers is not supported.
Definition at line 307 of file dvbstreamhandler.cpp.
Referenced by run().
|
private |
Uses TS filtering devices to read a DVB device for tables & data.
This supports all types of MPEG based stream data, but is extremely slow with DVB over USB 1.0 devices which for efficiency reasons buffer a stream until a full block transfer buffer full of the requested tables is available. This takes a very long time when you are just waiting for a PAT or PMT table, and the buffer is hundreds of packets in size.
Definition at line 143 of file dvbstreamhandler.cpp.
Referenced by run().
| void DVBStreamHandler::SetRetuneAllowed | ( | bool | allow, |
| DTVSignalMonitor * | sigmon, | ||
| DVBChannel * | dvbchan | ||
| ) |
Definition at line 494 of file dvbstreamhandler.cpp.
Referenced by DVBSignalMonitor::Stop(), and DVBSignalMonitor::UpdateValues().
|
private |
Returns true if TS monitoring is supported.
NOTE: If you are using a DEC2000-t device you need to apply the patches provided by Peter Beutner for it, see http://www.gossamer-threads.com/lists/mythtv/dev/166172 These patches should make it in to Linux 2.6.15 or 2.6.16.
Definition at line 555 of file dvbstreamhandler.cpp.
Referenced by run().
|
private |
Definition at line 66 of file dvbstreamhandler.h.
Referenced by IsRetuneAllowed(), RetuneMonitor(), and SetRetuneAllowed().
|
private |
Definition at line 70 of file dvbstreamhandler.h.
Referenced by RunTS().
|
private |
Definition at line 69 of file dvbstreamhandler.h.
Referenced by RetuneMonitor(), and SetRetuneAllowed().
|
private |
Definition at line 65 of file dvbstreamhandler.h.
Referenced by RunTS(), and SupportsTSMonitoring().
|
private |
Definition at line 68 of file dvbstreamhandler.h.
Referenced by RetuneMonitor(), and SetRetuneAllowed().
|
staticprivate |
Definition at line 78 of file dvbstreamhandler.h.
|
staticprivate |
Definition at line 77 of file dvbstreamhandler.h.
|
staticprivate |
Definition at line 79 of file dvbstreamhandler.h.
|
staticprivate |
Definition at line 73 of file dvbstreamhandler.h.
Referenced by SupportsTSMonitoring().
|
staticprivate |
Definition at line 74 of file dvbstreamhandler.h.
Referenced by SupportsTSMonitoring().