diff options
| author | Felix Domke <tmbinc@elitedvb.net> | 2006-02-28 01:43:36 +0000 |
|---|---|---|
| committer | Felix Domke <tmbinc@elitedvb.net> | 2006-02-28 01:43:36 +0000 |
| commit | 2c0fdda82ac02f8436816236b4649819274d1c95 (patch) | |
| tree | 9933d259ae0a993e82c06936a20fea6c96a9b96c /lib/dvb/pvrparse.cpp | |
| parent | 7f5aa3b85debad0a5642cc5c57cc5b967093ff3e (diff) | |
| download | enigma2-2c0fdda82ac02f8436816236b4649819274d1c95.tar.gz enigma2-2c0fdda82ac02f8436816236b4649819274d1c95.zip | |
add getNextAccessPoint
Diffstat (limited to 'lib/dvb/pvrparse.cpp')
| -rw-r--r-- | lib/dvb/pvrparse.cpp | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/lib/dvb/pvrparse.cpp b/lib/dvb/pvrparse.cpp index bde43765..65e599c3 100644 --- a/lib/dvb/pvrparse.cpp +++ b/lib/dvb/pvrparse.cpp @@ -217,6 +217,41 @@ off_t eMPEGStreamInformation::getAccessPoint(pts_t ts) return last; } +int eMPEGStreamInformation::getNextAccessPoint(pts_t &ts, const pts_t &start, int direction) +{ + off_t offset = getAccessPoint(start); + std::map<off_t, pts_t>::const_iterator i = m_access_points.find(offset); + if (i == m_access_points.end()) + { + eDebug("getNextAccessPoint: initial AP not found"); + return -1; + } + while (direction) + { + if (direction > 0) + { + if (i == m_access_points.end()) + return -1; + ++i; + direction--; + } + if (direction < 0) + { + if (i == m_access_points.begin()) + { + eDebug("at start"); + return -1; + } + --i; + direction++; + } + } + ts = i->second - getDelta(i->first); + eDebug("fine, at %llx - %llx = %llx", ts, i->second, getDelta(i->first)); + eDebug("fine, at %lld - %lld = %lld", ts, i->second, getDelta(i->first)); + return 0; +} + eMPEGStreamParserTS::eMPEGStreamParserTS(eMPEGStreamInformation &streaminfo): m_streaminfo(streaminfo), m_pktptr(0), m_pid(-1), m_need_next_packet(0), m_skip(0) { } |
