00001 // -*- Mode: c++ -*- 00002 00003 #ifndef _IPTVSIGNALMONITOR_H_ 00004 #define _IPTVSIGNALMONITOR_H_ 00005 00006 #include "dtvsignalmonitor.h" 00007 #include "mthread.h" 00008 00009 class IPTVChannel; 00010 class IPTVSignalMonitor; 00011 00012 class IPTVTableMonitorThread : public MThread 00013 { 00014 public: 00015 IPTVTableMonitorThread(IPTVSignalMonitor *p) : 00016 MThread("IPTVTableMonitor"), m_parent(p) { start(); } 00017 virtual ~IPTVTableMonitorThread() { wait(); m_parent = NULL; } 00018 virtual void run(void); 00019 private: 00020 IPTVSignalMonitor *m_parent; 00021 }; 00022 00023 class IPTVSignalMonitor : public DTVSignalMonitor, public TSDataListener 00024 { 00025 friend class IPTVTableMonitorThread; 00026 public: 00027 IPTVSignalMonitor(int db_cardnum, IPTVChannel *_channel, 00028 uint64_t _flags = 0); 00029 virtual ~IPTVSignalMonitor(); 00030 00031 void Stop(void); 00032 bool HasExtraSlowTuning(void) const { return true; } 00033 bool IsAllGood(void) const; 00034 00035 // implements TSDataListener 00036 void AddData(const unsigned char *data, unsigned int dataSize); 00037 00038 protected: 00039 IPTVSignalMonitor(void); 00040 IPTVSignalMonitor(const IPTVSignalMonitor&); 00041 00042 virtual void UpdateValues(void); 00043 00044 void RunTableMonitor(void); 00045 00046 IPTVChannel *GetChannel(void); 00047 00048 protected: 00049 volatile bool dtvMonitorRunning; 00050 IPTVTableMonitorThread *tableMonitorThread; 00051 00052 private: 00053 mutable bool m_gotlock; 00054 }; 00055 00056 #endif // _IPTVSIGNALMONITOR_H_
1.6.3