Danke für deine schnelle Antwort!
Da lassen wir mal die Kirche im Dorf! Klaus hat MTD in den VDR eingebaut, weil es da besser hin gepasst hat. ddci2 realisiert nur die Schnittstelle für die DD CI Hardware.
Da ich aber schon immer die DD Hardware verwende war dein Plugin zumindest ausschlaggebend für den Wechsel.
Also da frag ich mich sofort warum da verschlüsselte Pakete kommen. Wenn dem wirklich so ist, dann müsste ddci2 das auch ausspucken. Man muss ddci2 nur mit entsprechenden Debug-Flags starten (siehe README).
Wenn das wirklich vom CAM kommt, dann frag ich mich wieso und dann ist der Stream ja eigentlich unbrauchbar, weil eben ein paar Pakete fehlen und das kommt bei MPEG ned guat. Im Grunde erübrigt sich da jedes gefrickel hinterher!
Sagt ddci2 allerdings nichts, dann hat das VNSI Plugin beim Erkennen der Bits ein Problem und man muss suchen warum das so ist.
Das Löschen der Bits ist keine Lösung! Wenn das CAM nicht entschlüsselt, dann ist das Paket unbrauchbar, egal ob die Bits gelöscht wurden oder nicht.
Beide vorgeschlagenen Patches lösen das Problem. Ich habe mich nur oberflächlich in das MPEG Demultiplexing eingelesen, konnte aber das Problem im VNSI Plugin bis hin zum Aufruf der VDR Methode IsTsScrambled() nachverfolgen. Diese liefert definitiv true zurück. ddci2 meldet dagegen auch bei vollem Debug-Output keinerlei Fehler, im Log erscheinen ausschließlich die gewünschten CAM buff rd(-> CAM) ... und CAM buff wr(-> CAM) ... Meldungen.
Na DAS meine ich auch!
Wie gesagt, zuerst mal ddci2 ausgeben lassen, ob die Pakete tatsächlich verschlüsselt sind.
Wenn nein -> debug VNSI
Wenn ja, dann muss man mal herausfinden, ob das CAM zu langsam ist, oder was da genau mit dem ECMs passiert in dem Moment, an dem nicht entschlüsselt wird. Das ist allerdings nicht trivial.
Wenn du mir mit einem Enstiegspunkt helfen kannst, bin ich gerne bereit weiter zu debuggen.
Siehe oben. Man kann erst etwas fixen, wenn man weiß was das wirkliche Problem ist. Ich habe dir ein paar Hinweise gegeben und wenn deine Kombination aus DD CI und CAM das nicht entschlüsseln kann, dann wird man das nicht in Software lösen können.
Im Grunde musst du in die SW rein graben, verstehen was passiert und es dann lösen.
Alles bereits geschehen. Das CAM entschlüsselt korrekt, mit dem streamdev Plugin funktioniert alles. Das nutzt allerdings auch IsTsScrambled() nicht. Der Fehler im VNSI Plugin lässt sich direkt auf den Aufruf dieser VDR Methode zurückführen; wenn ich das Scrambling Control Bit in der MTD Decrypt() Methode des VDR manuell entferne, dann funktioniert das VNSI Plugin einwandfrei.
Und mal nur so beiläufig gefragt: Die Treiber von nst verwendest du?
Ich verwende das Kernel Modul aus dem aktuellen git repo von DD (Link).