fix pts relative seeking, make pts_t signed
[enigma2.git] / lib / dvb / idvb.h
index bd528f0657a79b6496d3780d4899b560150dfe00..b68c014bd7e77d93bf009830bbc701534fe96b21 100644 (file)
@@ -19,7 +19,13 @@ struct eBouquet
 {
        std::string m_bouquet_name;
        std::string m_path;
-       std::list<eServiceReference> m_services;
+       typedef std::list<eServiceReference> list;
+       list m_services;
+// the following four methods are implemented in db.cpp
+       RESULT flushChanges();
+       RESULT addService(const eServiceReference &);
+       RESULT removeService(const eServiceReference &);
+       RESULT moveService(const eServiceReference &, unsigned int);
 };
 
                // bitte KEINE operator int() definieren, sonst bringt das ganze nix!
@@ -262,7 +268,7 @@ public:
        virtual RESULT addService(const eServiceReferenceDVB &service, eDVBService *service)=0;
        virtual RESULT getService(const eServiceReferenceDVB &reference, ePtr<eDVBService> &service)=0;
 
-       virtual RESULT getBouquet(const eServiceReference &ref, const eBouquet* &bouquet)=0;
+       virtual RESULT getBouquet(const eServiceReference &ref,  eBouquet* &bouquet)=0;
 
        virtual RESULT startQuery(ePtr<iDVBChannelListQuery> &query, eDVBChannelQuery *query, const eServiceReference &source)=0;
 };
@@ -464,7 +470,8 @@ public:
        virtual void ReleaseUse() = 0;
 };
 
-typedef unsigned long long pts_t;
+       /* signed, so we can express deltas. */
+typedef long long pts_t;
 
 class iDVBPVRChannel: public iDVBChannel
 {
@@ -480,9 +487,8 @@ public:
        
        virtual RESULT getLength(pts_t &pts) = 0;
        virtual RESULT getCurrentPosition(pts_t &pos) = 0;
-       virtual RESULT seekTo(pts_t &pts) = 0;
-       
-       // seekTo ...
+       virtual RESULT seekTo(int relative, pts_t &pts) = 0;
+       virtual RESULT seekToPosition(const off_t &pts) = 0;
 };
 
 class iDVBSectionReader;