X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/181d3463e3545890e0a0c60081e84af67d302614..a81eab44ddc3d7faad43f8434d04f3c55b81b880:/lib/service/iservice.h diff --git a/lib/service/iservice.h b/lib/service/iservice.h index 4592a971..4a19378c 100644 --- a/lib/service/iservice.h +++ b/lib/service/iservice.h @@ -1,6 +1,7 @@ #ifndef __lib_dvb_iservice_h #define __lib_dvb_iservice_h +#include #include #include #include @@ -134,6 +135,8 @@ public: } }; +typedef unsigned 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 large list, provided that no state information is nessesary to deliver @@ -143,6 +146,9 @@ class iStaticServiceInformation: public iObject { public: virtual RESULT getName(const eServiceReference &ref, std::string &name)=0; + + // doesn't need to be implemented, should return -1 then. + virtual int getLength(const eServiceReference &ref)=0; // FOR SWIG std::string getName(const eServiceReference &ref) { std::string temp; getName(ref, temp); return temp; } @@ -172,6 +178,16 @@ public: TEMPLATE_TYPEDEF(ePtr, iPauseableServicePtr); +class iSeekableService: public iObject +{ +public: + virtual RESULT getLength(pts_t &SWIG_OUTPUT)=0; + virtual RESULT seekTo(pts_t to)=0; + virtual RESULT getPlayPosition(pts_t &SWIG_OUTPUT)=0; +}; + +TEMPLATE_TYPEDEF(ePtr, iSeekableServicePtr); + class iPlayableService: public iObject { friend class iServiceHandler; @@ -187,6 +203,7 @@ public: virtual RESULT connectEvent(const Slot2 &event, ePtr &connection)=0; virtual RESULT start()=0; virtual RESULT stop()=0; + virtual RESULT seek(ePtr &ptr)=0; virtual RESULT pause(ePtr &ptr)=0; virtual RESULT info(ePtr &ptr)=0; }; @@ -208,7 +225,11 @@ TEMPLATE_TYPEDEF(ePtr, iRecordableServicePtr); class iListableService: public iObject { public: + /* legacy interface: get a list */ virtual RESULT getContent(std::list &list)=0; + + /* new, shiny interface: streaming. */ + virtual RESULT getNext(eServiceReference &ptr)=0; }; TEMPLATE_TYPEDEF(ePtr, iListableServicePtr);