use video stc for display. make skipping look a bit better.
[enigma2.git] / lib / service / servicedvb.cpp
index 790bfca62bb4feef05b43aaff98ed7d0760541b7..4b7ee85cd7ad781c749297b1f134bd7fe4e106d2 100644 (file)
@@ -669,7 +669,7 @@ RESULT eDVBServicePlay::setSlowMotion(int ratio)
 RESULT eDVBServicePlay::setFastForward(int ratio)
 {
        if (m_decoder)
-               m_decoder->setFastForward(ratio);
+               return m_decoder->setFastForward(ratio);
        else
                return -1;
 }
@@ -721,7 +721,19 @@ RESULT eDVBServicePlay::unpause()
 
 RESULT eDVBServicePlay::seekTo(pts_t to)
 {
-       return -1;
+       eDebug("eDVBServicePlay::seekTo: jump %lld", to);
+
+       ePtr<iDVBPVRChannel> pvr_channel;
+       
+       if (m_service_handler.getPVRChannel(pvr_channel))
+               return -1;
+       
+       ePtr<iDVBDemux> demux;
+       m_service_handler.getDemux(demux);
+       if (!demux)
+               return -1;
+       
+       return pvr_channel->seekTo(demux, 0, to);
 }
 
 RESULT eDVBServicePlay::seekRelative(int direction, pts_t to)
@@ -755,7 +767,14 @@ RESULT eDVBServicePlay::getPlayPosition(pts_t &pos)
        if (!demux)
                return -1;
        
-       return pvr_channel->getCurrentPosition(demux, pos);
+       return pvr_channel->getCurrentPosition(demux, pos, 1);
+}
+
+RESULT eDVBServicePlay::setTrickmode(int trick)
+{
+       if (m_decoder)
+               m_decoder->setTrickmode(trick);
+       return 0;
 }
 
 RESULT eDVBServicePlay::frontendStatusInfo(ePtr<iFrontendStatusInformation> &ptr)