[markad] überarbeiteter Decoder

  • Code
    root@BM2LTSN64nativeDD:~# sudo markad -v --pts --loglevel=3 --log2rec --cut --threads=1 --logocachedir=/tmp - /media/hd/plexmedia/markad_work/Avengers:_Age_of_Ultron/2021-12-19.21.55.27-0.rec
    failed to get ioprio
    root@BM2LTSN64nativeDD:~#

    die andere erweiterte ffmpeg-version teste ich noch .... info folgt

    Dateien

    --------------------------------------------------------------------------------------------------------------------------------------------------

    BM2LTS im VDR-Portal   http://www.bm2lts.de   http://www.sc-schulze.de

    --------------------------------------------------------------------------------------------------------------------------------------------------

    Empfang: Octopus Net S2 max (8 Tuner) + Octopus Net S2 max (8 Tuner) + Netceiver (2x DVB-s2dual)

    Kopfstation: Virtuelle Maschine mit BM2LTS v3.4.XX

    Clients: NUC10i5FNH2 -> BM2LTS v3.4.XX; FireTV4k mit Kodi u. VNSI-Plugin

    NAS: Aufnahmen u. Plex-Media

    --------------------------------------------------------------------------------------------------------------------------------------------------


  • Ja, sieht doch gut aus, kein Crash mehr. Oder ist aus deiner Sicht noch was offen ?

    failed to get ioprio

    Und wenn du die Meldung auch noch los werden willst, dann nochmals V03 neu holen. Ist aber nur ein Schönheitsfehler, hat funktional keine Auswirkung.

  • Code
    root@BM2LTSN64nativeDD:/media/hd/plexmedia/markad_work# markad_videos
    DEBUG: start as user root
    DEBUG: work on directory /media/hd/plexmedia/markad_work
    INFO: marks missing: /media/hd/plexmedia/markad_work/Avengers:_Age_of_Ultron/2021-12-19.21.55.27-0.rec
    DEBUG: markad call: /usr/bin/markad --logocachedir=/var/lib/markad --loglevel=3 --autologo=2 --threads=4 --astopoffs=0 --priority=19 --log2rec --vps --cut - /media/hd/plexmedia/markad_work/Avengers:_Age_of_Ultron/2021-12-19.21.55.27-0.rec

    sauber durchgelaufen mit markad aus V03. markad.log im Anhang.


    Super ! Danke für Deine Mühe und superschnelle Reaktion.


    Hinsichtlich Deiner frage, ob noch etwas offen wäre ..... ac3reencode war glaub ich noch ein Thema ....das steht gerade noch auf False. Und super wäre es die Untertitelspuren beim cut mit in das ts-File zu bekommen. Möglicherweise geht das mit einem copy statt einem reencode?

    Dateien

    --------------------------------------------------------------------------------------------------------------------------------------------------

    BM2LTS im VDR-Portal   http://www.bm2lts.de   http://www.sc-schulze.de

    --------------------------------------------------------------------------------------------------------------------------------------------------

    Empfang: Octopus Net S2 max (8 Tuner) + Octopus Net S2 max (8 Tuner) + Netceiver (2x DVB-s2dual)

    Kopfstation: Virtuelle Maschine mit BM2LTS v3.4.XX

    Clients: NUC10i5FNH2 -> BM2LTS v3.4.XX; FireTV4k mit Kodi u. VNSI-Plugin

    NAS: Aufnahmen u. Plex-Media

    --------------------------------------------------------------------------------------------------------------------------------------------------


  • Und super wäre es die Untertitelspuren beim cut mit in das ts-File zu bekommen.

    Das muss ich mir mal bei Gelegenheit anschauen, die habe ich bis jetzt immer einfach ignoriert.


    ac3reencode war glaub ich noch ein Thema ....das steht gerade noch auf False.

    Die Funktion gibt es für Player, die AC3 leiser wiedergeben als MP2. Mein Panasonic TV hat das Problem, mein alter Samsung hatte das nicht. Also erst mal prüfen, ob du die Funktion überhaupt brauchst.

  • Ich wünsche euch allen frohe Weihnachten.

    Und natürlich gibt es auch dieses Jahr wieder eine Weihnachtsversion: Die Version 3.0.19 ist auf vdr-plugin-markad verfügbar.

    Sie enthält nicht wie sonst kleinere Optimierungen der Erkennung der Marken, sondern fast ausschließlich Bug Fixe auf Basis von Rückmeldungen hier aus dem Forum. Vielen Dank an allen Beteiligten bei der Fehlersuche.

  • Danke für den unermüdlichen Einsatz an markad! Großen Respekt für den Einsatz!


    Wir nehmen sehr viel englisches TV auf (BBC und Co.). Ich schaue das meistens nicht, aber falls da mal die wirklich zahlreiche Werbung nicht erkannt wird, Interesse an den Aufnahmen? Dann versuche ich da in 2022 mal drauf zu achten um es dir zu schicken (setze aber immer nur die Plugin-Version von easyVDR 5 ein).


    Allen frohe Weihnachten! Auf das der VDR keinen Ärger macht und zu Missstimmungen führt 8)

    Bleibt gesund!


    Gruß Ralf

    Wohnzimmer (easyVDR 5.0):

    Intel NUC 7PJYH / 8 GB RAM / 60 GB SSD / SMK RC6 MCE 50GB

    Dachboden (easyVDR 5.0):
    Asrock J4105 / 8 GB RAM / CINE S2 (V6.5) + DuoFlex S2 / CINE S2 (V6.5) / 60 GB (SAMSUNG SSD 830) / 8 TB (HGST HUS728T8TAL) / Futaba MDM166A / SMK RC6 MCE 50GB / Cooltek G3 / attric IR (Rev.5)

    weitere Kodi-clients (LibreELEC, CoreELEC):

    Raspi 3 (Openelec) und Odroid C4 (Coreelec)

  • aber falls da mal die wirklich zahlreiche Werbung nicht erkannt wird, Interesse an den Aufnahmen?

    Ja klar immer. Einfach ein tar auf das Aufnahmeverzeichnis und mir per PM einen Download Link posten.

  • Und super wäre es die Untertitelspuren beim cut mit in das ts-File zu bekommen. Möglicherweise geht das mit einem copy statt einem reencode?

    Bitte Branch subtitle testen, da ist es jetzt genau so drin.

  • Zum Lockfehler vom September:

    Ich habe mir das mal angeschaut, verstehe aber noch nicht, was hier schief läuft.

    Es gibt nur eine Stelle im Code, die einen channels lock macht, und den Teil habe ich noch nie angefasst.

    Bitte installiere mal den Branch "lock", und poste ein vollständiges syslog ab kurz vor dem Fehler.

    Wichtig dabei ist, was machst du oder der VDR gerade, wenn die Meldung "markad: cSetupMarkAdList(): LOCK channels" im syslog auftaucht ?


    Habe mir das inzwischen angesehen:

    Problem tritt ausschließlich bei Modifikation eines Kanals während laufender Aufnahme auf:


    Der zu Grunde liegende Aufruf dürfte aus vdr.c (Statusmonitor) stammen:


    Da ist Timers und Channels bei Aufruf natürlich ge-Read-lockt und das Plugin erzeugt per Timer-Lock logischerweise einen Fehler. Man müßte also die laufenden Aufnahmen in diesem Fall anders ermitteln.

    Vielleicht per globaler Variable: je Aufnahme Start +1 / Stop -1. Mal sehen. :)


    Grüße,

    Stefan

  • Vielleicht per globaler Variable: je Aufnahme Start +1 / Stop -1. Mal sehen.

    Aber nur, wenn mir echt nichts besseres einfällt.


    Bitte mache mal hier den Kommentar raus, dann neu bauen, installieren, vdr neu starten.

    Wenn es wieder auftritt, das Syslog von der Stelle posten.


    Ich verstehe immer noch nicht, warum ich da überhaupt einen Channel Lock mache. Und warum nur bei dir, ich habe den Fehler selbst nicht und es hat auch noch kein anderer berichtet.

  • vdr: [2869] markad: RunningRecording(): LOCK timers
    vdr: [2869] markad: RunningRecording(): UNLOCK timers

    Siehe oben, war bereits aktiv. Davor gab es kein Lock/Unlock. Danach dann halt erst bei Aufnahmeänderung.


    Reproduzierbar mit jeder PID-Änderung bei laufender Aufnahme (auf dem geänderten Kanal).


    Stefan

  • Sorry, URL war auf mein lokales git, ändere bitte hier.

    Siehe oben, war bereits aktiv.

    Ich weiß nicht, welchen Stand du hast und was da ins syslog kommt. Vor allen sehe ich keinen Channel Lock.

    Bitte git master mit o.g. Änderung verwenden und Syslog mit Timestamps posten.

  • Noch ein paar Anmerkungen zu deinen Kommentaren:

    Da ist Timers und Channels bei Aufruf natürlich ge-Read-lockt

    Stimmt, aber von vdr und nicht von markad. Und das erzeugt keinen invalid Lock bei markad.


    und das Plugin erzeugt per Timer-Lock logischerweise einen Fehler

    Nein, ein Timer Read Lock von markad nach einem VDR Channel Read Lock ist zulässig. Geht ja nicht anders, man hat ja keine Infos, was der VDR oder andere Plugins gerade gelockt haben.


    Der fehlerhafte Lock ist hier:

    vdr: [2869] 2869 - R - - - - - - - - L
    vdr: [2869] 2869 R * - - - - - - - - L

    markad mach zuerst einen Channel Lock, dann einen Timer Lock und das ist nicht zulässig.

    Ich verstehe nur nicht, warum markad hier überhaupt einen Channel Lock macht, es gibt nur eine Stelle im Code, wo markad einen Channel Lock macht und die sollte hier eigentlich nicht aufgerufen werden. Die wird nur aus dem Setup Menu aufgerufen.

    Um zu verstehen was hier den invalid Lock erzeugt, brauche ich ein Syslog mit Timestamps von kurz vor dem Channel Lock bis zum invalid Lock.


    kls: korrigiere mich bitte, falls ich hier was falsches behaupte.

  • Mein Stand ist commit 39b0fdaed31beb66e6ea82f2c09d017cf8d7b285 (HEAD -> master, tag: v3.0.19, origin/master, origin/V03, origin/HEAD).


    Habe noch einen Patch zum Testen drin, (und um die Locks minimal früher freizugeben (anbei)).


    Die zeitlich Abfolge wundert mich auch. Hatte mal zum Test ein LOCK_CHANNELS_READ vor den Timers-Lock in Zeile 49x geschrieben, da kam der Lock Fehler erst mit Stop des VDR. Eigenartig.

  • Habe noch einen Patch zum Testen drin

    Bitte nicht zwei Änderungen gleichzeitig, das macht es mir nur schwerer.

    Hatte mal zum Test ein LOCK_CHANNELS_READ vor den Timers-Lock in Zeile 49x geschrieben

    Der Ansatz ist mal einen Test wert, aber umgekehrt: Einen Timer Lock vor dem Channel Lock. Channel Lock vor Timer Lock ist nicht zulässig, muss umgekehrt sein.

    Was ich gar nicht verstehe, ist dass in deinem Syslog gar kein Channel Lock von markad drin ist. VDR behauptet aber, den würde es geben.


    Ich habe noch mehr debug Nachrichten eingebaut, bitte nochmals mit dem Branch "lock" testen. Syslog bitte ab sein paar Zeilen vor dem Channel Lock von markad ("cSetupMarkAdList(): WANT channels READ"), hoffentlich kommt diesmal einer.

  • Habe es gerade installiert. Reproduzierbar sollte es morgen vormittag sein. Log gibt es dann.


    Es kann natürlich sein, das die Installationsreihenfolge der Plugins hinein spielt, je nach Art und Weise, wie der VDR die Statusmonitore der Plugins bearbeitet - die ist jetzt natürlich wieder anders.


    Stefan

  • Es kann natürlich sein, das die Installationsreihenfolge der Plugins hinein spielt

    Das glaube ich eigentlich nicht, der Fehler:

    vdr: [2869] 2869 - R - - - - - - - - L
    vdr: [2869] 2869 R * - - - - - - - - L

    ist rein markad intern. Aber "glauben" kommt von "nicht Wissen".

    der VDR die Statusmonitore der Plugins bearbeitet

    An der Stelle, wo der Fehler auftritt, wird ChannelChange der Plugins aufgerufen. markad hat aber gar keine Methode ChannelChange, sollte also gar nicht aufgerufen werden.

    Viel Glück beim Reproduzieren und vor allen möchte ich einen Channel Lock im Syslog sehen.

  • Der VDR ruft zunächst aus vdr.c über:

    Code
    if (Channels) {
      for (const cChannel *Channel = Channels->First(); Channel; Channel = Channels->Next(Channel)) {
        if (Channel->Modification(CHANNELMOD_RETUNE)) {
          cRecordControls::ChannelDataModified(Channel);


    das hier in menu.c auf


    das stoppt die Aufnahme und startet sie wieder, was über Aufnahme Start/Stop beim Plugin landet:

    Code
    void cStatus::MsgRecording(const cDevice *Device, const char *Name, const char *FileName, bool On)
    {
    for (cStatus *sm = statusMonitors.First(); sm; sm = statusMonitors.Next(sm))
    sm->Recording(Device, Name, FileName, On);
    }


    Und die Sortierung der Liste, nunja ...

    ;)


    Grüße,

    42

  • sm->Recording(Device, Name, FileName, On);

    Ja, das ist der Aufruf, der dann in markad zum Timer Lock führt, das war mir bekannt.


    Aber wo ist der Aufruf, der in markad zum Channel Lock führt ?

    Da müsste der VDR ein Objekt cOsdItem vom Plugin erzeugen, siehe markad setup.h

    Code
    class cSetupMarkAdListItem : public cOsdItem

    Und ich finde den Aufruf nur, wenn man im markad Konfigurationsmenu in der Zeile "nur Kanäle mit Logo scannen" die blaue Taste drückt. Nur so schaffe ich es bei mir einen Channel Lock zu bekommen. Eine PID Änderung einer laufenden Aufnahme kann ich nicht künstlich erzeugen.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!