aboutsummaryrefslogtreecommitdiff
path: root/lib/dvb/pvrparse.cpp
diff options
context:
space:
mode:
authorFelix Domke <tmbinc@elitedvb.net>2006-02-28 01:43:36 +0000
committerFelix Domke <tmbinc@elitedvb.net>2006-02-28 01:43:36 +0000
commit2c0fdda82ac02f8436816236b4649819274d1c95 (patch)
tree9933d259ae0a993e82c06936a20fea6c96a9b96c /lib/dvb/pvrparse.cpp
parent7f5aa3b85debad0a5642cc5c57cc5b967093ff3e (diff)
downloadenigma2-2c0fdda82ac02f8436816236b4649819274d1c95.tar.gz
enigma2-2c0fdda82ac02f8436816236b4649819274d1c95.zip
add getNextAccessPoint
Diffstat (limited to 'lib/dvb/pvrparse.cpp')
-rw-r--r--lib/dvb/pvrparse.cpp35
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)
{
}