mirror of
				https://github.com/vdr-projects/vdr.git
				synced 2025-03-01 10:50:46 +00:00 
			
		
		
		
	Optimized cNitFilter::Process()
This commit is contained in:
		@@ -2141,6 +2141,7 @@ Tobias Bratfisch <tobias@reel-multimedia.com>
 | 
			
		||||
 for suggesting to make skipspace() an inline function
 | 
			
		||||
 for making some optimizations in cDvbDevice::SetChannelDevice()
 | 
			
		||||
 for optimizing cMenuEditChrItem::Set()
 | 
			
		||||
 for optimizing cNitFilter::Process()
 | 
			
		||||
 | 
			
		||||
Bruno Roussel <bruno.roussel@free.fr>
 | 
			
		||||
 for translating OSD texts to the French language
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										1
									
								
								HISTORY
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								HISTORY
									
									
									
									
									
								
							@@ -5367,3 +5367,4 @@ Video Disk Recorder Revision History
 | 
			
		||||
  Matthias Schwarzott).
 | 
			
		||||
- Some optimizations in cDvbDevice::SetChannelDevice() (thanks to Tobias Bratfisch).
 | 
			
		||||
- Optimized cMenuEditChrItem::Set() (thanks to Tobias Bratfisch).
 | 
			
		||||
- Optimized cNitFilter::Process() (thanks to Tobias Bratfisch).
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										99
									
								
								nit.c
									
									
									
									
									
								
							
							
						
						
									
										99
									
								
								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.14 2007/04/29 11:35:33 kls Exp $
 | 
			
		||||
 * $Id: nit.c 1.15 2007/08/17 14:02:45 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "nit.h"
 | 
			
		||||
