X-Git-Url: http://code.vuplus.com/gitweb/?p=vuplus_dvbapp;a=blobdiff_plain;f=lib%2Fdvb%2Fdemux.h;h=7a697d49db27b5473db29b4d07b77bf800a5202f;hp=b14dfd263f09311ecf5d3b50f2e5728cbb13f4a4;hb=c437ed274b0155ecdeb7382d6ee46d67a53755b9;hpb=7a79e14b385f63a84a12720cadee720a7a803783 diff --git a/lib/dvb/demux.h b/lib/dvb/demux.h index b14dfd2..7a697d4 100644 --- a/lib/dvb/demux.h +++ b/lib/dvb/demux.h @@ -15,9 +15,11 @@ public: virtual ~eDVBDemux(); RESULT setSourceFrontend(int fenum); + int getSource() { return source; } RESULT setSourcePVR(int pvrnum); RESULT createSectionReader(eMainloop *context, ePtr &reader); + RESULT createPESReader(eMainloop *context, ePtr &reader); RESULT createTSRecorder(ePtr &recorder); RESULT getMPEGDecoder(ePtr &reader, int primary); RESULT getSTC(pts_t &pts, int num); @@ -27,10 +29,11 @@ public: 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; @@ -45,14 +48,13 @@ private: class eDVBSectionReader: public iDVBSectionReader, public Object { DECLARE_REF(eDVBSectionReader); -private: int fd; Signal1 read; ePtr demux; int active; int checkcrc; void data(int); - eSocketNotifier *notifier; + ePtr notifier; public: eDVBSectionReader(eDVBDemux *demux, eMainloop *context, RESULT &res); @@ -62,6 +64,23 @@ public: RESULT connectRead(const Slot1 &read, ePtr &conn); }; +class eDVBPESReader: public iDVBPESReader, public Object +{ + DECLARE_REF(eDVBPESReader); + int m_fd; + Signal2 m_read; + ePtr m_demux; + int m_active; + void data(int); + ePtr m_notifier; +public: + eDVBPESReader(eDVBDemux *demux, eMainloop *context, RESULT &res); + virtual ~eDVBPESReader(); + RESULT start(int pid); + RESULT stop(); + RESULT connectRead(const Slot2 &read, ePtr &conn); +}; + class eDVBRecordFileThread; class eDVBTSRecorder: public iDVBTSRecorder, public Object @@ -75,20 +94,23 @@ public: RESULT addPID(int pid); RESULT removePID(int pid); - RESULT setTimingPID(int pid); + RESULT setTimingPID(int pid, int type); RESULT setTargetFD(int fd); RESULT setTargetFilename(const char *filename); RESULT setBoundary(off_t max); RESULT stop(); - + + RESULT getCurrentPCR(pts_t &pcr); + RESULT connectEvent(const Slot1 &event, ePtr &conn); private: RESULT startPID(int pid); void stopPID(int pid); eDVBRecordFileThread *m_thread; + void filepushEvent(int event); std::map m_pids; Signal1 m_event;