diff options
author | Klaus Schmidinger <vdr@tvdr.de> | 2019-03-12 13:05:33 +0100 |
---|---|---|
committer | Klaus Schmidinger <vdr@tvdr.de> | 2019-03-12 13:05:33 +0100 |
commit | df8f5f4800593aad0a3d21855f2d0e290f6e7502 (patch) | |
tree | d7ac636ecc9004258b29f0888f464cfe1cdb3682 | |
parent | 71461c608281fca98914f7cf3c36e5e53cb24df4 (diff) | |
download | vdr-df8f5f4800593aad0a3d21855f2d0e290f6e7502.tar.gz vdr-df8f5f4800593aad0a3d21855f2d0e290f6e7502.tar.bz2 |
Fixed processing transponder data in the NIT
-rw-r--r-- | CONTRIBUTORS | 1 | ||||
-rw-r--r-- | HISTORY | 1 | ||||
-rw-r--r-- | nit.c | 20 |
3 files changed, 15 insertions, 7 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 5cff1034..6100d7c0 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -3572,6 +3572,7 @@ Helmut Binder <cco@aon.at> a previously used CAM that is MCD capable for fixing accessing the actual frontend on multi frontend devices for fixing processing the last entry in the scan list of the EIT scanner + for fixing processing transponder data in the NIT Ulrich Eckhardt <uli@uli-eckhardt.de> for reporting a problem with shutdown after user inactivity in case a plugin is @@ -9378,3 +9378,4 @@ Video Disk Recorder Revision History - Fixed handling PATs that contain no PMTs. - Fixed processing the last entry in the scan list of the EIT scanner (thanks to Helmut Binder). +- Fixed processing transponder data in the NIT (thanks to Helmut Binder). @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: nit.c 4.5 2018/03/18 10:52:21 kls Exp $ + * $Id: nit.c 4.6 2019/03/12 13:01:33 kls Exp $ */ #include "nit.h" @@ -125,7 +125,6 @@ void cNitFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length dtp.SetStreamId(dtpc.StreamId()); // int transponder = Channel->Transponder(); - found = true; if (!ISTRANSPONDER(cChannel::Transponder(Frequency, dtp.Polarization()), transponder)) { for (int n = 0; n < NumFrequencies; n++) { if (ISTRANSPONDER(cChannel::Transponder(Frequencies[n], dtp.Polarization()), transponder)) { @@ -134,7 +133,10 @@ void cNitFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length } } } - if (ISTRANSPONDER(cChannel::Transponder(Frequency, dtp.Polarization()), Transponder())) // only modify channels if we're actually receiving this transponder + if (!ISTRANSPONDER(cChannel::Transponder(Frequency, dtp.Polarization()), transponder)) + continue; // a channel with obsolete/wrong/other(?) transponder + found = true; + if (ISTRANSPONDER(transponder, Transponder())) // only modify channels if we're actually receiving this transponder ChannelsModified |= Channel->SetTransponderData(Source, Frequency, SymbolRate, dtp.ToString('S')); else if (Channel->Srate() != SymbolRate || strcmp(Channel->Parameters(), dtp.ToString('S'))) forceTransponderUpdate = true; // get us receiving this transponder @@ -188,7 +190,6 @@ void cNitFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length for (cChannel *Channel = Channels->First(); Channel; Channel = Channels->Next(Channel)) { if (!Channel->GroupSep() && Channel->Source() == Source && Channel->Nid() == ts.getOriginalNetworkId() && Channel->Tid() == ts.getTransportStreamId()) { int transponder = Channel->Transponder(); - found = true; if (!ISTRANSPONDER(Frequency / 1000, transponder)) { for (int n = 0; n < NumFrequencies; n++) { if (ISTRANSPONDER(Frequencies[n] / 1000, transponder)) { @@ -197,7 +198,10 @@ void cNitFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length } } } - if (ISTRANSPONDER(Frequency / 1000, Transponder())) // only modify channels if we're actually receiving this transponder + if (!ISTRANSPONDER(Frequency / 1000000, transponder)) + continue; // a channel with obsolete/wrong/other(?) transponder + found = true; + if (ISTRANSPONDER(transponder, Transponder())) // only modify channels if we're actually receiving this transponder ChannelsModified |= Channel->SetTransponderData(Source, Frequency, SymbolRate, dtp.ToString('C')); else if (Channel->Srate() != SymbolRate || strcmp(Channel->Parameters(), dtp.ToString('C'))) forceTransponderUpdate = true; // get us receiving this transponder @@ -254,7 +258,6 @@ void cNitFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length dtp.SetTransmission(dtpc.Transmission()); // int transponder = Channel->Transponder(); - found = true; if (!ISTRANSPONDER(Frequency / 1000000, transponder)) { for (int n = 0; n < NumFrequencies; n++) { if (ISTRANSPONDER(Frequencies[n] / 1000000, transponder)) { @@ -263,7 +266,10 @@ void cNitFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length } } } - if (ISTRANSPONDER(Frequency / 1000000, Transponder())) // only modify channels if we're actually receiving this transponder + if (!ISTRANSPONDER(Frequency / 1000000, transponder)) + continue; // a channel with obsolete/wrong/other(?) transponder + found = true; + if (ISTRANSPONDER(transponder, Transponder())) // only modify channels if we're actually receiving this transponder ChannelsModified |= Channel->SetTransponderData(Source, Frequency, 0, dtp.ToString('T')); else if (strcmp(Channel->Parameters(), dtp.ToString('T'))) forceTransponderUpdate = true; // get us receiving this transponder |