Aufnahmelänge mit Berücksichtigung der Marken

  • Hallo zusammen,


    der Titel sagts eigentlich... Hat der VDR eine Funktion im Core, die die Netto Aufnahmelänge und Restlaufzeit einer ungeschnittenen Aufnahme zurückgibt? Also die Zeit, die auch nach Schnitt da wäre? Oder muss ich das selber ausrechnen? Sollte ja gehen, wenn man die Marken berücksichtigt.

    Ich hätte das nämlich gerne im replay osd angezeigt. Gibt es evtl. ein Plugin, das das bereits macht?


    Danke

    Andreas

  • Danke, das hilft.

    Wärs denn denkbar, dass es zwei zusätzliche Funktionen:

    NumFramesAfterEdit()

    LengthInSecondsAfterEdit()


    wie hier http://git.tvdr.de/?p=vdr.git;…c1e1eefb0771;hb=HEAD#l174 in die cRecording schaffen könnten?


    In der Konsequenz wären dann aber auch die beiden neuen *afterEdit Funktionen in der Klasse selbst besser aufgehoben, oder?


    kls, rentiert es sich, dass ich mich mit NumFramesAfterEdit() LengthInSecondsAfterEdit() befasse? ;)

  • Ich hätte das nämlich gerne im replay osd angezeigt. Gibt es evtl. ein Plugin, das das bereits macht?

    Das zeigt mein skinElchi schon seit Urzeiten in den Aufnahmeinfos an :)

    vdr-plugin-skinelchihd/displaymenu.c at 50457573545fe5b1e9f937b756791f34492565e7 · FireFlyVDR/vdr-plugin-skinelchihd
    VDR skin plugin Elchi HD. Contribute to FireFlyVDR/vdr-plugin-skinelchihd development by creating an account on GitHub.
    github.com

  • FireFly Danke. Das entspricht ja im Wesentlichen dem, was man dem VDR Core spendieren könnte. cuttedLength könnte man dann mit NumFramesAfterEdit() holen und sich den doppelten Code sparen. Alternativ kann natürlich jedes Plugin selbst rechnen.


    Meine Fragen sind beantwortet und wenn ein NumFramesAfterEdit() in der API kommt, würde ich mich freuen. Kann da auch den Patch liefern, wenn gewünscht.

  • Ich denke die meisten Skins machen das so ;)

  • Ich denke die meisten Skins machen das so ;)

    skinlacrsng noch nicht ;) Zumindest soweit ich das erkennen kann.

  • skinlacrsng noch nicht

    Das stimmt.


    skinnopacity zeigt die geschnittene Länge auch auf der Info-Seite an.


    Ich kann das aber auch noch bei skinlcarsng und skinsimple auf der Info-Seite einbauen. :)


    Grüße

    kamel5

    VDR 2.7.3: ASUS Prime X470-PRO, Ryzen 7 5700X, 64GB, 6TB HD, GT1030, Fedora 40 Kernel 6.11 X86_64, Devicebonding 2 x 1 auf 2, TT6400, DVBSky S952 V3

    Git-Repo: gitlab.com/kamel5

  • Für mich wärs interessant, wenn das im DisplayReplay drin wäre. Dann kann ich mit OK nachsehen, wie lange es noch dauert, bis meine Kinder ins Bett müssen ;)

  • OK, ich schaue mir das an.


    Grüße

    kamel5

    Hab mirs auch angesehen. Gesamtlaufzeit ist kein Problem, aber die Restlaufzeit auszugeben und nur die markierten Blöcke zu berücksichtigen ist nicht ganz so leicht, wie ich dachte ...

  • Gesamtlaufzeit ist kein Problem, aber die Restlaufzeit auszugeben und nur die markierten Blöcke zu berücksichtigen ist nicht ganz so leicht, wie ich dachte ...

    Das sehe ich auch so. Im Endeffekt müsste man da alles tracken. Außerdem müsste man noch unterscheiden, ob man sich in einem Bereich innerhalb von Schnittmarken oder außerhalb befindet...

    Würde den erst einmal eine geschnittene Gesamtlaufzeit helfen, das könnte man recht schnell einbauen, da gibt es ja schon einige skins, wo man das "abschreiben" kann.


    Grüße

    kamel5

    VDR 2.7.3: ASUS Prime X470-PRO, Ryzen 7 5700X, 64GB, 6TB HD, GT1030, Fedora 40 Kernel 6.11 X86_64, Devicebonding 2 x 1 auf 2, TT6400, DVBSky S952 V3

    Git-Repo: gitlab.com/kamel5

  • Wenn man den Patch von kls hernimmt, fällt mir auf die Schnelle sowas ein (ungetestet):

    Wie und wo auch immer man das ausgeben möchte.


    Für die Realtime-Restlaufzeit stelle ich mir das so vor:


    In ::SetRecording erstmal *Recording oder *Marks in die cLCARSNGDisplayReplay Klasse holen

    Mit dem Parameter Current aus SetProgress(Current, Total) und den Marken könnte man dann quasi ein CurrentMarks ermitteln, das genau um die frames niedriger als Current ist, die sich vor Current nicht in einem in-Block befinden.

    Und dann hätte man alle Parameter, um die aktuelle Position und Restlaufzeit bezogen auf geschnittene Bereiche auszugeben.


    Wenn ich drüber nachdenke, ist es wohl doch nicht so schwierig, oder habe ich einen Denkfehler?


    Das I-Tüpfelchen wäre, wenn entweder VDR hier eine Funktion wie SetProgressEdited(CurrentEdited, TotalEdited) eingebaut bekommen würde, dann kämen die beiden Variablen schon von VDR - der sie aber dann vorher natürlich ausrechnen müsste...


    Ein Marks::GetCurrentFramesAfterEdit(int Current) würde es auch schon tun...

    Im Plugin sollte es ohne VDR aber auch gehen.

  • Update: Wenn man auf den Patch von Klaus den im Anhang für GetCurrentFramesAfterEdit draufsatteln könnte, dann wärs top.


    Dann funktionieren nämlich zum Beispiel die beiden Patches für skinlcarsng, um die aktuelle Position und die Gesamtlänge richtig anzuzeigen. Restlaufzeit ist noch nicht drin, ist aber dann auch einfach.


    Hier funktioniert zumindest der erste Test :)


    EDIT: Ein Fehler ist noch drin. GetCurrentFramesAfterEdit sollte -1 zurückgeben, wenn es keine Marken gibt. Ansonsten wird 0 angezeigt (wenn man es denn überhaupt ohne Marken anzeigen will).

  • Bevor jetzt alle Skins anfangen, sowas einzubauen, wäre es vielleicht besser, die Skins bleiben, wie sie sind, und VDR steuert sie einfach über die vorhandene Schnittstelle entsprechend an. Oder übersehe ich da was?

    Wie meinst du das?

    Es gibt m.E. zwei Möglichkeiten:

    1) VDR stellt die Klassenmethoden zur Verfügung. Es würden hier cMarks::GetFramesAfterEdit und cMarks::GetCurrentFramesAfterEdit

    reichen

    2) Jedes Plugin rechnet selber


    1) ist natürlich eleganter und spart code, müsste dann aber wohl mit einem #ifdef auf die VDR API-Version geprüft werden. Ich wäre für Nummer 1 ;)


    EDIT: Patch für VDR und skinlcarsng wäre im Anhang. Funktioniert soweit.

  • Wie meinst du das?

    Man könnte es vielleicht so machen, dass, wenn "Setup/Replay/Skip edited parts" auf 'yes' steht, im ProgressDisplay nur noch das angezeigt wird, was tatsächlich abgespielt wird. Also genau so, wie es wäre, wenn man die geschnittene Version abspielt. Das wäre mit den vorhandenen Schnittstellen von cSkinDisplayReplay machbar ohne Änderungen in den Skins, und wäre sofort für *alle* Skins verfügbar.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!