X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/2e2cf81de863a180f7d27dca89e5122e1eb0acaa..e4034b7fce157a23fcd2668a59ccc7a32d19ac84:/lib/service/iservice.h diff --git a/lib/service/iservice.h b/lib/service/iservice.h index 5f861899..cbfd24a9 100644 --- a/lib/service/iservice.h +++ b/lib/service/iservice.h @@ -109,7 +109,7 @@ public: { if (type != c.type) return 0; - return /* (flags == c.flags) && */ (memcmp(data, c.data, sizeof(int)*8)==0) && (path == c.path); + return (memcmp(data, c.data, sizeof(int)*8)==0) && (path == c.path); } bool operator!=(const eServiceReference &c) const { @@ -122,11 +122,6 @@ public: if (type > c.type) return 0; - -/* if (flags < c.flags) - return 1; - if (flags > c.flags) - return 0; */ int r=memcmp(data, c.data, sizeof(int)*8); if (r) @@ -146,7 +141,7 @@ public: SWIG_ALLOW_OUTPUT_SIMPLE(eServiceReference); -typedef unsigned long long pts_t; +typedef long long pts_t; /* the reason we have the servicereference as additional argument is that we don't have to create one object for every entry in a possibly @@ -189,6 +184,36 @@ class iServiceInformation: public iObject public: virtual SWIG_VOID(RESULT) getName(std::string &SWIG_OUTPUT)=0; virtual SWIG_VOID(RESULT) getEvent(ePtr &SWIG_OUTPUT, int nownext); + + 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) */ + + /* "user serviceable info" - they are not reliable. Don't use them for anything except the service menu! + that's also the reason why they are so globally defined. + + + again - if somebody EVER tries to use this information for anything else than simply displaying it, + i will change this to return a user-readable text like "zero x zero three three" (and change the + exact spelling in every version) to stop that! + */ + sVideoPID, + sAudioPID, + sPCRPID, + sPMTPID, + sTXTPID, + + sSID, + sONID, + sTSID, + sNamespace, + sProvider, + }; + enum { resNA = -1, resIsString = -2 }; + + virtual int getInfo(int w); + virtual std::string getInfoString(int w); }; TEMPLATE_TYPEDEF(ePtr, iServiceInformationPtr); @@ -214,6 +239,28 @@ public: TEMPLATE_TYPEDEF(ePtr, iSeekableServicePtr); +struct iAudioTrackInfo +{ + std::string m_description; + std::string m_language; /* iso639 */ + + std::string getDescription() { return m_description; } + std::string getLanguage() { return m_language; } +}; + +SWIG_ALLOW_OUTPUT_SIMPLE(iAudioTrackInfo); + +class iAudioTrackSelection: public iObject +{ +public: + virtual int getNumberOfTracks()=0; + virtual RESULT selectTrack(unsigned int i)=0; + virtual SWIG_VOID(RESULT) getTrackInfo(struct iAudioTrackInfo &SWIG_OUTPUT, unsigned int n)=0; +}; + +TEMPLATE_TYPEDEF(ePtr, iAudioTrackSelectionPtr); + + class iPlayableService: public iObject { friend class iServiceHandler; @@ -224,8 +271,9 @@ public: evEnd, evTuneFailed, - // when iServiceInformation is implemented: - evUpdatedEventInfo + // when iServiceInformation is implemented: + evUpdatedEventInfo, + evUpdatedInfo, }; virtual RESULT connectEvent(const Slot2 &event, ePtr &connection)=0; virtual RESULT start()=0; @@ -233,6 +281,7 @@ public: virtual SWIG_VOID(RESULT) seek(ePtr &SWIG_OUTPUT)=0; 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; }; TEMPLATE_TYPEDEF(ePtr, iPlayableServicePtr); @@ -252,6 +301,8 @@ TEMPLATE_TYPEDEF(ePtr, iRecordableServicePtr); class iMutableServiceList: public iObject { public: + /* flush changes */ + virtual RESULT flushChanges()=0; /* adds a service to a list */ virtual RESULT addService(eServiceReference &ref)=0; /* removes a service from a list */