mirror of
				https://github.com/vdr-projects/vdr.git
				synced 2025-03-01 10:50:46 +00:00 
			
		
		
		
	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
This commit is contained in:
		
							
								
								
									
										5
									
								
								HISTORY
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								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).
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										1
									
								
								MANUAL
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								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.
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										3
									
								
								config.h
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								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)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										7
									
								
								menu.c
									
									
									
									
									
								
							
							
						
						
									
										7
									
								
								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));
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										60
									
								
								nit.c
									
									
									
									
									
								
							
							
						
						
									
										60
									
								
								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: ;
 | 
			
		||||
            }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user