add seekToPosition to DVBChannel
authorFelix Domke <tmbinc@elitedvb.net>
Sun, 13 Nov 2005 04:28:50 +0000 (04:28 +0000)
committerFelix Domke <tmbinc@elitedvb.net>
Sun, 13 Nov 2005 04:28:50 +0000 (04:28 +0000)
lib/dvb/dvb.cpp
lib/dvb/dvb.h
lib/dvb/idvb.h

index 13ae224c3d1490f26cabe046e7dfad2c7e836ec1..a2a37758c37cdda449bf5f14a4cced62503e4fdf 100644 (file)
@@ -619,11 +619,30 @@ RESULT eDVBChannel::getCurrentPosition(pts_t &pos)
 
 RESULT eDVBChannel::seekTo(pts_t &pts)
 {
+#if 0
+       eDebug("eDVBChannel: seekTo .. %llx", pts);
        m_pvr_thread->pause();
        if (m_decoder_demux)
                m_decoder_demux->get().flush();
                /* demux will also flush all decoder.. */
-//     m_pvr_thread->seek(pts);
+       
+       off_t r;
+       
+       if (!m_tstools.getPosition(pts, r));
+               m_pvr_thread->seek(r);
+       else
+               eDebug("getPosition failed!");
        m_pvr_thread->resume();
+#endif
 }
 
+RESULT eDVBChannel::seekToPosition(int relative, const off_t &r)
+{
+       eDebug("eDVBChannel: seekToPosition .. %llx", r);
+       m_pvr_thread->pause();
+       if (m_decoder_demux)
+               m_decoder_demux->get().flush();
+               /* demux will also flush all decoder.. */
+       m_pvr_thread->seek(relative ? SEEK_CUR : SEEK_SET, r);
+       m_pvr_thread->resume();
+}
index f85862576601bb573c33ec3e8705887f4ec62909..01a0e47ea36cc6838f8fff207ac67366bc43c09f 100644 (file)
@@ -193,6 +193,7 @@ public:
        RESULT getLength(pts_t &len);
        RESULT getCurrentPosition(pts_t &pos);
        RESULT seekTo(pts_t &pts);
+       RESULT seekToPosition(int relative, const off_t &off);
 
 private:
        ePtr<eDVBAllocatedFrontend> m_frontend;
index bd528f0657a79b6496d3780d4899b560150dfe00..de481d7f270f5f5b3423a92cd7e1ac8b55f7e496 100644 (file)
@@ -481,8 +481,7 @@ 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 seekToPosition(int relative, const off_t &pts) = 0;
 };
 
 class iDVBSectionReader;