diff options
Diffstat (limited to 'client/filter.h')
-rw-r--r-- | client/filter.h | 45 |
1 files changed, 9 insertions, 36 deletions
diff --git a/client/filter.h b/client/filter.h index cb46bf0..e0a1575 100644 --- a/client/filter.h +++ b/client/filter.h @@ -1,5 +1,5 @@ /* - * $Id: filter.h,v 1.1.1.1 2004/12/30 22:44:04 lordjaxom Exp $ + * $Id: filter.h,v 1.4 2007/04/24 11:23:16 schmirl Exp $ */ #ifndef VDR_STREAMDEV_FILTER_H @@ -12,52 +12,25 @@ #include <vdr/tools.h> #include <vdr/thread.h> -class cRingBufferFrame; -class cRingBufferLinear; - -class cStreamdevFilter: public cListObject { -private: - uchar m_Buffer[4096]; - int m_Used; - int m_Pipe[2]; - u_short m_Pid; - u_char m_Tid; - u_char m_Mask; - cRingBufferFrame *m_RingBuffer; - -public: - cStreamdevFilter(u_short Pid, u_char Tid, u_char Mask); - virtual ~cStreamdevFilter(); - - bool Matches(u_short Pid, u_char Tid); - bool PutSection(const uchar *Data, int Length); - int ReadPipe(void) const { return m_Pipe[0]; } - - u_short Pid(void) const { return m_Pid; } - u_char Tid(void) const { return m_Tid; } - u_char Mask(void) const { return m_Mask; } - -}; - -inline bool cStreamdevFilter::Matches(u_short Pid, u_char Tid) { - return m_Pid == Pid && m_Tid == (Tid & m_Mask); -} +class cTSBuffer; +class cStreamdevFilter; class cStreamdevFilters: public cList<cStreamdevFilter>, public cThread { private: - bool m_Active; - cRingBufferLinear *m_RingBuffer; - + cTSBuffer *m_TSBuffer; + protected: virtual void Action(void); + void CarbageCollect(void); + + bool ReActivateFilters(void); public: cStreamdevFilters(void); virtual ~cStreamdevFilters(); + void SetConnection(int Handle); int OpenFilter(u_short Pid, u_char Tid, u_char Mask); - cStreamdevFilter *Matches(u_short Pid, u_char Tid); - void Put(const uchar *Data); }; # endif // VDRVERSNUM >= 10300 |