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;
17 friend class eDVBCAService;
18 Signal1<void, int> m_event;
23 DECLARE_REF(eDVBDemux);
24 eDVBDemux(int adapter, int demux);
26 RESULT createSectionReader(eMainloop *context, ePtr<iDVBSectionReader> &reader);
27 RESULT createTSRecorder(ePtr<iDVBTSRecorder> &recorder);
28 RESULT getMPEGDecoder(ePtr<iTSMPEGDecoder> &reader);
29 RESULT getSTC(pts_t &pts);
30 RESULT getCADemuxID(uint8_t &id) { id = demux; return 0; }
32 RESULT connectEvent(const Slot1<void,int> &event, ePtr<eConnection> &conn);
35 class eDVBSectionReader: public iDVBSectionReader, public Object
37 DECLARE_REF(eDVBSectionReader);
40 Signal1<void, const __u8*> read;
41 ePtr<eDVBDemux> demux;
45 eSocketNotifier *notifier;
48 eDVBSectionReader(eDVBDemux *demux, eMainloop *context, RESULT &res);
49 virtual ~eDVBSectionReader();
50 RESULT start(const eDVBSectionFilterMask &mask);
52 RESULT connectRead(const Slot1<void,const __u8*> &read, ePtr<eConnection> &conn);
55 class eFilePushThread;
57 class eDVBTSRecorder: public iDVBTSRecorder, public Object
59 DECLARE_REF(eDVBTSRecorder);
61 eDVBTSRecorder(eDVBDemux *demux);
65 RESULT addPID(int pid);
66 RESULT removePID(int pid);
68 RESULT setFormat(int pid);
70 RESULT setTargetFD(int fd);
71 RESULT setBoundary(off_t max);
75 RESULT connectEvent(const Slot1<void,int> &event, ePtr<eConnection> &conn);
77 RESULT startPID(int pid);
78 void stopPID(int pid);
80 eFilePushThread *m_thread;
82 std::map<int,int> m_pids;
83 Signal1<void,int> m_event;
85 ePtr<eDVBDemux> m_demux;
87 int m_running, m_format, m_target_fd, m_source_fd;