+class eFilePushThread;
+
+class eDVBTSRecorder: public iDVBTSRecorder, public Object
+{
+ DECLARE_REF(eDVBTSRecorder);
+public:
+ eDVBTSRecorder(eDVBDemux *demux);
+ ~eDVBTSRecorder();
+
+ RESULT start();
+ RESULT addPID(int pid);
+ RESULT removePID(int pid);
+
+ RESULT setFormat(int pid);
+
+ RESULT setTargetFD(int fd);
+ RESULT setBoundary(off_t max);
+
+ RESULT stop();
+
+ RESULT connectEvent(const Slot1<void,int> &event, ePtr<eConnection> &conn);
+private:
+ RESULT startPID(int pid);
+ void stopPID(int pid);
+
+ eFilePushThread *m_thread;
+
+ std::map<int,int> m_pids;
+ Signal1<void,int> m_event;
+
+ ePtr<eDVBDemux> m_demux;
+
+ int m_running, m_format, m_target_fd, m_source_fd;
+};
+