[Announce] Permashift 1.0 - Permanenter Timeshift im RAM (AKA Livebuffer)

  • Hallo,


    auch in "easyVDR-2.0Beta" gibt es jetzt "Permashift 1.0"


    @Eike
    der Fehler wie bei Martin(Aufnahme kann nicht direkt gelöscht werden) trat bei mir noch nie auf.
    http://www.easy-vdr.de/forum/i…16706.msg152219#msg152219


    Danke & Gruss
    Wolfgang

    TT S2-6400 - saa716x kompilieren unter 20.04(Focal)

  • Moin,


    Welche Hardwareanforderungen gibt es eigentlich für Permashift? Bei meinen REC100 bzw. einem Celeron Duo habe ich bei HD Sendern beim Zurückspulen bzw. schon bei der Aktivierung der Sofortaufnahme Bildstottern und Fehler bei der Übereinstimmung von Bild und Ton. Bei SD habe ich überhaupt keine Probleme Permashift zu verwenden.


    Danke für Deine Arbeit.


    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,


    konkrete Anforderungen kann ich dir nicht nennen. Und ich hab auch nur SD, hab also mit HD nie testen können.


    Die CPU sollte ziemlich egal sein. Es wird ein wenig Speicher hin und her bewegt, auf Festplatte gespeichert und geladen, meines Erachtens unkritisch.
    Die Speicheranforderungen sind je nach Einstellungen natürlich hoch, mit 6 GB könnte man bestimmt die meisten VDRs in die Knie zwingen.
    Die Geschwindigkeit der Festplatte könnte (vor allem bei HD) kritisch sein. Mir ist zum Glück noch eingefallen, dass eine SSD nicht die optimale Testumgebung ist, aber auch auf Festplatte läuft es bei mir locker schnell genug - aber wie gesagt in SD. Es sollte aber mit durchschnittlichen Festplatten IMHO auch mit HD gehen.


    Für Tests würde ich erstmal den Speicherbedarf runterstellen - 100 MB reichen zum Probieren.
    Dann kannst du schauen, ob Abschalten des "On-the-fly" Speicherns hilft. Das ist gut gegen überforderte Festplatten.
    Und schließlich gibt's im Syslog Informationen.


    Ciao,
    Eike

  • Hallo Eike, hallo Lars,


    @Eike: vielen dank für die Version 1.0. Ich habe sie noch nicht getestet, da es im yavdr-repository nur die 0.5.4 gibt und mein letztes 'make' beim VDR sicher vier Jahre zurück liegt.
    Ich sehe aber, dass du auch yavdr nutzt. und das Lars schrieb, er müsse noch einige andere Patches anpassen, bevor er den Patch zu yavdr hinzufügen kann.
    Hast du das nicht ohnehin schon erledigt, für deinen yavdr und könntest die für den yavdr-vdr angepasste Version posten?


    Gruß,
    Hendrik

  • Hallo!

    Hast du das nicht ohnehin schon erledigt, für deinen yavdr und könntest die für den yavdr-vdr angepasste Version posten?

    Oh, Zeit für das Geständnis. :o)
    Auf meinem VDR läuft noch das alte Permashift, weil mir das Kompilieren zu aufwändig war. Man muss, so, wie ich es gemacht habe, nicht nur den VDR und das Plugin neu kompilieren, sondern alle Plugins, die eine von mir geänderte Schnittstelle verwenden.
    Sonst hätt ich's auch schon längst weitergegeben.


    An die C++-Auskenner: Anscheinend ist es ja so, dass Default-Parameter die binäre Kompatibilität brechen.
    Ich hatte eigentlich gedacht, Default-Parameter wären gut für die Kompatibilität, aber vermutlich wäre es besser, stattdessen Methoden mit weniger Parametern die mit mehr Parametern aufrufen zu lassen.


    Ciao,
    Eike

  • Ich versuche, default-Parameter möglichst zu vermeiden, damit der Aufrufer darüber nachdenkt, was die Parameter bedeuten und wie sie in seinem Fall gesetzt sein müssen. :)
    Das "alle Plugins neu kompilieren" ist mittlerweile nicht mehr so schlimm, weil ich da ein Script für gebastelt habe, dass die aktuellen Sourcen aus einem PPA herunterlädt, die Versionsnummer eins hochzählt, den Kram signiert und wieder hochlädt. Dauert nur eine Weile mit dünner Leitung und den üblichen Verzögerungen bei Launchpad.


    https://github.com/flensrocker/yalptool


    Das Script eignet sich auch dafür, ein komplettes PPA in sein eigenes zu kopieren oder nur neue Pakete usw...


    Lars.

  • Hallo Lars,


    Das Script eignet sich auch dafür, ein komplettes PPA in sein eigenes zu kopieren oder nur neue Pakete usw...


    benutze "yalptool" schon länger für easyVDR ...sag an dieser Stelle mal Danke dafür! :thumbsup:


    Gruss
    Wolfgang

    TT S2-6400 - saa716x kompilieren unter 20.04(Focal)


  • @Ein Eike:


    Hallo, und erstmals vielen dank für das großartige Plugin. Ich nutze es jetzt seit Tagen auf meinem System, und es läuft prächtig!



    Jedoch ist mir aufgefallen, dass ich seit aktivieren des Plugins keinen guten Log mehr zur Verfügung habe. Das Plugin schreibt permanent eine Logzeile raus (overwritingringbuffer.c:43). Auf meinem System landet diese im Syslog und füllt ihn somit recht schnell. Es wäre hilfreich, wenn diese Ausgaben über eine Debug Flag, oder eine Plugin-Einstellung gesteuert werden könnte.


    Code
    1. void cOverwritingRingBuffer::WriteData(uchar* Data, uint64_t Length)
    2. {
    3. if ((m_dataLength + Length) / (100 * 1024 * 1024) > m_dataLength / (100 * 1024 * 1024))
    4. {
    5. dsyslog("permashift: %d MB live video data in buffer \n", 100 * ((m_dataLength + Length) / (100 * 1024 * 1024)));
    6. }


    Um ein Gefühl dafür zu bekommen wie das aussehen kann, ein kleiner Auszug aus dem Log:

    Code
    1. root@multi-player:/var/log# cat /var/log/syslog | grep "10:04:48" | tail -n 1
    2. Oct 26 10:04:48 multi-player vdr: [874] permashift: 100 MB live video data in buffer
    3. root@multi-player:/var/log# cat syslog | grep "10:04:48" | grep "permashift: 100 MB live video data in buffer" | wc -l
    4. 1804
    5. root@multi-player:/var/log#


    Mit freundlichen Grüßen,
    z421 :)

  • z421 : Die Zeile wird mit dsyslog ausgegeben. Es passiert also schon genau das was du dir wünscht. Du musst nur den Log-Level vom VDR runterdrehen.


    Gerald


    HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 14.04.1, Plex Media Server
    Samsung UE55H6470

  • Hallo,
    könnte jemand vom YaVdr-Team bitte bitte bitte, dass Permashift 1.0 ins ppa aufnehmen.


    Gruß Santos

    VDR1
    - Yavdr 0.5 - Zotac D2700 Atom 2X2.13GHZ - GT520 Onboard- 4GB Speicher - 32GB CF- Technotrend TT S2-4100 - Alphacool Display - YaUsbIr 2- Technotrend Fernbedienung - Gehäse Plexiglas (Stable)


    VDR2
    - Yavdr 0.5- AsRock 77 mit i3-3220T 2X2.8GHZ- 4GB Speicher- GT 440 Passiv - 64GB SSD 2,5"- DigitalDevices Cine S2- LG Bluray - 10" Monitor - YaUsbIr 2 - T Home Fernbedienung - uMouse Cardreader - Gehäse Bitfenix Prodigy M (Unstable)

  • Danke Lars.


    Gruß Santos

    VDR1
    - Yavdr 0.5 - Zotac D2700 Atom 2X2.13GHZ - GT520 Onboard- 4GB Speicher - 32GB CF- Technotrend TT S2-4100 - Alphacool Display - YaUsbIr 2- Technotrend Fernbedienung - Gehäse Plexiglas (Stable)


    VDR2
    - Yavdr 0.5- AsRock 77 mit i3-3220T 2X2.8GHZ- 4GB Speicher- GT 440 Passiv - 64GB SSD 2,5"- DigitalDevices Cine S2- LG Bluray - 10" Monitor - YaUsbIr 2 - T Home Fernbedienung - uMouse Cardreader - Gehäse Bitfenix Prodigy M (Unstable)

  • So...


    Nachdem ich erst vom Permashift Entwickeln genervt war und dann davon, dass ich meinen eigenen VDR nicht mehr zum Laufen gebracht hab (erst ein wackeliges Mainboard, dann die PVR350-Audio-Abstürze), hab ich, als es im Wohnzimmer endlich wieder lief, das Thema VDR erstmal einige Wochen komplett beiseite gelegt. Jetzt hab ich Urlaub und hab mal wieder reingeschnuppert.


    Rausgekommen ist erstmal ein Patch, der meiner yavdr-Installation auf's neue Permashift-Pferd hilft. Man lädt sich die aktuellen Sourcen des yavdr-VDR herunter (ich mach sowas mit wajig source vdr), wendet den Patch darauf an (vorher wird nicht(!) der alte weggepatcht), kopiert Permashift 1.0 in das Plugins-Verzeichnis, kompiliert, und kopiert dann das vdr-Binary nach /usr/bin/ und das Plugin libvdr-permashift.so nach /usr/lib/vdr/plugins/ und gibt ihm dort den richtigen Namen (libvdr-permashift.so.2.0.6).


    Der größte Vorteil dieses Patches sollte sein, dass man nicht mehr andere Plugins passend kompilieren muss. Ich bin dafür von den Default-Parametern weggegangen hin zu mehreren Methoden, die sich gegenseitig aufrufen. Wobei ich über das Problem gestolpert bin, dass vor C++11 Konstruktoren noch keine anders überladenen Konstruktoren aufrufen konnten, da braucht es dann Hilfsmethoden. Ich werd wohl demnächst ein kleines Update von Permashift rausgeben, das das grundsätzlich so macht.


    Viel Spaß!
    Eike

  • Hallo!

    Hallo, und erstmals vielen dank für das großartige Plugin. Ich nutze es jetzt seit Tagen auf meinem System, und es läuft prächtig!

    Prima! Danke für's Feedback!


    Gna!


    Da treffen ein Bug von Permashift und eine aus meiner Sicht ungünstige Standard-Konfiguration von VDR aufeinander.
    VDR scheint per default Debug-Ausgaben auszugeben. Das ist praktisch für Entwickler und vereinfacht ggf. die Fehlersuche,
    aber wenn man davon ausgeht, dass es im Normalbetrieb nichts zu debuggen gibt, ist es meines Erachtens nicht die
    richtige Voreinstellung. Aber, VDR macht es halt so. Ich hab in Permashift diese Debugausgaben eingebaut, um den
    Speicher zu kontrollieren, und mich nicht ausreichend gewundert, dass ich gar nichts dafür tun muss, dass das auch
    ausgegeben wird.


    Der Fehler ist nun, dass der Speicherfüllgrad eigentlich nur dann ausgegeben werden soll, wenn er eine neue 100-MB-Grenze
    überschritten hat. Die Abfrage ist aber falsch platziert, es wird auch dann ausgegeben, wenn die Grenze überschritten
    werden würde, aber nicht wird, weil mehr Speicher gar nicht zur Verfügung gestellt wurde - und das passiert dann bei
    jedem Versuch, mehr Video zu speichern. Mir ist das wohl nie aufgefallen, weil ich hauptsächlich sehr große Buffer
    getestet hatte.


    Danke für die Fehlermeldung! Ich korrigier das in der kommenden Version. Bis dahin kann man sich behelfen, indem man
    an den Anfang der Ausgabezeile ein " // " setzt (oder halt den Loglevel runtersetzt).


    Ciao,
    Eike

  • Hi Ein Eike,
    ermal Danke für da Plugin, kannst du die lib mal hochladen.


    Gruß Santos

    VDR1
    - Yavdr 0.5 - Zotac D2700 Atom 2X2.13GHZ - GT520 Onboard- 4GB Speicher - 32GB CF- Technotrend TT S2-4100 - Alphacool Display - YaUsbIr 2- Technotrend Fernbedienung - Gehäse Plexiglas (Stable)


    VDR2
    - Yavdr 0.5- AsRock 77 mit i3-3220T 2X2.8GHZ- 4GB Speicher- GT 440 Passiv - 64GB SSD 2,5"- DigitalDevices Cine S2- LG Bluray - 10" Monitor - YaUsbIr 2 - T Home Fernbedienung - uMouse Cardreader - Gehäse Bitfenix Prodigy M (Unstable)

  • @ Ein Eik


    Habe mir jetzt sie Sourcen gezogen, dann den VDR gepatcht und das Plugin nach /vdr.2.0.6/PLUGINS kopiert.
    Danach habe ich den VDR mit dpkg-buildpackage -us -uc -tc -b und mit make einmal bauen lassen.
    Anschliessend ins PLUGINS verzeichniss und sudo make gemacht.


    yavdr@YaVdr-Wohnzimmer:/usr/src/vdr-2.0.6/PLUGINS$ sudo make
    make: *** Keine Targets angegeben und keine »make«-Steuerdatei gefunden. Schluss.


    Im Plugin selber bekomme ich :"
    yavdr@YaVdr-Wohnzimmer:/usr/src/vdr-2.0.6/PLUGINS/permashift-1.0.0$ sudo make
    g++ -c -DPLUGIN_NAME_I18N='"permashift"' -o permashift.o permashift.c
    In file included from permashift.c:9:0:
    permashift.h:9:24: schwerwiegender Fehler: vdr/plugin.h: Datei oder Verzeichnis nicht gefunden
    Kompilierung beendet.
    make: *** [permashift.o] Fehler 1
    yavdr@YaVdr-Wohnzimmer:/usr/src/vdr-2.0.6/PLUGINS/permashift-1.0.0$


    gruß Santos

    VDR1
    - Yavdr 0.5 - Zotac D2700 Atom 2X2.13GHZ - GT520 Onboard- 4GB Speicher - 32GB CF- Technotrend TT S2-4100 - Alphacool Display - YaUsbIr 2- Technotrend Fernbedienung - Gehäse Plexiglas (Stable)


    VDR2
    - Yavdr 0.5- AsRock 77 mit i3-3220T 2X2.8GHZ- 4GB Speicher- GT 440 Passiv - 64GB SSD 2,5"- DigitalDevices Cine S2- LG Bluray - 10" Monitor - YaUsbIr 2 - T Home Fernbedienung - uMouse Cardreader - Gehäse Bitfenix Prodigy M (Unstable)

    The post was edited 1 time, last by Santos ().

  • Hallo!

    Danach habe ich den VDR mit dpkg-buildpackage -us -uc -tc -b und mit make einmal bauen lassen.
    Anschliessend ins PLUGINS verzeichniss und sudo make gemacht.

    Ok, das ist doch schon ziemlich weit!
    Normalerweise wird das Plugin beim make im Vdr-Source-Verzeichnis schon mitgebaut.
    Es kann sein, dass du dafür einen symbolischen Link anlegen musst, also

    Code
    1. cd PLUGINS/src/
    2. ln -s permashift-1.0.0 permashift


    Dann im Vdr-Verzeichnis (nicht bei den Plugins) nochmal make oder auch make plugins.


    Ciao,
    Eike

  • Hi Ein Eike,
    ganau das war es .
    Funktioniert prima.


    Danke


    Werde es mal ein wenig testen und berichten .

    VDR1
    - Yavdr 0.5 - Zotac D2700 Atom 2X2.13GHZ - GT520 Onboard- 4GB Speicher - 32GB CF- Technotrend TT S2-4100 - Alphacool Display - YaUsbIr 2- Technotrend Fernbedienung - Gehäse Plexiglas (Stable)


    VDR2
    - Yavdr 0.5- AsRock 77 mit i3-3220T 2X2.8GHZ- 4GB Speicher- GT 440 Passiv - 64GB SSD 2,5"- DigitalDevices Cine S2- LG Bluray - 10" Monitor - YaUsbIr 2 - T Home Fernbedienung - uMouse Cardreader - Gehäse Bitfenix Prodigy M (Unstable)