FireFly Pull Request ist merged in https://github.com/rofafor/vdr-plugin-satip

SATIP-Plugin Patches
-
-
Mission completed
Dann kann ich mein Repo ja wieder löschen (mach ich aber nicht)
-
hatte auch nochmal geschrieben das es super läuft, danke für deine Mühe.
-
Ich grabe mal meinen alten Thread aus weil ich ein paar weitere Patches in mein Repo https://github.com/FireFlyVDR/vdr-plugin-satip eingepflegt habe.
Neben ein paar Fixes aus Wirbels Repo dürfte insbesondere der Patch
- Release server's tuners by opening RTSP connections only when needed
interessant sein, da damit die Tuner auf dem SATIP-Server nur dann belegt werden wenn sie benötigt werden und nicht vom Start bis Stop des Plugins.
Alle Tuner? Nein, ein kleiner Teil .... (frei nach Asterix) Wenn man eine Aufnahme abspielt behält VDR offenbar einen RTSP Stream für Live-TV offen, aber alle anderen Verbindungen werden abgebaut wenn keine EPG-Scans mehr laufen.
Die Patches in Repo nutze ich mittlerweile einige Tage produktiv ohne Probleme, kann aber aufgrund der zahlreichen Konfigurationsmöglichkeiten des Plugins nicht ausschließen dass es in irgendeiner Konstellation Probleme gibt, also besser erstmal einen Testlauf machen.
An ein paar weiteren Patches bin ich dran, aber die sind noch nicht ganz ausgereift ...
-
Das ist ein Verhalten das konfigurierbar sein sollte.
Ich weise einem VDR Server lieber eine feste Anzahl von Tunern zu die der VDR dann auch als existent annehmen kann. Andernfalls sind kaputte Aufnahmen vorprogrammiert.
-
Ich weise einem VDR Server lieber eine feste Anzahl von Tunern zu die der VDR dann auch als existent annehmen kann.
Da hast Du vermutlich etwas falsch verstanden: Es werden auch weiterhin N devices im VDR erzeugt wenn man --devices=N angibt. Nur werden nicht mehr beim Start des Plugins N RTSP-Connections zum SATIP-Server aufgebaut und dauerhaft offen gehalten sondern nur noch aufgebaut solange der VDR sie benötigt.
-
Das bedeutet aber auch das die Devices aus Sicht des SatIP Servers frei sind. Sie sind also nicht mehr für Aufnahmen reserviert und falls eine Aufnahme ansteht kann durchaus eine Verbindung fehlschlagen weil kein Tuner frei ist.
-
Das bedeutet dann aber auch, dass mehr SATIP-Clients definiert als SATIP-Tuner vorhanden sind und der/die VDR immer zuerst eingeschaltet werden müssen, damit sie die gewünschte Anzahl Tuner bekommen. Außerdem muss der/die VDR 24x7 durchlaufen, weil wenn er ausgeschaltet wird werden die SATIP-Tuner ja frei gegeben.
Was ist dann mit den anderen SATIP-Clients, die später kommen?? Die gehen dann bisher schon leer aus -
Ich häng mich hier mal kurz rein, damit ich später drüber in der Historie mal stolper..
Soweit ich verstehe, hat Rofafor damals leere devices als Satip Geräten angelegt, die normal gar keinen Tuner haben. So ähnlich wie dynamite, weswegen dynamite mit satip irgendwie silly ist.
Damit versteht dann VDR selbst, was maximal an streams geht, aber ein device ohne tuner benutzt keine Ressourcen auf dem Server. Keine der VDR Instanzen eines device war je (und soll auch nicht per spec) einem VDR device fest zugeordnet. Ein VDR device nutzt einen tuner vom server und gibt ihn ab, wenn es den nicht mehr braucht. Der tuner wird nicht von vdr ausgesucht, das ist Aufgabe des servers.VDR fragt an, welches device einen Sender kann, sucht sich das 'schönsten' device mit dem kleinsten Impact auf das gesamtsystem aus und gut ist.
Ich verstehe deswegen noch nicht, wie dieser Patch helfen soll. Any hints?
-
Das ist ein Verhalten das konfigurierbar sein sollte.
Da wäre ich auch dafür, ein sinnvolles Feature, aber nicht für jedem.
Das bedeutet dann aber auch, dass mehr SATIP-Clients definiert als SATIP-Tuner vorhanden sind und der/die VDR immer zuerst eingeschaltet werden müssen, damit sie die gewünschte Anzahl Tuner bekommen.
Das ist bei mir auch so: OctopusNet mit 8 Tunern, 2 VDRs (7/24) mit in Summe 6 SATIP Devices, mehrere Laptops mit Kodi und OctopsNet Plugin und zwei Panasonic TVs mit SAT/IP Client..
Es soll sicher gestellt sein, dass beide VDRs die 6 Tuner bekommen, weil darauf deren Timer Konflikte beruhen.
Für die Kodi Clients / TVs git: Wer zu spät kommt, den bestraft die OpcopusNet (frei nach Gorbatschow). Auch wenn es zufällig gerade möglich wäre, weil die VDRs nicht alle Tuner benötigen.
-
Damit versteht dann VDR selbst, was maximal an streams geht,
Die max. Anzahl Streams wird mit --devices=N in der Plugin config angegeben
aber ein device ohne tuner benutzt keine Ressourcen auf dem Server.
Doch, es bleibt dauerhaft eine RTSP-Session pro VDR-Satip-Device zum SATIP-Server geöffnet.
Ein VDR device nutzt einen tuner vom server und gibt ihn ab, wenn es den nicht mehr braucht.
Wie kann man das im Detail überprüfen? Bei meinem OctopusNet sind zumindest ohne den Patch immer alle N zugewiesenen Tuner als belegt gekennzeichnet. Genau das ändert der Patch - die Tuner werden nicht mehr als belegt im Octopus-WEB UI angezeigt.
Der tuner wird nicht von vdr ausgesucht, das ist Aufgabe des servers.
Exakt: Das SATIP-Plugin bekommt beim RTSP SETUP-Request eine streamID zurück und mit der kann es dann mit PLAY die Parameter des Kanals einstellen. Welcher phys. Tuner letztendlich dahinter steckt legt der SATIP-Server fest.
Soweit ich verstehe, hat Rofafor damals leere devices als Satip Geräten angelegt, die normal gar keinen Tuner haben.
Die cSatipDevice Devices haben je eine cSatipTuner Instanz, die bisher alle direkt eine RTSP-Session zum SATIP-Server aufmachten, was mein Patch ändert.
-
Es soll sicher gestellt sein, dass beide VDRs die 6 Tuner bekommen, weil darauf deren Timer Konflikte beruhen.
Für die Kodi Clients / TVs git: Wer zu spät kommt, den bestraft die OpcopusNet (frei nach Gorbatschow). Auch wenn es zufällig gerade möglich wäre, weil die VDRs nicht alle Tuner benötigen.
Genau so auch bei mir. Der VDR soll seine Tuner dauerhaft blockieren. Wenn andere Clients dann keinen Tuner bekommen, dann Pech gehabt
-
Die max. Anzahl Streams wird mit --devices=N in der Plugin config angegeben
nee, das wäre eher die Anzahl Transponder. Zumindest wäre das die ideale Welt. Pro TP >= 1 stream.
Doch, es bleibt dauerhaft eine RTSP-Session pro VDR-Satip-Device zum SATIP-Server geöffnet.
Wie kann man das im Detail überprüfen? Bei meinem OctopusNet sind zumindest ohne den Patch immer alle N zugewiesenen Tuner als belegt gekennzeichnet. Genau das ändert der Patch - die Tuner werden nicht mehr als belegt im Octopus-WEB UI angezeigt.
Am Ende auf dem Server, weil der beim nächsten Tunen einen unbenutzten Tuner anbieten muss. In dessen html Oberfläche, wenn er sowas hat.
Wenn das nicht funktioniert, dann kann man aber auch sehr schnell mit dem Finger drauf zeigen, wo es klemmt. Klingt bis jetzt nicht unmöglich, weil genau dafür gibts im Protokoll ja TEARDOWN soweit ich mich erinner.Exakt: Das SATIP-Plugin bekommt beim RTSP SETUP-Request eine streamID zurück und mit der kann es dann mit PLAY die Parameter des Kanals einstellen. Welcher phys. Tuner letztendlich dahinter steckt legt der SATIP-Server fest.
Die cSatipDevice Devices haben je eine cSatipTuner Instanz, die bisher alle direkt eine RTSP-Session zum SATIP-Server aufmachten, was mein Patch ändert.
Das sollte doch aber genau so bleiben?
Alle devices sollten für den Server wie absolut unabhängige clients aussehen. Keine Verstrickungen. Jeder sein RTP, RTCP und RTSP. Beenden beim Teardown und alle Verbindungen genau dann lösen. Server ist dann frei und kann zu jedem Client diesen Tuner neu verbinden. -
nee, das wäre eher die Anzahl Transponder.
Ja, Transponder ist die bessere/richtige Beschreibung
Alle devices sollten für den Server wie absolut unabhängige clients aussehen. Keine Verstrickungen. Jeder sein RTP, RTCP und RTSP.
Ja, haben sie auch weiterhin. Mit "direkt" meinte ich "direkt beim Start des Plugins, also "sofort"
-
Es soll sicher gestellt sein, dass beide VDRs die 6 Tuner bekommen, weil darauf deren Timer Konflikte beruhen.
Für die Kodi Clients / TVs git: Wer zu spät kommt, den bestraft die OpcopusNet (frei nach Gorbatschow).
Der VDR soll seine Tuner dauerhaft blockieren. Wenn andere Clients dann keinen Tuner bekommen, dann Pech gehabt
Hmm, ich hätte nicht gedacht, dass es solche Konfigurationen gibt.
Meine Absicht war nicht genutzte Verbindungen abzubauen, da das SetPowerSaveMode(bool On) mit Satip scheinbar nicht funktioniert (es wird bei mir lt. Log immer nur mit On == false aufgerufen, also ausgeschaltet). Aber dann muss ich das wohl doch konfigurierbar machen ....
-
Was beim Blick in den code auffällt, dass es hier auch Fehler bei vdr selbst gibt.
bool cDvbTuner::IsTunedTo(const cChannel *Channel) const
Diese Zeile in dvbdevice.c:803 ist falsch für DVB-T, DVB-T2 und ATSC VSB, weil dort gar keine Symbolrate benutzt und ignoriert wird.
Und für Sat kann die Frequenz gerne mal ein oder zwei MHz daneben kommen in den SI Daten, so dass auch der Transponder() Vergleich dann fehl schlägt.Codeif (channel.Source() != Channel->Source() || channel.Transponder() != Channel->Transponder() || channel.Srate() != Channel->Srate())
Und der Vergleich zwei Zeilen später ist auch hmm..
Die Kanal Parameter können mal 'C0M999' oder 'C0' oder 'M64' sein, inhaltlich wäre das dann immer noch der gleiche Kabelkanal, solange Frequenz und symbolrate stimmen.
-
Wie kann man das im Detail überprüfen? Bei meinem OctopusNet sind zumindest ohne den Patch immer alle N zugewiesenen Tuner als belegt gekennzeichnet. Genau das ändert der Patch - die Tuner werden nicht mehr als belegt im Octopus-WEB UI angezeigt.
Hast du eigentlich in deinem Zweig void cSatipDevice::SetPowerSaveMode(bool On) implementiert?
z.B. 8eefa81 bei mir.Normal werden nur benötigte tuner belegt, soweit ich weiß.
-
Hast du eigentlich in deinem Zweig void cSatipDevice::SetPowerSaveMode(bool On) implementiert?
"Implementiert" auf dem Testsystem ja, aber das schreibt bisher nur "On" oder "Off" ins syslog und bisher habe ich kein einziges Mal ein "On" gehabt
-
Participate now!
Don’t have an account yet? Register yourself now and be a part of our community!