X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/b6bb02750e7e7e44d6c4e99a9754006a1e1051e5..92929c357751afc31f7f1acbe3e724bdf307cf23:/lib/dvb/idvb.h diff --git a/lib/dvb/idvb.h b/lib/dvb/idvb.h index d5f399c0..ebf22374 100644 --- a/lib/dvb/idvb.h +++ b/lib/dvb/idvb.h @@ -297,13 +297,14 @@ public: enum { dxNoSDT=1, // don't get SDT -//nyi dxDontshow=2, + dxDontshow=2, dxNoDVB=4, // dont use PMT for this service ( use cached pids ) dxHoldName=8, dxNewFound=64, }; bool usePMT() const { return !(m_flags & dxNoDVB); } + bool isHidden() const { return m_flags & dxDontshow; } CAID_LIST m_ca; @@ -374,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; @@ -401,6 +403,7 @@ class iDVBFrontendParameters: public iObject ~iDVBFrontendParameters(); #endif public: + enum { flagOnlyFree = 1 }; virtual RESULT getSystem(int &SWIG_OUTPUT) const = 0; virtual RESULT getDVBS(eDVBFrontendParametersSatellite &SWIG_OUTPUT) const = 0; virtual RESULT getDVBC(eDVBFrontendParametersCable &SWIG_OUTPUT) const = 0; @@ -408,7 +411,10 @@ public: 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; + virtual RESULT getFlags(unsigned int &) const = 0; }; +SWIG_TEMPLATE_TYPEDEF(ePtr, iDVBFrontendParametersPtr); #define MAX_DISEQC_LENGTH 16 @@ -440,10 +446,10 @@ class iDVBFrontend_ENUMS #endif public: enum { feSatellite, feCable, feTerrestrial }; - enum { stateIdle, stateTuning, stateFailed, stateLock, stateLostLock }; + enum { stateIdle, stateTuning, stateFailed, stateLock, stateLostLock, stateClosed }; enum { toneOff, toneOn }; enum { voltageOff, voltage13, voltage18, voltage13_5, voltage18_5 }; - enum { bitErrorRate, signalPower, signalQuality, locked, synced, frontendNumber }; + enum { bitErrorRate, signalPower, signalQuality, locked, synced, frontendNumber, signalQualitydB }; }; SWIG_IGNORE(iDVBFrontend); @@ -465,10 +471,12 @@ public: virtual RESULT setSecSequence(const eSecCommandList &list)=0; #endif virtual int readFrontendData(int type)=0; - virtual PyObject *readTransponderData(bool original)=0; + virtual void getFrontendStatus(SWIG_PYOBJECT(ePyObject) dest)=0; + virtual void getTransponderData(SWIG_PYOBJECT(ePyObject) dest, bool original)=0; + virtual void getFrontendData(SWIG_PYOBJECT(ePyObject) dest)=0; #ifndef SWIG - virtual RESULT getData(int num, int &data)=0; - virtual RESULT setData(int num, int val)=0; + virtual RESULT getData(int num, long &data)=0; + virtual RESULT setData(int num, long val)=0; /* 0 means: not compatible. other values are a priority. */ virtual int isCompatibleWith(ePtr &feparm)=0; #endif @@ -479,7 +487,7 @@ SWIG_TEMPLATE_TYPEDEF(ePtr, iDVBFrontendPtr); class iDVBSatelliteEquipmentControl: public iObject { public: - virtual RESULT prepare(iDVBFrontend &frontend, FRONTENDPARAMETERS &parm, const eDVBFrontendParametersSatellite &sat, int frontend_id)=0; + 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; }; @@ -507,7 +515,7 @@ public: state_last_instance, /* just one reference to this channel is left */ state_release /* channel is being shut down. */ }; - virtual RESULT getState(int &SWIG_OUTPUT)=0; + virtual RESULT getState(int &)=0; virtual RESULT getCurrentFrontendParameters(ePtr &)=0; enum @@ -562,7 +570,7 @@ public: void setDecodingDemux(iDVBDemux *demux, iTSMPEGDecoder *decoder); /* frontend and backend */ - eSingleLock m_lock; + eRdWrLock m_lock; /* backend */ enum { evtSeek, evtSkipmode, evtSpanChanged }; @@ -619,6 +627,11 @@ public: virtual RESULT flush()=0; }; +#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 { public: @@ -649,35 +662,37 @@ public: /** Set Sync mode to either audio or video master */ virtual RESULT setSyncMaster(int who)=0; - /** Apply settings */ + /** Apply settings with starting video */ virtual RESULT start()=0; - + /** Apply settings but don't start yet */ + virtual RESULT preroll()=0; + /** Freeze frame. Either continue decoding (without display) or halt. */ virtual RESULT freeze(int cont)=0; /** Continue after freeze. */ virtual RESULT unfreeze()=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; - + virtual RESULT getPTS(int what, pts_t &pts) = 0; virtual RESULT showSinglePic(const char *filename) = 0; @@ -686,10 +701,16 @@ 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 &event, ePtr &connection) = 0;