summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--HISTORY5
-rw-r--r--MANUAL1
-rw-r--r--config.h3
-rw-r--r--menu.c7
-rw-r--r--nit.c60
5 files changed, 42 insertions, 34 deletions
diff --git a/HISTORY b/HISTORY
index 7ce73ece..03373e67 100644
--- a/HISTORY
+++ b/HISTORY
@@ -8453,7 +8453,7 @@ Video Disk Recorder Revision History
- Added support for LCN (Logical Channel Numbers), which plugins may use to sort
channels (thanks to Rolf Ahrenberg).
-2015-02-03: Version 2.1.9
+2015-02-04: Version 2.1.9
- Fixed a memory leak in case of broken Extended Event Descriptors (thanks to Lars
Hanisch).
@@ -8484,3 +8484,6 @@ Video Disk Recorder Revision History
Schedule menus for different channels (reported by Matthias Senzel).
- Fixed setting the Blue button in the Schedule/Now/Next menus, so that it only shows
"Switch" if the selected event is on a different channel.
+- 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 (thanks to Rolf Ahrenberg).
diff --git a/MANUAL b/MANUAL
index ea4fd191..b2c0f1eb 100644
--- a/MANUAL
+++ b/MANUAL
@@ -743,6 +743,7 @@ Version 2.0
Defines the standard compliance mode:
0 = DVB
1 = ANSI/SCTE
+ 2 = NORDIG
Video format = 4:3 The video format (or aspect ratio) of the tv set in use
(4:3 or 16:9). Applies only to SD output devices.
diff --git a/config.h b/config.h
index 97a0088c..c6c45dcd 100644
--- a/config.h
+++ b/config.h
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: config.h 3.15 2015/02/02 12:21:13 kls Exp $
+ * $Id: config.h 3.16 2015/02/04 09:13:54 kls Exp $
*/
#ifndef __CONFIG_H
@@ -65,6 +65,7 @@
#define STANDARD_DVB 0
#define STANDARD_ANSISCTE 1
+#define STANDARD_NORDIG 2
typedef uint32_t in_addr_t; //XXX from /usr/include/netinet/in.h (apparently this is not defined on systems with glibc < 2.2)
diff --git a/menu.c b/menu.c
index d01ce0c2..9c94152c 100644
--- a/menu.c
+++ b/menu.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: menu.c 3.38 2015/02/03 11:51:29 kls Exp $
+ * $Id: menu.c 3.39 2015/02/04 09:13:54 kls Exp $
*/
#include "menu.h"
@@ -3202,7 +3202,7 @@ private:
void Setup(void);
const char *videoDisplayFormatTexts[3];
const char *updateChannelsTexts[6];
- const char *standardComplianceTexts[2];
+ const char *standardComplianceTexts[3];
public:
cMenuSetupDVB(void);
virtual eOSState ProcessKey(eKeys Key);
@@ -3228,6 +3228,7 @@ cMenuSetupDVB::cMenuSetupDVB(void)
updateChannelsTexts[5] = tr("add new transponders");
standardComplianceTexts[0] = "DVB";
standardComplianceTexts[1] = "ANSI/SCTE";
+ standardComplianceTexts[2] = "NORDIG";
SetSection(tr("DVB"));
SetHelp(NULL, tr("Button$Audio"), tr("Button$Subtitles"), NULL);
@@ -3241,7 +3242,7 @@ void cMenuSetupDVB::Setup(void)
Clear();
Add(new cMenuEditIntItem( tr("Setup.DVB$Primary DVB interface"), &data.PrimaryDVB, 1, cDevice::NumDevices()));
- Add(new cMenuEditStraItem(tr("Setup.DVB$Standard compliance"), &data.StandardCompliance, 2, standardComplianceTexts));
+ Add(new cMenuEditStraItem(tr("Setup.DVB$Standard compliance"), &data.StandardCompliance, 3, standardComplianceTexts));
Add(new cMenuEditBoolItem(tr("Setup.DVB$Video format"), &data.VideoFormat, "4:3", "16:9"));
if (data.VideoFormat == 0)
Add(new cMenuEditStraItem(tr("Setup.DVB$Video display format"), &data.VideoDisplayFormat, 3, videoDisplayFormatTexts));
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: ;
}