git.cweiske.de
/
enigma2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
use recordings.epl as backup if existing. only first part will be played, though.
[enigma2.git]
/
lib
/
dvb
/
tstools.cpp
diff --git
a/lib/dvb/tstools.cpp
b/lib/dvb/tstools.cpp
index 81e62dd256e6e3cf03b18cb03f23f57e76993bd0..1b7c5d9299b62ecb5ad1c50e25549204aa446f1f 100644
(file)
--- a/
lib/dvb/tstools.cpp
+++ b/
lib/dvb/tstools.cpp
@@
-1,4
+1,3
@@
-#include <config.h>
#include <lib/dvb/tstools.h>
#include <lib/base/eerror.h>
#include <unistd.h>
#include <lib/dvb/tstools.h>
#include <lib/base/eerror.h>
#include <unistd.h>
@@
-46,6
+45,7
@@
void eDVBTSTools::setSearchRange(int maxrange)
m_maxrange = maxrange;
}
m_maxrange = maxrange;
}
+ /* getPTS extracts a pts value from any PID at a given offset. */
int eDVBTSTools::getPTS(off_t &offset, pts_t &pts)
{
if (m_fd < 0)
int eDVBTSTools::getPTS(off_t &offset, pts_t &pts)
{
if (m_fd < 0)
@@
-71,8
+71,11
@@
int eDVBTSTools::getPTS(off_t &offset, pts_t &pts)
{
int i = 0;
while (i < 188)
{
int i = 0;
while (i < 188)
+ {
if (block[i] == 0x47)
break;
if (block[i] == 0x47)
break;
+ ++i;
+ }
offset = lseek(m_fd, i - 188, SEEK_CUR);
continue;
}
offset = lseek(m_fd, i - 188, SEEK_CUR);
continue;
}
@@
-120,6
+123,7
@@
void eDVBTSTools::calcBegin()
{
if (m_fd < 0)
return;
{
if (m_fd < 0)
return;
+
if (!m_begin_valid)
{
m_offset_begin = 0;
if (!m_begin_valid)
{
m_offset_begin = 0;
@@
-133,7
+137,14
@@
void eDVBTSTools::calcEnd()
if (m_fd < 0)
return;
if (m_fd < 0)
return;
- m_offset_end = lseek(m_fd, 0, SEEK_END);
+ off_t end = lseek(m_fd, 0, SEEK_END);
+
+ if (abs(end - m_offset_end) > 1*1024*1024)
+ {
+ m_offset_end = end;
+ m_end_valid = 0;
+ eDebug("file size changed, recalc length");
+ }
int maxiter = 10;
int maxiter = 10;