summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKlaus Schmidinger <vdr@tvdr.de>2006-10-28 12:38:13 +0200
committerKlaus Schmidinger <vdr@tvdr.de>2006-10-28 12:38:13 +0200
commit6bee1b1f3d7b17b2d06d7d918cbaea3597ff5086 (patch)
tree5c6e8a26323566a4e5b6d5510d51cc9fc057ba41
parentaf0e7a6193cd7e65d39e6ea7f7e878617d9ece00 (diff)
downloadvdr-6bee1b1f3d7b17b2d06d7d918cbaea3597ff5086.tar.gz
vdr-6bee1b1f3d7b17b2d06d7d918cbaea3597ff5086.tar.bz2
Fixed handling NITs with more than one delivery system descriptor tag for the same transponder
-rw-r--r--HISTORY2
-rw-r--r--nit.c50
2 files changed, 30 insertions, 22 deletions
diff --git a/HISTORY b/HISTORY
index 128ead57..3ad450fb 100644
--- a/HISTORY
+++ b/HISTORY
@@ -4978,3 +4978,5 @@ Video Disk Recorder Revision History
2006-10-28: Version 1.4.3-4
- Fixed deleting EPG events that have a running status of "pausing" or higher.
+- Fixed handling NITs with more than one delivery system descriptor tag for the
+ same transponder.
diff --git a/nit.c b/nit.c
index 007093db..4f535621 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 1.12 2006/05/27 15:35:16 kls Exp $
+ * $Id: nit.c 1.13 2006/10/28 12:31:04 kls Exp $
*/
#include "nit.h"
@@ -144,15 +144,17 @@ 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()) {
if (Setup.UpdateChannels >= 5) {
- if (!ISTRANSPONDER(cChannel::Transponder(Frequency, Polarization), Channel->Transponder())) {
- for (int n = 0; n < NumFrequencies; n++) {
- if (ISTRANSPONDER(cChannel::Transponder(Frequencies[n], Polarization), Channel->Transponder())) {
- Frequency = Frequencies[n];
- break;
+ if (ISTRANSPONDER(cChannel::Transponder(Frequency, Polarization), Transponder())) { // only modify channels if we're actually receiving this transponder
+ if (!ISTRANSPONDER(cChannel::Transponder(Frequency, Polarization), Channel->Transponder())) {
+ for (int n = 0; n < NumFrequencies; n++) {
+ if (ISTRANSPONDER(cChannel::Transponder(Frequencies[n], Polarization), Channel->Transponder())) {
+ Frequency = Frequencies[n];
+ break;
+ }
}
- }
+ }
+ Channel->SetSatTransponderData(Source, Frequency, Polarization, SymbolRate, CodeRate);
}
- Channel->SetSatTransponderData(Source, Frequency, Polarization, SymbolRate, CodeRate);
}
found = true;
}
@@ -193,15 +195,17 @@ 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()) {
if (Setup.UpdateChannels >= 5) {
- if (!ISTRANSPONDER(Frequency / 1000, Channel->Transponder())) {
- for (int n = 0; n < NumFrequencies; n++) {
- if (ISTRANSPONDER(Frequencies[n] / 1000, Channel->Transponder())) {
- Frequency = Frequencies[n];
- break;
+ if (ISTRANSPONDER(Frequency / 1000, Transponder())) { // only modify channels if we're actually receiving this transponder
+ if (!ISTRANSPONDER(Frequency / 1000, Channel->Transponder())) {
+ for (int n = 0; n < NumFrequencies; n++) {
+ if (ISTRANSPONDER(Frequencies[n] / 1000, Channel->Transponder())) {
+ Frequency = Frequencies[n];
+ break;
+ }
}
- }
+ }
+ Channel->SetCableTransponderData(Source, Frequency, Modulation, SymbolRate, CodeRate);
}
- Channel->SetCableTransponderData(Source, Frequency, Modulation, SymbolRate, CodeRate);
}
found = true;
}
@@ -249,15 +253,17 @@ 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()) {
if (Setup.UpdateChannels >= 5) {
- if (!ISTRANSPONDER(Frequency / 1000000, Channel->Transponder())) {
- for (int n = 0; n < NumFrequencies; n++) {
- if (ISTRANSPONDER(Frequencies[n] / 1000000, Channel->Transponder())) {
- Frequency = Frequencies[n];
- break;
+ if (ISTRANSPONDER(Frequency / 1000000, Transponder())) { // only modify channels if we're actually receiving this transponder
+ if (!ISTRANSPONDER(Frequency / 1000000, Channel->Transponder())) {
+ for (int n = 0; n < NumFrequencies; n++) {
+ if (ISTRANSPONDER(Frequencies[n] / 1000000, Channel->Transponder())) {
+ Frequency = Frequencies[n];
+ break;
+ }
}
- }
+ }
+ Channel->SetTerrTransponderData(Source, Frequency, Bandwidth, Constellation, Hierarchy, CodeRateHP, CodeRateLP, GuardInterval, TransmissionMode);
}
- Channel->SetTerrTransponderData(Source, Frequency, Bandwidth, Constellation, Hierarchy, CodeRateHP, CodeRateLP, GuardInterval, TransmissionMode);
}
found = true;
}