lnb's have diseqc parameters.. not satellite's
[enigma2.git] / lib / dvb / pmt.h
1 #ifndef __lib_dvb_dvbmid_h
2 #define __lib_dvb_dvbmid_h
3
4 #include <lib/dvb/idvb.h>
5 #include <lib/dvb/dvb.h>
6 #include <lib/dvb/idemux.h>
7 #include <lib/dvb/esection.h>
8 #include <lib/dvb_si/pmt.h>
9 #include <lib/dvb_si/pat.h>
10
11 class eDVBServicePMTHandler: public Object
12 {
13         eServiceReferenceDVB m_reference;
14         ePtr<eDVBService> m_service;
15
16         int m_last_channel_state;
17         
18         eAUTable<eTable<ProgramMapTable> > m_PMT;
19         eAUTable<eTable<ProgramAssociationTable> > m_PAT;
20
21         eUsePtr<iDVBChannel> m_channel;
22         eUsePtr<iDVBPVRChannel> m_pvr_channel;
23         ePtr<eDVBResourceManager> m_resourceManager;
24         ePtr<iDVBDemux> m_demux;
25         
26         void channelStateChanged(iDVBChannel *);
27         ePtr<eConnection> m_channelStateChanged_connection;
28
29         void PMTready(int error);
30         void PATready(int error);
31 public:
32         eDVBServicePMTHandler();
33         
34         enum
35         {
36                 eventNoResources,  // a requested resource couldn't be allocated
37                 eventNoPAT,        // no pat could be received (timeout)
38                 eventNoPATEntry,   // no pat entry for the corresponding SID could be found
39                 eventNoPMT,        // no pmt could be received (timeout)
40                 eventNewProgramInfo, // we just received a PMT
41                 eventTuned         // a channel was sucessfully (re-)tuned in, you may start additional filters now
42         };
43
44         Signal1<void,int> serviceEvent;
45         
46         struct videoStream
47         {
48                 int pid;
49         };
50         
51         struct audioStream
52         {
53                 int pid;
54                 enum { atMPEG, atAC3, atDTS };
55                 int type; // mpeg2, ac3, dts, ...
56                 // language code, ...
57         };
58         
59         struct program
60         {
61                 std::vector<videoStream> videoStreams;
62                 std::vector<audioStream> audioStreams;
63                 // ca info
64                 int pcrPid;
65         };
66         
67         int getProgramInfo(struct program &program);
68         int getDemux(ePtr<iDVBDemux> &demux);
69         int getPVRChannel(ePtr<iDVBPVRChannel> &pvr_channel);
70         
71         int tune(eServiceReferenceDVB &ref);    
72 };
73
74 #endif