git.cweiske.de
/
enigma2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
add flag to cable scan to do a network search
[enigma2.git]
/
lib
/
service
/
servicedvbrecord.cpp
diff --git
a/lib/service/servicedvbrecord.cpp
b/lib/service/servicedvbrecord.cpp
index f4bf557726cbae7de71be225594cddd0f2f4c92a..bded7cc9c757b602a86934b08434688e70c6802b 100644
(file)
--- a/
lib/service/servicedvbrecord.cpp
+++ b/
lib/service/servicedvbrecord.cpp
@@
-102,9
+102,13
@@
int eDVBServiceRecord::doRecord()
int fd = ::open(m_filename.c_str(), O_WRONLY|O_CREAT|O_LARGEFILE, 0644);
if (fd == -1)
{
int fd = ::open(m_filename.c_str(), O_WRONLY|O_CREAT|O_LARGEFILE, 0644);
if (fd == -1)
{
- eDebug("eDVBServiceRecord - can't open
hardcoded
recording file!");
+ eDebug("eDVBServiceRecord - can't open recording file!");
return -1;
}
return -1;
}
+
+ /* turn off kernel caching strategies */
+ posix_fadvise(fd, 0, 0, POSIX_FADV_RANDOM);
+
ePtr<iDVBDemux> demux;
if (m_service_handler.getDataDemux(demux))
{
ePtr<iDVBDemux> demux;
if (m_service_handler.getDataDemux(demux))
{
@@
-118,6
+122,7
@@
int eDVBServiceRecord::doRecord()
return -3;
}
m_record->setTargetFD(fd);
return -3;
}
m_record->setTargetFD(fd);
+ m_record->setTargetFilename(m_filename.c_str());
}
eDebug("starting recording..");
}
eDebug("starting recording..");
@@
-133,6
+138,8
@@
int eDVBServiceRecord::doRecord()
if (program.pmtPid != -1)
pids_to_record.insert(program.pmtPid); // PMT
if (program.pmtPid != -1)
pids_to_record.insert(program.pmtPid); // PMT
+ int timing_pid = -1;
+
eDebugNoNewLine("RECORD: have %d video stream(s)", program.videoStreams.size());
if (!program.videoStreams.empty())
{
eDebugNoNewLine("RECORD: have %d video stream(s)", program.videoStreams.size());
if (!program.videoStreams.empty())
{
@@
-142,6
+149,10
@@
int eDVBServiceRecord::doRecord()
i != program.videoStreams.end(); ++i)
{
pids_to_record.insert(i->pid);
i != program.videoStreams.end(); ++i)
{
pids_to_record.insert(i->pid);
+
+ if (timing_pid == -1)
+ timing_pid = i->pid;
+
if (i != program.videoStreams.begin())
eDebugNoNewLine(", ");
eDebugNoNewLine("%04x", i->pid);
if (i != program.videoStreams.begin())
eDebugNoNewLine(", ");
eDebugNoNewLine("%04x", i->pid);
@@
-157,6
+168,10
@@
int eDVBServiceRecord::doRecord()
i != program.audioStreams.end(); ++i)
{
pids_to_record.insert(i->pid);
i != program.audioStreams.end(); ++i)
{
pids_to_record.insert(i->pid);
+
+ if (timing_pid == -1)
+ timing_pid = i->pid;
+
if (i != program.audioStreams.begin())
eDebugNoNewLine(", ");
eDebugNoNewLine("%04x", i->pid);
if (i != program.audioStreams.begin())
eDebugNoNewLine(", ");
eDebugNoNewLine("%04x", i->pid);
@@
-194,6
+209,9
@@
int eDVBServiceRecord::doRecord()
m_record->removePID(*i);
}
m_record->removePID(*i);
}
+ if (timing_pid != -1)
+ m_record->setTimingPID(timing_pid);
+
m_pids_active = pids_to_record;
if (m_state != stateRecording)
m_pids_active = pids_to_record;
if (m_state != stateRecording)