1 #ifndef __servicedvbrecord_h
2 #define __servicedvbrecord_h
4 #include <lib/service/iservice.h>
5 #include <lib/dvb/idvb.h>
7 #include <lib/dvb/pmt.h>
8 #include <lib/dvb/eit.h>
11 #include <lib/service/servicedvb.h>
13 class eDVBServiceRecord: public eDVBServiceBase,
14 public iRecordableService,
15 public iStreamableService,
16 public iSubserviceList,
19 DECLARE_REF(eDVBServiceRecord);
21 eDVBServicePMTHandler::serviceType m_serviceType;
23 RESULT connectEvent(const Slot2<void,iRecordableService*,int> &event, ePtr<eConnection> &connection);
24 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);
25 RESULT prepareStreaming();
26 RESULT start(bool simulate=false);
28 RESULT stream(ePtr<iStreamableService> &ptr);
29 RESULT getError(int &error) { error = m_error; return 0; }
30 RESULT frontendInfo(ePtr<iFrontendInformation> &ptr);
31 RESULT subServices(ePtr<iSubserviceList> &ptr);
32 RESULT getServiceType(int &serviceType) { serviceType = m_serviceType; return 0; };
35 PyObject *getStreamingData();
38 int getNumberOfSubservices();
39 RESULT getSubservice(eServiceReference &subservice, unsigned int n);
42 ePtr<iDVBDemux> m_decode_demux;
43 ePtr<iTSMPEGDecoder> m_decoder;
46 enum { stateIdle, statePrepared, stateRecording };
48 int m_state, m_want_record;
51 bool m_pvr_descramble;
52 bool m_is_stream_client;
53 friend class eServiceFactoryDVB;
54 eDVBServiceRecord(const eServiceReferenceDVB &ref, bool isstreamclient = false);
56 eDVBServiceEITHandler m_event_handler;
58 eServiceReferenceDVB m_ref;
60 ePtr<iDVBTSRecorder> m_record;
61 ePtr<eConnection> m_con_record_event;
63 int m_recording, m_tuned, m_error;
64 std::set<int> m_pids_active;
65 std::string m_filename;
67 std::map<int,pts_t> m_event_timestamps;
77 void serviceEvent(int event);
78 Signal2<void,iRecordableService*,int> m_event;
81 void recordEvent(int event);