From e1acb774c63fbd22487b6b36eb558348774951c2 Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Wed, 4 Feb 2015 09:18:30 +0100 Subject: Added "NORDIG" to the list of "DVB/Standard compliance" options and using it to restrict the LCN (Logical Channel Numbers) parsing to networks that actually use this non-standard feature --- nit.c | 60 +++++++++++++++++++++++++++++++----------------------------- 1 file changed, 31 insertions(+), 29 deletions(-) (limited to 'nit.c') diff --git a/nit.c b/nit.c index d9ec1f8f..13183755 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 3.4 2015/02/01 13:46:00 kls Exp $ + * $Id: nit.c 3.5 2015/02/04 09:13:54 kls Exp $ */ #include "nit.h" @@ -357,39 +357,41 @@ void cNitFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length } } break; - case SI::LogicalChannelDescriptorTag: { - SI::LogicalChannelDescriptor *lcd = (SI::LogicalChannelDescriptor *)d; - SI::LogicalChannelDescriptor::LogicalChannel LogicalChannel; - for (SI::Loop::Iterator it4; lcd->logicalChannelLoop.getNext(LogicalChannel, it4); ) { - int lcn = LogicalChannel.getLogicalChannelNumber(); - int sid = LogicalChannel.getServiceId(); - if (LogicalChannel.getVisibleServiceFlag()) { - for (cChannel *Channel = Channels.First(); Channel; Channel = Channels.Next(Channel)) { - if (!Channel->GroupSep() && Channel->Sid() == sid && Channel->Nid() == ts.getOriginalNetworkId() && Channel->Tid() == ts.getTransportStreamId()) { - Channel->SetLcn(lcn); - break; + case SI::LogicalChannelDescriptorTag: + if (Setup.StandardCompliance == STANDARD_NORDIG) { + SI::LogicalChannelDescriptor *lcd = (SI::LogicalChannelDescriptor *)d; + SI::LogicalChannelDescriptor::LogicalChannel LogicalChannel; + for (SI::Loop::Iterator it4; lcd->logicalChannelLoop.getNext(LogicalChannel, it4); ) { + int lcn = LogicalChannel.getLogicalChannelNumber(); + int sid = LogicalChannel.getServiceId(); + if (LogicalChannel.getVisibleServiceFlag()) { + for (cChannel *Channel = Channels.First(); Channel; Channel = Channels.Next(Channel)) { + if (!Channel->GroupSep() && Channel->Sid() == sid && Channel->Nid() == ts.getOriginalNetworkId() && Channel->Tid() == ts.getTransportStreamId()) { + Channel->SetLcn(lcn); + break; + } } - } + } } - } - } + } break; - case SI::HdSimulcastLogicalChannelDescriptorTag: { - SI::HdSimulcastLogicalChannelDescriptor *lcd = (SI::HdSimulcastLogicalChannelDescriptor *)d; - SI::HdSimulcastLogicalChannelDescriptor::HdSimulcastLogicalChannel HdSimulcastLogicalChannel; - for (SI::Loop::Iterator it4; lcd->hdSimulcastLogicalChannelLoop.getNext(HdSimulcastLogicalChannel, it4); ) { - int lcn = HdSimulcastLogicalChannel.getLogicalChannelNumber(); - int sid = HdSimulcastLogicalChannel.getServiceId(); - if (HdSimulcastLogicalChannel.getVisibleServiceFlag()) { - for (cChannel *Channel = Channels.First(); Channel; Channel = Channels.Next(Channel)) { - if (!Channel->GroupSep() && Channel->Sid() == sid && Channel->Nid() == ts.getOriginalNetworkId() && Channel->Tid() == ts.getTransportStreamId()) { - Channel->SetLcn(lcn); - break; + case SI::HdSimulcastLogicalChannelDescriptorTag: + if (Setup.StandardCompliance == STANDARD_NORDIG) { + SI::HdSimulcastLogicalChannelDescriptor *lcd = (SI::HdSimulcastLogicalChannelDescriptor *)d; + SI::HdSimulcastLogicalChannelDescriptor::HdSimulcastLogicalChannel HdSimulcastLogicalChannel; + for (SI::Loop::Iterator it4; lcd->hdSimulcastLogicalChannelLoop.getNext(HdSimulcastLogicalChannel, it4); ) { + int lcn = HdSimulcastLogicalChannel.getLogicalChannelNumber(); + int sid = HdSimulcastLogicalChannel.getServiceId(); + if (HdSimulcastLogicalChannel.getVisibleServiceFlag()) { + for (cChannel *Channel = Channels.First(); Channel; Channel = Channels.Next(Channel)) { + if (!Channel->GroupSep() && Channel->Sid() == sid && Channel->Nid() == ts.getOriginalNetworkId() && Channel->Tid() == ts.getTransportStreamId()) { + Channel->SetLcn(lcn); + break; + } } - } + } } - } - } + } break; default: ; } -- cgit v1.2.3