Beiträge von HelmutB

    Die Informationen in der NIT haben eigentlich nichts mit dem aktuell getunten Kanal zu tun, deshalb glaube ich auch, dass ein einfaches Hinzufügen dieser Frequenz nicht ganz richtig wäre. Ich werde mir aber (wieder einmal) die T2-Dokumente zu Gemüte führen. Irgendwie passen deine Ergebnisse nicht mit meinen Verständnis von T2 zusammen.

    LG Helmut

    Ja, da ist das Problem mit der fehlenden getunten Frequenz:

    Code
    Apr 26 22:24:44 lana vdr: [32192] NIT: Nid 8468 Tid 16481
    Apr 26 22:24:44 lana vdr: [32192]   T2 Cell 13100: center frequency[1] 642000000
    Apr 26 22:24:44 lana vdr: [32192]     T2 0 7766 PLP 0 0 8000000 1 6

    Das wäre ja die Nid/Tid die mit "P-1" auf 666 Mhz gefunden wird. Auf 642 Mhz empfängst du nichts. Ob man nicht immer automatisch die getunte Frequenz dazunehmen sollte? Ich werde nachdenken.

    LG Helmut

    Mein Scanner macht (fast) nichts anderes als der VDR beim EPG-Scan, ich fülle die ScanList nur mit vordefinierten Werten für Transponder und Tuning Parameter. Beim VDR werden neue Programme/Services in sdt.c angelegt, aber nur für gewisse StreamTypes und auch nur, wenn es einen gültigen Namen gibt. Es wäre daher zuindest der Streamtype der fehlenden Services interessant.


    Auf 666 Mhz werden vermutlich die Programme mit der PLP0 (Tid 16481) gefunden, aber in der NIT wird nur ein T2-Descriptor für die PLP1 (Tid 16497) gesendet. Daher bleibt bei bei der ersten PLP der Wert von "P-1" für "NO_STREAM_ID_FILTER" stehen weil die genauen Parameter und die PLP-Id nicht bekannt sind.


    Wenn du die beiden Patches im Anhang dazu nimmst, wird angezeigt welche DeliverySystemDescriptoren empfangen werden und welche StreamTypes unberücksichtigt bleiben.

    LG Helmut

    Eine kleine Ergänzung: Wenn der fix3 das Problem löst, sollte auch diese kleine Änderung zum Originalpatch von Klaus genügen:

    LG Helmut

    Wenn das alle NIT Informationen sind, wird es schon so sein das ZDF-HD keine Verbindung zu MB angibt, umgekehrt aber schon.

    Da muß man dann doch die PLP-Id wissen und mit "-p" gesondert scannen.

    Das mit den Frequenzen ist mir auch schon aufgefallen, und es ist mir auch nicht klar, warum die getunte Frequenz manchmal in den Frequenzlisten fehlt.


    Wenn es dich interessiert, kannst du ja meinen Patch für einen internen DVB-T/T2 Scanner ausprobieren und das Ergebnis vergleichen.

    Dazu braucht es:

    1.) vdr-2-4-1-s2-multistream4-patch

    2.) vdr-2-4-1-s2-multistream4-t2-patch

    3.) vdr-2-4-1-s2-multistream4-t2-scantcsv3-patch

    und den

    4.) vdr-2-4-1-sdt-hevc-support-patch


    Am besten den VDR mit einer leeren Kanalliste starten und unter Einstellungen->EPG den DVB-T Scan mit der gelben Taste starten.

    Es dauert ca. 6-8 Minuten, man sieht den Scanfortschritt aber nur im Syslog. Ein Tastendruck bricht den Scan ab (wie beim EPG).

    LG Helmut

    Doch etwas hartnäckiger. Hier ein neuer Versuch. Jetzt ist das "else if (...)" aber Absicht.

    LG Helmut

    Das war möglicherweise ein Gedankenfehler und dieser Patch hilft:

    Nach einem SetStatus(true) ist transponderState nur dann "tsUnknown" wenn sich Source() oder Transponder() gegenüber dem letzten SetStatus(true) geändert haben, anderenfalls ist er unverändert - wie auch bei einem SetStatus(false).

    Dieser Patch ist wäre zusätzlich und nach dem "vdr-2.4.1-test-check-scr-06.diff" einzuspielen.

    Helmut


    PS: wenn man im fix1 bei SetStatus() das "else if" in "if" ändert, wäre es noch klarer.

    Ich habe nicht alles int t2scan angesehen, aber möglicherweise gibt es bei MPLP ein Problem in scan.c/parse_nit()

    Es wird in eine mehr oder weniger leeren struct transponder "tn" der T2-Descriptor eingelesen, danach - weil klarereweise ONID und TID mit dem von current_tp ident sind - die fe_params von current_tp als default genommen - und damit auch die PLP-ID.

    Mit der Option "-vvvv" würdest du da vielleicht etwas erkennen.

    LG Helmut

    interessant dass bei dir beim ORF die richtige PLP ID aus dem Delivery Descriptor gelesen wird.

    Das ist normalerweise auch so. Nur schafft es der ORF in Wien auf einem von 7 Transponder eine falsche PLP-Id 0 zu übertragen. Aber nicht nur in Wien, ich habe es auch z.B. in Oberösterreich bemrkt. Da braucht es dann eine Sonderbehandlung.


    Zu MPLP: ich würde für jede PLP die im Transportstream enthalten ist, eine T2DeliverySystemDescriptor erwarten. Es kann aber sein, dass die ""extendet_info" nur in einem T2Descriptor vorhanden ist da diese Information für alle PLPs gilt.

    Schau einmal ob es wiklich nur einen T2Descriptor gibt, falls es doch einen weiten gibt fehlt da vielleicht diese extendet_info und dein default Wert für z.B. "bandwidth" ist nicht brauchbar.


    ich habe mir hier eine Ergänzung für DVB-T2 im VDR ausgedacht [Patch] DVB-S2 Multi Input Stream (ungetestet) DVB-T2 MPLP+Scan. Schau dir diesen Patch einmal an.

    LG Helmut

    Die Option "-p -1" funktioniert nicht weil #define NO_STREAM_ID_FILTER (~0U) als int dann -1 ergibt.

    Dadurch wird bei test.plp_id = (flags.override_plp_id<0) ? dvbt2_plp_id : flags.override_plp_id; der Default Wert genommen (bei dir 0, bei mir 1).


    Sind bei dir PLP0 und PLP1 wirklich auf einem Transponder? Ich hätte gedacht, dass bei Multi-PLP dann in der NIT für jede PLP ein T2DeliverSystemDescriptor übertragen wird. kannst du dir NIT-Daten von diesem Transponder ausgeben lassen.


    LG Helmut

    ---

    Edit: nur als schneller Test gedacht: mit

    test.plp_id = (flags.override_plp_id<-2) ? dvbt2_plp_id : flags.override_plp_id; in scan.c und

    uint32_t plp_id; /* DVB-C2, DVB-T2 35 */ in si_types.h geht es:

    Code
    498000 (CH24): (time: 01:39.216)  signal ok: QAM_AUTO f = 498000 kHz I999B8C999D999T999G999Y999P-1 (0:0:0)
            QAM_AUTO f = 498000 kHz I999B8C999D0T32G16Y0P1 (8232:13101:101) : scanning for services
        service = ORF1 HD (ORF)
        service = ORF2 W HD (ORF)
        service = ORF2 N HD (ORF)
        service = ORF2 B HD (ORF)
        service = ORF III HD (ORF)
        service = ORF Sport+ HD (ORF)
        service = ORF1 (ORF)
        service = ORF2 W (ORF)

    mighty-p : Verwende "NO_STREAM_ID_FILTER" als Wert für StreamID/PLP. Damit wird die PLP automatisch vom Demodulator ausgewählt und es kommt zu einem Lock. Über den T2DeliversystemDescriptor der NIT erfährt man dann die PLP-ID für diesem Transponder.


    Hier ein paar Zeilen wie ich es in meinem S2-multistream4-T2 patch in SetFrontend mache.

    Helmut

    Du hattest da zuletzt einige Abfragen bzgl. ScrLastTp, ScrLastNid und ScrLastTid eingebaut. Meinst du, dass die in dieser oder ähnlicher Form (dann in cSdtFilter::Process() unter 'if (transponderVerificationState == tvsUnknown) {') noch nötig sind?

    Die habe ich deshalb eingebaut, weil immer wieder Programme (Transportstreams) abgeschalten und/oder auf andere Transponder verschoben werden. Dadurch kann die channels.conf irgendwann Programmeinträge mit für den Transponder zwar passenden Tuningparametern aber inzwischen ungültiger NID/TID enthalten, die dann immer wieder ein Retune ergeben würden da NID/TID nie zur SDT passen können.


    Ein Retune sollte es aber nur geben wenn eine Änderung von NID/TID erwartet wird, diese aber nach SetFrontend() immer noch die alten Werte haben. Für den Vergleich braucht es die LastTNid/LastTid (LastTp ist wahrscheinlich nicht notwendig, wenn man es ganz genau nimmt eher ein LastSource). Deshalb auch die Prüfung in DvbTuner::Action() und nicht in sdt.c.


    Ich habe den Patch inzwischen auch um einen Sdt-Trigger() erweitert, wo erst nach positiver Transponderprüfung der sdt Filter getriggert wird um dann in den sdt.serviceloop einzusteigen. Ich kann dir diese Variante mailen, ich muss ihn aber vorher von meinem etwas gepatchten VDR noch für den original VDR-2.4.1 umschreiben.

    LG Helmut

    Mir ist aufgefallen, dass auf einigen Transpondern die lange Beschreibung nicht richtig dagestellt wird. Der Grund ist, dass Texte die länger als 256 Byte sind auf mehrere ExtendedEventDescriptors aufgeteilt werden müssen. Manche Provider geben die CharacerTable aber nur im Text des ersten Descriptors bekannt, die weiteren Textteile werden dann fälschlicherweise mit der Default- oder Override Table decodiert.

    Ich habe dazu einen Patch, der beim Langtext sicherstellt, dass immer das Charset des 1. Descriptors als Default verwendet wird. Sozusagen ein Over-Override.

    Hier die lange Beschreibung des Senders "Bibel TV" auf 19.2E 12552Mhz ohne und mit Patch:

    Code
    vdr[2702]: [2906] ---- decode[        UTF-8] Bibel TV das Gespräch
    vdr[2702]: [2906] ---- decode[        UTF-8] Die Familien der Verschwörer
    
    --- Langtext ohne Patch
    vdr[2702]: [2906] ---- decode[        UTF-8] 20. Juli 1944. In Paris läuft der Umsturz nach Plan, doch mit dem Scheitern in ...
    vdr[2702]: [2906] ---- decode[  ISO-8859-15] rau Lotte und die beiden Àltesten Kinder ab - Sippenhaft in GefÀngnissen und ...
    
    --- Langtext mit Patch
    vdr[9380]: [9401] ---- decode[        UTF-8] 20. Juli 1944. In Paris läuft der Umsturz nach Plan, doch mit dem Scheitern in ...
    vdr[9380]: [9401] ---- decode[*       UTF-8] rau Lotte und die beiden ältesten Kinder ab - Sippenhaft in Gefängnissen und ...

    oder beim Sender "Cherie 25"

    Zusätzlich noch ein Patch der die "override character table" auf Gültigkeit prüft und anzeigt.

    Code
    Apr 20 20:29:47 gentoo64vdr vdr[13625]: [13625] codeset is 'ISO-8859-15' - known
    Apr 20 20:29:47 gentoo64vdr vdr[13625]: [13625] override character table is 'ISO-8859-15' - known

    Die beide Patches sind leider nicht ganz zu trennen und müssen daher gemeinsam verwendet werden.

    Helmut