4 #include <lib/dvb/idvb.h>
5 #include <lib/dvb/idemux.h>
7 class eDVBDemux: public iDVBDemux
9 DECLARE_REF(eDVBDemux);
14 eDVBDemux(int adapter, int demux);
17 RESULT setSourceFrontend(int fenum);
18 RESULT setSourcePVR(int pvrnum);
20 RESULT createSectionReader(eMainloop *context, ePtr<iDVBSectionReader> &reader);
21 RESULT createTSRecorder(ePtr<iDVBTSRecorder> &recorder);
22 RESULT getMPEGDecoder(ePtr<iTSMPEGDecoder> &reader);
23 RESULT getSTC(pts_t &pts, int num);
24 RESULT getCADemuxID(uint8_t &id) { id = demux; return 0; }
26 RESULT connectEvent(const Slot1<void,int> &event, ePtr<eConnection> &conn);
31 friend class eDVBSectionReader;
32 friend class eDVBAudio;
33 friend class eDVBVideo;
35 friend class eDVBTText;
36 friend class eDVBTSRecorder;
37 friend class eDVBCAService;
38 Signal1<void, int> m_event;
43 class eDVBSectionReader: public iDVBSectionReader, public Object
45 DECLARE_REF(eDVBSectionReader);
48 Signal1<void, const __u8*> read;
49 ePtr<eDVBDemux> demux;
53 eSocketNotifier *notifier;
56 eDVBSectionReader(eDVBDemux *demux, eMainloop *context, RESULT &res);
57 virtual ~eDVBSectionReader();
58 RESULT start(const eDVBSectionFilterMask &mask);
60 RESULT connectRead(const Slot1<void,const __u8*> &read, ePtr<eConnection> &conn);
63 class eDVBRecordFileThread;
65 class eDVBTSRecorder: public iDVBTSRecorder, public Object
67 DECLARE_REF(eDVBTSRecorder);
69 eDVBTSRecorder(eDVBDemux *demux);
73 RESULT addPID(int pid);
74 RESULT removePID(int pid);
76 RESULT setTimingPID(int pid);
78 RESULT setTargetFD(int fd);
79 RESULT setTargetFilename(const char *filename);
80 RESULT setBoundary(off_t max);
84 RESULT connectEvent(const Slot1<void,int> &event, ePtr<eConnection> &conn);
86 RESULT startPID(int pid);
87 void stopPID(int pid);
89 eDVBRecordFileThread *m_thread;
91 std::map<int,int> m_pids;
92 Signal1<void,int> m_event;
94 ePtr<eDVBDemux> m_demux;
96 int m_running, m_target_fd, m_source_fd;
97 std::string m_target_filename;