1 #ifndef __lib_dvb_dvbmid_h
2 #define __lib_dvb_dvbmid_h
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 <dvbsi++/program_map_section.h>
9 #include <dvbsi++/program_association_section.h>
11 #include <sys/socket.h>
12 #include <sys/types.h>
17 class eDVBServicePMTHandler;
19 class eDVBCAService: public Object
21 eDVBServicePMTHandler &m_parent;
23 struct sockaddr_un m_servaddr;
24 unsigned int m_sendstate;
25 unsigned char *m_capmt;
30 eDVBCAService( eDVBServicePMTHandler &parent )
31 :m_parent(parent), m_sendstate(0), m_capmt(NULL), m_retryTimer(eApp)
33 CONNECT(m_retryTimer.timeout, eDVBCAService::sendCAPMT);
35 // eDebug("[eDVBCAHandler] new service %s", service.toString().c_str() );
41 // eDebug("[eDVBCAHandler] leave service %s", me.toString().c_str() );
46 class eDVBServicePMTHandler: public Object
48 friend class eDVBCAService;
49 eServiceReferenceDVB m_reference;
50 ePtr<eDVBService> m_service;
52 int m_last_channel_state;
54 eDVBCAService *m_ca_servicePtr;
56 eAUTable<eTable<ProgramMapSection> > m_PMT;
57 eAUTable<eTable<ProgramAssociationSection> > m_PAT;
59 eUsePtr<iDVBChannel> m_channel;
60 eUsePtr<iDVBPVRChannel> m_pvr_channel;
61 ePtr<eDVBResourceManager> m_resourceManager;
62 ePtr<iDVBDemux> m_demux;
64 void channelStateChanged(iDVBChannel *);
65 ePtr<eConnection> m_channelStateChanged_connection;
67 void PMTready(int error);
68 void PATready(int error);
70 eDVBServicePMTHandler();
71 ~eDVBServicePMTHandler();
75 eventNoResources, // a requested resource couldn't be allocated
76 eventNoPAT, // no pat could be received (timeout)
77 eventNoPATEntry, // no pat entry for the corresponding SID could be found
78 eventNoPMT, // no pmt could be received (timeout)
79 eventNewProgramInfo, // we just received a PMT
80 eventTuned // a channel was sucessfully (re-)tuned in, you may start additional filters now
83 Signal1<void,int> serviceEvent;
93 enum { atMPEG, atAC3, atDTS };
94 int type; // mpeg2, ac3, dts, ...
100 std::vector<videoStream> videoStreams;
101 std::vector<audioStream> audioStreams;
106 int getProgramInfo(struct program &program);
107 int getDemux(ePtr<iDVBDemux> &demux);
108 int getPVRChannel(ePtr<iDVBPVRChannel> &pvr_channel);
110 int tune(eServiceReferenceDVB &ref);