X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/ed40f6f85c9c07c3c1224ae20601082c0309a631..d511f48bb79c6acd0643e0cf44c5c1ef677df20f:/lib/dvb/idvb.h diff --git a/lib/dvb/idvb.h b/lib/dvb/idvb.h index a34be984..14d6ebb0 100644 --- a/lib/dvb/idvb.h +++ b/lib/dvb/idvb.h @@ -27,6 +27,47 @@ #define CAID_LIST std::slist #endif +#ifndef DMX_FILTER_SIZE +#define DMX_FILTER_SIZE 16 +#endif + +struct eDVBSectionFilterMask +{ + int pid; + /* mode is 0 for positive, 1 for negative filtering */ + __u8 data[DMX_FILTER_SIZE], mask[DMX_FILTER_SIZE], mode[DMX_FILTER_SIZE]; + enum { + rfCRC=1, + rfNoAbort=2 + }; + int flags; +}; + +struct eDVBTableSpec +{ + int pid, tid, tidext, tid_mask, tidext_mask; + int version; + int timeout; /* timeout in ms */ + enum + { + tfInOrder=1, + /* + tfAnyVersion filter ANY version + 0 filter all EXCEPT given version (negative filtering) + tfThisVersion filter only THIS version + */ + tfAnyVersion=2, + tfThisVersion=4, + tfHaveTID=8, + tfHaveTIDExt=16, + tfCheckCRC=32, + tfHaveTimeout=64, + tfHaveTIDMask=128, + tfHaveTIDExtMask=256 + }; + int flags; +}; + struct eBouquet { std::string m_bouquet_name; @@ -402,7 +443,7 @@ public: enum { stateIdle, stateTuning, stateFailed, stateLock, stateLostLock }; 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, signalPowerdB }; }; SWIG_IGNORE(iDVBFrontend); @@ -424,7 +465,9 @@ 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; @@ -521,7 +564,7 @@ public: void setDecodingDemux(iDVBDemux *demux, iTSMPEGDecoder *decoder); /* frontend and backend */ - eSingleLock m_lock; + eRdWrLock m_lock; /* backend */ enum { evtSeek, evtSkipmode, evtSpanChanged }; @@ -578,6 +621,10 @@ public: virtual RESULT flush()=0; }; +#if HAVE_DVB_API_VERSION < 3 && !defined(VIDEO_EVENT_SIZE_CHANGED) +#define VIDEO_EVENT_SIZE_CHANGED 1 +#endif + class iTSMPEGDecoder: public iObject { public: @@ -608,35 +655,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;