@@ -140,13 +140,14 @@ void cNitFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
 | 
			
		||||
                        }
 | 
			
		||||
                    break;
 | 
			
		||||
                    }
 | 
			
		||||
                 bool found = false;
 | 
			
		||||
                 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())) {
 | 
			
		||||
                 if (Setup.UpdateChannels >= 5) {
 | 
			
		||||
                    bool found = false;
 | 
			
		||||
                    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();
 | 
			
		||||
                           if (!ISTRANSPONDER(cChannel::Transponder(Frequency, Polarization), transponder)) {
 | 
			
		||||
                              for (int n = 0; n < NumFrequencies; n++) {
 | 
			
		||||
                                  if (ISTRANSPONDER(cChannel::Transponder(Frequencies[n], Polarization), Channel->Transponder())) {
 | 
			
		||||
                                  if (ISTRANSPONDER(cChannel::Transponder(Frequencies[n], Polarization), transponder)) {
 | 
			
		||||
                                     Frequency = Frequencies[n];
 | 
			
		||||
                                     break;
 | 
			
		||||
                                     }
 | 
			
		||||
@@ -157,16 +158,16 @@ void cNitFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
 | 
			
		||||
                           }
 | 
			
		||||
                        found = true;
 | 
			
		||||
                        }
 | 
			
		||||
                     }
 | 
			
		||||
                 if (!found && Setup.UpdateChannels >= 5) {
 | 
			
		||||
                    for (int n = 0; n < NumFrequencies; n++) {
 | 
			
		||||
                        cChannel *Channel = new cChannel;
 | 
			
		||||
                        Channel->SetId(ts.getOriginalNetworkId(), ts.getTransportStreamId(), 0, 0);
 | 
			
		||||
                        if (Channel->SetSatTransponderData(Source, Frequencies[n], Polarization, SymbolRate, CodeRate))
 | 
			
		||||
                           EITScanner.AddTransponder(Channel);
 | 
			
		||||
                        else
 | 
			
		||||
                           delete Channel;
 | 
			
		||||
                        }
 | 
			
		||||
                    if (!found) {
 | 
			
		||||
                       for (int n = 0; n < NumFrequencies; n++) {
 | 
			
		||||
                           cChannel *Channel = new cChannel;
 | 
			
		||||
                           Channel->SetId(ts.getOriginalNetworkId(), ts.getTransportStreamId(), 0, 0);
 | 
			
		||||
                           if (Channel->SetSatTransponderData(Source, Frequencies[n], Polarization, SymbolRate, CodeRate))
 | 
			
		||||
                              EITScanner.AddTransponder(Channel);
 | 
			
		||||
                           else
 | 
			
		||||
                              delete Channel;
 | 
			
		||||
                           }
 | 
			
		||||
                       }
 | 
			
		||||
                    }
 | 
			
		||||
                 }
 | 
			
		||||
                 break;
 | 
			
		||||
@@ -190,13 +191,14 @@ void cNitFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
 | 
			
		||||
                        }
 | 
			
		||||
                    break;
 | 
			
		||||
                    }
 | 
			
		||||
                 bool found = false;
 | 
			
		||||
                 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())) {
 | 
			
		||||
                 if (Setup.UpdateChannels >= 5) {
 | 
			
		||||
                    bool found = false;
 | 
			
		||||
                    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();
 | 
			
		||||
                           if (!ISTRANSPONDER(Frequency / 1000, transponder)) {
 | 
			
		||||
                              for (int n = 0; n < NumFrequencies; n++) {
 | 
			
		||||
                                  if (ISTRANSPONDER(Frequencies[n] / 1000, Channel->Transponder())) {
 | 
			
		||||
                                  if (ISTRANSPONDER(Frequencies[n] / 1000, transponder)) {
 | 
			
		||||
                                     Frequency = Frequencies[n];
 | 
			
		||||
                                     break;
 | 
			
		||||
                                     }
 | 
			
		||||
@@ -207,16 +209,16 @@ void cNitFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
 | 
			
		||||
                           }
 | 
			
		||||
                        found = true;
 | 
			
		||||
                        }
 | 
			
		||||
                     }
 | 
			
		||||
                 if (!found && Setup.UpdateChannels >= 5) {
 | 
			
		||||
                    for (int n = 0; n < NumFrequencies; n++) {
 | 
			
		||||
                        cChannel *Channel = new cChannel;
 | 
			
		||||
                        Channel->SetId(ts.getOriginalNetworkId(), ts.getTransportStreamId(), 0, 0);
 | 
			
		||||
                        if (Channel->SetCableTransponderData(Source, Frequencies[n], Modulation, SymbolRate, CodeRate))
 | 
			
		||||
                           EITScanner.AddTransponder(Channel);
 | 
			
		||||
                        else
 | 
			
		||||
                           delete Channel;
 | 
			
		||||
                        }
 | 
			
		||||
                    if (!found) {
 | 
			
		||||
                        for (int n = 0; n < NumFrequencies; n++) {
 | 
			
		||||
                           cChannel *Channel = new cChannel;
 | 
			
		||||
                           Channel->SetId(ts.getOriginalNetworkId(), ts.getTransportStreamId(), 0, 0);
 | 
			
		||||
                           if (Channel->SetCableTransponderData(Source, Frequencies[n], Modulation, SymbolRate, CodeRate))
 | 
			
		||||
                              EITScanner.AddTransponder(Channel);
 | 
			
		||||
                           else
 | 
			
		||||
                              delete Channel;
 | 
			
		||||
                           }
 | 
			
		||||
                       }
 | 
			
		||||
                    }
 | 
			
		||||
                 }
 | 
			
		||||
                 break;
 | 
			
		||||
@@ -247,13 +249,14 @@ void cNitFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
 | 
			
		||||
                        }
 | 
			
		||||
                    break;
 | 
			
		||||
                    }
 | 
			
		||||
                 bool found = false;
 | 
			
		||||
                 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())) {
 | 
			
		||||
                 if (Setup.UpdateChannels >= 5) {
 | 
			
		||||
                    bool found = false;
 | 
			
		||||
                    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();
 | 
			
		||||
                           if (!ISTRANSPONDER(Frequency / 1000000, transponder)) {
 | 
			
		||||
                              for (int n = 0; n < NumFrequencies; n++) {
 | 
			
		||||
                                  if (ISTRANSPONDER(Frequencies[n] / 1000000, Channel->Transponder())) {
 | 
			
		||||
                                  if (ISTRANSPONDER(Frequencies[n] / 1000000, transponder)) {
 | 
			
		||||
                                     Frequency = Frequencies[n];
 | 
			
		||||
                                     break;
 | 
			
		||||
                                     }
 | 
			
		||||
@@ -264,15 +267,15 @@ void cNitFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
 | 
			
		||||
                           }
 | 
			
		||||
                        found = true;
 | 
			
		||||
                        }
 | 
			
		||||
                     }
 | 
			
		||||
                 if (!found && Setup.UpdateChannels >= 5) {
 | 
			
		||||
                    for (int n = 0; n < NumFrequencies; n++) {
 | 
			
		||||
                        cChannel *Channel = new cChannel;
 | 
			
		||||
                        Channel->SetId(ts.getOriginalNetworkId(), ts.getTransportStreamId(), 0, 0);
 | 
			
		||||
                        if (Channel->SetTerrTransponderData(Source, Frequencies[n], Bandwidth, Constellation, Hierarchy, CodeRateHP, CodeRateLP, GuardInterval, TransmissionMode))
 | 
			
		||||
                           EITScanner.AddTransponder(Channel);
 | 
			
		||||
                        else
 | 
			
		||||
                           delete Channel;
 | 
			
		||||
                    if (!found) {
 | 
			
		||||
                       for (int n = 0; n < NumFrequencies; n++) {
 | 
			
		||||
                           cChannel *Channel = new cChannel;
 | 
			
		||||
                           Channel->SetId(ts.getOriginalNetworkId(), ts.getTransportStreamId(), 0, 0);
 | 
			
		||||
                           if (Channel->SetTerrTransponderData(Source, Frequencies[n], Bandwidth, Constellation, Hierarchy, CodeRateHP, CodeRateLP, GuardInterval, TransmissionMode))
 | 
			
		||||
                              EITScanner.AddTransponder(Channel);
 | 
			
		||||
                           else
 | 
			
		||||
                              delete Channel;
 | 
			
		||||
                           }
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                 }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user