Hallo nochmal,
das war die letzte Meldung, bevor der VDR sich verabschiedet.
Code
Feb 21 08:50:22 siduxbox vdr: [26469] loading /var/lib/vdrmedia/video/LiveBuffer/Das Erste//marks.vdr
Diese marks.vdr existiert nicht.
Ich habe mir den Code dann nochmal angeschaut und es ist der CUTTIME-Patch, der uns da eine Strich durch die Rechnung gemacht hat.
Extensions-Patch ab Zeile 1013
Code
+#ifdef USE_LIVEBUFFER
+cLiveRecorder *cCutter::liveRecorder = NULL;
+bool cCutter::Start(const char *FileName, cLiveRecorder *LiveRecorder, bool IsBeginning, cTimer *Timer)
+{
+#ifdef USE_CUTTERQUEUE
+ cMutexLock(cutterLock);
+ if (FileName) {
+ /* Add file to queue.
+ * If cutter is still active, next cutting will be started
+ * when vdr.c:main calls cCutter::Active and previous cutting has
+ * been stopped > 10 s before
+ */
+ cutterQueue.Add(new cStringListObject(FileName));
+ }
+ if (cuttingThread)
+ return true;
+ /* cut next file from queue */
+ if (!(cutterQueue.First()))
+ return false;
+ FileName = cutterQueue.First()->Value();
+#endif /* CUTTERQUEUE */
+ if (!cuttingThread) {
+ liveRecorder=LiveRecorder;
+ if (liveRecorder)
+ liveRecorder->ChangePriority(100);
+ error = false;
+ ended = false;
+ cRecording Recording(FileName);
+#ifdef USE_CUTTIME
+ cMarks FromMarks;
+ FromMarks.Load(FileName);
+ cMark *First=FromMarks.First();
+ if (First) Recording.SetStartTime(Recording.start+((First->position/FRAMESPERSEC+30)/60)*60);
+#endif /* CUTTIME */
+ const char *evn = Recording.PrefixFileName('%',LiveRecorder != NULL);
+#ifdef USE_CUTTERQUEUE
+ if (!(Recordings.GetByName(FileName))) {
+ // Should _not_ remove any cutted recordings
+ // (original recording already deleted ?)
+ // so, just pop item from queue and return.
+ esyslog("can't cut non-existing recording %s", FileName);
+ cutterQueue.Del(cutterQueue.First());
+ return true; // might be already queued recording
+ }
+#endif /* CUTTERQUEUE */
+ if (Timer && !IsBeginning) {
+ cRecordControl *temp = new cRecordControl(NULL,Timer,false,false,true);
+ evn = strdup(temp->FileName());
+ delete temp;
+ }
+ if (IsBeginning)
+ cRecordControls::Start(Timer,false,&evn);
+ if (evn && (IsBeginning || RemoveVideoFile(evn)) && MakeDirs(evn, true)) {
+#else /* NO LIVEBUFFER */
Alles anzeigen
Damit geht es jetzt:
Code
+ if (First && !Setup.LiveBuffer) Recording.SetStartTime(Recording.start+((First->position/FRAMESPERSEC+30)/60)*60);
Gruß
Marc