FireFly DelByName() erscheint mir hier in der Tat etwas zu invasiv. Würde vielleicht ein UpdateByName() auch genügen (mit dem Patch aus #25)?

VDR version 2.7.5 freigegeben
-
-
Würde vielleicht ein UpdateByName() auch genügen (mit dem Patch aus #25)?
Ich hab's ausprobiert mit
Codeif ((Usage() & ruPending) != 0) { if ((Usage() & ruCut) != 0) { cutter = new cCutter(FileNameSrc()); cutter->Start(); //Recordings->DelByName(FileNameDst()); Recordings->AddByName(FileNameDst(), false); Recordings->UpdateByName(FileNameDst()); }
was aber leider gar keinen Effekt hat da UpdateByName() an cRecordingInfo::Read() durchgereicht wird, es müsste aber in cRecording numFrames auf -1 eigesetzt werden, was nur im Konstruktor passiert.
-
Würde es gehen, wenn du auch noch das hier machst?
Diff
Display More--- recording.c 2025/04/16 09:14:20 5.41 +++ recording.c 2025/04/18 19:54:23 @@ -1728,8 +1728,10 @@ void cRecordings::UpdateByName(const char *FileName) { - if (cRecording *Recording = GetByName(FileName)) + if (cRecording *Recording = GetByName(FileName)) { + Recording->numFrames = -1; Recording->ReadInfo(true); + } }
-
Irgendwie bin ich skeptisch, ob der Patch nicht weitreichendere Auswirkungen hat, da das UpdateByName() ja an mehreren Stellen benutzt wird. Aber bisher hat das erste Schneiden und Überschreiben beim zweiten Schneiden problemlos geklappt.
-
Recording->numFrames = -1 zu setzen bewirkt lediglich, dass in cRecording::NumFrames() die Länge der Index-Datei neu eingelesen wird und, falls die Aufnahme noch läuft, dies auch weiterhin getan wird, bis die Aufnahme endet. Sollte also keine negativen Auswirkungen haben..
-
wäre es nicht besser, das "Recordings->UpdateByName(FileNameDst());" für das cutting in "cRecordingsHandlerEntry::Active" nur dann aufzurufen, wenn kein Fehler aufgetreten ist? Also unter "// We're done:". Unter "// Now check if there is something to start:" wird es ja erst einmal nur gestartet.
Anbei mal ein entsprechender Patch.
Grüße
kamel5 -
So wie ich den Patch verstehe würde er nichts beim ersten Schneiden verändern, aber beim Überschreiben einer Aufnahme (zweiter Schnitt) die Fehler und Dauer erst am Ende aktualisieren. Da würde die Anzeige dann "plötzlich" umspringen, oder? Warum sollte man das beschränken und anders behandeln als beim Aufnehmen oder dem ersten Schnitt?
-
So wie ich den Patch verstehe würde er nichts beim ersten Schneiden verändern, aber beim Überschreiben einer Aufnahme (zweiter Schnitt) die Fehler und Dauer erst am Ende aktualisieren. Da würde die Anzeige dann "plötzlich" umspringen, oder?
Ja.
Warum sollte man das beschränken und anders behandeln als beim Aufnehmen oder dem ersten Schnitt?
Das wird ja beim ersten Schnitt auch nicht anders behandelt. Wenn man das direkt hinter "cutter->Start();" einfügt, wird es ja auch nur einmalig am Anfang des Schnittes aufgerufen und da ist das endgültige "numFrames" noch nicht bekannt. Ich wüsste jetzt nicht, das es im Plain-VDR beim Cut zwischendurch aktualisiert wird. Ich kann es leider hier selbst momentan nicht testen.
Im Endeffekt scheint mir hier Deine Lösung aus #40 fast die bessere Wahl.
Grüße
kamel5 -
Ich wüsste jetzt nicht, das es im Plain-VDR beim Cut zwischendurch aktualisiert wird.
Ja, wird es aber solange der Schnitt oder die Aufnahme noch läuft, da in dieser Zeit numFrames = -1 ist und erst am Ende des Schnitt bzw.Aufnahme der endgültige Wert gesetzt wird.
-
Participate now!
Don’t have an account yet? Register yourself now and be a part of our community!