lcd: fix inverted mode
[enigma2.git] / lib / service / servicedvb.cpp
index 39c4407..d8206b9 100644 (file)
@@ -652,8 +652,14 @@ RESULT eDVBServicePlay::seekRelative(int direction, pts_t to)
        if (m_service_handler.getPVRChannel(pvr_channel))
                return -1;
        
-                       /* this is of couse wrong: PTS values don't match with bytes. */
-       return pvr_channel->seekToPosition(SEEK_CUR, direction * to);
+       to *= direction;
+       
+       ePtr<iDVBDemux> demux;
+       m_service_handler.getDemux(demux);
+       if (!demux)
+               return -1;
+       
+       return pvr_channel->seekTo(demux, 1, to);
 }
 
 RESULT eDVBServicePlay::getPlayPosition(pts_t &pos)
@@ -663,7 +669,12 @@ RESULT eDVBServicePlay::getPlayPosition(pts_t &pos)
        if (m_service_handler.getPVRChannel(pvr_channel))
                return -1;
        
-       return pvr_channel->getCurrentPosition(pos);
+       ePtr<iDVBDemux> demux;
+       m_service_handler.getDemux(demux);
+       if (!demux)
+               return -1;
+       
+       return pvr_channel->getCurrentPosition(demux, pos);
 }
 
 RESULT eDVBServicePlay::info(ePtr<iServiceInformation> &ptr)
@@ -718,6 +729,9 @@ RESULT eDVBServicePlay::selectTrack(unsigned int i)
        
        if (m_decoder->setAudioPID(program.audioStreams[i].pid, program.audioStreams[i].type))
                return -4;
+
+       if (m_decoder->start())
+               return -5;
        
        return 0;
 }