DVBStreamHandler Class Reference

#include <dvbstreamhandler.h>

Inheritance diagram for DVBStreamHandler:

ReaderPausedCB

List of all members.


Detailed Description

Definition at line 48 of file dvbstreamhandler.h.


Public Member Functions

void AddListener (MPEGStreamData *data, bool allow_section_reader, bool needs_buffering)
void RemoveListener (MPEGStreamData *data)
void RetuneMonitor (void)
bool IsRunning (void) const
bool IsRetuneAllowed (void) const
void SetRetuneAllowed (bool allow, DTVSignalMonitor *sigmon, DVBChannel *dvbchan)
virtual void ReaderPaused (int fd)

Static Public Member Functions

static DVBStreamHandlerGet (uint dvb_device_number)
static void Return (DVBStreamHandler *&ref)

Private Member Functions

 DVBStreamHandler (uint)
 ~DVBStreamHandler ()
void Start (void)
void Stop (void)
void Run (void)
void RunTS (void)
 Uses TS filtering devices to read a DVB device for tables & data.
void RunSR (void)
 Uses "Section" reader to read a DVB device for tables.
void UpdateListeningForEIT (void)
bool UpdateFiltersFromStreamData (void)
bool AddPIDFilter (PIDInfo *info)
bool RemovePIDFilter (uint pid)
bool RemoveAllPIDFilters (void)
void CycleFiltersByPriority (void)
void SetRunning (bool)
PIDPriority GetPIDPriority (uint pid) const
bool SupportsTSMonitoring (void)
 Returns true if TS monitoring is supported.

Private Attributes

uint _dvb_dev_num
QString _dvr_dev_path
bool _allow_section_reader
bool _needs_buffering
bool _allow_retune
QMutex _start_stop_lock
bool _running
QWaitCondition _running_state_changed
pthread_t _reader_thread
bool _using_section_reader
DeviceReadBuffer_device_read_buffer
DTVSignalMonitor_sigmon
DVBChannel_dvbchannel
QMutex _pid_lock
vector< uint_eit_pids
PIDInfoMap _pid_info
uint _open_pid_filters
MythTimer _cycle_timer
QMutex _listener_lock
vector< MPEGStreamData * > _stream_data_list

Static Private Attributes

static QMutex _rec_supports_ts_monitoring_lock
static QMap< uint, bool_rec_supports_ts_monitoring
static QMutex _handlers_lock
static QMap< uint,
DVBStreamHandler * > 
_handlers
static QMap< uint, uint_handlers_refcnt

Friends

void * run_dvb_stream_handler_thunk (void *param)

Constructor & Destructor Documentation

DVBStreamHandler::DVBStreamHandler ( uint  dvb_device_number  )  [private]

Definition at line 84 of file dvbstreamhandler.cpp.

Referenced by Get().

DVBStreamHandler::~DVBStreamHandler (  )  [private]

Definition at line 104 of file dvbstreamhandler.cpp.


Member Function Documentation

DVBStreamHandler * DVBStreamHandler::Get ( uint  dvb_device_number  )  [static]

Definition at line 37 of file dvbstreamhandler.cpp.

Referenced by DVBSignalMonitor::DVBSignalMonitor(), and DVBRecorder::Open().

void DVBStreamHandler::Return ( DVBStreamHandler *&  ref  )  [static]

Definition at line 57 of file dvbstreamhandler.cpp.

Referenced by DVBRecorder::Close(), and DVBSignalMonitor::~DVBSignalMonitor().

void DVBStreamHandler::AddListener ( MPEGStreamData data,
bool  allow_section_reader,
bool  needs_buffering 
)

void DVBStreamHandler::RemoveListener ( MPEGStreamData data  ) 

void DVBStreamHandler::RetuneMonitor ( void   ) 

Definition at line 723 of file dvbstreamhandler.cpp.

Referenced by RunSR(), RunTS(), and DVBSignalMonitor::UpdateValues().

bool DVBStreamHandler::IsRunning ( void   )  const [inline]

bool DVBStreamHandler::IsRetuneAllowed ( void   )  const [inline]

Definition at line 64 of file dvbstreamhandler.h.

Referenced by DVBSignalMonitor::UpdateValues().

void DVBStreamHandler::SetRetuneAllowed ( bool  allow,
DTVSignalMonitor sigmon,
DVBChannel dvbchan 
)

Definition at line 704 of file dvbstreamhandler.cpp.

Referenced by DVBSignalMonitor::Stop(), and DVBSignalMonitor::UpdateValues().

virtual void DVBStreamHandler::ReaderPaused ( int  fd  )  [inline, virtual]

Implements ReaderPausedCB.

Definition at line 71 of file dvbstreamhandler.h.

void DVBStreamHandler::Start ( void   )  [private]

Definition at line 177 of file dvbstreamhandler.cpp.

Referenced by AddListener().

void DVBStreamHandler::Stop ( void   )  [private]

Definition at line 199 of file dvbstreamhandler.cpp.

Referenced by RemoveListener(), and Start().

void DVBStreamHandler::Run ( void   )  [private]

Definition at line 212 of file dvbstreamhandler.cpp.

Referenced by run_dvb_stream_handler_thunk().

