Läuft jetzt auch auf meinem Prod-System
[Patch] Unbenutzte Frontends schließen
-
-
virtual bool ProvidesEIT(void) const;
///< Returns true if this device provides EIT data and thus wants to be tuned
///< to the channels it can receive regularly to update the data.
///< The default implementation returns false.
kls , das iptv Plugin hat ProvidesEIT() implementiert, da kommt immer false zurück.
In void cEITScanner::Process(void) werden dann IPTV Transponder nie aus der scanList entfernt da es kein Device gibt, das EPG Daten bereitstellt und die IPTV Transponder unterstützt.
Damit ist scanList->Count() (nach dem Füllen bei VDR restart) immer > 0, und wird danach nie mehr neu befüllt.
Man könnte beim Füllen von scanList überprüfen, ob es mindestens ein Device gibt, das EPG Daten für den Transponder liefern kann. Und den Transponder nur dann in die scanList aufnehmen.
Was meinst Du?
-
Man könnte beim Füllen von scanList überprüfen, ob es mindestens ein Device gibt, das EPG Daten für den Transponder liefern kann. Und den Transponder nur dann in die scanList aufnehmen.
Das wäre sicher sinnvoll.
Etwa so?
Diff
Display More--- eitscan.c 2024/05/19 14:55:57 5.4 +++ eitscan.c 2024/06/25 12:12:54 @@ -44,11 +44,23 @@ // --- cScanList ------------------------------------------------------------- class cScanList : public cList<cScanData> { +private: + bool HasDeviceForChannelEIT(const cChannel *Channel) const; public: void AddTransponders(const cList<cChannel> *Channels); void AddTransponder(const cChannel *Channel); }; +bool cScanList::HasDeviceForChannelEIT(const cChannel *Channel) const +{ + for (int i = 0; i < cDevice::NumDevices(); i++) { + cDevice *Device = cDevice::GetDevice(i); + if (Device && Device->ProvidesEIT() && Device->ProvidesChannel(Channel)) + return true; + } + return false; +} + void cScanList::AddTransponders(const cList<cChannel> *Channels) { for (const cChannel *ch = Channels->First(); ch; ch = Channels->Next(ch)) @@ -58,6 +70,8 @@ void cScanList::AddTransponder(const cChannel *Channel) { + if (!HasDeviceForChannelEIT(Channel)) + return; if (Channel->Source() && Channel->Transponder() && (Setup.EPGScanMaxChannel <= 0 || Channel->Number() < Setup.EPGScanMaxChannel)) { for (cScanData *sd = First(); sd; sd = Next(sd)) { if (sd->Source() == Channel->Source() && ISTRANSPONDER(sd->Transponder(), Channel->Transponder()))
-
-
Es funktioniert jetzt mit iptv-Kanal im Scanbereich, aber
Code
Display MoreJun 25 15:30:30 gentoo vdr[13921]: [13921] ERROR: can't determine frontend type for channel 0 (DVB-T) Jun 25 15:30:30 gentoo vdr[13921]: [13921] ERROR: can't determine frontend type for channel 0 (DVB-T) Jun 25 15:30:30 gentoo vdr[13921]: [13921] ERROR: can't determine frontend type for channel 0 (DVB-T) Jun 25 15:30:30 gentoo vdr[13921]: [13921] ERROR: can't determine frontend type for channel 0 (ARD) Jun 25 15:30:30 gentoo vdr[13921]: [13921] ERROR: can't determine frontend type for channel 0 (ARD) Jun 25 15:30:30 gentoo vdr[13921]: [13921] ERROR: can't determine frontend type for channel 0 (ARD) Jun 25 15:30:30 gentoo vdr[13921]: [13921] ERROR: can't determine frontend type for channel 0 (ZDF) Jun 25 15:30:30 gentoo vdr[13921]: [13921] ERROR: can't determine frontend type for channel 0 (ZDF) Jun 25 15:30:30 gentoo vdr[13921]: [13921] ERROR: can't determine frontend type for channel 0 (ZDF) Jun 25 15:30:30 gentoo vdr[13921]: [13921] ERROR: can't determine frontend type for channel 0 (Freenet) Jun 25 15:30:30 gentoo vdr[13921]: [13921] ERROR: can't determine frontend type for channel 0 (Freenet)
diese Meldungen hatte ich vorher nicht.
-
-
Leider immer noch
CodeJun 25 17:47:53 gentoo vdr[32378]: [32378] ERROR: can't determine frontend type for channel 0 (DVB-T) Jun 25 17:47:53 gentoo vdr[32378]: [32378] ERROR: can't determine frontend type for channel 0 (DVB-T) Jun 25 17:47:53 gentoo vdr[32378]: [32378] ERROR: can't determine frontend type for channel 0 (DVB-T) Jun 25 17:47:53 gentoo vdr[32378]: [32378] ERROR: can't determine frontend type for channel 0 (ARD) Jun 25 17:47:53 gentoo vdr[32378]: [32378] ERROR: can't determine frontend type for channel 0 (ARD) Jun 25 17:47:53 gentoo vdr[32378]: [32378] ERROR: can't determine frontend type for channel 0 (ARD) Jun 25 17:47:53 gentoo vdr[32378]: [32378] ERROR: can't determine frontend type for channel 0 (ZDF) Jun 25 17:47:53 gentoo vdr[32378]: [32378] ERROR: can't determine frontend type for channel 0 (ZDF) Jun 25 17:47:53 gentoo vdr[32378]: [32378] ERROR: can't determine frontend type for channel 0 (ZDF)
-
Die Fehlermeldungen scheinen die Kanalgruppen in der channels.conf zu sein, vermutlich für jedes Frontend einmal:
Code:ARD und ZDF Das Erste;ARD=Vodafone:338000:C0M256:C:6900:101=2:102=deu@3,103=mis@3;106=deu@106:104;105=deu:0:28106:1:1101:0 ZDF;ZDFvision:450000:C0M256:C:6900:110=2:120=deu@3,121=mis@3,122=mul@3;125=deu@106:130;131=deu:0:28006:1:1079:0 :@50 Kabel Digital Free RTL;Digital Free:466000:C0M256:C:6900:7752=2:7753=deu@3;7754=deu@106:7758;7757=deu:0:53601:61441:10000:0
CodeJun 25 19:25:46 WS-E-DEBIAN vdr: [1074] detected /dev/dvb/adapter0/frontend0 Jun 25 19:25:46 WS-E-DEBIAN vdr: [1074] detected /dev/dvb/adapter2/frontend0 Jun 25 19:25:46 WS-E-DEBIAN vdr: [1074] detected /dev/dvb/adapter1/frontend0 ... Jun 25 19:26:46 WS-E-DEBIAN vdr: [1074] ERROR: can't determine frontend type for channel 0 (ARD und ZDF) Jun 25 19:26:46 WS-E-DEBIAN vdr: [1074] ERROR: can't determine frontend type for channel 0 (ARD und ZDF) Jun 25 19:26:46 WS-E-DEBIAN vdr: [1074] ERROR: can't determine frontend type for channel 0 (ARD und ZDF) Jun 25 19:26:46 WS-E-DEBIAN vdr: [1074] ERROR: can't determine frontend type for channel 50 (Kabel Digital Free) Jun 25 19:26:46 WS-E-DEBIAN vdr: [1074] ERROR: can't determine frontend type for channel 50 (Kabel Digital Free) Jun 25 19:26:46 WS-E-DEBIAN vdr: [1074] ERROR: can't determine frontend type for channel 50 (Kabel Digital Free)
-
Ah, danke zimuland, das war wohl der richtige Hinweis.
Diff
Display More--- eitscan.c 2024/05/19 14:55:57 5.4 +++ eitscan.c 2024/06/25 19:03:43 @@ -44,11 +44,23 @@ // --- cScanList ------------------------------------------------------------- class cScanList : public cList<cScanData> { +private: + bool HasDeviceForChannelEIT(const cChannel *Channel) const; public: void AddTransponders(const cList<cChannel> *Channels); void AddTransponder(const cChannel *Channel); }; +bool cScanList::HasDeviceForChannelEIT(const cChannel *Channel) const +{ + for (int i = 0; i < cDevice::NumDevices(); i++) { + cDevice *Device = cDevice::GetDevice(i); + if (Device && Device->ProvidesEIT() && Device->ProvidesTransponder(Channel)) + return true; + } + return false; +} + void cScanList::AddTransponders(const cList<cChannel> *Channels) { for (const cChannel *ch = Channels->First(); ch; ch = Channels->Next(ch)) @@ -59,6 +71,8 @@ void cScanList::AddTransponder(const cChannel *Channel) { if (Channel->Source() && Channel->Transponder() && (Setup.EPGScanMaxChannel <= 0 || Channel->Number() < Setup.EPGScanMaxChannel)) { + if (!HasDeviceForChannelEIT(Channel)) + return; for (cScanData *sd = First(); sd; sd = Next(sd)) { if (sd->Source() == Channel->Source() && ISTRANSPONDER(sd->Transponder(), Channel->Transponder())) return;
-
Jetzt kommen ständig diese Meldungen:
Code
Display MoreJun 25 22:46:37 gentoo vdr[72176]: [72176] pause EPG scan Jun 25 22:46:37 gentoo vdr[72176]: [72176] SetIdleIfUnused, device 1, SetChannelDevice is called Jun 25 22:46:37 gentoo vdr[72176]: [72176] closing frontend 0/0 Jun 25 22:46:37 gentoo vdr[72176]: [72176] SetIdleIfUnused, device 2, SetChannelDevice is NOT called, Occupied() false, Receiving() true, pidHandles[ptAudio].pid false, pidHandles[ptVideo].pid false, pidHandles[ptDolby].pid false Jun 25 22:46:37 gentoo vdr[72176]: [72176] SetIdleIfUnused, device 3, SetChannelDevice is called Jun 25 22:46:37 gentoo vdr[72176]: [72176] closing frontend 2/0 Jun 25 22:46:37 gentoo vdr[72176]: [72176] SetIdleIfUnused, device 4, SetChannelDevice is called Jun 25 22:46:37 gentoo vdr[72176]: [72176] SetIdleIfUnused, device 5, SetChannelDevice is called Jun 25 22:46:37 gentoo vdr[72176]: [72176] SetIdleIfUnused, device 6, SetChannelDevice is called Jun 25 22:46:37 gentoo vdr[72176]: [72176] SetIdleIfUnused, device 7, SetChannelDevice is called Jun 25 22:46:37 gentoo vdr[72176]: [72176] SetIdleIfUnused, device 8, SetChannelDevice is called Jun 25 22:46:38 gentoo vdr[72176]: [72176] SetIdleIfUnused, device 1, SetChannelDevice is called Jun 25 22:46:38 gentoo vdr[72176]: [72176] SetIdleIfUnused, device 2, SetChannelDevice is NOT called, Occupied() false, Receiving() true, pidHandles[ptAudio].pid false, pidHandles[ptVideo].pid false, pidHandles[ptDolby].pid false Jun 25 22:46:38 gentoo vdr[72176]: [72176] SetIdleIfUnused, device 3, SetChannelDevice is called Jun 25 22:46:38 gentoo vdr[72176]: [72176] SetIdleIfUnused, device 4, SetChannelDevice is called
-
-
Danke an Euch Beide!
-
Jetzt kommen ständig diese Meldungen:
Code
Display MoreJun 25 22:46:37 gentoo vdr[72176]: [72176] pause EPG scan Jun 25 22:46:37 gentoo vdr[72176]: [72176] SetIdleIfUnused, device 1, SetChannelDevice is called Jun 25 22:46:37 gentoo vdr[72176]: [72176] closing frontend 0/0 Jun 25 22:46:37 gentoo vdr[72176]: [72176] SetIdleIfUnused, device 2, SetChannelDevice is NOT called, Occupied() false, Receiving() true, pidHandles[ptAudio].pid false, pidHandles[ptVideo].pid false, pidHandles[ptDolby].pid false Jun 25 22:46:37 gentoo vdr[72176]: [72176] SetIdleIfUnused, device 3, SetChannelDevice is called Jun 25 22:46:37 gentoo vdr[72176]: [72176] closing frontend 2/0 Jun 25 22:46:37 gentoo vdr[72176]: [72176] SetIdleIfUnused, device 4, SetChannelDevice is called Jun 25 22:46:37 gentoo vdr[72176]: [72176] SetIdleIfUnused, device 5, SetChannelDevice is called Jun 25 22:46:37 gentoo vdr[72176]: [72176] SetIdleIfUnused, device 6, SetChannelDevice is called Jun 25 22:46:37 gentoo vdr[72176]: [72176] SetIdleIfUnused, device 7, SetChannelDevice is called Jun 25 22:46:37 gentoo vdr[72176]: [72176] SetIdleIfUnused, device 8, SetChannelDevice is called Jun 25 22:46:38 gentoo vdr[72176]: [72176] SetIdleIfUnused, device 1, SetChannelDevice is called Jun 25 22:46:38 gentoo vdr[72176]: [72176] SetIdleIfUnused, device 2, SetChannelDevice is NOT called, Occupied() false, Receiving() true, pidHandles[ptAudio].pid false, pidHandles[ptVideo].pid false, pidHandles[ptDolby].pid false Jun 25 22:46:38 gentoo vdr[72176]: [72176] SetIdleIfUnused, device 3, SetChannelDevice is called Jun 25 22:46:38 gentoo vdr[72176]: [72176] SetIdleIfUnused, device 4, SetChannelDevice is called
Du hast die falsche Version des Patches, die mit den vielen debug Meldungen. Anbei die aktuelle Version.
-
Kann ich dann davon ausgehen, dass der endgültige Patch so aussehen kann?
-
Du hast die falsche Version des Patches, die mit den vielen debug Meldungen. Anbei die aktuelle Version.
Das war Absicht, um mehr Informationen zu haben.
-
-
Ihr testet ja fleißig. Hatte leider wenig bis gar keine Zeit weiter zu testen.
-
Kann ich dann davon ausgehen, dass der endgültige Patch so aussehen kann?
Eben habe ich den Patch auf meinem Produktionssystem eingespielt, leider habe ich dort einen Crash:
Code
Display MoreJun 27 13:34:47 vdr3-2 vdr[24754]: video: 21:35:57.608 +31 433 0/\ms 44+1+0 v-buf Jun 27 13:34:48 vdr3-2 vdr[24754]: [24760] channel 30 (MDR Sachsen (S)) event Do. 27.06.2024 12:30-13:58 (VPS: 27.06. 12:30) 'Der Ranger - Paradies Heimat: Vaterliebe' status 0->4 Jun 27 13:35:29 vdr3-2 vdr[24754]: [24754] pause EPG scan Jun 27 13:35:29 vdr3-2 vdr[24754]: [24754] closing frontend 7/0 Jun 27 13:35:29 vdr3-2 vdr[24754]: [24754] closing frontend 8/0 Jun 27 13:35:34 vdr3-2 kernel: usbcore: deregistering interface driver dvb_usb_dvbsky Jun 27 13:35:34 vdr3-2 acpid[1868]: input device has been disconnected, fd 20 Jun 27 13:35:34 vdr3-2 kernel: dvb_usb_v2: 'DVBSky T330:3-3' successfully deinitialized and disconnected Jun 27 13:35:34 vdr3-2 kernel: usbcore: deregistering interface driver dvb_usb_rtl28xxu Jun 27 13:35:34 vdr3-2 kernel: em28xx 3-9:1.0: Closing DVB extension Jun 27 13:35:34 vdr3-2 kernel: em28xx 3-9:1.0: Closing DVB extension Jun 27 13:35:34 vdr3-2 kernel: em28xx: Removed (Em28xx dvb Extension) extension Jun 27 13:35:35 vdr3-2 kernel: em28xx 3-9:1.0: Closing input extension Jun 27 13:35:35 vdr3-2 kernel: em28xx 3-9:1.0: Closing input extension Jun 27 13:35:35 vdr3-2 acpid[1868]: input device has been disconnected, fd 19 Jun 27 13:35:35 vdr3-2 kernel: em28xx: Removed (Em28xx Input Extension) extension Jun 27 13:35:35 vdr3-2 kernel: usbcore: deregistering interface driver em28xx
-
Ich habe den Patch in Zusammenhang mit dem Plugin SATIP und VNSISERVER benutzt, leider werden nach und nach alle Tuner des DigiBit R1 blockiert unf nicht wieder freigegeben. Habe daher obigen Patch wieder entfernt.
-
DigiBit R1: Was ist das?
Participate now!
Don’t have an account yet? Register yourself now and be a part of our community!