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;
payload = packet + 4;
- if (m_pid >= 0)
+/* if (m_pid >= 0)
if (pid != m_pid)
- continue;
+ continue; */
if (!pusi)
continue;
{
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. */
off_t new_offset = offset;
size_t new_len = len;
-
+ int first = 1;
+
while (distance > 0)
{
int dir = direction;
// 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);