git.cweiske.de
/
enigma2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
numberzapping looks like in e1 now
[enigma2.git]
/
lib
/
dvb
/
tstools.cpp
diff --git
a/lib/dvb/tstools.cpp
b/lib/dvb/tstools.cpp
index b83fd50aa6de36b0a006c1e38c10ea8beede13cf..81e62dd256e6e3cf03b18cb03f23f57e76993bd0 100644
(file)
--- a/
lib/dvb/tstools.cpp
+++ b/
lib/dvb/tstools.cpp
@@
-10,7
+10,7
@@
eDVBTSTools::eDVBTSTools()
{
m_fd = -1;
m_pid = -1;
{
m_fd = -1;
m_pid = -1;
- m_maxrange =
1*1024
*1024;
+ m_maxrange =
256
*1024;
m_begin_valid = 0;
m_end_valid = 0;
m_begin_valid = 0;
m_end_valid = 0;
@@
-92,7
+92,7
@@
int eDVBTSTools::getPTS(off_t &offset, pts_t &pts)
unsigned char *pes;
/* check for adaption field */
unsigned char *pes;
/* check for adaption field */
- if (block[3] & 0x
1
0)
+ if (block[3] & 0x
2
0)
pes = block + block[4] + 4 + 1;
else
pes = block + 4;
pes = block + block[4] + 4 + 1;
else
pes = block + 4;
@@
-112,7
+112,7
@@
int eDVBTSTools::getPTS(off_t &offset, pts_t &pts)
return 0;
}
}
return 0;
}
}
-
+
return -1;
}
return -1;
}
@@
-133,11
+133,22
@@
void eDVBTSTools::calcEnd()
if (m_fd < 0)
return;
if (m_fd < 0)
return;
- if (!m_end_valid)
+ m_offset_end = lseek(m_fd, 0, SEEK_END);
+
+ int maxiter = 10;
+
+ while (!m_end_valid)
{
{
- m_offset_end = lseek(m_fd, 0, SEEK_END) - m_maxrange;
+ if (!--maxiter)
+ return;
+
+ m_offset_end -= m_maxrange;
+ if (m_offset_end < 0)
+ m_offset_end = 0;
if (!getPTS(m_offset_end, m_pts_end))
m_end_valid = 1;
if (!getPTS(m_offset_end, m_pts_end))
m_end_valid = 1;
+ if (!m_offset_end)
+ return;
}
}
}
}