1 #ifndef __servicehdmi_h
2 #define __servicehdmi_h
4 #include <lib/base/message.h>
5 #include <lib/service/iservice.h>
6 #include <lib/service/servicedvb.h>
7 #include <lib/nav/core.h>
9 class eStaticServiceHDMIInfo;
11 class eServiceFactoryHDMI: public iServiceHandler
13 DECLARE_REF(eServiceFactoryHDMI);
15 eServiceFactoryHDMI();
16 virtual ~eServiceFactoryHDMI();
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);
24 void getNavInstance(ePtr<eNavigation> &nav_instance);
26 ePtr<eStaticServiceHDMIInfo> m_service_info;
27 ePtr<eNavigation> m_nav_instance;
30 class eStaticServiceHDMIInfo: public iStaticServiceInformation
32 DECLARE_REF(eStaticServiceHDMIInfo);
33 friend class eServiceFactoryHDMI;
34 eStaticServiceHDMIInfo();
36 RESULT getName(const eServiceReference &ref, std::string &name);
37 int getLength(const eServiceReference &ref);
38 int getInfo(const eServiceReference &ref, int w);
39 int isPlayable(const eServiceReference &ref, const eServiceReference &ignore, bool simulate) { return 1; }
40 long long getFileSize(const eServiceReference &ref);
43 class eServiceHDMI: public iPlayableService, public iServiceInformation, public Object
45 DECLARE_REF(eServiceHDMI);
47 virtual ~eServiceHDMI();
49 RESULT connectEvent(const Slot2<void, iPlayableService*, int> &event, ePtr<eConnection> &connection);
52 RESULT setTarget(int target);
54 RESULT pause(ePtr<iPauseableService> &ptr) { ptr = 0; return -1; }
55 RESULT seek(ePtr<iSeekableService> &ptr) { ptr = 0; return -1; }
56 RESULT audioTracks(ePtr<iAudioTrackSelection> &ptr) { ptr = 0; return -1; }
57 RESULT audioChannel(ePtr<iAudioChannelSelection> &ptr) { ptr = 0; return -1; }
58 RESULT subtitle(ePtr<iSubtitleOutput> &ptr) { ptr = 0; return -1; }
59 RESULT audioDelay(ePtr<iAudioDelay> &ptr) { ptr = 0; return -1; }
61 RESULT frontendInfo(ePtr<iFrontendInformation> &ptr) { ptr = 0; return -1; }
62 RESULT subServices(ePtr<iSubserviceList> &ptr) { ptr = 0; return -1; }
63 RESULT timeshift(ePtr<iTimeshiftService> &ptr) { ptr = 0; return -1; }
64 RESULT cueSheet(ePtr<iCueSheet> &ptr) { ptr = 0; return -1; }
66 RESULT rdsDecoder(ePtr<iRdsDecoder> &ptr) { ptr = 0; return -1; }
67 RESULT keys(ePtr<iServiceKeys> &ptr) { ptr = 0; return -1; }
68 RESULT stream(ePtr<iStreamableService> &ptr) { ptr = 0; return -1; }
69 RESULT streamed(ePtr<iStreamedService> &ptr) { ptr = 0; return -1; }
71 RESULT info(ePtr<iServiceInformation>&);
73 RESULT getName(std::string &name);
75 std::string getInfoString(int w);
76 PyObject *getInfoObject(int w);
78 void setQpipMode(bool value, bool audio) { }
81 friend class eServiceFactoryHDMI;
82 eServiceHDMI(eServiceReference ref);
83 Signal2<void,iPlayableService*, int> m_event;
84 eServiceReference m_ref;
86 ePtr<iTSMPEGDecoder> m_decoder;
89 class eServiceHDMIRecord: public eDVBServiceBase, public iRecordableService, public Object
91 DECLARE_REF(eServiceHDMIRecord);
93 eServiceHDMIRecord(const eServiceReference &ref, ePtr<eNavigation> &nav_instance);
94 RESULT connectEvent(const Slot2<void,iRecordableService*,int> &event, ePtr<eConnection> &connection);
95 RESULT prepare(const char *filename, time_t begTime, time_t endTime, int eit_event_id, const char *name, const char *descr, const char *tags, bool descramble, bool recordecm);
96 RESULT prepareStreaming();
97 RESULT start(bool simulate=false);
99 RESULT getError(int &error) { error = m_error; return 0; }
100 RESULT frontendInfo(ePtr<iFrontendInformation> &ptr);
101 RESULT stream(ePtr<iStreamableService> &ptr);
102 RESULT subServices(ePtr<iSubserviceList> &ptr);
103 RESULT getServiceType(int &serviceType) { serviceType = -1; return -1; };
106 enum { stateIdle, statePrepared, stateRecording };
109 eDVBRecordFileThread *m_thread;
110 eServiceReference m_ref;
112 int m_recording, m_error;
113 std::string m_filename;
118 ePtr<eNavigation> m_nav_instance;
124 Signal2<void,iRecordableService*,int> m_event;
126 /* recorder events */
127 void recordEvent(int event);