vdr  2.4.1
nit.c
Go to the documentation of this file.
1 /*
2  * nit.c: NIT section filter
3  *
4  * See the main source file 'vdr.c' for copyright information and
5  * how to reach the author.
6  *
7  * $Id: nit.c 4.5.1.4 2019/05/31 21:47:02 kls Exp $
8  */
9 
10 #include "nit.h"
11 #include <linux/dvb/frontend.h>
12 #include "channels.h"
13 #include "dvbdevice.h"
14 #include "eitscan.h"
15 #include "libsi/section.h"
16 #include "libsi/descriptor.h"
17 #include "tools.h"
18 
19 #define DVB_SYSTEM_1 0 // see also dvbdevice.c
20 #define DVB_SYSTEM_2 1
21 
22 #define MAXNETWORKNAME Utf8BufSize(256)
23 
24 // Set to 'true' for debug output:
25 static bool DebugNit = false;
26 
27 #define dbgnit(a...) if (DebugNit) fprintf(stderr, a)
28 
30 {
31  sdtFilter = SdtFilter;
32  Set(0x10, SI::TableIdNIT);
33 }
34 
35 void cNitFilter::SetStatus(bool On)
36 {
39 }
40 
41 void cNitFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length)
42 {
43  SI::NIT nit(Data, false);
44  if (!nit.CheckCRCAndParse())
45  return;
47  return;
48  if (DebugNit) {
49  char NetworkName[MAXNETWORKNAME] = "";
50  SI::Descriptor *d;
51  for (SI::Loop::Iterator it; (d = nit.commonDescriptors.getNext(it)); ) {
52  switch (d->getDescriptorTag()) {
55  nnd->name.getText(NetworkName, MAXNETWORKNAME);
56  }
57  break;
58  default: ;
59  }
60  delete d;
61  }
62  dbgnit("NIT: %02X %2d %2d %2d %s %d %d '%s'\n", Tid, nit.getVersionNumber(), nit.getSectionNumber(), nit.getLastSectionNumber(), *cSource::ToString(Source()), nit.getNetworkId(), Transponder(), NetworkName);
63  }
64  cStateKey StateKey;
65  cChannels *Channels = cChannels::GetChannelsWrite(StateKey, 10);
66  if (!Channels) {
67  sectionSyncer.Repeat(); // let's not miss any section of the NIT
68  return;
69  }
70  bool ChannelsModified = false;
72  for (SI::Loop::Iterator it; nit.transportStreamLoop.getNext(ts, it); ) {
73  SI::Descriptor *d;
74 
77  int NumFrequencies = fld ? fld->frequencies.getCount() + 1 : 1;
78  int Frequencies[NumFrequencies];
79  if (fld) {
80  int ct = fld->getCodingType();
81  if (ct > 0) {
82  int n = 1;
83  for (SI::Loop::Iterator it3; fld->frequencies.hasNext(it3); ) {
84  int f = fld->frequencies.getNext(it3);
85  switch (ct) {
86  case 1: f = BCD2INT(f) / 100; break;
87  case 2: f = BCD2INT(f) / 10; break;
88  case 3: f = f * 10; break;
89  default: ;
90  }
91  Frequencies[n++] = f;
92  dbgnit(" Frequencies[%d] = %d\n", n - 1, f);
93  }
94  }
95  else
96  NumFrequencies = 1;
97  }
98  delete fld;
99 
100  // Necessary for "backwards compatibility mode" according to ETSI EN 300 468:
101  bool ForceDVBS2 = false;
102  for (SI::Loop::Iterator it2; (d = ts.transportStreamDescriptors.getNext(it2)); ) {
104  ForceDVBS2 = true;
105  break;
106  }
107  }
108 
109  for (SI::Loop::Iterator it2; (d = ts.transportStreamDescriptors.getNext(it2)); ) {
110  switch (d->getDescriptorTag()) {
115  int Frequency = Frequencies[0] = BCD2INT(sd->getFrequency()) / 100;
116  static char Polarizations[] = { 'H', 'V', 'L', 'R' };
117  dtp.SetPolarization(Polarizations[sd->getPolarization()]);
118  static int CodeRates[] = { FEC_NONE, FEC_1_2, FEC_2_3, FEC_3_4, FEC_5_6, FEC_7_8, FEC_8_9, FEC_3_5, FEC_4_5, FEC_9_10, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_NONE };
119  dtp.SetCoderateH(CodeRates[sd->getFecInner()]);
120  static int Modulations[] = { QAM_AUTO, QPSK, PSK_8, QAM_16 };
121  dtp.SetModulation(Modulations[sd->getModulationType()]);
122  bool System = sd->getModulationSystem() || ForceDVBS2;
123  dtp.SetSystem(System ? DVB_SYSTEM_2 : DVB_SYSTEM_1);
124  static int RollOffs[] = { ROLLOFF_35, ROLLOFF_25, ROLLOFF_20, ROLLOFF_AUTO };
125  dtp.SetRollOff(System ? RollOffs[sd->getRollOff()] : ROLLOFF_AUTO);
126  int SymbolRate = BCD2INT(sd->getSymbolRate()) / 10;
127  dbgnit(" %s %d %c %d %d DVB-S%d\n", *cSource::ToString(Source), Frequency, dtp.Polarization(), SymbolRate, cChannel::Transponder(Frequency, dtp.Polarization()), System ? 2 : 1);
128  if (Setup.UpdateChannels >= 5) {
129  bool found = false;
130  bool forceTransponderUpdate = false;
131  for (cChannel *Channel = Channels->First(); Channel; Channel = Channels->Next(Channel)) {
132  if (!Channel->GroupSep() && Channel->Source() == Source && Channel->Nid() == ts.getOriginalNetworkId() && Channel->Tid() == ts.getTransportStreamId()) {
133  // Preserve parameters set separately in S2SatelliteDeliverySystemDescriptor:
135  dtp.SetStreamId(dtpc.StreamId());
136  //
137  int transponder = Channel->Transponder();
138  if (!ISTRANSPONDER(cChannel::Transponder(Frequency, dtp.Polarization()), transponder)) {
139  for (int n = 0; n < NumFrequencies; n++) {
140  if (ISTRANSPONDER(cChannel::Transponder(Frequencies[n], dtp.Polarization()), transponder)) {
141  Frequency = Frequencies[n];
142  break;
143  }
144  }
145  }
146  if (!ISTRANSPONDER(cChannel::Transponder(Frequency, dtp.Polarization()), transponder))
147  continue; // a channel with obsolete/wrong/other(?) transponder
148  found = true;
149  dtp.SetLcn(Channel->Lcn()); // lcn is set on another descriptor
150  if (ISTRANSPONDER(transponder, Transponder())) // only modify channels if we're actually receiving this transponder
151  ChannelsModified |= Channel->SetTransponderData(Source, Frequency, SymbolRate, dtp.ToString('S'));
152  else if (Channel->Srate() != SymbolRate || strcmp(Channel->Parameters(), dtp.ToString('S')))
153  forceTransponderUpdate = true; // get us receiving this transponder
154  }
155  }
156  if (!found || forceTransponderUpdate) {
157  for (int n = 0; n < NumFrequencies; n++) {
158  cChannel *Channel = new cChannel;
159  Channel->SetId(NULL, ts.getOriginalNetworkId(), ts.getTransportStreamId(), 0, 0);
160  if (Channel->SetTransponderData(Source, Frequencies[n], SymbolRate, dtp.ToString('S')))
162  else
163  delete Channel;
164  }
165  }
166  }
167  }
168  break;
170  if (Setup.UpdateChannels >= 5) {
171  for (cChannel *Channel = Channels->First(); Channel; Channel = Channels->Next(Channel)) {
176  dbgnit(" stream id = %d\n", dtp.StreamId());
177  ChannelsModified |= Channel->SetTransponderData(Channel->Source(), Channel->Frequency(), Channel->Srate(), dtp.ToString('S'));
178  break;
179  }
180  }
181  }
182  }
183  break;
188  int Frequency = Frequencies[0] = BCD2INT(sd->getFrequency()) / 10;
189  //XXX FEC_outer???
190  static int CodeRates[] = { FEC_NONE, FEC_1_2, FEC_2_3, FEC_3_4, FEC_5_6, FEC_7_8, FEC_8_9, FEC_3_5, FEC_4_5, FEC_9_10, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_NONE };
191  dtp.SetCoderateH(CodeRates[sd->getFecInner()]);
192  static int Modulations[] = { QPSK, QAM_16, QAM_32, QAM_64, QAM_128, QAM_256, QAM_AUTO };
193  dtp.SetModulation(Modulations[min(sd->getModulation(), 6)]);
194  int SymbolRate = BCD2INT(sd->getSymbolRate()) / 10;
195  dbgnit(" %s %d %d %d %d\n", *cSource::ToString(Source), Frequency, dtp.CoderateH(), dtp.Modulation(), SymbolRate);
196  if (Setup.UpdateChannels >= 5) {
197  bool found = false;
198  bool forceTransponderUpdate = false;
199  for (cChannel *Channel = Channels->First(); Channel; Channel = Channels->Next(Channel)) {
200  if (!Channel->GroupSep() && Channel->Source() == Source && Channel->Nid() == ts.getOriginalNetworkId() && Channel->Tid() == ts.getTransportStreamId()) {
201  int transponder = Channel->Transponder();
202  if (!ISTRANSPONDER(Frequency / 1000, transponder)) {
203  for (int n = 0; n < NumFrequencies; n++) {
204  if (ISTRANSPONDER(Frequencies[n] / 1000, transponder)) {
205  Frequency = Frequencies[n];
206  break;
207  }
208  }
209  }
210  if (!ISTRANSPONDER(Frequency / 1000, transponder))
211  continue; // a channel with obsolete/wrong/other(?) transponder
212  found = true;
213  dtp.SetLcn(Channel->Lcn()); // lcn is set on another descriptor
214  if (ISTRANSPONDER(transponder, Transponder())) // only modify channels if we're actually receiving this transponder
215  ChannelsModified |= Channel->SetTransponderData(Source, Frequency, SymbolRate, dtp.ToString('C'));
216  else if (Channel->Srate() != SymbolRate || strcmp(Channel->Parameters(), dtp.ToString('C')))
217  forceTransponderUpdate = true; // get us receiving this transponder
218  }
219  }
220  if (!found || forceTransponderUpdate) {
221  for (int n = 0; n < NumFrequencies; n++) {
222  cChannel *Channel = new cChannel;
223  Channel->SetId(NULL, ts.getOriginalNetworkId(), ts.getTransportStreamId(), 0, 0);
224  if (Channel->SetTransponderData(Source, Frequencies[n], SymbolRate, dtp.ToString('C')))
226  else
227  delete Channel;
228  }
229  }
230  }
231  }
232  break;
237  int Frequency = Frequencies[0] = sd->getFrequency() * 10;
238  static int Bandwidths[] = { 8000000, 7000000, 6000000, 5000000, 0, 0, 0, 0 };
239  dtp.SetBandwidth(Bandwidths[sd->getBandwidth()]);
240  static int Constellations[] = { QPSK, QAM_16, QAM_64, QAM_AUTO };
241  dtp.SetModulation(Constellations[sd->getConstellation()]);
242  dtp.SetSystem(DVB_SYSTEM_1);
243  static int Hierarchies[] = { HIERARCHY_NONE, HIERARCHY_1, HIERARCHY_2, HIERARCHY_4, HIERARCHY_AUTO, HIERARCHY_AUTO, HIERARCHY_AUTO, HIERARCHY_AUTO };
244  dtp.SetHierarchy(Hierarchies[sd->getHierarchy()]);
245  static int CodeRates[] = { FEC_1_2, FEC_2_3, FEC_3_4, FEC_5_6, FEC_7_8, FEC_AUTO, FEC_AUTO, FEC_AUTO };
246  dtp.SetCoderateH(CodeRates[sd->getCodeRateHP()]);
247  dtp.SetCoderateL(CodeRates[sd->getCodeRateLP()]);
248  static int GuardIntervals[] = { GUARD_INTERVAL_1_32, GUARD_INTERVAL_1_16, GUARD_INTERVAL_1_8, GUARD_INTERVAL_1_4 };
249  dtp.SetGuard(GuardIntervals[sd->getGuardInterval()]);
250  static int TransmissionModes[] = { TRANSMISSION_MODE_2K, TRANSMISSION_MODE_8K, TRANSMISSION_MODE_4K, TRANSMISSION_MODE_AUTO };
251  dtp.SetTransmission(TransmissionModes[sd->getTransmissionMode()]);
252  dbgnit(" %s %d %d %d %d %d %d %d %d\n", *cSource::ToString(Source), Frequency, dtp.Bandwidth(), dtp.Modulation(), dtp.Hierarchy(), dtp.CoderateH(), dtp.CoderateL(), dtp.Guard(), dtp.Transmission());
253  if (Setup.UpdateChannels >= 5) {
254  bool found = false;
255  bool forceTransponderUpdate = false;
256  for (cChannel *Channel = Channels->First(); Channel; Channel = Channels->Next(Channel)) {
257  if (!Channel->GroupSep() && Channel->Source() == Source && Channel->Nid() == ts.getOriginalNetworkId() && Channel->Tid() == ts.getTransportStreamId()) {
258  // Preserve parameters set separately in T2DeliverySystemDescripto:
260  dtp.SetSystem(dtpc.System());
261  dtp.SetStreamId(dtpc.StreamId());
262  dtp.SetT2SystemId(dtp.T2SystemId());
263  dtp.SetSisoMiso(dtpc.SisoMiso());
264  dtp.SetBandwidth(dtpc.Bandwidth());
265  dtp.SetGuard(dtpc.Guard());
266  dtp.SetTransmission(dtpc.Transmission());
267  //
268  int transponder = Channel->Transponder();
269  if (!ISTRANSPONDER(Frequency / 1000000, transponder)) {
270  for (int n = 0; n < NumFrequencies; n++) {
271  if (ISTRANSPONDER(Frequencies[n] / 1000000, transponder)) {
272  Frequency = Frequencies[n];
273  break;
274  }
275  }
276  }
277  if (!ISTRANSPONDER(Frequency / 1000000, transponder))
278  continue; // a channel with obsolete/wrong/other(?) transponder
279  found = true;
280  dtp.SetLcn(Channel->Lcn()); // lcn is set on another descriptor
281  if (ISTRANSPONDER(transponder, Transponder())) // only modify channels if we're actually receiving this transponder
282  ChannelsModified |= Channel->SetTransponderData(Source, Frequency, 0, dtp.ToString('T'));
283  else if (strcmp(Channel->Parameters(), dtp.ToString('T')))
284  forceTransponderUpdate = true; // get us receiving this transponder
285  }
286  }
287  if (!found || forceTransponderUpdate) {
288  for (int n = 0; n < NumFrequencies; n++) {
289  cChannel *Channel = new cChannel;
290  Channel->SetId(NULL, ts.getOriginalNetworkId(), ts.getTransportStreamId(), 0, 0);
291  if (Channel->SetTransponderData(Source, Frequencies[n], 0, dtp.ToString('T')))
293  else
294  delete Channel;
295  }
296  }
297  }
298  }
299  break;
302  switch (sd->getExtensionDescriptorTag()) {
304  if (Setup.UpdateChannels >= 5) {
305  for (cChannel *Channel = Channels->First(); Channel; Channel = Channels->Next(Channel)) {
307  if (!Channel->GroupSep() && Channel->Source() == Source && Channel->Nid() == ts.getOriginalNetworkId() && Channel->Tid() == ts.getTransportStreamId()) {
309  int Frequency = Channel->Frequency();
310  int SymbolRate = Channel->Srate();
312  dtp.SetSystem(DVB_SYSTEM_2);
313  dtp.SetStreamId(td->getPlpId());
314  dtp.SetT2SystemId(td->getT2SystemId());
315  if (td->getExtendedDataFlag()) {
316  dtp.SetSisoMiso(td->getSisoMiso());
317  static int T2Bandwidths[] = { 8000000, 7000000, 6000000, 5000000, 10000000, 1712000, 0, 0 };
318  dtp.SetBandwidth(T2Bandwidths[td->getBandwidth()]);
319  static int T2GuardIntervals[] = { GUARD_INTERVAL_1_32, GUARD_INTERVAL_1_16, GUARD_INTERVAL_1_8, GUARD_INTERVAL_1_4, GUARD_INTERVAL_1_128, GUARD_INTERVAL_19_128, GUARD_INTERVAL_19_256, 0 };
320  dtp.SetGuard(T2GuardIntervals[td->getGuardInterval()]);
321  static int T2TransmissionModes[] = { TRANSMISSION_MODE_2K, TRANSMISSION_MODE_8K, TRANSMISSION_MODE_4K, TRANSMISSION_MODE_1K, TRANSMISSION_MODE_16K, TRANSMISSION_MODE_32K, TRANSMISSION_MODE_AUTO, TRANSMISSION_MODE_AUTO };
322  dtp.SetTransmission(T2TransmissionModes[td->getTransmissionMode()]);
323  //TODO add parsing of frequencies
324  }
325  dbgnit(" stream id = %d\n", dtp.StreamId());
326  ChannelsModified |= Channel->SetTransponderData(Source, Frequency, SymbolRate, dtp.ToString('T'));
327  }
328  }
329  }
330  }
331  break;
332  default: ;
333  }
334  }
335  break;
340  for (SI::Loop::Iterator it4; lcd->logicalChannelLoop.getNext(LogicalChannel, it4); ) {
341  if (LogicalChannel.getVisibleServiceFlag()) {
342  int lcn = LogicalChannel.getLogicalChannelNumber();
343  int sid = LogicalChannel.getServiceId();
344  for (cChannel *Channel = Channels->First(); Channel; Channel = Channels->Next(Channel)) {
345  if (!Channel->GroupSep() && Channel->Sid() == sid && Channel->Nid() == ts.getOriginalNetworkId() && Channel->Tid() == ts.getTransportStreamId()) {
347  dtp.SetLcn(lcn); // for storing lcn into channels.conf
349  ChannelsModified |= Channel->SetLcn(lcn);
350  break;
351  }
352  }
353  }
354  }
355  }
356  break;
361  for (SI::Loop::Iterator it4; lcd->hdSimulcastLogicalChannelLoop.getNext(HdSimulcastLogicalChannel, it4); ) {
362  if (HdSimulcastLogicalChannel.getVisibleServiceFlag()) {
363  int lcn = HdSimulcastLogicalChannel.getLogicalChannelNumber();
364  int sid = HdSimulcastLogicalChannel.getServiceId();
365  for (cChannel *Channel = Channels->First(); Channel; Channel = Channels->Next(Channel)) {
366  if (!Channel->GroupSep() && Channel->Sid() == sid && Channel->Nid() == ts.getOriginalNetworkId() && Channel->Tid() == ts.getTransportStreamId()) {
368  dtp.SetLcn(lcn); // for storing lcn into channels.conf
370  ChannelsModified |= Channel->SetLcn(lcn);
371  break;
372  }
373  }
374  }
375  }
376  }
377  break;
378  default: ;
379  }
380  delete d;
381  }
382  }
383  if (nit.getSectionNumber() == nit.getLastSectionNumber()) {
384  dbgnit(" trigger sdtFilter for current tp %d\n", Transponder());
386  }
387  StateKey.Remove(ChannelsModified);
388 }
SI::FrequencyListDescriptor
Definition: descriptor.h:357
cFilter::SetStatus
virtual void SetStatus(bool On)
Turns this filter on or off, depending on the value of On.
Definition: filter.c:129
SI::S2SatelliteDeliverySystemDescriptor
Definition: descriptor.h:525
DVB_SYSTEM_1
#define DVB_SYSTEM_1
Definition: nit.c:19
SI::T2DeliverySystemDescriptor::getT2SystemId
int getT2SystemId() const
Definition: descriptor.c:912
SI::HdSimulcastLogicalChannelDescriptor::HdSimulcastLogicalChannel
Definition: descriptor.h:590
cDvbTransponderParameters::Hierarchy
int Hierarchy(void) const
Definition: dvbdevice.h:137
cFilter::Transponder
int Transponder(void)
Returns the transponder of the data delivered to this filter.
Definition: filter.c:119
SI::SatelliteDeliverySystemDescriptor::getModulationType
int getModulationType() const
Definition: descriptor.c:435
cFilter::Set
void Set(u_short Pid, u_char Tid, u_char Mask=0xFF)
Sets the given filter data by calling Add() with Sticky = true.
Definition: filter.c:162
SI::T2DeliverySystemDescriptor::getTransmissionMode
int getTransmissionMode() const
Definition: descriptor.c:928
SI::Loop::Iterator
Definition: si.h:333
cNitFilter::Process
virtual void Process(u_short Pid, u_char Tid, const u_char *Data, int Length)
Processes the data delivered to this filter.
Definition: nit.c:41
SI::LogicalChannelDescriptor
Definition: descriptor.h:570
SI::TerrestrialDeliverySystemDescriptor::getFrequency
int getFrequency() const
Definition: descriptor.c:479
SI::ExtensionDescriptorTag
@ ExtensionDescriptorTag
Definition: si.h:150
cChannel::Parameters
const char * Parameters(void) const
Definition: channels.h:182
cSource::ToString
static cString ToString(int Code)
Definition: sources.c:55
SI::T2DeliverySystemDescriptor::getSisoMiso
int getSisoMiso() const
Definition: descriptor.c:916
SI::NetworkNameDescriptorTag
@ NetworkNameDescriptorTag
Definition: si.h:88
cChannel::Source
int Source(void) const
Definition: channels.h:152
SI::TerrestrialDeliverySystemDescriptorTag
@ TerrestrialDeliverySystemDescriptorTag
Definition: si.h:114
cNitFilter::cNitFilter
cNitFilter(cSdtFilter *SdtFilter)
Definition: nit.c:29
cDvbTransponderParameters::SetModulation
void SetModulation(int Modulation)
Definition: dvbdevice.h:149
SI::LogicalChannelDescriptorTag
@ LogicalChannelDescriptorTag
Definition: si.h:152
cChannel::Sid
int Sid(void) const
Definition: channels.h:176
cChannel::SetLcn
bool SetLcn(int Lcn)
Definition: channels.c:247
EITScanner
cEITScanner EITScanner
Definition: eitscan.c:90
cDvbTransponderParameters::StreamId
int StreamId(void) const
Definition: dvbdevice.h:139
section.h
SI::TerrestrialDeliverySystemDescriptor::getGuardInterval
int getGuardInterval() const
Definition: descriptor.c:515
cSource::FromData
static int FromData(eSourceType SourceType, int Position=0, bool East=false)
Definition: sources.c:104
SI::CableDeliverySystemDescriptor::getModulation
int getModulation() const
Definition: descriptor.c:463
cSdtFilter::Trigger
void Trigger(int Source)
Definition: sdt.c:39
SI::CRCSection::CheckCRCAndParse
bool CheckCRCAndParse()
Definition: si.c:75
SI::SatelliteDeliverySystemDescriptor::getPolarization
int getPolarization() const
Definition: descriptor.c:427
SI::S2SatelliteDeliverySystemDescriptorTag
@ S2SatelliteDeliverySystemDescriptorTag
Definition: si.h:146
SI::ExtensionDescriptor::getExtensionDescriptorTag
int getExtensionDescriptorTag() const
Definition: descriptor.c:890
cChannel::Lcn
int Lcn(void) const
Definition: channels.h:178
SI::TypeLoop::hasNext
bool hasNext(Iterator &it)
Definition: si.h:469
SI::TerrestrialDeliverySystemDescriptor
Definition: descriptor.h:247
TRANSMISSION_MODE_1K
@ TRANSMISSION_MODE_1K
Definition: dvbdevice.h:42
SI::TerrestrialDeliverySystemDescriptor::getHierarchy
int getHierarchy() const
Definition: descriptor.c:503
cSetup::UpdateChannels
int UpdateChannels
Definition: config.h:318
nit.h
cDvbTransponderParameters::SetTransmission
void SetTransmission(int Transmission)
Definition: dvbdevice.h:151
cDvbTransponderParameters::SetT2SystemId
void SetT2SystemId(int T2SystemId)
Definition: dvbdevice.h:156
SI::u_char
unsigned char u_char
Definition: headers.h:38
cChannels::GetChannelsWrite
static cChannels * GetChannelsWrite(cStateKey &StateKey, int TimeoutMs=0)
Gets the list of channels for write access.
Definition: channels.c:855
SI::NumberedSection::getLastSectionNumber
int getLastSectionNumber() const
Definition: si.c:102
SI::T2DeliverySystemDescriptor::getBandwidth
int getBandwidth() const
Definition: descriptor.c:920
SI::HdSimulcastLogicalChannelDescriptorTag
@ HdSimulcastLogicalChannelDescriptorTag
Definition: si.h:156
Setup
cSetup Setup
Definition: config.c:372
cChannel::SetId
bool SetId(cChannels *Channels, int Nid, int Tid, int Sid, int Rid=0)
Definition: channels.c:227
SI::SatelliteDeliverySystemDescriptor::getModulationSystem
int getModulationSystem() const
Definition: descriptor.c:431
DVB_SYSTEM_2
#define DVB_SYSTEM_2
Definition: nit.c:20
cNitFilter::sdtFilter
cSdtFilter * sdtFilter
Definition: nit.h:19
SI::TerrestrialDeliverySystemDescriptor::getBandwidth
int getBandwidth() const
Definition: descriptor.c:495
SI::NumberedSection::getSectionNumber
int getSectionNumber() const
Definition: si.c:98
SI::TypeLoop::getNext
T getNext(Iterator &it) const
Definition: si.h:463
cNitFilter::SetStatus
virtual void SetStatus(bool On)
Turns this filter on or off, depending on the value of On.
Definition: nit.c:35
cDvbTransponderParameters::SisoMiso
int SisoMiso(void) const
Definition: dvbdevice.h:141
cStateKey
Definition: thread.h:233
cChannel::Nid
int Nid(void) const
Definition: channels.h:174
cChannel::Transponder
int Transponder(void) const
Returns the transponder frequency in MHz, plus the polarization in case of sat.
Definition: channels.c:147
SI::LogicalChannelDescriptor::LogicalChannel
Definition: descriptor.h:572
SI::SatelliteDeliverySystemDescriptor::getOrbitalPosition
int getOrbitalPosition() const
Definition: descriptor.c:419
cSectionSyncer::Repeat
void Repeat(void)
Definition: filter.c:29
cDvbTransponderParameters::ToString
cString ToString(char Type) const
Definition: dvbdevice.c:212
SI::TableIdNIT
@ TableIdNIT
Definition: si.h:47
channels.h
SI::LogicalChannelDescriptor::LogicalChannel::getServiceId
int getServiceId() const
Definition: descriptor.c:945
cChannel::SetTransponderData
bool SetTransponderData(int Source, int Frequency, int Srate, const char *Parameters, bool Quiet=false)
Definition: channels.c:177
SI::NIT
Definition: section.h:101
cChannel::Tid
int Tid(void) const
Definition: channels.h:175
cDvbTransponderParameters::SetGuard
void SetGuard(int Guard)
Definition: dvbdevice.h:152
SI::HdSimulcastLogicalChannelDescriptor::hdSimulcastLogicalChannelLoop
StructureLoop< HdSimulcastLogicalChannel > hdSimulcastLogicalChannelLoop
Definition: descriptor.h:601
cSource::stCable
@ stCable
Definition: sources.h:20
SI::SatelliteDeliverySystemDescriptor
Definition: descriptor.h:217
SI::TerrestrialDeliverySystemDescriptor::getTransmissionMode
int getTransmissionMode() const
Definition: descriptor.c:519
SI::SatelliteDeliverySystemDescriptor::getRollOff
int getRollOff() const
Definition: descriptor.c:439
cDvbTransponderParameters::T2SystemId
int T2SystemId(void) const
Definition: dvbdevice.h:140
SI::Descriptor::getDescriptorTag
DescriptorTag getDescriptorTag() const
Definition: si.c:110
SI::SatelliteDeliverySystemDescriptor::getFecInner
int getFecInner() const
Definition: descriptor.c:447
SI::NIT::getNetworkId
int getNetworkId() const
Definition: section.c:99
cDvbTransponderParameters::SetLcn
void SetLcn(int Lcn)
Definition: dvbdevice.h:159
SI::SatelliteDeliverySystemDescriptor::getFrequency
int getFrequency() const
Definition: descriptor.c:415
GUARD_INTERVAL_19_256
@ GUARD_INTERVAL_19_256
Definition: dvbdevice.h:49
cStateKey::Remove
void Remove(bool IncState=true)
Removes this key from the lock it was previously used with.
Definition: thread.c:859
cChannels
Definition: channels.h:210
SI::T2DeliverySystemDescriptor::getGuardInterval
int getGuardInterval() const
Definition: descriptor.c:924
cDvbTransponderParameters::SetSisoMiso
void SetSisoMiso(int SisoMiso)
Definition: dvbdevice.h:157
cFilter::Channel
const cChannel * Channel(void)
Returns the channel of the data delivered to this filter.
Definition: filter.c:124
cChannel::GroupSep
bool GroupSep(void) const
Definition: channels.h:181
cDvbTransponderParameters::Bandwidth
int Bandwidth(void) const
Definition: dvbdevice.h:130
SI::LogicalChannelDescriptor::LogicalChannel::getLogicalChannelNumber
int getLogicalChannelNumber() const
Definition: descriptor.c:953
cList::First
const T * First(void) const
Returns the first element in this list, or NULL if the list is empty.
Definition: tools.h:606
cSectionSyncer::Reset
void Reset(void)
Definition: filter.c:20
SI::CableDeliverySystemDescriptorTag
@ CableDeliverySystemDescriptorTag
Definition: si.h:92
cSource::ToChar
static char ToChar(int Code)
Definition: sources.h:51
cDvbTransponderParameters::SetHierarchy
void SetHierarchy(int Hierarchy)
Definition: dvbdevice.h:153
cSdtFilter
Definition: sdt.h:16
SI::TypeLoop::getCount
int getCount()
Definition: si.h:446
dvbdevice.h
SI::Descriptor
Definition: si.h:312
cChannel
Definition: channels.h:89
cDvbTransponderParameters::Guard
int Guard(void) const
Definition: dvbdevice.h:136
SI::T2DeliverySystemDescriptor::getPlpId
int getPlpId() const
Definition: descriptor.c:908
SI::T2DeliverySystemDescriptor::getExtendedDataFlag
int getExtendedDataFlag() const
Definition: descriptor.c:900
SI::TerrestrialDeliverySystemDescriptor::getConstellation
int getConstellation() const
Definition: descriptor.c:499
cDvbTransponderParameters::SetStreamId
void SetStreamId(int StreamId)
Definition: dvbdevice.h:155
cDvbTransponderParameters::CoderateH
int CoderateH(void) const
Definition: dvbdevice.h:131
cNitFilter::sectionSyncer
cSectionSyncer sectionSyncer
Definition: nit.h:18
cChannel::Srate
int Srate(void) const
Definition: channels.h:153
SI::FrequencyListDescriptorTag
@ FrequencyListDescriptorTag
Definition: si.h:122
SI::CableDeliverySystemDescriptor::getSymbolRate
int getSymbolRate() const
Definition: descriptor.c:467
cSource::stSat
@ stSat
Definition: sources.h:21
SI::CableDeliverySystemDescriptor
Definition: descriptor.h:234
cDvbTransponderParameters::SetSystem
void SetSystem(int System)
Definition: dvbdevice.h:150
DebugNit
static bool DebugNit
Definition: nit.c:25
SI::CableDeliverySystemDescriptor::getFrequency
int getFrequency() const
Definition: descriptor.c:455
cDvbTransponderParameters::CoderateL
int CoderateL(void) const
Definition: dvbdevice.h:132
SI::T2DeliverySystemDescriptorTag
@ T2DeliverySystemDescriptorTag
Definition: si.h:162
STANDARD_NORDIG
#define STANDARD_NORDIG
Definition: config.h:72
SI::NIT::TransportStream::getOriginalNetworkId
int getOriginalNetworkId() const
Definition: section.c:116
cEITScanner::AddTransponder
void AddTransponder(cChannel *Channel)
Definition: eitscan.c:106
SI::NIT::TransportStream::transportStreamDescriptors
DescriptorLoop transportStreamDescriptors
Definition: section.h:110
cSectionSyncer::Sync
bool Sync(uchar Version, int Number, int LastNumber)
Definition: filter.c:36
SI::TerrestrialDeliverySystemDescriptor::getCodeRateLP
int getCodeRateLP() const
Definition: descriptor.c:511
SI::NIT::TransportStream
Definition: section.h:105
ISTRANSPONDER
#define ISTRANSPONDER(f1, f2)
Definition: channels.h:18
TRANSMISSION_MODE_16K
@ TRANSMISSION_MODE_16K
Definition: dvbdevice.h:43
SI::ExtensionDescriptor
Definition: descriptor.h:540
SI::SatelliteDeliverySystemDescriptor::getWestEastFlag
int getWestEastFlag() const
Definition: descriptor.c:423
cDvbTransponderParameters::SetCoderateH
void SetCoderateH(int CoderateH)
Definition: dvbdevice.h:147
dbgnit
#define dbgnit(a...)
Definition: nit.c:27
eitscan.h
BCD2INT
int BCD2INT(int x)
Definition: tools.c:45
cDvbTransponderParameters::Transmission
int Transmission(void) const
Definition: dvbdevice.h:135
MAXNETWORKNAME
#define MAXNETWORKNAME
Definition: nit.c:22
SI::T2DeliverySystemDescriptor
Definition: descriptor.h:551
SI::DescriptorLoop::getNext
Descriptor * getNext(Iterator &it)
Definition: si.c:122
SI::FrequencyListDescriptor::getCodingType
int getCodingType() const
Definition: descriptor.c:642
SI::SatelliteDeliverySystemDescriptor::getSymbolRate
int getSymbolRate() const
Definition: descriptor.c:443
cChannel::Frequency
int Frequency(void) const
Returns the actual frequency, as given in 'channels.conf'.
Definition: channels.h:149
SI::NetworkNameDescriptor::name
String name
Definition: descriptor.h:175
SI::S2SatelliteDeliverySystemDescriptor::getInputStreamIdentifier
int getInputStreamIdentifier() const
Definition: descriptor.h:531
SI::LogicalChannelDescriptor::logicalChannelLoop
StructureLoop< LogicalChannel > logicalChannelLoop
Definition: descriptor.h:583
SI::NIT::transportStreamLoop
StructureLoop< TransportStream > transportStreamLoop
Definition: section.h:117
cSource::IsSat
static bool IsSat(int Code)
Definition: sources.h:57
cList::Next
const T * Next(const T *Object) const
< Returns the element immediately before Object in this list, or NULL if Object is the first element ...
Definition: tools.h:613
cDvbTransponderParameters::SetBandwidth
void SetBandwidth(int Bandwidth)
Definition: dvbdevice.h:146
cDvbTransponderParameters::Modulation
int Modulation(void) const
Definition: dvbdevice.h:133
min
T min(T a, T b)
Definition: tools.h:59
SI::NetworkNameDescriptor
Definition: descriptor.h:173
cSetup::StandardCompliance
int StandardCompliance
Definition: config.h:283
TRANSMISSION_MODE_32K
@ TRANSMISSION_MODE_32K
Definition: dvbdevice.h:44
cFilter::Source
int Source(void)
Returns the source of the data delivered to this filter.
Definition: filter.c:114
TRANSMISSION_MODE_4K
@ TRANSMISSION_MODE_4K
Definition: dvbdevice.h:30
SI::String::getText
char * getText()
Definition: si.c:232
tools.h
cDvbTransponderParameters
Definition: dvbdevice.h:105
cDvbTransponderParameters::SetCoderateL
void SetCoderateL(int CoderateL)
Definition: dvbdevice.h:148
SI::HdSimulcastLogicalChannelDescriptor
Definition: descriptor.h:588
SI::SatelliteDeliverySystemDescriptorTag
@ SatelliteDeliverySystemDescriptorTag
Definition: si.h:91
cDvbTransponderParameters::SetPolarization
void SetPolarization(char Polarization)
Definition: dvbdevice.h:144
SI::NIT::commonDescriptors
DescriptorLoop commonDescriptors
Definition: section.h:116
cSource::stTerr
@ stTerr
Definition: sources.h:22
SI::HdSimulcastLogicalChannelDescriptor::HdSimulcastLogicalChannel::getServiceId
int getServiceId() const
Definition: descriptor.c:966
cDvbTransponderParameters::Polarization
char Polarization(void) const
Definition: dvbdevice.h:128
SI::NumberedSection::getVersionNumber
int getVersionNumber() const
Definition: si.c:94
cDvbTransponderParameters::System
int System(void) const
Definition: dvbdevice.h:134
SI::HdSimulcastLogicalChannelDescriptor::HdSimulcastLogicalChannel::getLogicalChannelNumber
int getLogicalChannelNumber() const
Definition: descriptor.c:974
cDvbTransponderParameters::SetRollOff
void SetRollOff(int RollOff)
Definition: dvbdevice.h:154
descriptor.h
GUARD_INTERVAL_19_128
@ GUARD_INTERVAL_19_128
Definition: dvbdevice.h:48
SI::CableDeliverySystemDescriptor::getFecInner
int getFecInner() const
Definition: descriptor.c:471
SI::TerrestrialDeliverySystemDescriptor::getCodeRateHP
int getCodeRateHP() const
Definition: descriptor.c:507
SI::NIT::TransportStream::getTransportStreamId
int getTransportStreamId() const
Definition: section.c:112
SI::LogicalChannelDescriptor::LogicalChannel::getVisibleServiceFlag
int getVisibleServiceFlag() const
Definition: descriptor.c:949
SI::HdSimulcastLogicalChannelDescriptor::HdSimulcastLogicalChannel::getVisibleServiceFlag
int getVisibleServiceFlag() const
Definition: descriptor.c:970
SI::FrequencyListDescriptor::frequencies
TypeLoop< ThirtyTwoBit > frequencies
Definition: descriptor.h:360
GUARD_INTERVAL_1_128
@ GUARD_INTERVAL_1_128
Definition: dvbdevice.h:47