add preStart event and use it to load the cutlist
[enigma2.git] / lib / dvb / idvb.h
index 2aee67e6b43955851ff438a131a58e7b60809f6c..4ef7efaddbebe9b26cc67c5eff0527b879a183df 100644 (file)
@@ -315,7 +315,7 @@ public:
        // iStaticServiceInformation
        RESULT getName(const eServiceReference &ref, std::string &name);
        RESULT getEvent(const eServiceReference &ref, ePtr<eServiceEvent> &ptr, time_t start_time);
-       int isPlayable(const eServiceReference &ref, const eServiceReference &ignore);
+       int isPlayable(const eServiceReference &ref, const eServiceReference &ignore, bool simulate=false);
        PyObject *getInfoObject(const eServiceReference &ref, int);  // implemented in lib/service/servicedvb.h
 
                /* for filtering: */
@@ -375,6 +375,7 @@ public:
        virtual RESULT removeService(const eServiceReference &service)=0;
        virtual RESULT removeServices(eDVBChannelID chid=eDVBChannelID(), unsigned int orb_pos=0xFFFFFFFF)=0;
        virtual RESULT removeServices(int dvb_namespace=-1, int tsid=-1, int onid=-1, unsigned int orb_pos=0xFFFFFFFF)=0;
+       virtual RESULT removeServices(iDVBFrontendParameters *feparm)=0;
        virtual RESULT addFlag(const eServiceReference &service, unsigned int flagmask=0xFFFFFFFF)=0;
        virtual RESULT removeFlag(const eServiceReference &service, unsigned int flagmask=0xFFFFFFFF)=0;
        virtual RESULT removeFlags(unsigned int flagmask, eDVBChannelID chid=eDVBChannelID(), unsigned int orb_pos=0xFFFFFFFF)=0;
@@ -384,13 +385,13 @@ public:
        
        virtual RESULT getChannelFrontendData(const eDVBChannelID &id, ePtr<iDVBFrontendParameters> &parm)=0;
        
-       virtual RESULT addService(const eServiceReferenceDVB &service, eDVBService *service)=0;
+       virtual RESULT addService(const eServiceReferenceDVB &reference, eDVBService *service)=0;
        virtual RESULT getService(const eServiceReferenceDVB &reference, ePtr<eDVBService> &service)=0;
        virtual RESULT flush()=0;
 
        virtual RESULT getBouquet(const eServiceReference &ref,  eBouquet* &bouquet)=0;
 
-       virtual RESULT startQuery(ePtr<iDVBChannelListQuery> &query, eDVBChannelQuery *query, const eServiceReference &source)=0;
+       virtual RESULT startQuery(ePtr<iDVBChannelListQuery> &query, eDVBChannelQuery *q, const eServiceReference &source)=0;
 };
 
 #endif  // SWIG
@@ -402,14 +403,17 @@ class iDVBFrontendParameters: public iObject
        ~iDVBFrontendParameters();
 #endif
 public:
-       virtual RESULT getSystem(int &SWIG_OUTPUT) const = 0;
-       virtual RESULT getDVBS(eDVBFrontendParametersSatellite &SWIG_OUTPUT) const = 0;
-       virtual RESULT getDVBC(eDVBFrontendParametersCable &SWIG_OUTPUT) const = 0;
-       virtual RESULT getDVBT(eDVBFrontendParametersTerrestrial &SWIG_OUTPUT) const = 0;
-       
-       virtual RESULT calculateDifference(const iDVBFrontendParameters *parm, int &SWIG_OUTPUT, bool exact) const = 0;
-       virtual RESULT getHash(unsigned long &SWIG_OUTPUT) const = 0;
-       virtual RESULT calcLockTimeout(unsigned int &) const = 0;
+       enum { flagOnlyFree = 1 };
+       virtual SWIG_VOID(RESULT) getSystem(int &SWIG_OUTPUT) const = 0;
+       virtual SWIG_VOID(RESULT) getDVBS(eDVBFrontendParametersSatellite &SWIG_OUTPUT) const = 0;
+       virtual SWIG_VOID(RESULT) getDVBC(eDVBFrontendParametersCable &SWIG_OUTPUT) const = 0;
+       virtual SWIG_VOID(RESULT) getDVBT(eDVBFrontendParametersTerrestrial &SWIG_OUTPUT) const = 0;
+       virtual SWIG_VOID(RESULT) getFlags(unsigned int &SWIG_OUTPUT) const = 0;
+#ifndef SWIG
+       virtual SWIG_VOID(RESULT) calculateDifference(const iDVBFrontendParameters *parm, int &, bool exact) const = 0;
+       virtual SWIG_VOID(RESULT) getHash(unsigned long &) const = 0;
+       virtual SWIG_VOID(RESULT) calcLockTimeout(unsigned int &) const = 0;
+#endif
 };
 SWIG_TEMPLATE_TYPEDEF(ePtr<iDVBFrontendParameters>, iDVBFrontendParametersPtr);
 
