diff options
Diffstat (limited to 'lib/dvb/pmt.h')
| -rw-r--r-- | lib/dvb/pmt.h | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/lib/dvb/pmt.h b/lib/dvb/pmt.h index 483c06b1..0c44f35a 100644 --- a/lib/dvb/pmt.h +++ b/lib/dvb/pmt.h @@ -86,8 +86,8 @@ class eDVBServicePMTHandler: public Object eUsePtr<iDVBChannel> m_channel; eUsePtr<iDVBPVRChannel> m_pvr_channel; ePtr<eDVBResourceManager> m_resourceManager; - ePtr<iDVBDemux> m_demux; - + ePtr<iDVBDemux> m_demux, m_pvr_demux_tmp; + void channelStateChanged(iDVBChannel *); ePtr<eConnection> m_channelStateChanged_connection; void channelEvent(iDVBChannel *, int event); @@ -102,6 +102,7 @@ class eDVBServicePMTHandler: public Object int m_use_decode_demux; uint8_t m_decode_demux_num; + ePtr<eTimer> m_no_pat_entry_delay; public: eDVBServicePMTHandler(); ~eDVBServicePMTHandler(); @@ -144,7 +145,7 @@ public: { int pid, rdsPid; // hack for some radio services which transmit radiotext on different pid (i.e. harmony fm, HIT RADIO FFH, ...) - enum { atMPEG, atAC3, atDTS, atAAC, atAACHE, atLPCM }; + enum { atMPEG, atAC3, atDTS, atAAC, atAACHE, atLPCM, atDTSHD }; int type; // mpeg2, ac3, dts, ... int component_tag; @@ -181,11 +182,17 @@ public: struct program { + struct capid_pair + { + uint16_t caid; + int capid; + bool operator< (const struct capid_pair &t) const { return t.caid < caid; } + }; std::vector<videoStream> videoStreams; std::vector<audioStream> audioStreams; int defaultAudioStream; std::vector<subtitleStream> subtitleStreams; - std::set<uint16_t> caids; + std::list<capid_pair> caids; int pcrPid; int pmtPid; int textPid; @@ -193,10 +200,10 @@ public: PyObject *createPythonObject(); }; - int getProgramInfo(struct program &program); + int getProgramInfo(program &program); int getDataDemux(ePtr<iDVBDemux> &demux); int getDecodeDemux(ePtr<iDVBDemux> &demux); - PyObject *getCaIds(); + PyObject *getCaIds(bool pair=false); // caid / ecmpid pair int getPVRChannel(ePtr<iDVBPVRChannel> &pvr_channel); int getServiceReference(eServiceReferenceDVB &service) { service = m_reference; return 0; } @@ -204,8 +211,14 @@ public: int getPMT(ePtr<eTable<ProgramMapSection> > &ptr) { return m_PMT.getCurrent(ptr); } int getChannel(eUsePtr<iDVBChannel> &channel); void resetCachedProgram() { m_have_cached_program = false; } + void sendEventNoPatEntry(); + /* deprecated interface */ int tune(eServiceReferenceDVB &ref, int use_decode_demux, eCueSheet *sg=0, bool simulate=false, eDVBService *service = 0); + + /* new interface */ + int tuneExt(eServiceReferenceDVB &ref, int use_decode_demux, ePtr<iTsSource> &, const char *streaminfo_file, eCueSheet *sg=0, bool simulate=false, eDVBService *service = 0); + void free(); private: bool m_have_cached_program; |
