From c617034514475f360e3415502f2d96f8623ecb07 Mon Sep 17 00:00:00 2001 From: Felix Domke Date: Fri, 6 May 2005 14:27:49 +0000 Subject: [PATCH] - add missing file --- lib/dvb/idemux.h | 83 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 lib/dvb/idemux.h diff --git a/lib/dvb/idemux.h b/lib/dvb/idemux.h new file mode 100644 index 00000000..9267d005 --- /dev/null +++ b/lib/dvb/idemux.h @@ -0,0 +1,83 @@ +#ifndef __dvb_idemux_h +#define __dvb_idemux_h + +#include + +#ifndef DMX_FILTER_SIZE +#define DMX_FILTER_SIZE 16 +#endif + +struct eDVBSectionFilterMask +{ + int pid; + /* mode is 0 for positive, 1 for negative filtering */ + __u8 data[DMX_FILTER_SIZE], mask[DMX_FILTER_SIZE], mode[DMX_FILTER_SIZE]; + enum { + rfCRC=1, + rfNoAbort=2 + }; + int flags; +}; + +struct eDVBTableSpec +{ + int pid, tid, tidext; + int version; + int timeout; /* timeout in ms */ + enum + { + tfInOrder=1, + /* + tfAnyVersion filter ANY version + 0 filter all EXCEPT given version (negative filtering) + tfThisVersion filter only THIS version + */ + tfAnyVersion=2, + tfThisVersion=4, + tfHaveTID=8, + tfHaveTIDExt=16, + tfCheckCRC=32, + tfHaveTimeout=64, + }; + int flags; +}; + +class iDVBSectionReader: public iObject +{ +public: + virtual RESULT start(const eDVBSectionFilterMask &mask)=0; + virtual RESULT stop()=0; + virtual RESULT connectRead(const Slot1 &read, ePtr &conn)=0; + virtual ~iDVBSectionReader() { }; +}; + + /* records a given set of pids into a file descriptor. */ + /* the FD must not be modified between start() and stop() ! */ +class iDVBTSRecorder: public iObject +{ +public: + virtual RESULT start() = 0; + virtual RESULT addPID(int pid) = 0; + virtual RESULT removePID(int pid) = 0; + + /* include timestamps? ... */ + virtual RESULT setFormat(int pid) = 0; + + virtual RESULT setTargetFD(int fd) = 0; + virtual RESULT setBoundary(off_t max) = 0; + + virtual RESULT stop() = 0; + + enum { + eventWriteError, + /* a write error has occured. data won't get lost if fd is writable after return. */ + /* you MUST respond with either stop() or fixing the problems, else you get the error */ + /* again. */ + eventReachedBoundary, + /* the programmed boundary was reached. you might set a new target fd. you can close the */ + /* old one. */ + }; + virtual RESULT connectEvent(const Slot1 &event, ePtr &conn)=0; +}; + +#endif -- 2.30.2