X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/3353982034f151f4615cb1842873d99a7a6fa0ca..d2ceae9583bc62daa872c316f8952b9a6a416a69:/lib/service/servicedvb.cpp diff --git a/lib/service/servicedvb.cpp b/lib/service/servicedvb.cpp index 39c4407d..d8206b9a 100644 --- a/lib/service/servicedvb.cpp +++ b/lib/service/servicedvb.cpp @@ -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 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 demux; + m_service_handler.getDemux(demux); + if (!demux) + return -1; + + return pvr_channel->getCurrentPosition(demux, pos); } RESULT eDVBServicePlay::info(ePtr &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; }