summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKlaus Schmidinger <vdr@tvdr.de>2019-03-12 13:05:33 +0100
committerKlaus Schmidinger <vdr@tvdr.de>2019-03-12 13:05:33 +0100
commitdf8f5f4800593aad0a3d21855f2d0e290f6e7502 (patch)
treed7ac636ecc9004258b29f0888f464cfe1cdb3682
parent71461c608281fca98914f7cf3c36e5e53cb24df4 (diff)
downloadvdr-df8f5f4800593aad0a3d21855f2d0e290f6e7502.tar.gz
vdr-df8f5f4800593aad0a3d21855f2d0e290f6e7502.tar.bz2
Fixed processing transponder data in the NIT
-rw-r--r--CONTRIBUTORS1
-rw-r--r--HISTORY1
-rw-r--r--nit.c20
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
diff --git a/HISTORY b/HISTORY
index c4a2841e..9c4f7afb 100644
--- a/HISTORY
+++ b/HISTORY
@@ -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).
diff --git a/nit.c b/nit.c
index 299a4066..e75acc82 100644
--- a/nit.c
+++ b/nit.c
@@ -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