void DVBStreamHandler::RunTS ( void   )  [private]

Uses TS filtering devices to read a DVB device for tables & data.

This supports all types of MPEG based stream data, but is extreemely 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 234 of file dvbstreamhandler.cpp.

Referenced by Run().

void DVBStreamHandler::RunSR ( void   )  [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 369 of file dvbstreamhandler.cpp.

Referenced by Run().

void DVBStreamHandler::UpdateListeningForEIT ( void   )  [private]

Definition at line 616 of file dvbstreamhandler.cpp.

Referenced by UpdateFiltersFromStreamData().

bool DVBStreamHandler::UpdateFiltersFromStreamData ( void   )  [private]

Definition at line 646 of file dvbstreamhandler.cpp.

Referenced by RunSR(), and RunTS().

bool DVBStreamHandler::AddPIDFilter ( PIDInfo info  )  [private]

Definition at line 422 of file dvbstreamhandler.cpp.

Referenced by SupportsTSMonitoring(), and UpdateFiltersFromStreamData().

bool DVBStreamHandler::RemovePIDFilter ( uint  pid  )  [private]

bool DVBStreamHandler::RemoveAllPIDFilters ( void   )  [private]

Definition at line 599 of file dvbstreamhandler.cpp.

Referenced by RunSR(), and RunTS().

void DVBStreamHandler::CycleFiltersByPriority ( void   )  [private]

void DVBStreamHandler::SetRunning ( bool  is_running  )  [private]

Definition at line 932 of file dvbstreamhandler.cpp.

Referenced by Run(), RunTS(), and Stop().

PIDPriority DVBStreamHandler::GetPIDPriority ( uint  pid  )  const [private]

Definition at line 938 of file dvbstreamhandler.cpp.

Referenced by AddPIDFilter(), and CycleFiltersByPriority().

bool DVBStreamHandler::SupportsTSMonitoring ( void   )  [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 763 of file dvbstreamhandler.cpp.

Referenced by Run().


Friends And Related Function Documentation

void* run_dvb_stream_handler_thunk ( void *  param  )  [friend]

Definition at line 170 of file dvbstreamhandler.cpp.

Referenced by Start().


Member Data Documentation

Definition at line 98 of file dvbstreamhandler.h.

Referenced by RunTS(), and SupportsTSMonitoring().

Definition at line 99 of file dvbstreamhandler.h.

Referenced by AddListener(), RemoveListener(), Run(), and Start().

Definition at line 100 of file dvbstreamhandler.h.

Referenced by AddListener(), RunTS(), and Start().

Definition at line 101 of file dvbstreamhandler.h.

Referenced by IsRetuneAllowed(), RetuneMonitor(), and SetRetuneAllowed().

QMutex DVBStreamHandler::_start_stop_lock [mutable, private]

Definition at line 103 of file dvbstreamhandler.h.

Referenced by Start(), and Stop().

Definition at line 104 of file dvbstreamhandler.h.

Referenced by IsRunning(), and SetRunning().

QWaitCondition DVBStreamHandler::_running_state_changed [private]

Definition at line 105 of file dvbstreamhandler.h.

Referenced by SetRunning(), and Start().

Definition at line 106 of file dvbstreamhandler.h.

Referenced by Start(), and Stop().

Definition at line 107 of file dvbstreamhandler.h.

Referenced by CycleFiltersByPriority(), Run(), and Start().

Definition at line 108 of file dvbstreamhandler.h.

Referenced by RunTS(), Start(), and Stop().

Definition at line 109 of file dvbstreamhandler.h.

Referenced by RetuneMonitor(), and SetRetuneAllowed().

Definition at line 110 of file dvbstreamhandler.h.

Referenced by RetuneMonitor(), and SetRetuneAllowed().

QMutex DVBStreamHandler::_pid_lock [mutable, private]

vector<uint> DVBStreamHandler::_eit_pids [private]

Definition at line 113 of file dvbstreamhandler.h.

Referenced by Start(), and UpdateListeningForEIT().

Definition at line 115 of file dvbstreamhandler.h.

Referenced by CycleFiltersByPriority(), and RemovePIDFilter().

Definition at line 116 of file dvbstreamhandler.h.

Referenced by CycleFiltersByPriority(), and UpdateFiltersFromStreamData().

QMutex DVBStreamHandler::_listener_lock [mutable, private]

Definition at line 122 of file dvbstreamhandler.h.

Referenced by SupportsTSMonitoring().

Definition at line 123 of file dvbstreamhandler.h.

Referenced by SupportsTSMonitoring().

QMutex DVBStreamHandler::_handlers_lock [static, private]

Definition at line 126 of file dvbstreamhandler.h.

Referenced by Get(), and Return().

QMap< uint, DVBStreamHandler * > DVBStreamHandler::_handlers [static, private]

Definition at line 127 of file dvbstreamhandler.h.

Referenced by Get(), and Return().

QMap< uint, uint > DVBStreamHandler::_handlers_refcnt [static, private]

Definition at line 128 of file dvbstreamhandler.h.

Referenced by Get(), and Return().


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

Generated on Sat Dec 18 05:16:02 2010 for MythTV by  doxygen 1.5.5