X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/1f3788c5e1a47fa9b0412902acba38c86b53bb63..75b5dff4878843dec6913364bc044ab25c3b78a2:/lib/dvb/idvb.h diff --git a/lib/dvb/idvb.h b/lib/dvb/idvb.h index ecf8bb92..7ee50e8d 100644 --- a/lib/dvb/idvb.h +++ b/lib/dvb/idvb.h @@ -8,6 +8,7 @@ #define FRONTENDPARAMETERS FrontendParameters #else #include +#include #define FRONTENDPARAMETERS struct dvb_frontend_parameters #endif #include @@ -18,6 +19,14 @@ #include #include +#if defined(__GNUC__) && ((__GNUC__ == 3 && __GNUC_MINOR__ >= 1) || __GNUC__ == 4 ) // check if gcc version >= 3.1 +#include +#define CAID_LIST __gnu_cxx::slist +#else +#include +#define CAID_LIST std::slist +#endif + struct eBouquet { std::string m_bouquet_name; @@ -26,7 +35,7 @@ struct eBouquet list m_services; // the following five methods are implemented in db.cpp RESULT flushChanges(); - RESULT addService(const eServiceReference &); + RESULT addService(const eServiceReference &, eServiceReference before=eServiceReference()); RESULT removeService(const eServiceReference &); RESULT moveService(const eServiceReference &, unsigned int); RESULT setListName(const std::string &name); @@ -220,14 +229,19 @@ class eDVBChannelQuery; class eDVBService: public iStaticServiceInformation { DECLARE_REF(eDVBService); + int *m_cache; + void initCache(); + void copyCache(int *source); public: enum cacheID { - cVPID, cAPID, cTPID, cPCRPID, cAC3PID, cVTYPE, cacheMax + cVPID, cAPID, cTPID, cPCRPID, cAC3PID, + cVTYPE, cACHANNEL, cAC3DELAY, cPCMDELAY, + cSUBTITLE, cacheMax }; - int getCachePID(cacheID); - void setCachePID(cacheID, int); + int getCacheEntry(cacheID); + void setCacheEntry(cacheID, int); bool cacheEmpty(); @@ -250,9 +264,8 @@ public: bool usePMT() const { return !(m_flags & dxNoDVB); } -// std::set m_ca; + CAID_LIST m_ca; - int m_cache[cacheMax]; virtual ~eDVBService(); eDVBService &operator=(const eDVBService &); @@ -260,7 +273,7 @@ public: // iStaticServiceInformation RESULT getName(const eServiceReference &ref, std::string &name); RESULT getEvent(const eServiceReference &ref, ePtr &ptr, time_t start_time); - bool isPlayable(const eServiceReference &ref, const eServiceReference &ignore); + int isPlayable(const eServiceReference &ref, const eServiceReference &ignore); /* for filtering: */ int checkFilter(const eServiceReferenceDVB &ref, const eDVBChannelQuery &query); @@ -351,7 +364,7 @@ public: 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) const = 0; + virtual RESULT calculateDifference(const iDVBFrontendParameters *parm, int &SWIG_OUTPUT, bool exact) const = 0; virtual RESULT getHash(unsigned long &SWIG_OUTPUT) const = 0; }; @@ -411,7 +424,7 @@ public: virtual RESULT setSecSequence(const eSecCommandList &list)=0; #endif enum { - bitErrorRate, signalPower, signalQuality, Locked, Synced + bitErrorRate, signalPower, signalQuality, locked, synced, frontendNumber }; virtual int readFrontendData(int type)=0; virtual PyObject *readTransponderData(bool original)=0; @@ -577,10 +590,20 @@ public: /** Set Displayed Video PID and type */ virtual RESULT setVideoPID(int vpid, int type)=0; - enum { af_MPEG, af_AC3, af_DTS }; + enum { af_MPEG, af_AC3, af_DTS, af_AAC }; /** Set Displayed Audio PID and type */ virtual RESULT setAudioPID(int apid, int type)=0; + enum { ac_left, ac_stereo, ac_right }; + /** Set Displayed Audio Channel */ + virtual RESULT setAudioChannel(int channel)=0; + virtual int getAudioChannel()=0; + + virtual RESULT setPCMDelay(int delay)=0; + virtual int getPCMDelay()=0; + virtual RESULT setAC3Delay(int delay)=0; + virtual int getAC3Delay()=0; + /** Set Displayed Videotext PID */ virtual RESULT setTextPID(int vpid)=0; @@ -620,6 +643,20 @@ public: virtual RESULT setTrickmode(int what) = 0; virtual RESULT getPTS(int what, pts_t &pts) = 0; + + virtual RESULT showSinglePic(const char *filename) = 0; + + virtual RESULT setRadioPic(const std::string &filename) = 0; + + struct videoEvent + { + enum { eventUnknown = 0, eventSizeChanged = VIDEO_EVENT_SIZE_CHANGED } type; + unsigned char aspect; + unsigned short height; + unsigned short width; + }; + + virtual RESULT connectVideoEvent(const Slot1 &event, ePtr &connection) = 0; }; #endif //SWIG