+class eDVBPESReader: public iDVBPESReader, public Object
+{
+ DECLARE_REF(eDVBPESReader);
+ int m_fd;
+ Signal2<void, const __u8*, int> m_read;
+ ePtr<eDVBDemux> m_demux;
+ int m_active;
+ void data(int);
+ ePtr<eSocketNotifier> m_notifier;
+public:
+ eDVBPESReader(eDVBDemux *demux, eMainloop *context, RESULT &res);
+ virtual ~eDVBPESReader();
+ RESULT setBufferSize(int size);
+ RESULT start(int pid);
+ RESULT stop();
+ RESULT connectRead(const Slot2<void,const __u8*, int> &read, ePtr<eConnection> &conn);
+};
+
+class eDVBRecordFileThread: public eFilePushThread
+{
+public:
+ eDVBRecordFileThread();
+ void setTimingPID(int pid, int type);
+
+ void startSaveMetaInformation(const std::string &filename);
+ void stopSaveMetaInformation();
+ void enableAccessPoints(bool enable);
+ int getLastPTS(pts_t &pts);
+protected:
+ int filterRecordData(const unsigned char *data, int len, size_t ¤t_span_remaining);
+private:
+ eMPEGStreamParserTS m_ts_parser;
+ eMPEGStreamInformation m_stream_info;
+ off_t m_current_offset;
+ pts_t m_last_pcr; /* very approximate.. */
+ int m_pid;
+};