diff options
author | schmirl <schmirl> | 2007-04-24 11:23:16 +0000 |
---|---|---|
committer | schmirl <schmirl> | 2007-04-24 11:23:16 +0000 |
commit | 518886b08b5913cf8278f69905e7981424d46825 (patch) | |
tree | c03de260d1c8ec9c769f8a3197e3708cfd6a8ff2 /client/filter.h | |
parent | 52bf110aa9108dee206463c33a03bf55c3be3534 (diff) | |
download | vdr-plugin-streamdev-518886b08b5913cf8278f69905e7981424d46825.tar.gz vdr-plugin-streamdev-518886b08b5913cf8278f69905e7981424d46825.tar.bz2 |
client_filter-data-handling.patch by Petri Hintukainen
- regonize PUSI flag in TS packets (bullet-proof section start+end indicator)
- Use own TS buffer to read directly from socket, no need for ring buffer anymore
- Re-activate all active filters after re-connection to server
- Simplify thread start/stop/running detection to current VDR style
- Update "filter closed by VDR" detection (datagram sockets
return different errno's than pipes)
- Deliver data to first matching and active filter (do not drop data if first
matching filter has been closed, there is quite likely new filter for it)
- Add disconnect detection to avoid 100% CPU usage in cTSBuffer::Action()
Modified Files:
client/filter.c client/filter.h
Diffstat (limited to 'client/filter.h')
-rw-r--r-- | client/filter.h | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/client/filter.h b/client/filter.h index 04e8c75..e0a1575 100644 --- a/client/filter.h +++ b/client/filter.h @@ -1,5 +1,5 @@ /* - * $Id: filter.h,v 1.3 2007/04/23 12:52:28 schmirl Exp $ + * $Id: filter.h,v 1.4 2007/04/24 11:23:16 schmirl Exp $ */ #ifndef VDR_STREAMDEV_FILTER_H @@ -12,26 +12,25 @@ #include <vdr/tools.h> #include <vdr/thread.h> -class cRingBufferLinear; 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 |