Digital Eliteboard - Das Digitale Technik Forum

Registriere dich noch heute kostenlos, um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereichen, welche für Gäste verwehrt bleiben

Registriere dich noch heute kostenlos, um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereichen, welche für Gäste verwehrt bleiben

Oscam StreamRelay Delay Mod

@latte0815

also hier verhalten sich die OE2.5-boxen mit dreamOS etwas anders:
punkt 1+3 laufen ohne a/v-issue ... sobald das openssl aktiviert wird, ist schicht im schacht, und nach paar mal zappen ist schluss mit lustig.
aufgefallen ist es eigentlich nur, weil ich seit einiger zeit (konkret seit mbedtls 4.1.0 und S4) kein a/v-problem mehr hatte.
warum das im master bei (un)bestimmten konstellationen auftritt, haben wir jedoch noch nicht erfassen können.

bei einer 9x0 zb. baue ich mit der TC "cortexa15hf_opendreambox_krogoth" und Repo "mbedtls-openssl" ... kein emu, kein openssl!
(und in den oscam-streamrelay-config's dann noch den buffer_fix=1 und die buffer_time=2000)
und natürlich sollte auch die quelle sauber sein!

aber ich würde das thema hier nicht weiter ausführen wollen - geht es in diesem thread ja eigentlich um den "delay.mod"!
 
Zuletzt bearbeitet:
bei einer 9x0 zb. baue ich mit der TC "cortexa15hf_opendreambox_krogoth" und Repo "mbedtls-openssl" ... kein emu, kein openssl!
(und in den oscam-streamrelay-config's dann noch den buffer_fix=1 und die buffer_time=2000)
und natürlich sollte auch die quelle sauber sein!

Genau so habe ich es auch gebaut und nun darfst du 3x raten, ganz genau meine 920er, ja alle, machen nach einer bestimmten Zeit Probleme. Wie gesagt ich habe ziemlich viele Kombinationen gebaut und keine läuft Problemlos.
 
vmtl. hast du dann ein anderes thema, was du dann adressieren müsstest.
den dateianhang kannste ja mal mit prüfen, aber wenn du schon so viel getestet hast, wirste mit meiner auch nicht erfolgreich sein.

und um wenigstens einigermassen dem thread zu folgen:
du kannst ja alternativ auch mal die V4 hier aus dem thread testen ... @60plus hat ja da positive effekte vermeldet.
 

Anhänge

Sie müssen registriert sein, um die Liste der Anhänge zu sehen
Zuletzt bearbeitet:
Mit dem V4 Patch funktioniert es schon besser aber testet doch mal bei euch bitte den Cartoon Network, Cartoonito und Nicktoons, bei diesen Sendern habe ich die größten Probleme.
 
Der Patch kann nicht Zaubern, wenn für die genannten Sender keine CWs vorhanden sind (oder Lückanhaft) dann ist das eben so.
 
Für mich scheint es gefühlt so zu sein wenn man Nick Jr. ansieht bringt der was ins stocken bei den DM9x0... denn danach bleiben auch Cartoon Network oder die von die aufgeführten Sender immer mal entweder Ton oder Bild weg. Auf den Sky Hauptsendern passiert mir das kaum... nur eben wenn ich mal auf Nich Jr. zappe gibt es. Wenn ich von den Sky Hauptsendern dagegen Cartoonito und deine ausgeführen der Reihe nach anwähle klappt das auch mit Bild und Ton... aber sobald Nick Jr. drann ist wird es fehlerhaft. Aber zum Glück brauch ich diese Sender nicht daher hab ich das Problem auch nicht. :)
 
wenn keine CWs da ist, sollte was im Log stehen. Log?
einmalig kurz Pause im Bild wenn das Delay nicht schon von vornherein lange genug war, und Delay deswegen erhöht wird, ist ja normal.
 
Bei Tests sollte immer parallel auf die Zeiten im Log geschaut werden. Bei not found bzw. timeout ist kein CW vorhanden. Dann kommt es immer zum Standbild. Ansonsten wie @BugSpencer schon geschrieben hat, kommt es auch zum Freez wenn der Delay noch nicht "lang genug" war bzw. das CW später als der Delay kommt. Also immer Log im Auge behalten um zu sehen wie hoch Delay ist und ob das CW rechtzeitig kam bzw. überhaupt eins kommt.
 
Wie meinst Du das? Kann ich da jetzt einfach 200 eintragen (Welcher Parameter ?) und dann werden automatisch 200 ms mehr Antwortzeit in Ordnung sen?
so wie es voreingestellt ist, gehen Quellen wo ein ECM auch mal etwas länger dauert (z.B bis 5000ms, wenn Karte/VPN überlastet etc.)

hiermit kann man nur Simulieren, das die Quelle schlecht ist, und schauen was passiert
[dvbapi]
delayer = 1234

hat hat eine Quelle die nur auf Cache von anderen basiert, wird das bei fehlenden ECM nicht helfen
 
Ich habe dann auch mal ein wenig gebastelt. Getestet bisher auf einer Dreambox One, lief bei mir bisher stabil. Allerdings gibt es bestimmt noch genug Grenzfälle, die bei mir nicht aufgetaucht sind.

EDIT: das basiert auf v4 von @BugSpencer


1. Stabilisierung des Delaybuffer-Threadings

Der Delaybuffer wurde gegen Race-Conditions abgesichert. Lesen, Schreiben und Vergrößern des Delaybuffers werden jetzt per Lock geschützt, damit Writer-Thread und Stream-Thread nicht gleichzeitig inkonsistente Buffer-Zustände erzeugen können. Außerdem werden Datenblöcke für den Writer zuerst aus dem Buffer herauskopiert, bevor auf Keys gewartet, entschlüsselt oder gesendet wird. Dadurch bleibt der interne Buffer-Zustand stabil, auch wenn das Warten auf einen CW länger dauert. Die CW-/Key-Daten selbst sind nun ebenfalls pro Key geschützt. Updates durch neue CWs und gleichzeitiges Entschlüsseln können sich dadurch nicht mehr gegenseitig stören. Zusätzlich wurden Statuswerte wie Writer-Status, Client-Status und Response-Time auf atomare Zugriffe umgestellt. Das macht die Kommunikation zwischen den beteiligten Threads sauberer. Behoben wurden außerdem mögliche Probleme bei Delay-Zeitberechnungen und beim Logging von Buffer-Größen. Auch das Vergrößern des Buffers wurde angepasst, damit vorhandene Daten kompakt verschoben werden können, ohne den Lesezustand falsch zu verändern.

2. Delaybuffer startet erst nach gültigem CW

Der Delaybuffer wird jetzt nicht mehr sofort gestartet, sobald PAT/PMT und CAID bekannt sind. Stattdessen wartet streamrelay zuerst auf einen echten, gültigen CW. Wichtig dabei: CWs, die komplett aus Nullen bestehen, werden ignoriert. Solche CWs entstehen z.B. bei „not found“-ECMs und dürfen den Delaybuffer nicht aktivieren. Das behebt den Fall, dass z.B. zuerst CAID 098C probiert wird, aber keinen Key liefert. Früher konnte der Delaybuffer trotzdem schon starten. Wenn danach erst CAID 098D einen gültigen CW liefert, war der Buffer bereits in einem schlechten Zustand. Jetzt startet der Buffer erst, wenn der tatsächlich nutzbare CW angekommen ist.

3. CAID-/ECM-PID-Tracking
Ein gültiger CW wird jetzt an die aktive CAID und ECM-PID gebunden. Dadurch wird verhindert, dass ein fehlgeschlagener ECM-Versuch oder ein CW von einer anderen ECM-PID den Streamrelay-Zustand falsch beeinflusst. Wenn dvbapi also von 098C auf 098D umschaltet, zählt erst der gültige CW von 098D als aktiver Startpunkt für den Delaybuffer.

4. Kein unnötiges Vorpuffern bei ECM-Fehlern

Vor dem ersten gültigen CW werden keine verschlüsselten TS-Daten mehr in den Delaybuffer geschrieben. Dadurch kann der Delaybuffer bei wiederholten ECM-Fehlern nicht mehr bis zur Maximalgröße anwachsen, obwohl noch gar kein nutzbarer Key vorhanden ist. Das verhindert insbesondere Startprobleme, bei denen der Buffer durch „no key“-Situationen unnötig groß wird.

5. Begrenztes Warten, wenn gar kein gültiger CW kommt

Wenn ein Sender bzw. Service überhaupt keinen gültigen, nicht-null CW liefert, bleibt streamrelay jetzt nicht mehr endlos im Startzustand hängen. Stattdessen wird gemessen, wie lange der Client bereits auf den ersten gültigen CW wartet. Wird innerhalb von stream_relay_delay_time_max kein gültiger CW gefunden, wird der Streamrelay-Client getrennt. Dadurch kann DVBAPI sauber aus dem Versuch herauskommen, statt dauerhaft die ECM-PIDs durchzuprobieren, bis OSCam neu gestartet wird.

6. Besseres Verhalten bei Key-Ausfällen im laufenden Stream

Wenn während eines laufenden Streams ein Key fehlt oder alt wird, wird die Verzögerung nicht mehr dauerhaft bis zum Maximum erhöht. Stattdessen wird diese Situation als begrenzter Resync-/Drop-Fall behandelt. Das heißt: streamrelay wartet nur begrenzt auf den passenden Key. Wenn er nicht rechtzeitig kommt, werden Daten verworfen bzw. vorwärts gesprungen, bis der Stream wieder zu einem vorhandenen Key passt.

7. Neue konfigurierbare Resync-Grace-Zeit

Es wurde eine neue Option stream_relay_resync_grace hinzugefügt. Damit lässt sich konfigurieren, wie lange streamrelay bei einem laufenden Stream auf einen fehlenden/passenden Key wartet, bevor es resynchronisiert bzw. Daten verwirft.



### Kompakt Englisch

Harden streamrelay delay buffer threading

  • protect delay buffer reads/writes and growth with locking
  • copy writer blocks out before key waits, descramble, and send
  • add per-key locking around CW updates and decrypt
  • use atomics for writer status, client status, and response time
  • fix delay time overflow and size_t logging issues
  • make buffer growth compact records without mutating read state
  • add comments for reconnect packet-size assumptions and TS max size

streamrelay: gate delay buffer on valid CW

Start the delay-buffer writer only after a non-zero CW is active for the selected CAID/ECM PID, and ignore failed/zero CWs during CAID fallback.

Avoid buffering encrypted TS data before the first usable CW arrives, so startup with repeated ECM failures cannot grow the delay buffer to max. Handle mid-stream key outages as bounded resync/drop events instead of permanently increasing stream delay.

Add human-readable delay-buffer size logging and a configurable stream_relay_resync_grace option with WebIF support.

streamrelay: stop startup wait when no valid CW arrives

Do not leave streamrelay clients waiting forever when a service never produces a valid non-zero CW. Track how long the client has been waiting for the first active CW and disconnect it after stream_relay_delay_time_max.

This keeps the delay buffer from starting on invalid CWs while also letting DVBAPI unwind instead of retrying ECM PIDs indefinitely.
 

Anhänge

Sie müssen registriert sein, um die Liste der Anhänge zu sehen
Zuletzt bearbeitet:
Zurück
Oben
📱
Forum App auf dein Handy
Schneller. Push-Benachrichtigungen. Offline-fähig.
Öffnen