Screens/LocationBox.py: Get rid of "from Directories import *"
[openblackhole/openblackhole-enigma2.git] / lib / service / servicem2ts.cpp
index 1a8824f..9900919 100644 (file)
@@ -16,7 +16,6 @@ public:
        ~eM2TSFile();
 
        // iTsSource
-       off_t lseek(off_t offset, int whence);
        ssize_t read(off_t offset, void *buf, size_t count);
        off_t length();
        off_t offset();
@@ -42,7 +41,7 @@ public:
        int isPlayable(const eServiceReference &ref, const eServiceReference &ignore, bool simulate) { return 1; }
        int getInfo(const eServiceReference &ref, int w);
        std::string getInfoString(const eServiceReference &ref,int w);
-       PyObject *getInfoObject(const eServiceReference &r, int what);
+       long long getFileSize(const eServiceReference &ref);
 };
 
 DEFINE_REF(eStaticServiceM2TSInformation);
@@ -71,9 +70,9 @@ RESULT eStaticServiceM2TSInformation::getName(const eServiceReference &ref, std:
 int eStaticServiceM2TSInformation::getLength(const eServiceReference &ref)
 {
        ASSERT(ref == m_ref);
-       
+
        eDVBTSTools tstools;
-       
+
        struct stat s;
        stat(ref.path.c_str(), &s);
 
@@ -138,15 +137,9 @@ std::string eStaticServiceM2TSInformation::getInfoString(const eServiceReference
        }
 }
 
-PyObject *eStaticServiceM2TSInformation::getInfoObject(const eServiceReference &r, int what)
+long long eStaticServiceM2TSInformation::getFileSize(const eServiceReference &ref)
 {
-       switch (what)
-       {
-       case iServiceInformation::sFileSize:
-               return PyLong_FromLongLong(m_parser.m_filesize);
-       default:
-               Py_RETURN_NONE;
-       }
+       return m_parser.m_filesize;
 }
 
 RESULT eStaticServiceM2TSInformation::getEvent(const eServiceReference &ref, ePtr<eServiceEvent> &evt, time_t start_time)
@@ -170,9 +163,9 @@ RESULT eStaticServiceM2TSInformation::getEvent(const eServiceReference &ref, ePt
 DEFINE_REF(eM2TSFile);
 
 eM2TSFile::eM2TSFile(const char *filename):
-       m_lock(false),
+       m_lock(),
        m_sync_offset(0),
-       m_fd(::open(filename, O_RDONLY | O_LARGEFILE)),
+       m_fd(::open(filename, O_RDONLY | O_LARGEFILE | O_CLOEXEC)),
        m_current_offset(0),
        m_length(0)
 {
@@ -186,18 +179,6 @@ eM2TSFile::~eM2TSFile()
                ::close(m_fd);
 }
 
-off_t eM2TSFile::lseek(off_t offset, int whence)
-{
-       eSingleLocker l(m_lock);
-
-       offset = (offset % 188) + (offset * 192) / 188;
-
-       if (offset != m_current_offset)
-               m_current_offset = lseek_internal(offset, whence);
-
-       return m_current_offset;
-}
-
 off_t eM2TSFile::lseek_internal(off_t offset, int whence)
 {
        off_t ret;
@@ -218,7 +199,7 @@ ssize_t eM2TSFile::read(off_t offset, void *b, size_t count)
 sync:
        if ((offset+m_sync_offset) != m_current_offset)
        {
-//             eDebug("seekTo %lld", offset+m_sync_offset);
+//             eDebug("[eM2TSFile] seekTo %lld", offset+m_sync_offset);
                m_current_offset = lseek_internal(offset+m_sync_offset, SEEK_SET);
                if (m_current_offset < 0)
                        return m_current_offset;
@@ -233,7 +214,7 @@ sync:
                if (tmp[4] != 0x47)
                {
                        if (rd > 0) {
-                               eDebug("short read at pos %lld async!!", m_current_offset);
+                               eDebug("[eM2TSFile] short read at pos %lld async!!", m_current_offset);
                                return rd;
                        }
                        else {
@@ -241,20 +222,20 @@ sync:
                                ret = ::read(m_fd, tmp+192, 384);
 
 #if 0
-                               eDebugNoNewLine("m2ts out of sync at pos %lld, real %lld:", offset + m_sync_offset, m_current_offset);
+                               eDebugNoNewLineStart("[eM2TSFile] m2ts out of sync at pos %lld, real %lld:", offset + m_sync_offset, m_current_offset);
                                for (; x < 192; ++x)
                                        eDebugNoNewLine(" %02x", tmp[x]);
-                               eDebug("");
+                               eDebugNoNewLine("\n");
                                x=0;
 #else
-                               eDebug("m2ts out of sync at pos %lld, real %lld", offset + m_sync_offset, m_current_offset);
+                               eDebug("[eM2TSFile] m2ts out of sync at pos %lld, real %lld", offset + m_sync_offset, m_current_offset);
 #endif
                                for (; x < 192; ++x)
                                {
                                        if (tmp[x] == 0x47 && tmp[x+192] == 0x47)
                                        {
                                                int add_offs = (x - 4);
-                                               eDebug("sync found at pos %d, sync_offset is now %d, old was %d", x, add_offs + m_sync_offset, m_sync_offset);
+                                               eDebug("[eM2TSFile] sync found at pos %d, sync_offset is now %d, old was %d", x, add_offs + m_sync_offset, m_sync_offset);
                                                m_sync_offset += add_offs;
                                                goto sync;
                                        }
@@ -304,7 +285,7 @@ eServiceFactoryM2TS::eServiceFactoryM2TS()
 eServiceFactoryM2TS::~eServiceFactoryM2TS()
 {
        ePtr<eServiceCenter> sc;
-       
+
        eServiceCenter::getPrivInstance(sc);
        if (sc)
                sc->removeServiceFactory(eServiceFactoryM2TS::id);