X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/dc46dad972d745f6e06ecb3324c037aeee479360..8c6a42ec6cd91066620bdd8cad85859d2c1f2247:/lib/dvb/tstools.cpp diff --git a/lib/dvb/tstools.cpp b/lib/dvb/tstools.cpp index 6fe91136..a9eef406 100644 --- a/lib/dvb/tstools.cpp +++ b/lib/dvb/tstools.cpp @@ -71,7 +71,8 @@ void eDVBTSTools::setSearchRange(int maxrange) int eDVBTSTools::getPTS(off_t &offset, pts_t &pts, int fixed) { if (m_use_streaminfo) - return m_streaminfo.getPTS(offset, pts); + if (!m_streaminfo.getPTS(offset, pts)) + return 0; if (!m_file.valid()) return -1; @@ -144,9 +145,9 @@ int eDVBTSTools::getPTS(off_t &offset, pts_t &pts, int fixed) payload = packet + 4; - if (m_pid >= 0) +/* if (m_pid >= 0) if (pid != m_pid) - continue; + continue; */ if (!pusi) continue; @@ -186,7 +187,8 @@ int eDVBTSTools::fixupPTS(const off_t &offset, pts_t &now) { if (m_use_streaminfo) { - return m_streaminfo.fixupPTS(offset, now); + if (!m_streaminfo.fixupPTS(offset, now)) + return 0; } else { /* for the simple case, we assume one epoch, with up to one wrap around in the middle. */ @@ -660,7 +662,8 @@ int eDVBTSTools::findNextPicture(off_t &offset, size_t &len, int &distance, int off_t new_offset = offset; size_t new_len = len; - + int first = 1; + while (distance > 0) { int dir = direction; @@ -674,8 +677,9 @@ int eDVBTSTools::findNextPicture(off_t &offset, size_t &len, int &distance, int // eDebug("we moved %d, %d to go frames (now at %llx)", dir, distance, new_offset); - if (distance >= 0) + if (distance >= 0 || first) { + first = 0; offset = new_offset; len = new_len; nr_frames += abs(dir);