4 #include <lib/service/iservice.h>
5 #include <lib/dvb/idvb.h>
7 #include <lib/dvb/pmt.h>
8 #include <lib/dvb/eit.h>
10 class eServiceFactoryDVB: public iServiceHandler
12 DECLARE_REF(eServiceFactoryDVB);
15 virtual ~eServiceFactoryDVB();
19 RESULT play(const eServiceReference &, ePtr<iPlayableService> &ptr);
20 RESULT record(const eServiceReference &, ePtr<iRecordableService> &ptr);
21 RESULT list(const eServiceReference &, ePtr<iListableService> &ptr);
22 RESULT info(const eServiceReference &, ePtr<iStaticServiceInformation> &ptr);
23 RESULT offlineOperations(const eServiceReference &, ePtr<iServiceOfflineOperations> &ptr);
25 RESULT lookupService(ePtr<eDVBService> &ptr, const eServiceReference &ref);
28 class eDVBServiceList: public iListableService
30 DECLARE_REF(eDVBServiceList);
32 virtual ~eDVBServiceList();
33 RESULT getContent(std::list<eServiceReference> &list);
34 RESULT getNext(eServiceReference &ptr);
35 int compareLessEqual(const eServiceReference &a, const eServiceReference &b);
38 eServiceReference m_parent;
39 friend class eServiceFactoryDVB;
40 eDVBServiceList(const eServiceReference &parent);
41 ePtr<iDVBChannelListQuery> m_query;
44 class eDVBServicePlay: public iPlayableService, public iPauseableService, public iSeekableService, public Object, public iServiceInformation
46 DECLARE_REF(eDVBServicePlay);
48 virtual ~eDVBServicePlay();
51 RESULT connectEvent(const Slot2<void,iPlayableService*,int> &event, ePtr<eConnection> &connection);
54 RESULT seek(ePtr<iSeekableService> &ptr);
55 RESULT pause(ePtr<iPauseableService> &ptr);
56 RESULT info(ePtr<iServiceInformation> &ptr);
63 RESULT getLength(pts_t &len);
64 RESULT seekTo(pts_t to);
65 RESULT getPlayPosition(pts_t &pos);
67 // iServiceInformation
68 RESULT getName(std::string &name);
69 RESULT getEvent(ePtr<eServiceEvent> &evt, int nownext);
72 friend class eServiceFactoryDVB;
73 eServiceReference m_reference;
75 ePtr<eDVBService> m_dvb_service;
77 ePtr<iTSMPEGDecoder> m_decoder;
79 eDVBServicePMTHandler m_service_handler;
80 eDVBServiceEITHandler m_event_handler;
82 eDVBServicePlay(const eServiceReference &ref, eDVBService *service);
86 void serviceEvent(int event);
87 Signal2<void,iPlayableService*,int> m_event;
89 int m_is_pvr, m_is_paused;