Support scrambled playback.
[vuplus_dvbapp] / lib / service / servicedvbrecord.h
index 7b53803..7662380 100644 (file)
@@ -18,8 +18,10 @@ class eDVBServiceRecord: public eDVBServiceBase,
 {
        DECLARE_REF(eDVBServiceRecord);
 public:
 {
        DECLARE_REF(eDVBServiceRecord);
 public:
+       eDVBServicePMTHandler::serviceType m_serviceType;
+
        RESULT connectEvent(const Slot2<void,iRecordableService*,int> &event, ePtr<eConnection> &connection);
        RESULT connectEvent(const Slot2<void,iRecordableService*,int> &event, ePtr<eConnection> &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 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);
        RESULT prepareStreaming();
        RESULT start(bool simulate=false);
        RESULT stop();
        RESULT prepareStreaming();
        RESULT start(bool simulate=false);
        RESULT stop();
@@ -27,6 +29,7 @@ public:
        RESULT getError(int &error) { error = m_error; return 0; }
        RESULT frontendInfo(ePtr<iFrontendInformation> &ptr);
        RESULT subServices(ePtr<iSubserviceList> &ptr);
        RESULT getError(int &error) { error = m_error; return 0; }
        RESULT frontendInfo(ePtr<iFrontendInformation> &ptr);
        RESULT subServices(ePtr<iSubserviceList> &ptr);
+       RESULT getServiceType(int &serviceType) { serviceType = m_serviceType; return 0; };
 
                // iStreamableService
        PyObject *getStreamingData();
 
                // iStreamableService
        PyObject *getStreamingData();
@@ -34,10 +37,18 @@ public:
                // iSubserviceList
        int getNumberOfSubservices();
        RESULT getSubservice(eServiceReference &subservice, unsigned int n);
                // iSubserviceList
        int getNumberOfSubservices();
        RESULT getSubservice(eServiceReference &subservice, unsigned int n);
+
+protected:
+       ePtr<iDVBDemux> m_decode_demux;
+       ePtr<iTSMPEGDecoder> m_decoder;
+
 private:
        enum { stateIdle, statePrepared, stateRecording };
        bool m_simulate;
        int m_state, m_want_record;
 private:
        enum { stateIdle, statePrepared, stateRecording };
        bool m_simulate;
        int m_state, m_want_record;
+       bool m_record_ecm;
+       bool m_descramble;
+       bool m_pvr_descramble;
        bool m_is_stream_client;
        friend class eServiceFactoryDVB;
        eDVBServiceRecord(const eServiceReferenceDVB &ref, bool isstreamclient = false);
        bool m_is_stream_client;
        friend class eServiceFactoryDVB;
        eDVBServiceRecord(const eServiceReferenceDVB &ref, bool isstreamclient = false);
@@ -60,6 +71,7 @@ private:
        
        int doPrepare();
        int doRecord();
        
        int doPrepare();
        int doRecord();
+       void updateDecoder();
 
                        /* events */
        void serviceEvent(int event);
 
                        /* events */
        void serviceEvent(int event);