X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/ee5fce8acad063a63f8b97e7eb2ad3aa19359325..95c570d26ce81e3dd1e0610ff6c5c0b34d75ba5a:/lib/service/iservice.h diff --git a/lib/service/iservice.h b/lib/service/iservice.h index 7ea8c17b..71c82ab0 100644 --- a/lib/service/iservice.h +++ b/lib/service/iservice.h @@ -38,7 +38,8 @@ public: flagDirectory=isDirectory|mustDescent|canDescent, shouldSort=8, // should be ASCII-sorted according to service_name. great for directories. hasSortKey=16, // has a sort key in data[3]. not having a sort key implies 0. - sort1=32 // sort key is 1 instead of 0 + sort1=32, // sort key is 1 instead of 0 + isMarker=64 // Marker }; int flags; // flags will NOT be compared. @@ -51,6 +52,13 @@ public: std::string getPath() { return path; } void setPath( const std::string &n ) { path=n; } + unsigned int getUnsignedData(unsigned int num) const + { + if ( num < sizeof(data)/sizeof(int) ) + return data[num]; + return 0; + } + int getData(unsigned int num) const { if ( num < sizeof(data)/sizeof(int) ) @@ -58,6 +66,12 @@ public: return 0; } + void setUnsignedData(unsigned int num, unsigned int val) + { + if ( num < sizeof(data)/sizeof(int) ) + data[num] = val; + } + void setData(unsigned int num, int val) { if ( num < sizeof(data)/sizeof(int) ) @@ -131,6 +145,7 @@ public: #endif eServiceReference(const std::string &string); std::string toString() const; + std::string toCompareString() const; bool operator==(const eServiceReference &c) const { if (type != c.type) @@ -192,6 +207,8 @@ typedef long long pts_t; Hide the result only if there is another way to check for failure! */ +TEMPLATE_TYPEDEF(ePtr, eServiceEventPtr); + class iStaticServiceInformation: public iObject { #ifdef SWIG @@ -209,12 +226,13 @@ public: virtual int getInfo(const eServiceReference &ref, int w); virtual std::string getInfoString(const eServiceReference &ref,int w); + + virtual int setInfo(const eServiceReference &ref, int w, int v); + virtual int setInfoString(const eServiceReference &ref, int w, const char *v); }; TEMPLATE_TYPEDEF(ePtr, iStaticServiceInformationPtr); -TEMPLATE_TYPEDEF(ePtr, eServiceEventPtr); - class iServiceInformation: public iObject { #ifdef SWIG @@ -225,7 +243,7 @@ public: virtual SWIG_VOID(RESULT) getName(std::string &SWIG_OUTPUT)=0; virtual SWIG_VOID(RESULT) getEvent(ePtr &SWIG_OUTPUT, int nownext); - enum { + enum { sIsCrypted, /* is encrypted (no indication if decrypt was possible) */ sAspect, /* aspect ratio: 0=4:3, 1=16:9, 2=whatever we need */ sIsMultichannel, /* multichannel *available* (probably not selected) */ @@ -260,34 +278,43 @@ public: sComment, sTracknumber, sGenre, + sCAIDs, + sVideoType, // MPEG2 MPEG4 + + sTags, /* space seperated list of tags */ }; - enum { resNA = -1, resIsString = -2 }; + enum { resNA = -1, resIsString = -2, resIsPyObject = -3 }; virtual int getInfo(int w); virtual std::string getInfoString(int w); + virtual PyObject *getInfoObject(int w); + + virtual int setInfo(int w, int v); + virtual int setInfoString(int w, const char *v); }; TEMPLATE_TYPEDEF(ePtr, iServiceInformationPtr); -class iFrontendStatusInformation: public iObject +class iFrontendInformation: public iObject { #ifdef SWIG - iFrontendStatusInformation(); - ~iFrontendStatusInformation(); + iFrontendInformation(); + ~iFrontendInformation(); #endif public: enum { bitErrorRate, signalPower, signalQuality, - LockState, - SyncState + lockState, + syncState, + frontendNumber }; virtual int getFrontendInfo(int w)=0; virtual PyObject *getFrontendData(bool original=false)=0; }; -TEMPLATE_TYPEDEF(ePtr, iFrontendStatusInformationPtr); +TEMPLATE_TYPEDEF(ePtr, iFrontendInformationPtr); class iPauseableService: public iObject { @@ -328,12 +355,6 @@ TEMPLATE_TYPEDEF(ePtr, iSeekableServicePtr); struct iAudioTrackInfo { -#ifdef SWIG -private: - iAudioTrackInfo(); - ~iAudioTrackInfo(); -public: -#endif #ifndef SWIG std::string m_description; std::string m_language; /* iso639 */ @@ -358,6 +379,47 @@ public: TEMPLATE_TYPEDEF(ePtr, iAudioTrackSelectionPtr); +class iAudioChannelSelection: public iObject +{ +#ifdef SWIG + iAudioChannelSelection(); + ~iAudioChannelSelection(); +#endif +public: + enum { LEFT, STEREO, RIGHT }; + virtual int getCurrentChannel()=0; + virtual RESULT selectChannel(int i)=0; +}; + +TEMPLATE_TYPEDEF(ePtr, iAudioChannelSelectionPtr); + +class iAudioDelay: public iObject +{ +#ifdef SWIG + iAudioDelay(); + ~iAudioDelay(); +#endif +public: + virtual int getAC3Delay()=0; + virtual int getPCMDelay()=0; + virtual void setAC3Delay(int)=0; + virtual void setPCMDelay(int)=0; +}; + +TEMPLATE_TYPEDEF(ePtr, iAudioDelayPtr); + +class iRadioText: public iObject +{ +#ifdef SWIG + iRadioText(); + ~iRadioText(); +#endif +public: + virtual std::string getRadioText(int x=0)=0; +}; + +TEMPLATE_TYPEDEF(ePtr, iRadioTextPtr); + class iSubserviceList: public iObject { #ifdef SWIG @@ -405,6 +467,20 @@ public: TEMPLATE_TYPEDEF(ePtr, iCueSheetPtr); +class eWidget; +class PyList; + +class iSubtitleOutput: public iObject +{ +public: + virtual RESULT enableSubtitles(eWidget *parent, PyObject *entry)=0; + virtual RESULT disableSubtitles(eWidget *parent)=0; + virtual PyObject *getSubtitleList()=0; + virtual PyObject *getCachedSubtitle()=0; +}; + +TEMPLATE_TYPEDEF(ePtr, iSubtitleOutputPtr); + class iPlayableService: public iObject { #ifdef SWIG @@ -433,6 +509,8 @@ public: /* only when cueSheet is implemented */ evCuesheetChanged, + + evUpdatedRadioText }; virtual RESULT connectEvent(const Slot2 &event, ePtr &connection)=0; virtual RESULT start()=0; @@ -443,10 +521,14 @@ public: virtual SWIG_VOID(RESULT) pause(ePtr &SWIG_OUTPUT)=0; virtual SWIG_VOID(RESULT) info(ePtr &SWIG_OUTPUT)=0; virtual SWIG_VOID(RESULT) audioTracks(ePtr &SWIG_OUTPUT)=0; + virtual SWIG_VOID(RESULT) audioChannel(ePtr &SWIG_OUTPUT)=0; virtual SWIG_VOID(RESULT) subServices(ePtr &SWIG_OUTPUT)=0; - virtual SWIG_VOID(RESULT) frontendStatusInfo(ePtr &SWIG_OUTPUT)=0; + virtual SWIG_VOID(RESULT) frontendInfo(ePtr &SWIG_OUTPUT)=0; virtual SWIG_VOID(RESULT) timeshift(ePtr &SWIG_OUTPUT)=0; virtual SWIG_VOID(RESULT) cueSheet(ePtr &SWIG_OUTPUT)=0; + virtual SWIG_VOID(RESULT) subtitle(ePtr &SWIG_OUTPUT)=0; + virtual SWIG_VOID(RESULT) audioDelay(ePtr &SWIG_OUTPUT)=0; + virtual SWIG_VOID(RESULT) radioText(ePtr &SWIG_OUTPUT)=0; }; TEMPLATE_TYPEDEF(ePtr, iPlayableServicePtr); @@ -461,6 +543,7 @@ public: virtual RESULT prepare(const char *filename, time_t begTime=-1, time_t endTime=-1, int eit_event_id=-1)=0; virtual RESULT start()=0; virtual RESULT stop()=0; + virtual SWIG_VOID(RESULT) frontendInfo(ePtr &SWIG_OUTPUT)=0; }; TEMPLATE_TYPEDEF(ePtr, iRecordableServicePtr); @@ -477,7 +560,7 @@ public: /* flush changes */ virtual RESULT flushChanges()=0; /* adds a service to a list */ - virtual RESULT addService(eServiceReference &ref)=0; + virtual RESULT addService(eServiceReference &ref, eServiceReference before=eServiceReference())=0; /* removes a service from a list */ virtual RESULT removeService(eServiceReference &ref)=0; /* moves a service in a list, only if list suppports a specific sort method. */ @@ -498,7 +581,7 @@ class iListableService: public iObject public: /* legacy interface: get a list */ virtual RESULT getContent(std::list &list, bool sorted=false)=0; - virtual RESULT getContent(PyObject *list, bool sorted=false)=0; + virtual PyObject *getContent(const char* format, bool sorted=false)=0; /* new, shiny interface: streaming. */ virtual SWIG_VOID(RESULT) getNext(eServiceReference &SWIG_OUTPUT)=0;