4 #include <lib/dvb/idvb.h>
5 #include <lib/dvb/idemux.h>
7 class eDVBDemux: public iDVBDemux
12 friend class eDVBSectionReader;
13 friend class eDVBAudio;
14 friend class eDVBVideo;
16 friend class eDVBTSRecorder;
18 DECLARE_REF(eDVBDemux);
19 eDVBDemux(int adapter, int demux);
21 RESULT createSectionReader(eMainloop *context, ePtr<iDVBSectionReader> &reader);
22 RESULT createTSRecorder(ePtr<iDVBTSRecorder> &recorder);
23 RESULT getMPEGDecoder(ePtr<iTSMPEGDecoder> &reader);
24 RESULT getSTC(pts_t &pts);
27 class eDVBSectionReader: public iDVBSectionReader, public Object
29 DECLARE_REF(eDVBSectionReader);
32 Signal1<void, const __u8*> read;
33 ePtr<eDVBDemux> demux;
37 eSocketNotifier *notifier;
40 eDVBSectionReader(eDVBDemux *demux, eMainloop *context, RESULT &res);
41 virtual ~eDVBSectionReader();
42 RESULT start(const eDVBSectionFilterMask &mask);
44 RESULT connectRead(const Slot1<void,const __u8*> &read, ePtr<eConnection> &conn);
47 class eFilePushThread;
49 class eDVBTSRecorder: public iDVBTSRecorder, public Object
51 DECLARE_REF(eDVBTSRecorder);
53 eDVBTSRecorder(eDVBDemux *demux);
57 RESULT addPID(int pid);
58 RESULT removePID(int pid);
60 RESULT setFormat(int pid);
62 RESULT setTargetFD(int fd);
63 RESULT setBoundary(off_t max);
67 RESULT connectEvent(const Slot1<void,int> &event, ePtr<eConnection> &conn);
69 RESULT startPID(int pid);
70 void stopPID(int pid);
72 eFilePushThread *m_thread;
74 std::map<int,int> m_pids;
75 Signal1<void,int> m_event;
77 ePtr<eDVBDemux> m_demux;
79 int m_running, m_format, m_target_fd, m_source_fd;