#ifndef __dvb_idemux_h #define __dvb_idemux_h #include class iDVBSectionReader: public iObject { public: virtual RESULT setBufferSize(int size)=0; virtual RESULT start(const eDVBSectionFilterMask &mask)=0; virtual RESULT stop()=0; virtual RESULT connectRead(const Slot1 &read, ePtr &conn)=0; virtual ~iDVBSectionReader() { }; }; class iDVBPESReader: public iObject { public: virtual RESULT setBufferSize(int size)=0; virtual RESULT start(int pid)=0; virtual RESULT stop()=0; virtual RESULT connectRead(const Slot2 &read, ePtr &conn)=0; virtual ~iDVBPESReader() { }; }; /* 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 setBufferSize(int size) = 0; virtual RESULT start() = 0; virtual RESULT addPID(int pid) = 0; virtual RESULT removePID(int pid) = 0; virtual RESULT setTimingPID(int pid, int type) = 0; virtual RESULT setTargetFD(int fd) = 0; /* for saving additional meta data. */ virtual RESULT setTargetFilename(const char *filename) = 0; virtual RESULT setBoundary(off_t max) = 0; virtual RESULT stop() = 0; virtual RESULT getCurrentPCR(pts_t &pcr) = 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