/* timestampDelta is in fact the difference between */
/* the PTS in the stream and a real PTS from 0..max */
std::map<off_t, pts_t> m_timestamp_deltas;
-
+
+ /* these are non-fixed up pts value (like m_access_points), just used to accelerate stuff. */
+ std::multimap<pts_t, off_t> m_pts_to_offset;
+
int save(const char *filename);
int load(const char *filename);
/* get delta at specific offset */
pts_t getDelta(off_t offset);
- /* fixup timestamp near offset */
- pts_t fixuppts_t(off_t offset, pts_t ts);
+ /* fixup timestamp near offset, i.e. convert to zero-based */
+ int fixupPTS(const off_t &offset, pts_t &ts);
+
+ /* get PTS before offset */
+ int getPTS(off_t &offset, pts_t &pts);
/* inter/extrapolate timestamp from offset */
pts_t getInterpolated(off_t offset);
off_t getAccessPoint(pts_t ts);
+ int getNextAccessPoint(pts_t &ts, const pts_t &start, int direction);
+
bool empty();
};