virtual ~eDVBDemux();
RESULT setSourceFrontend(int fenum);
+ int getSource() { return source; }
RESULT setSourcePVR(int pvrnum);
RESULT createSectionReader(eMainloop *context, ePtr<iDVBSectionReader> &reader);
+ RESULT createPESReader(eMainloop *context, ePtr<iDVBPESReader> &reader);
RESULT createTSRecorder(ePtr<iDVBTSRecorder> &recorder);
RESULT getMPEGDecoder(ePtr<iTSMPEGDecoder> &reader, int primary);
RESULT getSTC(pts_t &pts, int num);
RESULT getCADemuxID(uint8_t &id) { id = demux; return 0; }
RESULT flush();
RESULT connectEvent(const Slot1<void,int> &event, ePtr<eConnection> &conn);
+
+ int getRefCount() { return ref; }
private:
- int adapter, demux;
+ int adapter, demux, source;
int m_dvr_busy;
friend class eDVBSectionReader;
+ friend class eDVBPESReader;
friend class eDVBAudio;
friend class eDVBVideo;
friend class eDVBPCR;
class eDVBSectionReader: public iDVBSectionReader, public Object
{
DECLARE_REF(eDVBSectionReader);
-private:
int fd;
Signal1<void, const __u8*> read;
ePtr<eDVBDemux> demux;
RESULT connectRead(const Slot1<void,const __u8*> &read, ePtr<eConnection> &conn);
};
+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);
+ eSocketNotifier *m_notifier;
+public:
+ eDVBPESReader(eDVBDemux *demux, eMainloop *context, RESULT &res);
+ virtual ~eDVBPESReader();
+ RESULT start(int pid);
+ RESULT stop();
+ RESULT connectRead(const Slot2<void,const __u8*, int> &read, ePtr<eConnection> &conn);
+};
+
class eDVBRecordFileThread;
class eDVBTSRecorder: public iDVBTSRecorder, public Object
void stopPID(int pid);
eDVBRecordFileThread *m_thread;
+ void filepushEvent(int event);
std::map<int,int> m_pids;
Signal1<void,int> m_event;