servicemp3.cpp: more simple/flexible streaming detection
[enigma2.git] / lib / base / rawfile.h
index 859f10ba15397f3fa47872caabf67e6439273a39..7b736a33afc258db8f938fdba140451092c2dd33 100644 (file)
@@ -2,24 +2,27 @@
 #define __lib_base_rawfile_h
 
 #include <string>
+#include <lib/base/itssource.h>
 
-class eRawFile
+class eRawFile: public iTsSource
 {
+       DECLARE_REF(eRawFile);
+       eSingleLock m_lock;
 public:
        eRawFile();
        ~eRawFile();
-       
        int open(const char *filename, int cached = 0);
        void setfd(int fd);
-       off_t lseek(off_t offset, int whence);
        int close();
-       ssize_t read(void *buf, size_t count); /* NOTE: you must be able to handle short reads! */
+
+       // iTsSource
+       off_t lseek(off_t offset, int whence);
+       ssize_t read(off_t offset, void *buf, size_t count);
        off_t length();
        int valid();
 private:
        int m_fd;     /* for uncached */
        FILE *m_file; /* for cached */
-       
        int m_cached;
        std::string m_basename;
        off_t m_splitsize, m_totallength, m_current_offset, m_base_offset, m_last_offset;
@@ -27,7 +30,10 @@ private:
        void scan();
        int m_current_file;
        int switchOffset(off_t off);
-       int openFile(int nr);
+
+       off_t lseek_internal(off_t offset, int whence);
+       FILE *openFileCached(int nr);
+       int openFileUncached(int nr);
 };
 
 #endif