1 #ifndef __lib_dvb_dvbmid_h
2 #define __lib_dvb_dvbmid_h
4 #include <lib/dvb/idvb.h>
5 #include <lib/dvb/isection.h>
6 #include <lib/dvb/esection.h>
7 #include <lib/dvb_si/pmt.h>
8 #include <lib/dvb_si/pat.h>
10 class eDVBServicePMTHandler: public Object
12 eServiceReferenceDVB m_reference;
13 // ePtr<eDVBService> m_service;
15 int m_last_channel_state;
17 eAUTable<eTable<ProgramMapTable> > m_PMT;
18 eAUTable<eTable<ProgramAssociationTable> > m_PAT;
20 ePtr<iDVBChannel> m_channel;
21 ePtr<iDVBResourceManager> m_resourceManager;
22 ePtr<iDVBDemux> m_demux;
24 void channelStateChanged(iDVBChannel *);
25 ePtr<eConnection> m_channelStateChanged_connection;
27 void PMTready(int error);
28 void PATready(int error);
30 eDVBServicePMTHandler();
34 eventNoResources, // a requested resource couldn't be allocated
35 eventNoPAT, // no pat could be received (timeout)
36 eventNoPATEntry, // no pat entry for the corresponding SID could be found
37 eventNoPMT, // no pmt could be received (timeout)
38 eventNewProgramInfo, // we just received a PMT
39 eventTuned // a channel was sucessfully (re-)tuned in, you may start additional filters now
42 Signal1<void,int> serviceEvent;
52 enum { atMPEG, atAC3, atDTS };
53 int type; // mpeg2, ac3, dts, ...
59 std::vector<videoStream> videoStreams;
60 std::vector<audioStream> audioStreams;
65 int getProgramInfo(struct program &program);
66 int getDemux(ePtr<iDVBDemux> &demux);
68 int tune(eServiceReferenceDVB &ref);