Alte Programme mit ungültiger Nid/Tid als "OBSOLETE" markieren

  • Wenn auf einem Transponder durch Programmverschiebung oder -abschaltung ein neuer Transportstream aufgeschalten wird, verbleiben die urspünglichen Kanaleinträge aber weiterhin in der channels.conf. Wenn es nur eine 1:1 Verschiebung auf einen anderen Transponder war, erkennt "MarkObsoleteChannels()" zwar irgendwann die ungültigen Programme, wenn aber Nid oder Tid nicht mehr aktiv sind klappt das so nicht mehr.

    Der Patch im Anhang überprüft nun, ob die in der NIT angegebene Netzwerk- und Transportstream-ID mit den Werten des Programms der auf diesen Transponder getuned hat noch übereinstimmen. Falls nicht, werden alle Programme mit ungültiger Nid oder Tid für diesen Transponder als "OBSOLETE" markiert.

    Damit der Eitscanner nichts übersieht, wird nun für jede Transponder/Nid/Tid Kombination ein eigener Channels Eintrag in die ScanList aufgenommen.

    Bei mir hat es doch einige "Karteileichen" zum Vorschein gebracht.

    Wer es testen will: zuvor die die channels.conf sichern, alle bereits von VDR als "OBSOLETE" markierten Programm entfernen und einen EPG Scan starten

    Helmut

  • Am Ende des Patches findet sich diese if-Abfrage:

    Code
    if (tsTransponder && ISTRANSPONDER(tsTransponder, Transponder()) && (Channel()->Nid() != ts.getOriginalNetworkId() || Channel()->Tid() != ts.getTransportStreamId()))

    Im Falle einer Satellitenempfangsanlage mit Multifeed fehlt meines Erachtens in der if-Abfrage ein Check auf Gleichheit der source.

    EDIT: Habe mich geirrt, weil die NIT ja schon source-spezifisch ist.

    Aktuelle Kanallisten findet Ihr in der Channelpedia

    Edited once, last by hepi (September 25, 2019 at 2:24 PM).

  • weil die NIT ja schon source-spezifisch ist

    ... oder zumindest sein sollte. Es wird aber in nit.c. (noch) nicht geprüft ob die NIT zum getunten Deliverysystem passt (falls nicht, wäre sie eigentlich ungültig).

    Ich habe einen halbfertigen Pach für nit.c. der u.a. auch das überprüft und werde ihn bei Gelegenheit posten.

    LG Helmut

    HelmutB passed unfortunately away on July 21, 2022 ... RIP 🖤

  • Inhaltlich muss ich den Patch noch verdauen/verstehen.

    Er ist vielleicht deshalb etwas unklar, weil nit.c nicht die richtige Stelle ist, um die Gültigkeit von Nid/Tid zu prüfen. Das geht einfacher und besser in sdt.c, da hier die Id's des tatsächlich empfangenen TransportStreams bekannt sind. Im Anhang der korrigierte und dadurch vereinfachte Patch v2.

    Zusätzlich auch ein Patch der überprüft, ob die Informationen der NIT für das aktuell getunte DeliverySystem gültig sind.

    Helmut

  • >> Zusätzlich auch ein Patch der überprüft, ob die Informationen der NIT für das aktuell getunte DeliverySystem gültig sind.

    Und dann? Viele Netzwerke übernehmen 1:1 streams aus anderen Netzwerken ohne Anpassung der NIT.

    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler


    to spoil
    verderben
    beschädigen
    plündern
    behindern
    berauben
    vereiteln
    rauben
    zerstören [fig.] [verderben, verunstalten]
    vergällen
    verhageln [fig.]

  • Und dann?

    Sie werden ignoriert, da sie für das aktuelle Delivery System ungültig sind. Außerdem würden damit u.U. Transponder hinzugefügt, die ohne entsprechendem Tuner nicht zu empfangen sind.

    Code
    ETSI EN 300 468 V1.16.1 (2019-08)
    4.1.1 Network Information Table (NIT) information
    The Network Information Table (NIT) provides ...
    ...
    The following rules apply to the NIT:
    a) transmission of the NIT is mandatory for the actual delivery system;
    b) the NIT describing the actual delivery system is valid if and only if it contains applicable delivery system descriptors for the actual delivery system. <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    At some transitions of broadcast delivery system boundaries, the NIT carried in a TS is allowed to be invalid, and to describe an earlier network in the broadcast chain. In this case, a different mechanism has to be selected by the IRD to obtain the relevant tuning information for the actual delivery system. More information is provided in clause 5.3;

    Viele Netzwerke übernehmen 1:1 streams aus anderen Netzwerken ohne Anpassung der NIT.

    Du meist damit wahrscheinlich den Punkt 5.3 Transitions at broadcast delivery media boundaries. Ich bin nich ganz sicher ob ich es richtig verstehe, aber um da Tuning Informationen zu bekommen müsste man - falls vorhanden - eine andere NIT-Pid auswerten oder einen Frequency-Scan durchführen.

    Helmut

    HelmutB passed unfortunately away on July 21, 2022 ... RIP 🖤

  • ..na dann wird dein Patch wirklich Freude bereiten. Die Zuordnung von DelSys zu NIT ist reines Wunschdenken.

    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler


    to spoil
    verderben
    beschädigen
    plündern
    behindern
    berauben
    vereiteln
    rauben
    zerstören [fig.] [verderben, verunstalten]
    vergällen
    verhageln [fig.]

  • Naja, ich bin da weniger pessimistisch weil der Zusammenhang hier beschrieben ist:

    Code
    ETSI EN 300 468 V1.15.1 (2016-03)
    5.2.1 Network Information Table (NIT)
    ...
    network_id: This is a 16-bit field which serves as a label to identify the delivery system, about which the NIT informs, from any other delivery system. Allocations of the value of this field are found in ETSI TS 101 162 [i.1].

    Helmut

    HelmutB passed unfortunately away on July 21, 2022 ... RIP 🖤

  • inzwischen verstehe ich den "vdr-2.4.1-mark-obsolete-NidTid-2.patch" bzw. meine Gedanken dazu auch nicht mehr :).
    Die Sache ist nämlich viel einfacher: da es für einen Transponder nur eine gültige Nid/Tid Kombintion gibt, können alle Programmeinträge die sich auf einen getunten Transponder beziehen als "OBSOLETE" markiert werden, wenn Nid oder Tid nicht übereinstmmen.

    Da ich den S2-multistream Patch von hier verwende, gibt es eine daran angepasste Version und eine für den ungepatchten vdr-2.4.1.

    Etwas das nicht ganz zum Thema passt, aber auch mit ungültigen channels.conf Einträgen zu tun hat:

    Für den automatischen EPG-Scan werden in eitscan.c die Transponderparameter von einem cChannel Objekt in die ScanList eingefügt, aber nur einmal für jeden neuen Transponder. Vorrang haben Transponderparameter aus der NIT, dann die aus der channels.conf. Ohne NIT Transponder kann es vorkommen, dass die Transponderparameter eines üngültigen/veralteten channels.conf Eintrags verwendet werden. Damit kann aber auf diesen Transponder nicht getuned werden und es gibt keine Updates des EPG oder eine Auswertung von PAT/PMT/SDT.

    Dazu auch ein kleiner Patch für den original vdr-2.4.1 (im S2-multistream.patch ist dieser bereits enthalten) der auch als Ergänzung zum "OBSOLETE" patch eingespielt werden sollte.

    Helmut

  • Hallo,

    ich habe da mal eine Frage, gibt es den vdr-2.4.1-mark-obsolete-NidTid.patch auch für den vdr-2.4.6 und welchem der hier angebotenen

    Patches entspricht er ?

    Gruß MartinKG

    Fedora 41 kernel-6.12.7-200.fc41.x86_64 Gnome Desktop vdr 2.6.9 mit vdr-softhddevice plugin.

    ViewSonic VX3276 HDMI-1 <------------> HDMI NVidia Geforce-gt-1030

    ViewSonic VX3276 HDMI-2 <------------> HDMI Technotrend S2-6400

  • Vielen lieben Dank, ich werde den Patch mal auf die 2.4.6 anwenden.

    Gruß MartinKG

    Fedora 41 kernel-6.12.7-200.fc41.x86_64 Gnome Desktop vdr 2.6.9 mit vdr-softhddevice plugin.

    ViewSonic VX3276 HDMI-1 <------------> HDMI NVidia Geforce-gt-1030

    ViewSonic VX3276 HDMI-2 <------------> HDMI Technotrend S2-6400

  • oh, habe gerade festgestellt, dass es damit nicht kompiliert.

    Code
    g++ -O3 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fPIC -Werror=overloaded-virtual -Wno-parentheses -std=gnu++14 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -fPIC -c -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -DREMOTE_KBD -DVDR_USER=\"vdr\" -DSDNOTIFY -DLIRC_DEVICE=\"/var/run/lirc/lircd\" -DVIDEODIR=\"/var/lib/vdr/video\" -DCONFDIR=\"/etc/vdr\" -DARGSDIR=\"/etc/vdr/conf.d\" -DCACHEDIR=\"/var/cache/vdr\" -DRESDIR=\"/usr/share/vdr\" -DPLUGINDIR=\"/usr/lib64/vdr\" -DLOCDIR=\"/usr/share/locale\" -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/libxml2    -o channels.o channels.c
    channels.c: In member function 'bool cChannels::MarkObsoleteChannels(int, int, int, int, int)':
    channels.c:1161:84: error: 'class cChannel' has no member named 'StreamId'
    1161 |          obsolete = ISTRANSPONDER(Channel->Transponder(), Transponder) && Channel->StreamId() == StreamId; // obsolete Nid/Tid
    |                                                                                    ^~~~~~~~
    make: *** [Makefile:144: channels.o] Error 1

    hier ist glaube auch noch ein Typo enthalten:

    Code
    - bool MarkObsoleteChannels(int Source, int Transponder, int Streamid, int Nid, int Tid);
    +  bool MarkObsoleteChannels(int Source, int Transponder, int StreamId, int Nid, int Tid);

    Gruß MartinKG

    Fedora 41 kernel-6.12.7-200.fc41.x86_64 Gnome Desktop vdr 2.6.9 mit vdr-softhddevice plugin.

    ViewSonic VX3276 HDMI-1 <------------> HDMI NVidia Geforce-gt-1030

    ViewSonic VX3276 HDMI-2 <------------> HDMI Technotrend S2-6400

    Edited once, last by MartinKG (December 31, 2020 at 8:50 PM).

  • Vielen Dank nochmals für deine Mühe, soweit funktioniert der Patch bei mir, musste nur noch folgenden Part entfernen, weis nicht vielleicht liegt es bei mir an

    einem anderen Patch, der das bereits setzt.

    Code
    @@ -11,6 +11,7 @@
     #include <ctype.h>
     #include "device.h"
     #include "libsi/si.h"
    +#include "dvbdevice.h"
    
     // IMPORTANT NOTE: in the 'sscanf()' calls there is a blank after the '%d'
     // format characters in order to allow any number of blanks after a numeric

    Gruß MartinKG

    Fedora 41 kernel-6.12.7-200.fc41.x86_64 Gnome Desktop vdr 2.6.9 mit vdr-softhddevice plugin.

    ViewSonic VX3276 HDMI-1 <------------> HDMI NVidia Geforce-gt-1030

    ViewSonic VX3276 HDMI-2 <------------> HDMI Technotrend S2-6400

  • guten morgen,

    hab hier einen sender, der ein seltsames verhalten aufzeigt:
    Euronews English HD OBSOLETE;OBSOLETE GLOBECAST:11566:HC34M5O20P0S1:S13.0E:29900:811=27:821=eng@4:0:0:801:318:153:0


    obwohl der sender vorhanden ist, ist dieser dauerhaft mit OBSOLETE markiert.

    gruss

    beinhart

  • Da gibt es auf 19.2E auch ein paar obsolete Programme die aber trotzdem vorhanden sind. Der Grund ist, das in der SDT für dieses Service - zumindest temporär - keine Informationen kommen. Und bis diese wieder kommen, bleibt das "OBSOLETE" im Namen.

    Ich habe aber festgestellt, dass in solchen Fällen die Service-ID in der PAT angeführt ist und auch PMTs gesendet werden.

    Man könnte daher in pat.c eine Überprüfung einbauen, die eine eher unrichtige OBSOLETE Markierung wieder entfernt.

    LG Helmut

    HelmutB passed unfortunately away on July 21, 2022 ... RIP 🖤

  • Wäre es nicht besser SDT und PAT/PMT zu checken, bevor man Services als 'obsolete' markiert?

    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler


    to spoil
    verderben
    beschädigen
    plündern
    behindern
    berauben
    vereiteln
    rauben
    zerstören [fig.] [verderben, verunstalten]
    vergällen
    verhageln [fig.]

  • Mit dem Patch im Anhang wird in pat.c Channel->Seen() gesetzt wenn es PMTs für das Programm gibt und falls erforderlich das "OBSOLETE" vom Programmnamen entfernt falls sdt.c schneller war oder es schon in der channels.conf so vorhanden war.

    Damit werden doch einige Programme auf 19.2E wieder zurückgesetzt.

    Display Spoiler

    vdr[22734]: [22770] changing name of channel 452 from 'M. LaLiga 3 OBSOLETE,;OBSOLETE CANAL+' to 'M. LaLiga 3,;CANAL+'

    vdr[22734]: [22770] changing name of channel 960 from 'M.LCAMPEON2 OBSOLETE,;OBSOLETE Movistar+' to 'M.LCAMPEON2,;Movistar+'

    vdr[22734]: [22757] changing name of channel 895 from 'M.LCAMPEON1 OBSOLETE,;OBSOLETE Movistar+' to 'M.LCAMPEON1,;Movistar+'

    vdr[22734]: [22757] changing name of channel 906 from 'M.LCAMPEON3 OBSOLETE,;OBSOLETE CANAL+' to 'M.LCAMPEON3,;CANAL+'

    vdr[22734]: [22757] changing name of channel 907 from 'M. LaLiga 2 OBSOLETE,;OBSOLETE Movistar+' to 'M. LaLiga 2,;Movistar+'

    vdr[22734]: [22757] changing name of channel 376 from 'M. LaLiga 1 OBSOLETE,;OBSOLETE Movistar+' to 'M. LaLiga 1,;Movistar+'

    vdr[22734]: [22770] changing name of channel 823 from 'FRANCE INTER OBSOLETE,;OBSOLETE CSAT' to 'FRANCE INTER,;CSAT'

    vdr[22734]: [22770] changing name of channel 1281 from 'MELODY OBSOLETE,;OBSOLETE CSAT' to 'MELODY,;CSAT'

    vdr[22734]: [22770] changing name of channel 820 from 'FRANCE MUSIQUE OBSOLETE,;OBSOLETE CSAT' to 'FRANCE MUSIQUE,;CSAT'

    vdr[22734]: [22770] changing name of channel 819 from 'MOUV' OBSOLETE,;OBSOLETE CSAT' to 'MOUV',;CSAT'

    vdr[22734]: [22770] changing name of channel 821 from 'FIP OBSOLETE,;OBSOLETE CSAT' to 'FIP,;CSAT'

    vdr[22734]: [22770] changing name of channel 824 from 'FRANCE CULTURE OBSOLETE,;OBSOLETE CSAT' to 'FRANCE CULTURE,;CSAT'

    vdr[22734]: [22770] changing name of channel 817 from 'BBCW SERVICE OBSOLETE,;OBSOLETE CSAT' to 'BBCW SERVICE,;CSAT'

    vdr[22734]: [22770] changing name of channel 844 from 'RADIO NOTRE DAME OBSOLETE,;OBSOLETE CSAT' to 'RADIO NOTRE DAME,;CSAT'

    vdr[22734]: [22770] changing name of channel 825 from 'FRANCE BLEU OBSOLETE,;OBSOLETE CSAT' to 'FRANCE BLEU,;CSAT'

    vdr[22734]: [22770] changing name of channel 845 from 'BEUR FM OBSOLETE,;OBSOLETE CSAT' to 'BEUR FM,;CSAT'

    vdr[22734]: [22770] changing name of channel 814 from 'SUD RADIO OBSOLETE,;OBSOLETE CSAT' to 'SUD RADIO,;CSAT'

    vdr[22734]: [22770] changing name of channel 842 from 'RTL2 OBSOLETE,;OBSOLETE CSAT' to 'RTL2,;CSAT'

    vdr[22734]: [22770] changing name of channel 841 from 'CHERIE FM OBSOLETE,;OBSOLETE CSAT' to 'CHERIE FM,;CSAT'

    vdr[22734]: [22770] changing name of channel 839 from 'RFM OBSOLETE,;OBSOLETE CSAT' to 'RFM,;CSAT'

    vdr[22734]: [22770] changing name of channel 835 from 'RADIO FG OBSOLETE,;OBSOLETE CSAT' to 'RADIO FG,;CSAT'

    vdr[22734]: [22770] changing name of channel 822 from 'FRANCE INFO OBSOLETE,;OBSOLETE CSAT' to 'FRANCE INFO,;CSAT'

    vdr[22734]: [22770] changing name of channel 816 from 'FUN RADIO OBSOLETE,;OBSOLETE CSAT' to 'FUN RADIO,;CSAT'

    vdr[22734]: [22770] changing name of channel 843 from 'SKYROCK OBSOLETE,;OBSOLETE CSAT' to 'SKYROCK,;CSAT'

    vdr[22734]: [22770] changing name of channel 840 from 'VIRGIN RADIO OBSOLETE,;OBSOLETE CSAT' to 'VIRGIN RADIO,;CSAT'

    vdr[22734]: [22770] changing name of channel 836 from 'CONTACT FM OBSOLETE,;OBSOLETE CSAT' to 'CONTACT FM,;CSAT'

    vdr[22734]: [22770] changing name of channel 832 from 'OUI FM OBSOLETE,;OBSOLETE CSAT' to 'OUI FM,;CSAT'

    vdr[22734]: [22770] changing name of channel 826 from 'RFI INTERNAT OBSOLETE,;OBSOLETE CSAT' to 'RFI INTERNAT,;CSAT'

    vdr[22734]: [22770] changing name of channel 838 from 'NRJ OBSOLETE,;OBSOLETE CSAT' to 'NRJ,;CSAT'

    vdr[22734]: [22770] changing name of channel 827 from 'RADIO CLASSIQUE OBSOLETE,;OBSOLETE CSAT' to 'RADIO CLASSIQUE,;CSAT'

    vdr[22734]: [22770] changing name of channel 834 from 'NOVA OBSOLETE,;OBSOLETE CSAT' to 'NOVA,;CSAT'

    vdr[22734]: [22770] changing name of channel 833 from 'JAZZ RADIO OBSOLETE,;OBSOLETE CSAT' to 'JAZZ RADIO,;CSAT'

    vdr[22734]: [22770] changing name of channel 829 from 'EUROPE 1 OBSOLETE,;OBSOLETE CSAT' to 'EUROPE 1,;CSAT'

    vdr[22734]: [22770] changing name of channel 818 from 'BBC ARABIC OBSOLETE,;OBSOLETE CSAT' to 'BBC ARABIC,;CSAT'

    vdr[22734]: [22770] changing name of channel 837 from 'NOSTALGIE OBSOLETE,;OBSOLETE CSAT' to 'NOSTALGIE,;CSAT'

    vdr[22734]: [22770] changing name of channel 831 from 'TSF JAZZ OBSOLETE,;OBSOLETE CSAT' to 'TSF JAZZ,;CSAT'

    vdr[22734]: [22770] changing name of channel 830 from 'RIRE & CHANSONS OBSOLETE,;OBSOLETE CSAT' to 'RIRE & CHANSONS,;CSAT'

    vdr[22734]: [22770] changing name of channel 828 from 'RTL OBSOLETE,;OBSOLETE CSAT' to 'RTL,;CSAT'

    vdr[22734]: [22770] changing name of channel 815 from 'MOSAIQUE RADIOS OBSOLETE,;OBSOLETE CSAT' to 'MOSAIQUE RADIOS,;CSAT'

    (die Stringmanipulation im Patch geht vielleicht auch besser)

    LG Helmut

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!