[Beta-Test] Permashift Episode II - Die Rückkehr der Ringspeicher

  • Moin,


    den Ansatz mit dem Ringspeicher im RAM finde ich klasse...das Zwischenspeichern auf Platte war für mich ein nogo, aber so werde ich das definitiv auch mal ausprobieren. :tup


    Du schreibst, beim Zurückspulen musst du erst mal den ganzen Ringspeicher auf Platte schreiben...ich kenne mich da mit den Interna des VDR zu wenig aus, das ist wahrscheinlich notwendig, um das Gepufferte dem VDR als Aufnahme unterzuschieben? Wäre natürlich schöner, wenn man direkt im Ringspeicher spulen könnte, dann wäre die Reaktion nicht verzögert und die Platte würde wirklich nur benutzt, wenn man das gepufferte permanent Speichern will...


    Noch ne andere Frage: gibt es für einen Skin eine Schnittstelle, um abzufragen, wieviel von der aktuellen Sendung gerade gepuffert ist? Das könnte man prima im DisplayChannel vom Skin darstellen. Und was für eine Darstellung benutzt du, wenn man ein Stück im Ringpuffer zurückgespult hat? Wahrscheinlich DisplayReplay? Das passt ja auch nicht so optimal...ich könnte mir vorstellen, den Livebuffer in nOpacity zu unterstützen. So eine "Hybridansicht" zwischen DisplayChannel und DisplayReplay wäre sicherlich eine schicke Sache.


    Aktuell arbeite ich an einer anderen Baustelle, aber in ein paar Wochen (wenn das hier dann auch aus der Betaphase draussen ist, also los Leute, fleissig testen) können wir uns da ja vielleicht mal konkretere Gedanken machen, falls du Lust dazu hast.


    Ciao Louis

  • Hallo!

    den Ansatz mit dem Ringspeicher im RAM finde ich klasse...das Zwischenspeichern auf Platte war für mich ein nogo, aber so werde ich das definitiv auch mal ausprobieren. :tup

    Für mich war's damals die 80%-Lösung: tut fast alles, was ich brauche, mehr war mit meinem (fehlenden) Durchblick im VDR nicht drin, und meine Festplatte hat sich zum Glück auch nicht beschwert. Aber es ist schon klar, dass das nie optimal war.

    Ich wollte nah an der vorhandenen Funktionalität für Timeshift bleiben. Da wird auf die Festplatte aufgenommen, und der Benutzer kann sogar in den VDR-Optionen wählen, ob ihm die Aufnahme erhalten bleiben soll. Eine Timeshift-Aufnahme wird also als potentiell erhaltenswert angesehen und gehört damit auf die Platte.
    Es sind aber auch praktische Erwägungen: Ich hätte den Player so umstricken müssen, dass er den Teil vor dem Knopfdruck aus dem Speicher abspielt, den danach von der Platte (ich kann mir ja nicht einfach zusätzlichen Speicher greifen), und Vor- und Zurückspulen über die Grenze hinweg ermöglicht. Wär sicherlich gegangen, aber auch nicht gerade trivial gewesen, und hätte wie gesagt nicht zum bisherigen Konzept des VDR für Timeshift gepasst.

    Darum hab ich mich noch gar nicht gekümmert, ich kenn noch nicht mal die Schnittstellen, die du da nennst. Ich könnte die gepufferte Zeit leicht berechnen (bei Bedarf auch den verbrauchten Speicher) und das anbieten. Würde man für sowas die Service-Schnittstelle nehmen?
    Wenn man zurückgespult hat, wird in den normalen Replay-Modus umgeschaltet, hört sich also nach "DisplayReplay" an. Die Tastaturbelegung ist dann zum Beispiel auch genauso wie beim Abspielen einer Aufnahme (wieder analog zum im VDR vorhandenen Timeshift).

    Quote

    Aktuell arbeite ich an einer anderen Baustelle, aber in ein paar Wochen (wenn
    das hier dann auch aus der Betaphase draussen ist, also los Leute,
    fleissig testen) können wir uns da ja vielleicht mal konkretere Gedanken
    machen, falls du Lust dazu hast.

    Gern!


    Ciao,
    Eike

  • Hi,

    Darum hab ich mich noch gar nicht gekümmert, ich kenn noch nicht mal die Schnittstellen, die du da nennst. Ich könnte die gepufferte Zeit leicht berechnen (bei Bedarf auch den verbrauchten Speicher) und das anbieten. Würde man für sowas die Service-Schnittstelle nehmen?
    Wenn man zurückgespult hat, wird in den normalen Replay-Modus umgeschaltet, hört sich also nach "DisplayReplay" an. Die Tastaturbelegung ist dann zum Beispiel auch genauso wie beim Abspielen einer Aufnahme (wieder analog zum im VDR vorhandenen Timeshift).


    Falls die Infos von deinem Plugin kommen, wäre eine Serviceschnittstelle der richtige Weg.


    "DisplayReplay" ist die OSD Anzeige, während eine Aufnahme läuft, "DisplayChannel" die Anzeige beim Umschalten oder wenn man im normalen TV Modus "ok" drückt. Ich fände eine angepasste DisplayChannel Anzeige bei Wiedergabe aus dem Livebuffer sinnvoll, inklusive z.b. Channel Logo und EPG Anzeige. Zusätzlich dann natürlich die Buffergröße und die Zeit, die man wirklich Zurückspulen kann...


    Ciao Louis

  • [...] also los Leute, fleissig testen ...


    Habe jetzt mal den Patch und das Plugin installiert und Puffergröße auf 2GB gesetzt, - sollte ja bei installierten 16GB RAM kein Problem sein, - leider fehlt mir nun eine (Bedienungs-)Anleitung, damit ich es "fleissig testen" kann....


  • Habe jetzt mal den Patch und das Plugin installiert und Puffergröße auf 2GB gesetzt, - sollte ja bei installierten 16GB RAM kein Problem sein, - leider fehlt mir nun eine (Bedienungs-)Anleitung, damit es "fleissig testen" kann....


    Naja, wenn ich es richtig verstehe, einfach ein bisschen auf einem Sender bleiben und dann mal die Zurückspulen Taste drücken...und guggen :D


    Ciao Louis

  • OK, das funktioniert so, allerdings stört mich die zusätzliche Abfrage, ob das live Signal angehalten werden soll.....

    Was hast du denn in den Einstellungen des VDR als Reaktion auf die Pausentaste fürs Timeshifting eingestellt? Soweit ich das im Patch für den VDR sehe nutzt er da einfach die Einstellung aus dem VDR:

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)


  • Habe jetzt mal den Patch und das Plugin installiert und Puffergröße auf 2GB gesetzt, - sollte ja bei installierten 16GB RAM kein Problem sein,....


    Wobei sich die Frage stellt, ob das beim jetzigen Entwicklungsstand so sinnvoll ist. Das Plugin muss ja zunächst den gesamten Buffer auf die Platte schreiben, bevor zurückgespult werden kann. Wenn du eine SSD oder ein performantes Raid dran hast kein Problem, ansonsten musst du bei vollem Buffer und optimistisch angenommener Schreibrate von 100MB erst mal 20 Sek. warten ...


    Grüße, Peter

    KODI, tvh, arch x86_64, Octopus net 2 x Duoflex C/C2/T2 , NUC7i3BNH, Crucial MX300 2TB, LG LM 669S

    Linux is the best OS I have ever seen -- Albert Einstein

  • Hallo!


    Danke für's Testen!


    Habe jetzt mal den Patch und das Plugin installiert und Puffergröße auf 2GB gesetzt, - sollte ja bei installierten 16GB RAM kein Problem sein, - leider fehlt mir nun eine (Bedienungs-)Anleitung, damit ich es "fleissig testen" kann....

    Ok, ich werd das Ursprungsposting nochmal ergänzen, um klarer zu sagen, was wie funktionieren sollte.
    Das sollte wohl auch ins Readme, und zusätzlich eine kleine Anleitung, wie man (mit "free" halt) abschätzen kann,
    wie groß der Buffer sein darf.

    Quote

    OK, das funktioniert so, allerdings stört mich die zusätzliche Abfrage, ob das live Signal angehalten werden soll.....


    Da scheint es eine Einstellung im VDR selbst zu geben, mit der man das (de)aktivieren kann.

    Das dürfte hinhauen, ich hab bei einem GB so um die 10 Sekunden.
    Allerdings wird nur der Teil des Buffers gespeichert, der auch aktuelle Daten enthält,
    wenn man also eine Minute nach dem Umschalten zurückspult, nur die Daten für diese
    eine Minute.


    Ciao,
    Eike

  • Moin,


    und vielen Dank für Deinen Einsatz. Ich habe den Patch bei einer Gen2VDR V4 mit einer bereits vorhandenen Permashift (0.5.2) versucht. Der Patch lief bis auf einen Reject in der dvbplayer.c durch.


    Beim Einsatz in zwei Geräten habe ich bei einer eingestellten Puffergröße von 2GB bei 4GB RAM nach längerer Zeit eine stockende Wiedergabe des Live-TV auf HD-Sendern. Evtl. ist da der Puffer voll und verursacht das ?! Bei 500MB trat das bisher nicht auf.


    Beim Zurückspulen stockt das Bild bei mir auch erst einmal längere Zeit. Dann kann man aber zurückspulen. Die Wiedergabe kommt dann aber bei mir aus dem Stocken nicht raus. Ton läuft normal, aber das Bild ist wie in Zeitlupe.


    Wie gesagt, alles nur bisher unter ARD HD getestet.


    Ansonsten schon einmal eine gute Basis für einen Timeshift.


    Was schön wäre: Wenn ich mich nach 10 Minuten entschließe das Programm doch aufzuzeichnen und das über das EPG programmiere (grüne Taste --> rote Taste) wird IMHO nicht rückwirkend aufgenommen?!


    Regards
    Globber

    Gen2VDR (V5.3 Update 6)


    - Scaleo Evi - 2x DD Cine S2 v6.5 und v5.4 - 4GB RAM
    - Reycom REC100-S2
    - OctopusNet/SAT>IP

  • Hallo!

    Quote

    Evtl. ist da der Puffer voll und
    verursacht das ?! Bei 500MB trat das bisher nicht auf.

    Das ist ja der "Plan", dass der Puffer irgendwann voll wird (aber halt nicht mehr).
    Damit kommt das Plugin aber zurecht, es wird dann einfach der älteste Teil wieder überschrieben.

    Beim Zurückspulen stockt das Bild bei mir auch erst einmal längere Zeit. Dann kann man aber zurückspulen. Die Wiedergabe kommt dann aber bei mir aus dem Stocken nicht raus. Ton läuft normal, aber das Bild ist wie in Zeitlupe.

    Schau mal per "free -h" am Anfang und wenn die 2GB voll sind auf den Speicher.
    Ich vermute mal, du hast dem Plugin zu viel Speicher gegönnt. Wobei ich zugeben muss,
    mit mehr als 1 GB hab ich's noch nicht getestet; sollte aber keinen prinzipiellen Unterschied machen.

    Quote

    Was schön wäre: Wenn ich mich nach 10 Minuten entschließe das Programm
    doch aufzuzeichnen und das über das EPG programmiere (grüne Taste -->
    rote Taste) wird IMHO nicht rückwirkend aufgenommen?!

    Das sollte schon genau so funktionieren!
    Das ist für mich ja einer der beiden Anwendungsfälle von permanentem Timeshift.


    Ciao,
    Eike

  • Hi Eike,
    danke das Du weiter daran gearbeitet hast. Wobei testen kann ich erst wenn es in einem der yavdr ppa drin ist, und das dürfte anscheinend so bald nicht der Fall sein...


    Zu den Speichergrößen hatte ich damals schon Angaben gemacht, zusammengefasst passen in 4GB Ram je nach Bitrate bis zu 30 min rein. Bei 512MB oder noch weniger wird das ganze zumindest bei FullHD sinnfrei. Also wer so etwas benutzt sollte schon seine 8GB RAM haben :)


    Wenn man also mit mind. 2GB arbeitet kann ich mir schon vorstellen, dass ein sofortiger Rückspulzugriff auf den Ringbuffer erlaubt sein kann. Es müsste im Grunde ein paralleler Zugriff sein, der erst auf Platte umgestellt wird wenn der Ringbuffer vollständig auf die Platte geschrieben ist.
    Man könnte z.B. den Moment der Pause in die Wiedergabe nutzen um auf den Plattenringspeicher umzustellen, da gibt es eh eine Sekunde Unterbrechung.


    Ansonsten sehe ich eigentlich keine Notwendigkeit bei ausreichendem Arbeitsspeicher überhaupt den Buffer auf die Platte zu schreiben, einzige Ausnahme wäre, eine nachträgliche Aufnahme wollte den Inhalt hinzufügen. Ansonsten einfach kategorisch im RAM belassen.

    Proxmox VE, Tyan Xeon Server, OMV, MLD-Server 5.1
    MLD 5.1 64bit: Asus AT5iont-t, ION2, 4GB Ram, SSHD 2,5" 1Tb, HEX TFX 300W 82+, Cine S2 V6.2 , 38W max.
    Yavdr 0.5:
    Zotac D2550ITXS-A-E mit GT610 OB, TT S2-4100 PCI-e ,Joujye NU-0568I-B
    Yavdr 0.5:
    Sandy Bridge G840, Tests und Energieverbrauch , CoHaus CIR, Cine S2 V6.2
    MLD 5.1 Beebox N3150
    , DVBSky S960 und 1Tb WD Blue

  • Ansonsten einfach kategorisch im RAM belassen.


    Das geht doch nicht.
    Wenn ich Live-TV pausiere bzw. zurückspule, dann will ich doch die ganze Sendung sehen. Wenn ich nun ein wenig zurückgespult habe und dann eine unbestimmte Zeit pausiere (wegen Telefonat oder anderer dringender "Geschäfte" :)), würde ich einen Teil der Sendung verlieren, wenn nur das RAM benutzt werden würde. Also finde ich es sinnvoll, das ab dem Moment des Pausierens/Zurückspulens der RAM-Buffer quasi in eine Sofort-Aufnahme umgewandelt wird.


    Aber endlich gibt es einen Grund, warum wir nur eine 64-Bit-Version anbieten... :)
    Wann ich dazu komme, den Patch im yavdr-PPA einzubauen, weiß ich nicht. Hab da noch ein paar andere Dinge auf der Liste.


    Lars.

  • Hi,

    Wenn ich Live-TV pausiere bzw. zurückspule, dann will ich doch die ganze Sendung sehen.


    ich finde da sollte man differenzieren: wenn ich nur mal kurz zurückspulen will, um etwas das ich verpasst habe nochmal anzuschauen, dann sehe ich keinen Grund darin, den Puffer direkt auf Platte zu schreiben. Wenn ich allerdings Pause drücke, dann sollte schon eine Direktaufnahme inklusive des bisherigen Puffers erzeugt werden.


    Das würde auch das Problem lösen, dass das Schreiben des Puffers auf die Platte eine gewisse Zeit dauert...wenn Pause gedrückt ist, ist die Zeit i.d.r. da, da ich ja eh pausiere ;) Wenn ich allerdings nur kurz zurückspulen will, dann will ich nicht warten, bis der ganze Puffer auf Platte geschrieben ist.


    Ciao Louis

  • Ok, kann man so sehen.
    Aber die lange Pause bis die Daten auf der Platte sind, ist trotzdem nicht schön. :)
    Ein Thread im Hintergrund müsste sich um das Schreiben der Daten auf die Platte bemühen, während weiter aus dem RAM abgespielt wird. Und wenn die Platte "in sync" ist, sollte dann nahtlos geswitched werden. Oder immer aus dem RAM abgespielt werden, während die Daten weiterhin auf der Platte landen.


    Lars.

  • Ok, kann man so sehen.
    Aber die lange Pause bis die Daten auf der Platte sind, ist trotzdem nicht schön. :)
    Ein Thread im Hintergrund müsste sich um das Schreiben der Daten auf die Platte bemühen, während weiter aus dem RAM abgespielt wird. Und wenn die Platte "in sync" ist, sollte dann nahtlos geswitched werden. Oder immer aus dem RAM abgespielt werden, während die Daten weiterhin auf der Platte landen.


    Klar, das wäre die Alternative, um die Verzögerung in den Griff zu bekommen...ist halt vom Thread-Handling her wesentlich aufwändiger und komplexer.


    Mal noch ne andere Frag: was mich an der Vanilla VDR Pause Funktion immer ziemlich nervt, dass die Aufnahme dann ewig läuft und man die eigentlich manuell abbrechen muss. Könnte man das nicht smarter regeln und z.B. das EPG zur Hilfe ziehen? Wenn die Sendung, während der die Sofortaufnahme erzeugt worden ist, laut EPG 10 Minuten vorbei ist, dann kann auch die Sofortaufnahme beendet werden. Sollte doch eigentlich alle Fälle abdecken...


    Ciao Louis

  • Da gibt's doch eine Einstellung im vdr, wie lange die laufen soll.
    Beim Event stellt sich die Frage, welches Event. Das jetztige, das nächste...? Lässt sich nicht eindeutig ermitteln.


    Lars.

  • Da gibt's doch eine Einstellung im vdr, wie lange die laufen soll.


    Das habe ich befürchtet ;)


    Beim Event stellt sich die Frage, welches Event. Das jetztige, das nächste...? Lässt sich nicht eindeutig ermitteln.


    Na das, während dem Pause gedrückt wurde...


    Ciao Louis

  • Das habe ich befürchtet ;)


    Einstellungen, Aufnahme, Dauer der Sofortaufnahme. Default ist 180 Minuten.


    Na das, während dem Pause gedrückt wurde...


    Und wenn ich kurz vor Sendungsstart die Aufnahme aktiviere, weil die Zeit nicht mehr reicht, um über das nächste Event im Menü die Aufnahme zu programmieren?
    Außerdem kann ich während der Aufnahme doch auch noch die Endzeit korrigieren, oder nicht? :)


    Lars.

Participate now!

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