Posts by kfb77

    CKone

    Ja das mit den Endmarken ist schwierig, weil oft wirklich kein Ende erkennbar ist und nahtlos die nächste Sendung beginnt. Dann setzte ich lieber die Marke ans Ende der Aufnahme, bevor ich das Ende abschneide. Man kann ja abschalten, wenn man sieht, dass die Sendung zu Ende ist. Wenn du mir mal ein Log File hast, wo man ein Ende erkennen kann (Logo fehlt lange genug, dass es erkennbar ist, Balken sind weg, Ton Kanäle ändern sich oder Bild Seitenverhältnis ändert sich) dann schaue ich gerne mal rein, ob ich hier noch was verbessern kann.

    Es würde auch noch einen anderen Ansatz zur Lösung des Problems geben: Zumindest die ÖR senden ein gutes VPS Signal mit einer recht zuverlässigen Start und Ende Informationen. Ich denke, die meisten von uns haben aber schon schlechte Erfahrungen mit VPS Aufnahmen gemacht. Wenn es dumm läuft, dann hat man keine Aufnahme.

    Ich hatte schon vor ein paar Wochen die Idee, im markad Plugin mir die VPS Events zu holen, zu prüfen und wenn sie sinnvoll erscheinen, als Start und Ende Information zu verwenden. Das Problem dabei ist nur, wenn epg2vdr installiert ist, werden die Events so umgebogen, dass ich sie nicht mehr zuordnen kann. Ich hätte dafür aber auch einen Vorschlag für einen Patch in epg2vdr. Ich werde aber keine Version meines Plugins releasen, dass abhängig ist von einem Patch in einem anderen Plugin, da mache ich mich bei den Distributoren unbeliebt ;-)

    horchi : bitte melde dich mal hier, damit wir uns dazu austauschen können.

    Falls du Interesse hast meinem Prototypen zu testen, melde dich, dann push ich meinen Test Branch. Das zusätzliche Feature funktioniert aber nur bei ÖR, der Rest sendet willkürliche Start Events und keine Stop Events.

    Vielen Dank für das Lob.

    Durch den Speicherverbrauch Beitrag bin ich auf die Idee gekommen, auch mal cppcheck drüber laufen zu lassen. Da kam einiges dabei raus …

    Ich hoffe mal, ich habe damit nichts "kaputt gefixed".

    Eine neue Version 2.1.3 ist auf vdr-plugin-markad verfügbar. Es sind einige Bug Fixes und viele interne Code Optimierungen drin. Außerdem habe ich auch noch versucht, einen Beitrag zum Thema Speicherverbrauch zu leisten:

    - 14 Byte Leak pro Aufnahme gefixed (ok, nicht viel, aber Leak ist Leak)

    - zum Suchen eventuell vorhandener Leaks habe ich Code hinzugefügt, der sich merkt, für welche Variablen Speicher allokiert oder freigegeben wird. Der Code kann im Plugin Makefile durch Entfernen des Kommentars in der Zeile DEBUGMEMPLUGIN=1 aktiviert werden. Den Status kann man dann über svdrpsend abrufen:

    Code
    1. root@VDR-1804:~# svdrpsend PLUG markad DEBUGMEM
    2. 220 VDR-1804 SVDRP VideoDiskRecorder 2.4.2; Fri Jun 12 10:36:47 2020; UTF-8
    3. 900-markad: unmachted alloc 1 times 9 bytes, line 30, file markad.cpp, variable: bindir
    4. 900-markad: unmachted alloc 1 times 16 bytes, line 33, file markad.cpp, variable: logodir
    5. 900 markad: unmachted alloc 1 times 22600 bytes, line 217, file markad.cpp, variable: statusMonitor
    6. 221 VDR-1804 closing connection

    Die Hauptfunktion steckt im, aus VDR Sicht externen Programm, markad. Das Plugin macht fast nichts und startet eigentlich nur markad beim Start einer Aufnahme. Es hat gerade mal 3 Variablen dynamisch allokiert. Beim Start einer Aufnahme kommen noch ein paar dazu, die am Ende der Aufnahme wieder frei gegeben werden.

    Mist, copy und paste Fehler aus meinem Test branch.

    Ja, der Unterschied ist tatsächlich sogar größer.


    kls

    Ich versuche es hiermit nochmal einen Beitrag zum finden des Leaks zu leisten:

    Mir ist am dem von dir angesprochen Leak Patch aufgefallen, dass hier noch was nicht stimmen könnte.

    In der eit.c wird ein Objekt vom Type cSectionSyncerEntry (child object von cListObject und cSectionSyncer und somit größer als cListObject) allokiert, in der tools.c wird aber ein Objekt vom Type cListObject wieder freigegeben. Und das ist 32 Bytes kleiner.

    Patch, der das Problem aufzeigt und fixed (sollte jemand das verwenden wollen, bitte erst die printf entfernen, die sind nur zum Aufzeigen des Speichers drin):

    Deine Meinung dazu ?

    Jetzt haben sich die Posts überschnitten.

    Ich denke nicht, denn hier wird ja innerhalb eines bestehenden Speicherblocks ein Teil davon "nach vorne" verschoben. Der Speicherblock als Ganzes bleibt unverändert.

    Stimmt, müsste dann aber nicht size gleich bleiben, damit der freie Platz hinten auch wieder für ein neues Element verwendet wird.

    kls

    Ich glaube, ich habe einen Leak gefunden: Müsste nach einem memmove nicht auch ein realloc kommen, um den Speicher freizugeben ?

    CKone und ofenheizer

    Wenn ich das richtig verstanden habe, startet ihr markad aus einem eigenen Befehl in der Reccmds.conf. Zumindest habe ich im VDR Standard Menü nichts gefunden, mit dem man markad manuell starten könnte.

    Wenn ihr das unbedingt so beibehalten wollt, nur markad auf dem Server starten wollt, gibt es eine ganz einfache Lösung:

    Ändert in eurem Skript den Aufruf von markad <Pfad zur Aufnahme auf dem Client> in:

    svdrpsend -d <Server Name oder IP> PLUG markad mark <Pfad zur Aufnahme auf dem Server>

    Die Funktion markad über svdrpsend zu starten gab es schon immer.

    ofenheizer

    Ich habe eine Anleitung gebaut:

    Die fehlende Datei und die o.g. Anleitung findest du auf dem aktuellen Entwickler Branch im git:

    git clone -b V02 https://github.com/kfb77/vdr-plugin-markad

    Eine neue Version 2.1.2 ist auf vdr-plugin-markad verfügbar. Es sind einige Bug Fixes drin. Die wichtigste Änderung:

    Fix marks for channels who always send AC3 with 6 channels. Change of value Cx to Dx in logo file for channels that continuously transmit 6 audio channels is no longer necessary.