X-Git-Url: http://code.vuplus.com/gitweb/?p=vuplus_dvbapp;a=blobdiff_plain;f=lib%2Fservice%2Fservicedvbrecord.h;h=e70547f1ab9d21b950968baf3853cd0b645afaee;hp=17e3d16639cd94d64956d31a93a054f006d1d95f;hb=e21cff679bb73bce310e877d5219ec29291dbe10;hpb=70dfd18f5fc6f88b327ff5193b64ebff353c1458 diff --git a/lib/service/servicedvbrecord.h b/lib/service/servicedvbrecord.h index 17e3d16..e70547f 100644 --- a/lib/service/servicedvbrecord.h +++ b/lib/service/servicedvbrecord.h @@ -10,31 +10,61 @@ #include -class eDVBServiceRecord: public iRecordableService, public Object +class eDVBServiceRecord: public eDVBServiceBase, + public iRecordableService, + public iStreamableService, + public Object { -DECLARE_REF(eDVBServiceRecord); + DECLARE_REF(eDVBServiceRecord); public: - RESULT prepare(const char *filename); - RESULT start(); + RESULT connectEvent(const Slot2 &event, ePtr &connection); + RESULT prepare(const char *filename, time_t begTime, time_t endTime, int eit_event_id, const char *name, const char *descr, const char *tags); + RESULT prepareStreaming(); + RESULT start(bool simulate=false); RESULT stop(); + RESULT stream(ePtr &ptr); + RESULT getError(int &error) { error = m_error; return 0; } + RESULT frontendInfo(ePtr &ptr); + + /* streamable service */ + PyObject *getStreamingData(); + private: enum { stateIdle, statePrepared, stateRecording }; + bool m_simulate; int m_state, m_want_record; friend class eServiceFactoryDVB; eDVBServiceRecord(const eServiceReferenceDVB &ref); - eDVBServicePMTHandler m_service_handler; + eDVBServiceEITHandler m_event_handler; + eServiceReferenceDVB m_ref; - void serviceEvent(int event); ePtr m_record; + ePtr m_con_record_event; - int m_recording; + int m_recording, m_tuned, m_error; std::set m_pids_active; std::string m_filename; + + std::map m_event_timestamps; + int m_target_fd; + int m_streaming; + int m_last_event_id; int doPrepare(); int doRecord(); + + /* events */ + void serviceEvent(int event); + Signal2 m_event; + + /* recorder events */ + void recordEvent(int event); + + /* eit updates */ + void gotNewEvent(); + void saveCutlist(); }; #endif