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);
30 class eDVBServiceList: public iListableService, public iMutableServiceList
32 DECLARE_REF(eDVBServiceList);
34 virtual ~eDVBServiceList();
35 RESULT getContent(std::list<eServiceReference> &list);
36 RESULT getNext(eServiceReference &ptr);
37 int compareLessEqual(const eServiceReference &a, const eServiceReference &b);
39 RESULT startEdit(ePtr<iMutableServiceList> &);
40 RESULT flushChanges();
41 RESULT addService(eServiceReference &ref);
42 RESULT removeService(eServiceReference &ref);
43 RESULT moveService(eServiceReference &ref, int pos);
46 eServiceReference m_parent;
47 friend class eServiceFactoryDVB;
48 eDVBServiceList(const eServiceReference &parent);
49 ePtr<iDVBChannelListQuery> m_query;
51 /* for editing purposes. WARNING: lifetime issue! */
55 class eDVBServicePlay: public iPlayableService, public iPauseableService,
56 public iSeekableService, public Object, public iServiceInformation,
57 public iAudioTrackSelection, public iFrontendStatusInformation
59 DECLARE_REF(eDVBServicePlay);
61 virtual ~eDVBServicePlay();
64 RESULT connectEvent(const Slot2<void,iPlayableService*,int> &event, ePtr<eConnection> &connection);
67 RESULT seek(ePtr<iSeekableService> &ptr);
68 RESULT pause(ePtr<iPauseableService> &ptr);
69 RESULT info(ePtr<iServiceInformation> &ptr);
70 RESULT audioTracks(ePtr<iAudioTrackSelection> &ptr);
71 RESULT frontendStatusInfo(ePtr<iFrontendStatusInformation> &ptr);
78 RESULT getLength(pts_t &len);
79 RESULT seekTo(pts_t to);
80 RESULT seekRelative(int direction, pts_t to);
81 RESULT getPlayPosition(pts_t &pos);
83 // iServiceInformation
84 RESULT getName(std::string &name);
85 RESULT getEvent(ePtr<eServiceEvent> &evt, int nownext);
87 std::string getInfoString(int w);
89 // iAudioTrackSelection
90 int getNumberOfTracks();
91 RESULT selectTrack(unsigned int i);
92 RESULT getTrackInfo(struct iAudioTrackInfo &, unsigned int n);
94 // iFrontendStatusInformation
95 int getFrontendInfo(int w);
98 friend class eServiceFactoryDVB;
99 eServiceReference m_reference;
101 ePtr<eDVBService> m_dvb_service;
103 ePtr<iTSMPEGDecoder> m_decoder;
105 eDVBServicePMTHandler m_service_handler;
106 eDVBServiceEITHandler m_event_handler;
108 eDVBServicePlay(const eServiceReference &ref, eDVBService *service);
112 void serviceEvent(int event);
113 Signal2<void,iPlayableService*,int> m_event;
115 int m_is_pvr, m_is_paused;
117 int m_current_audio_stream;
118 int selectAudioStream(int n);