@@ -485,8 +489,8 @@ class iDVBSatelliteEquipmentControl: public iObject
 {
 public:
        virtual RESULT prepare(iDVBFrontend &frontend, FRONTENDPARAMETERS &parm, const eDVBFrontendParametersSatellite &sat, int frontend_id, unsigned int timeout)=0;
-       virtual int canTune(const eDVBFrontendParametersSatellite &feparm, iDVBFrontend *fe, int frontend_id)=0;
-       virtual void setRotorMoving(bool)=0;
+       virtual int canTune(const eDVBFrontendParametersSatellite &feparm, iDVBFrontend *fe, int frontend_id, int *highest_score_lnb=0)=0;
+       virtual void setRotorMoving(int slotid, bool)=0;
 };
 
 struct eDVBCIRouting
@@ -501,6 +505,7 @@ class iDVBChannel: public iObject
 public:
                /* direct frontend access for raw channels and/or status inquiries. */
        virtual SWIG_VOID(RESULT) getFrontend(ePtr<iDVBFrontend> &SWIG_OUTPUT)=0;
+       virtual RESULT requestTsidOnid(SWIG_PYOBJECT(ePyObject) callback) { return -1; }
 #ifndef SWIG
        enum
        {
@@ -517,7 +522,7 @@ public:
        virtual RESULT getCurrentFrontendParameters(ePtr<iDVBFrontendParameters> &)=0;
        enum 
        {
-               evtEOF, evtSOF, evtFailed
+               evtPreStart, evtEOF, evtSOF, evtFailed
        };
        virtual RESULT connectStateChange(const Slot1<void,iDVBChannel*> &stateChange, ePtr<eConnection> &connection)=0;
        virtual RESULT connectEvent(const Slot2<void,iDVBChannel*,int> &eventChange, ePtr<eConnection> &connection)=0;
@@ -626,6 +631,7 @@ public:
 
 #if HAVE_DVB_API_VERSION < 3 && !defined(VIDEO_EVENT_SIZE_CHANGED)
 #define VIDEO_EVENT_SIZE_CHANGED 1
+#define VIDEO_EVENT_FRAME_RATE_CHANGED 2
 #endif
 
 class iTSMPEGDecoder: public iObject
@@ -658,37 +664,24 @@ public:
                /** Set Sync mode to either audio or video master */
        virtual RESULT setSyncMaster(int who)=0;
 
-               /** Apply settings with starting video */
-       virtual RESULT start()=0;
-               /** Apply settings but don't start yet */
-       virtual RESULT preroll()=0;
+               /** Apply settings but don't change state */
+       virtual RESULT set()=0;
+               /* all those apply settings, then transition to the given state */
 
-               /** Freeze frame. Either continue decoding (without display) or halt. */
-       virtual RESULT freeze(int cont)=0;
-               /** Continue after freeze. */
-       virtual RESULT unfreeze()=0;
+               /** play */
+       virtual RESULT play()=0;
+               /** Freeze frame. */
+       virtual RESULT pause()=0;
 
                /** fast forward by skipping frames. 0 is disabled, 2 is twice-the-speed, ... */
        virtual RESULT setFastForward(int skip=0)=0;
 
-               // stop on .. Picture
-       enum { spm_I, spm_Ref, spm_Any };
-               /** Stop on specific decoded picture. For I-Frame display. */
-       virtual RESULT setSinglePictureMode(int when)=0;
-
-       enum { pkm_B, pkm_PB };
-               /** Fast forward by skipping either B or P/B pictures */
-       virtual RESULT setPictureSkipMode(int what)=0;
-
                /** Slow Motion by repeating pictures */
        virtual RESULT setSlowMotion(int repeat)=0;
-       
-       enum { zoom_Normal, zoom_PanScan, zoom_Letterbox, zoom_Fullscreen };
-               /** Set Zoom. mode *must* be fitting. */
-       virtual RESULT setZoom(int what)=0;
-
-       virtual RESULT setTrickmode(int what) = 0;
 
+               /** Display any complete data as fast as possible */
+       virtual RESULT setTrickmode()=0;
+       
        virtual RESULT getPTS(int what, pts_t &pts) = 0;
 
        virtual RESULT showSinglePic(const char *filename) = 0;
@@ -697,13 +690,25 @@ public:
 
        struct videoEvent
        {
-               enum { eventUnknown = 0, eventSizeChanged = VIDEO_EVENT_SIZE_CHANGED } type;
+               enum { eventUnknown = 0,
+                       eventSizeChanged = VIDEO_EVENT_SIZE_CHANGED,
+                       eventFrameRateChanged = VIDEO_EVENT_FRAME_RATE_CHANGED,
+                       eventProgressiveChanged = 16
+               } type;
                unsigned char aspect;
                unsigned short height;
                unsigned short width;
+               bool progressive;
+               unsigned short framerate;
        };
 
        virtual RESULT connectVideoEvent(const Slot1<void, struct videoEvent> &event, ePtr<eConnection> &connection) = 0;
+
+       virtual int getVideoWidth() = 0;
+       virtual int getVideoHeight() = 0;
+       virtual int getVideoProgressive() = 0;
+       virtual int getVideoFrameRate() = 0;
+       virtual int getVideoAspect() = 0;
 };
 
 #endif //SWIG