vdr  2.6.1
si.h
Go to the documentation of this file.
1 /***************************************************************************
2  * Copyright (c) 2003 by Marcel Wiesweg *
3  * *
4  * This program is free software; you can redistribute it and/or modify *
5  * it under the terms of the GNU General Public License as published by *
6  * the Free Software Foundation; either version 2 of the License, or *
7  * (at your option) any later version. *
8  * *
9  * $Id: si.h 4.3 2020/05/15 12:32:51 kls Exp $
10  * *
11  ***************************************************************************/
12 
13 #ifndef LIBSI_SI_H
14 #define LIBSI_SI_H
15 
16 #include <stdint.h>
17 
18 #include "util.h"
19 #include "headers.h"
20 
21 namespace SI {
22 
23 enum TableId { TableIdPAT = 0x00, //program association section
24  TableIdCAT = 0x01, //conditional access section
25  TableIdPMT = 0x02, //program map section
26  TableIdTSDT = 0x03,//transport stream description section
27  TableIdNIT = 0x40, //network information, actual network section
28  TableIdNIT_other = 0x41, //network information section, other network
29  TableIdSDT = 0x42, //service description section
31  TableIdBAT = 0x4A, //bouquet association section
32  TableIdEIT_presentFollowing = 0x4E, //event information section
34  //range from 0x50 to 0x5F
37  //range from 0x60 to 0x6F
40  TableIdTDT = 0x70, //time date section
41  TableIdRST = 0x71, //running status section
42  TableIdST = 0x72, //stuffing section
43  TableIdTOT = 0x73, //time offset section
44  TableIdDIT = 0x7E, //discontinuity information section
45  TableIdSIT = 0x7F, //service information section
46  TableIdAIT = 0x74, //application information section
47  TableIdPremiereCIT = 0xA0 //premiere content information section
48  };
49 
50 
52  // defined by ISO/IEC 13818-1
70  // defined by ISO-13818-6 (DSM-CC)
72  // 0x14 - 0x3F Reserved
73  // defined by ISO/IEC 13818-1 Amendment
77  // defined by ETSI (EN 300 468)
129  // defined by ETSI (EN 300 468) v 1.7.1
141  // defined by EICTA/EACEM/DIGITALEUROPE
147  // Extension descriptors
160  // defined by ETSI (EN 300 468) v 1.12.1
163  // 0x0E - 0x0F Reserved
166 
167  // Defined by ETSI TS 102 812 (MHP)
168  // They once again start with 0x00 (see page 234, MHP specification)
174  // 0x05 - 0x0A is unimplemented this library
187  // Premiere private Descriptor Tags
189 
190  //a descriptor currently unimplemented in this library
191  //the actual value 0xFF is "forbidden" according to the spec.
193 };
194 
196 
202  };
203 
214  LinkageTypePremiere = 0xB0
215  };
216 
221  };
222 
223 /* Some principles:
224  - Objects that return references to other objects contained in their data must make sure
225  that the returned objects have been parsed.
226  (the Loop subclasses take care of that.)
227  Note that this does not apply to Loops and Strings (their are never returned by reference, BTW).
228 */
229 
230 class Object : public Parsable {
231 public:
232  Object();
233  Object(CharArray &d);
234  //can only be called once since data is immutable
235  void setData(const unsigned char*data, int size, bool doCopy=true);
236  CharArray getData() { return data; }
237  //returns the valid flag which indicates if data is all right or errors have been encountered
238  bool isValid() { return data.isValid(); }
239  virtual int getLength() = 0;
240 protected:
242  //is protected - not used for sections
243  template <class T> friend class StructureLoop;
244  void setData(CharArray &d);
245  //returns whether the given offset fits within the limits of the actual data
246  //The valid flag will be set accordingly
247  bool checkSize(int offset);
248 };
249 
250 class Section : public Object {
251 public:
252  //convenience: sets data and parses if doParse
253  Section(const unsigned char *data, bool doCopy=true);
254  Section() {}
255  TableId getTableId() const;
256  virtual int getLength();
257 
258  static int getLength(const unsigned char *d);
259  static TableId getTableId(const unsigned char *d);
260 };
261 
262 class CRCSection : public Section {
263 public:
264  //convenience: sets data and parses if doParse
265  CRCSection(const unsigned char *data, bool doCopy=true) : Section(data, doCopy) {}
267  bool isCRCValid();
268  //convenience: isValid+CheckParse
269  bool CheckCRCAndParse();
270 };
271 
272 /* A section which has the ExtendedSectionHeader
273  (section_syntax_indicator==1) */
274 class NumberedSection : public CRCSection {
275 public:
276  NumberedSection(const unsigned char *data, bool doCopy=true) : CRCSection(data, doCopy) {}
278  int getTableIdExtension() const;
279  bool getCurrentNextIndicator() const;
280  int getVersionNumber() const;
281  int getSectionNumber() const;
282  int getLastSectionNumber() const;
283  bool moreThanOneSection() const { return getLastSectionNumber()>0; }
284 
285  static int getTableIdExtension(const unsigned char *d);
286 };
287 
288 class VariableLengthPart : public Object {
289 public:
290  //never forget to call this
291  void setData(CharArray d, int l) { Object::setData(d); checkSize(l); length=l; }
292  //convenience method
293  void setDataAndOffset(CharArray d, int l, int &offset) { Object::setData(d); checkSize(l); length=l; offset+=l; }
294  virtual int getLength() { return length; }
295 private:
296  int length;
297 };
298 
299 class LoopElement : public Object {
300 };
301 
302 class Descriptor : public LoopElement {
303 public:
304  virtual int getLength();
306 
307  static int getLength(const unsigned char *d);
308  static DescriptorTag getDescriptorTag(const unsigned char *d);
309 protected:
310  friend class DescriptorLoop;
311  //returns a subclass of descriptor according to the data given.
312  //The object is allocated with new and must be delete'd.
313  //setData() will have been called, CheckParse() not.
314  //if returnUnimplemetedDescriptor==true:
315  // Never returns null - maybe the UnimplementedDescriptor.
316  //if returnUnimplemetedDescriptor==false:
317  // Never returns the UnimplementedDescriptor - maybe null
318  static Descriptor *getDescriptor(CharArray d, DescriptorTagDomain domain, bool returnUnimplemetedDescriptor);
319 };
320 
321 class Loop : public VariableLengthPart {
322 public:
323  class Iterator {
324  public:
325  Iterator() { i=0; }
326  void reset() { i=0; }
327  private:
328  template <class T> friend class StructureLoop;
329  friend class DescriptorLoop;
330  template <class T> friend class TypeLoop;
332  int i;
333  };
334 protected:
335  virtual void Parse() {}
336 };
337 
338 //contains LoopElements of one type only
339 template <class T> class StructureLoop : public Loop {
340 public:
341  //currently you must use a while-loop testing for hasNext()
342  //i must be 0 to get the first descriptor (with the first call)
343  bool getNext(T &obj, Iterator &it)
344  {
345  if (!isValid() || it.i >= getLength())
346  return false;
347  CharArray d=data;
348  d.addOffset(it.i);
349  T ret;
350  ret.setData(d);
351  ret.CheckParse();
352  if (!checkSize(ret.getLength()))
353  return false;
354  it.i+=ret.getLength();
355  obj=ret;
356  return true;
357  }
359  {
360  if (!isValid() || it.i >= getLength())
361  return 0;
362  CharArray d=data;
363  d.addOffset(it.i);
364  T *ret=new T();
365  ret->setData(d);
366  ret->CheckParse();
367  if (!checkSize(ret->getLength())) {
368  delete ret;
369  return 0;
370  }
371  it.i+=ret->getLength();
372  return ret;
373  }
374  //bool hasNext(Iterator &it) { return getLength() > it.i; }
375 };
376 
377 //contains descriptors of different types
378 class DescriptorLoop : public Loop {
379 public:
381  //i must be 0 to get the first descriptor (with the first call)
382  //All returned descriptors must be delete'd.
383  //returns null if no more descriptors available
384  Descriptor *getNext(Iterator &it);
385  //return the next descriptor with given tag, or 0 if not available.
386  //if returnUnimplemetedDescriptor==true:
387  // an UnimplementedDescriptor may be returned if the next matching descriptor is unimplemented,
388  // 0 will be returned if and only if no matching descriptor is found.
389  //if returnUnimplemetedDescriptor==false:
390  // if 0 is returned, either no descriptor with the given tag was found,
391  // or descriptors were found, but the descriptor type is not implemented
392  //In either case, a return value of 0 indicates that no further calls to this method
393  //with the iterator shall be made.
394  Descriptor *getNext(Iterator &it, DescriptorTag tag, bool returnUnimplemetedDescriptor=false);
395  //return the next descriptor with one of the given tags, or 0 if not available.
396  //if returnUnimplemetedDescriptor==true:
397  // returns 0 if and only if no descriptor with one of the given tags was found.
398  // The UnimplementedDescriptor may be returned.
399  //if returnUnimplemetedDescriptor==false:
400  // if 0 is returned, either no descriptor with one of the given tags was found,
401  // or descriptors were found, but none of them are implemented.
402  // The UnimplementedDescriptor will never be returned.
403  //In either case, a return value of 0 indicates that no further calls to this method
404  //with the iterator shall be made.
405  Descriptor *getNext(Iterator &it, DescriptorTag *tags, int arrayLength, bool returnUnimplemetedDescriptor=false);
406  //returns the number of descriptors in this loop
408  //writes the tags of the descriptors in this loop in the array,
409  // which must at least have the size getNumberOfDescriptors().
410  //The number of descriptors, i.e. getNumberOfDescriptors(), is returned.
411  // You can specify the array type (Descriptor tags are 8 Bit,
412  // you might e.g. choose a char, short, int or DescriptorTag array)
413  template <typename T> int getDescriptorTags(T *tags)
414  {
415  const unsigned char *p=data.getData();
416  const unsigned char *end=p+getLength();
417  int count=0;
418  while (p < end) {
419  tags[count++]=(T)Descriptor::getDescriptorTag(p);
420  p+=Descriptor::getLength(p);
421  }
422  return count;
423  }
424 protected:
425  Descriptor *createDescriptor(int &i, bool returnUnimplemetedDescriptor);
427 };
428 
429 typedef uint8_t EightBit;
430 typedef uint16_t SixteenBit;
431 typedef uint32_t ThirtyTwoBit;
432 typedef uint64_t SixtyFourBit;
433 
434 template <typename T> class TypeLoop : public Loop {
435 public:
436  int getCount() { return getLength()/sizeof(T); }
437  T operator[](const int index) const
438  {
439  switch (sizeof(T)) {
440  case 1:
441  return data[index];
442  case 2:
443  return data.TwoBytes(index);
444  case 4:
445  return data.FourBytes(index);
446  case 8:
447  return (SixtyFourBit(data.FourBytes(index)) << 32) | data.FourBytes(index+4);
448  default:
449  return 0; // just to avoid a compiler warning
450  }
451  return 0; // just to avoid a compiler warning
452  }
453  T getNext(Iterator &it) const
454  {
455  T ret=operator[](it.i);
456  it.i+=sizeof(T);
457  return ret;
458  }
459  bool hasNext(Iterator &it) { return isValid() && (getLength() > it.i); }
460 };
461 
463 public:
465 };
466 
467 //Premiere Content Information Table
469 public:
471 };
472 
473 //The content of the ExtendedEventDescriptor may be split over several
474 //descriptors if the text is longer than 256 bytes.
475 //The following classes provide base functionality to handle this case.
476 class GroupDescriptor : public Descriptor {
477 public:
478  virtual int getDescriptorNumber() = 0;
479  virtual int getLastDescriptorNumber() = 0;
480 };
481 
483 public:
486  bool Add(GroupDescriptor *d);
487  void Delete();
488  int getLength() { return length; }
490  bool isComplete(); //if all descriptors have been added
491 protected:
492  int length;
495 };
496 
497 class String : public VariableLengthPart {
498 public:
499  //A note to the length: getLength() returns the length of the raw data.
500  //The text may be shorter. Its length can be obtained with one of the
501  //getText functions and strlen.
502 
503  //returns text. Data is allocated with new and must be delete'd by the user.
504  char *getText();
505  //copies text into given buffer.
506  //a buffer of size getLength()+1 is guaranteed to be sufficiently large.
507  //In most descriptors the string length is an 8-bit field,
508  //so the maximum there is 256.
509  //returns the given buffer for convenience.
510  //The emphasis marks 0x86 and 0x87 are still available.
511  //If fromCode is given, the string will be copied into buffer in its raw form,
512  //without conversion, and he code table of the string is returned in this variable
513  //if it is NULL.
514  char *getText(char *buffer, int size, const char **fromCode = NULL);
515  //The same semantics as for getText(char*) apply.
516  //The short version of the text according to ETSI TR 101 211 (chapter 4.6)
517  //will be written into the shortVersion buffer (which should, therefore, have the same
518  //length as buffer). If no shortVersion is available, shortVersion will contain
519  //an empty string.
520  //The emphasis marks 0x86 and 0x87 are still available in buffer, but not in shortVersion.
521  char *getText(char *buffer, char *shortVersion, int sizeBuffer, int sizeShortVersion);
522 protected:
523  virtual void Parse() {}
524  void decodeText(char *buffer, int size, const char **fromCode = NULL);
525  void decodeText(char *buffer, char *shortVersion, int sizeBuffer, int sizeShortVersion);
526 };
527 
528 // Set the character table to use for strings that do not begin with a character
529 // table indicator. Call with NULL to turn this off.
530 // Must be called *after* SetSystemCharacterTable()!
531 // Returns true if the character table was recognized.
532 bool SetOverrideCharacterTable(const char *CharacterTable);
533 // Call this function to set the system character table. CharacterTable is a string
534 // like "iso8859-15" or "utf-8" (case insensitive).
535 // Returns true if the character table was recognized.
536 bool SetSystemCharacterTable(const char *CharacterTable);
537 // Determines the character table used in the given buffer and returns
538 // a string indicating that table. If no table can be determined, the
539 // default ISO6937 is returned. If a table can be determined, the buffer
540 // and length are adjusted accordingly.
541 // The isSingleByte parameter is deprecated and only present for backwards compatibility.
542 const char *getCharacterTable(const unsigned char *&buffer, int &length, bool *isSingleByte = NULL);
543 // Copies 'from' to 'to' and converts characters according to 'fromCode', if given.
544 // Returns the length of the resulting string.
545 size_t convertCharacterTable(const char *from, size_t fromLength, char *to, size_t toLength, const char *fromCode);
547 
548 } //end of namespace
549 
550 #endif //LIBSI_SI_H
SI::SixtyFourBit
uint64_t SixtyFourBit
Definition: si.h:432
SI::VBITeletextDescriptorTag
@ VBITeletextDescriptorTag
Definition: si.h:84
SI::MHP_ApplicationDescriptorTag
@ MHP_ApplicationDescriptorTag
Definition: si.h:169
SI::MHP_ExternalApplicationAuthorisationDescriptorTag
@ MHP_ExternalApplicationAuthorisationDescriptorTag
Definition: si.h:175
SI::MHP_DVBJApplicationDescriptorTag
@ MHP_DVBJApplicationDescriptorTag
Definition: si.h:172
SI::MHP
@ MHP
Definition: si.h:195
SI::RegistrationDescriptorTag
@ RegistrationDescriptorTag
Definition: si.h:56
SI::HierarchyDescriptorTag
@ HierarchyDescriptorTag
Definition: si.h:55
SI::Section::Section
Section()
Definition: si.h:254
SI::DescriptorLoop::getNumberOfDescriptors
int getNumberOfDescriptors()
Definition: si.c:170
SI::AudioTypeHearingImpaired
@ AudioTypeHearingImpaired
Definition: si.h:219
SI::DescriptorLoop::DescriptorLoop
DescriptorLoop()
Definition: si.h:380
SI::STDDescriptorTag
@ STDDescriptorTag
Definition: si.h:68
SI::Loop::Iterator
Definition: si.h:323
SI::MHP_ApplicationIconsDescriptorTag
@ MHP_ApplicationIconsDescriptorTag
Definition: si.h:181
SI::GroupDescriptor::getDescriptorNumber
virtual int getDescriptorNumber()=0
SI::MultilingualBouquetNameDescriptorTag
@ MultilingualBouquetNameDescriptorTag
Definition: si.h:106
SI::DescriptorGroup::DescriptorGroup
DescriptorGroup(bool deleteOnDesctruction=true)
Definition: si.c:181
SI::VideoWindowDescriptorTag
@ VideoWindowDescriptorTag
Definition: si.h:59
SI::CharArray
Definition: util.h:32
SI::SupplementaryAudioDescriptorTag
@ SupplementaryAudioDescriptorTag
Definition: si.h:154
SI::DescriptorGroup::getLength
int getLength()
Definition: si.h:488
SI::ApplicationSignallingDescriptorTag
@ ApplicationSignallingDescriptorTag
Definition: si.h:125
SI::PartialTransportStreamDescriptorTag
@ PartialTransportStreamDescriptorTag
Definition: si.h:113
SI::ExtensionDescriptorTag
@ ExtensionDescriptorTag
Definition: si.h:140
SI::NetworkNameDescriptorTag
@ NetworkNameDescriptorTag
Definition: si.h:78
SI::DefaultAuthorityDescriptorTag
@ DefaultAuthorityDescriptorTag
Definition: si.h:130
SI::TerrestrialDeliverySystemDescriptorTag
@ TerrestrialDeliverySystemDescriptorTag
Definition: si.h:104
SI::TargetRegionNameDescriptorTag
@ TargetRegionNameDescriptorTag
Definition: si.h:158
SI::DataStreamAlignmentDescriptorTag
@ DataStreamAlignmentDescriptorTag
Definition: si.h:57
SI::TableIdCAT
@ TableIdCAT
Definition: si.h:24
SI::MultilingualServiceNameDescriptorTag
@ MultilingualServiceNameDescriptorTag
Definition: si.h:107
SI::CountryAvailabilityDescriptorTag
@ CountryAvailabilityDescriptorTag
Definition: si.h:87
SI::TableIdDIT
@ TableIdDIT
Definition: si.h:44
SI::LogicalChannelDescriptorTag
@ LogicalChannelDescriptorTag
Definition: si.h:142
SI::systemCharacterTableIsSingleByte
bool systemCharacterTableIsSingleByte(void)
Definition: si.c:317
SI::convertCharacterTable
size_t convertCharacterTable(const char *from, size_t fromLength, char *to, size_t toLength, const char *fromCode)
Definition: si.c:414
SI::SI
@ SI
Definition: si.h:195
SI::TargetRegionDescriptorTag
@ TargetRegionDescriptorTag
Definition: si.h:157
SI::DescriptorGroup::array
GroupDescriptor ** array
Definition: si.h:493
SI::MultilingualComponentDescriptorTag
@ MultilingualComponentDescriptorTag
Definition: si.h:108
SI::Descriptor::getLength
virtual int getLength()
Definition: si.c:96
SI::DataBroadcastIdDescriptorTag
@ DataBroadcastIdDescriptorTag
Definition: si.h:116
SI::VariableLengthPart
Definition: si.h:288
SI::LocalTimeOffsetDescriptorTag
@ LocalTimeOffsetDescriptorTag
Definition: si.h:102
SI::MHP_PrefetchDescriptorTag
@ MHP_PrefetchDescriptorTag
Definition: si.h:182
SI::CRCSection::CheckCRCAndParse
bool CheckCRCAndParse()
Definition: si.c:65
SI::S2SatelliteDeliverySystemDescriptorTag
@ S2SatelliteDeliverySystemDescriptorTag
Definition: si.h:136
SI::MHP_SimpleApplicationBoundaryDescriptorTag
@ MHP_SimpleApplicationBoundaryDescriptorTag
Definition: si.h:186
SI::TargetBackgroundGridDescriptorTag
@ TargetBackgroundGridDescriptorTag
Definition: si.h:58
SI::StructureLoop::getNextAsPointer
T * getNextAsPointer(Iterator &it)
Definition: si.h:358
SI::PrivateDataSpecifierDescriptorTag
@ PrivateDataSpecifierDescriptorTag
Definition: si.h:109
SI::ServiceDescriptorTag
@ ServiceDescriptorTag
Definition: si.h:86
SI::TypeLoop::hasNext
bool hasNext(Iterator &it)
Definition: si.h:459
SI::String
Definition: si.h:497
headers.h
SI::ComponentDescriptorTag
@ ComponentDescriptorTag
Definition: si.h:94
SI::StreamIdentifierDescriptorTag
@ StreamIdentifierDescriptorTag
Definition: si.h:96
SI::MHP_DescriptorLoop::MHP_DescriptorLoop
MHP_DescriptorLoop()
Definition: si.h:464
SI::CharArray::addOffset
void addOffset(int offset)
Definition: util.h:65
SI::Loop::Iterator::reset
void reset()
Definition: si.h:326
SI::VariableLengthPart::length
int length
Definition: si.h:296
SI::LinkageTypeInformationService
@ LinkageTypeInformationService
Definition: si.h:204
SI::PremiereContentTransmissionDescriptorTag
@ PremiereContentTransmissionDescriptorTag
Definition: si.h:188
SI::SystemClockDescriptorTag
@ SystemClockDescriptorTag
Definition: si.h:62
SI::TypeLoop
Definition: si.h:434
SI::NumberedSection::getCurrentNextIndicator
bool getCurrentNextIndicator() const
Definition: si.c:80
SI::DescriptorGroup::~DescriptorGroup
~DescriptorGroup()
Definition: si.c:187
SI::MHP_DVBHTMLApplicationDescriptorTag
@ MHP_DVBHTMLApplicationDescriptorTag
Definition: si.h:178
SI::XAITPidDescriptorTag
@ XAITPidDescriptorTag
Definition: si.h:161
SI::LinkageTypeMobileHandover
@ LinkageTypeMobileHandover
Definition: si.h:211
SI::NumberedSection::getLastSectionNumber
int getLastSectionNumber() const
Definition: si.c:92
SI::TableIdTDT
@ TableIdTDT
Definition: si.h:40
SI::HdSimulcastLogicalChannelDescriptorTag
@ HdSimulcastLogicalChannelDescriptorTag
Definition: si.h:146
SI::MessageDescriptorTag
@ MessageDescriptorTag
Definition: si.h:156
SI::Section::getTableId
TableId getTableId() const
Definition: si.c:45
SI::GroupDescriptor::getLastDescriptorNumber
virtual int getLastDescriptorNumber()=0
SI::Object::isValid
bool isValid()
Definition: si.h:238
SI::Object::checkSize
bool checkSize(int offset)
Definition: si.c:37
SI::SmoothingBufferDescriptorTag
@ SmoothingBufferDescriptorTag
Definition: si.h:67
SI::NumberedSection::getSectionNumber
int getSectionNumber() const
Definition: si.c:88
SI::TypeLoop::getNext
T getNext(Iterator &it) const
Definition: si.h:453
SI::RelatedContentDescriptorTag
@ RelatedContentDescriptorTag
Definition: si.h:131
SI::getCharacterTable
const char * getCharacterTable(const unsigned char *&buffer, int &length, bool *isSingleByte)
Definition: si.c:364
SI::EacemStreamIdentifierDescriptorTag
@ EacemStreamIdentifierDescriptorTag
Definition: si.h:145
SI::Object::getData
CharArray getData()
Definition: si.h:236
SI::ServiceListDescriptorTag
@ ServiceListDescriptorTag
Definition: si.h:79
SI::TableIdSDT
@ TableIdSDT
Definition: si.h:29
SI::DSNGDescriptorTag
@ DSNGDescriptorTag
Definition: si.h:118
SI::LinkageTypeTSContainingSsuBatOrNit
@ LinkageTypeTSContainingSsuBatOrNit
Definition: si.h:213
SI::EightBit
uint8_t EightBit
Definition: si.h:429
SI::LinkageType
LinkageType
Definition: si.h:204
SI::LinkageTypeDataBroadcastService
@ LinkageTypeDataBroadcastService
Definition: si.h:209
SI::IBPDescriptorTag
@ IBPDescriptorTag
Definition: si.h:69
SI::LinkageTypeSystemSoftwareUpdateService
@ LinkageTypeSystemSoftwareUpdateService
Definition: si.h:212
SI::TeletextDescriptorTag
@ TeletextDescriptorTag
Definition: si.h:100
SI::TableIdTOT
@ TableIdTOT
Definition: si.h:43
SI::ParentalRatingDescriptorTag
@ ParentalRatingDescriptorTag
Definition: si.h:99
SI::EnhancedAC3DescriptorTag
@ EnhancedAC3DescriptorTag
Definition: si.h:137
SI::TableIdNIT
@ TableIdNIT
Definition: si.h:27
SI::AACDescriptorTag
@ AACDescriptorTag
Definition: si.h:139
SI::NumberedSection::getTableIdExtension
int getTableIdExtension() const
Definition: si.c:72
SI::LinkageTypeRCSMap
@ LinkageTypeRCSMap
Definition: si.h:210
SI::TableIdEIT_schedule_last
@ TableIdEIT_schedule_last
Definition: si.h:36
SI::VideoDepthRangeDescriptorTag
@ VideoDepthRangeDescriptorTag
Definition: si.h:164
SI::TableIdRST
@ TableIdRST
Definition: si.h:41
SI::TableIdPMT
@ TableIdPMT
Definition: si.h:25
SI::Loop::Iterator::Iterator
Iterator()
Definition: si.h:325
SI::LoopElement
Definition: si.h:299
SI::MHP_DelegatedApplicationDescriptorTag
@ MHP_DelegatedApplicationDescriptorTag
Definition: si.h:183
SI::CRCSection::CRCSection
CRCSection(const unsigned char *data, bool doCopy=true)
Definition: si.h:265
SI::TableIdEIT_schedule_Other_last
@ TableIdEIT_schedule_Other_last
Definition: si.h:39
SI::DescriptorGroup::Add
bool Add(GroupDescriptor *d)
Definition: si.c:201
SI::MHP_IPv4RoutingDescriptorTag
@ MHP_IPv4RoutingDescriptorTag
Definition: si.h:176
SI::AdaptationFieldDataDescriptorTag
@ AdaptationFieldDataDescriptorTag
Definition: si.h:126
SI::DataBroadcastDescriptorTag
@ DataBroadcastDescriptorTag
Definition: si.h:114
SI::AncillaryDataDescriptorTag
@ AncillaryDataDescriptorTag
Definition: si.h:121
SI::LinkageTypePremiere
@ LinkageTypePremiere
Definition: si.h:214
SI::RunningStatusPausing
@ RunningStatusPausing
Definition: si.h:200
SI::AC3DescriptorTag
@ AC3DescriptorTag
Definition: si.h:120
SI::ServiceMoveDescriptorTag
@ ServiceMoveDescriptorTag
Definition: si.h:110
SI::CharArray::getData
const unsigned char * getData() const
Definition: util.h:51
SI::RunningStatusRunning
@ RunningStatusRunning
Definition: si.h:201
SI::DescriptorGroup::isComplete
bool isComplete()
Definition: si.c:215
SI::TableIdPAT
@ TableIdPAT
Definition: si.h:23
SI::RunningStatusNotRunning
@ RunningStatusNotRunning
Definition: si.h:198
SI::MHP_SimpleApplicationLocationDescriptorTag
@ MHP_SimpleApplicationLocationDescriptorTag
Definition: si.h:185
SI::C2DeliverySystemDescriptorTag
@ C2DeliverySystemDescriptorTag
Definition: si.h:162
SI::TableId
TableId
Definition: si.h:23
SI::TableIdEIT_schedule_first
@ TableIdEIT_schedule_first
Definition: si.h:35
SI::CaIdentifierDescriptorTag
@ CaIdentifierDescriptorTag
Definition: si.h:97
SI::GroupDescriptor
Definition: si.h:476
SI::Descriptor::getDescriptorTag
DescriptorTag getDescriptorTag() const
Definition: si.c:100
SI::SHDeliverySystemDescriptorTag
@ SHDeliverySystemDescriptorTag
Definition: si.h:153
SI::ServiceRelocatedDescriptorTag
@ ServiceRelocatedDescriptorTag
Definition: si.h:159
SI::TableIdST
@ TableIdST
Definition: si.h:42
SI::TableIdSIT
@ TableIdSIT
Definition: si.h:45
SI::LinkageDescriptorTag
@ LinkageDescriptorTag
Definition: si.h:88
SI::TimeShiftedEventDescriptorTag
@ TimeShiftedEventDescriptorTag
Definition: si.h:93
SI::T2MIDescriptorTag
@ T2MIDescriptorTag
Definition: si.h:165
SI::Object
Definition: si.h:230
SI::TransportStreamDescriptorTag
@ TransportStreamDescriptorTag
Definition: si.h:117
SI::TimeSliceFecIdentifierDescriptorTag
@ TimeSliceFecIdentifierDescriptorTag
Definition: si.h:134
SI::ISO639LanguageDescriptorTag
@ ISO639LanguageDescriptorTag
Definition: si.h:61
SI::NumberedSection
Definition: si.h:274
SI::ShortSmoothingBufferDescriptorTag
@ ShortSmoothingBufferDescriptorTag
Definition: si.h:111
SI::MHP_IPv6RoutingDescriptorTag
@ MHP_IPv6RoutingDescriptorTag
Definition: si.h:177
SI::MultiplexBufferUtilizationDescriptorTag
@ MultiplexBufferUtilizationDescriptorTag
Definition: si.h:63
SI::NumberedSection::NumberedSection
NumberedSection()
Definition: si.h:277
SI::ExtendedEventDescriptors
Definition: descriptor.h:51
SI::ContentIdentifierDescriptorTag
@ ContentIdentifierDescriptorTag
Definition: si.h:133
SI::Loop
Definition: si.h:321
SI::DescriptorLoop::domain
DescriptorTagDomain domain
Definition: si.h:426
SI::DescriptorTagDomain
DescriptorTagDomain
Definition: si.h:195
SI::ECMRepetitionRateDescriptorTag
@ ECMRepetitionRateDescriptorTag
Definition: si.h:135
SI::MaximumBitrateDescriptorTag
@ MaximumBitrateDescriptorTag
Definition: si.h:65
SI::ServiceIdentifierDescriptorTag
@ ServiceIdentifierDescriptorTag
Definition: si.h:127
SI::TelephoneDescriptorTag
@ TelephoneDescriptorTag
Definition: si.h:101
SI::CharArray::isValid
bool isValid() const
Definition: util.h:62
SI::CableDeliverySystemDescriptorTag
@ CableDeliverySystemDescriptorTag
Definition: si.h:82
SI::String::decodeText
void decodeText(char *buffer, int size, const char **fromCode=NULL)
Definition: si.c:475
SI::Object::Object
Object()
Definition: si.c:23
SI::TypeLoop::getCount
int getCount()
Definition: si.h:436
SI::Section::getLength
virtual int getLength()
Definition: si.c:49
SI::NetworkChangeNotifyDescriptorTag
@ NetworkChangeNotifyDescriptorTag
Definition: si.h:155
SI::UnimplementedDescriptorTag
@ UnimplementedDescriptorTag
Definition: si.h:192
SI::CRCSection::isCRCValid
bool isCRCValid()
Definition: si.c:61
SI::ScramblingDescriptorTag
@ ScramblingDescriptorTag
Definition: si.h:115
SI::MVCExtensionDescriptorTag
@ MVCExtensionDescriptorTag
Definition: si.h:76
SI::Object::data
CharArray data
Definition: si.h:241
SI::Descriptor
Definition: si.h:302
SI::StructureLoop
Definition: si.h:339
SI::NumberedSection::moreThanOneSection
bool moreThanOneSection() const
Definition: si.h:283
SI::BouquetNameDescriptorTag
@ BouquetNameDescriptorTag
Definition: si.h:85
SI::TVAIdDescriptorTag
@ TVAIdDescriptorTag
Definition: si.h:132
SI::RunningStatusUndefined
@ RunningStatusUndefined
Definition: si.h:197
SI::MHP_DescriptorLoop
Definition: si.h:462
SI::ServiceAvailabilityDescriptorTag
@ ServiceAvailabilityDescriptorTag
Definition: si.h:128
SI::SubtitlingDescriptorTag
@ SubtitlingDescriptorTag
Definition: si.h:103
SI::CRCSection
Definition: si.h:262
SI
Definition: descriptor.c:16
SI::FrequencyListDescriptorTag
@ FrequencyListDescriptorTag
Definition: si.h:112
SI::ShortEventDescriptorTag
@ ShortEventDescriptorTag
Definition: si.h:91
SI::LinkageTypeTSContainingCompleteNetworkBouquetSi
@ LinkageTypeTSContainingCompleteNetworkBouquetSi
Definition: si.h:207
SI::CharArray::TwoBytes
u_int16_t TwoBytes(const int index) const
Definition: util.h:59
SI::MHP_ApplicationNameDescriptorTag
@ MHP_ApplicationNameDescriptorTag
Definition: si.h:170
SI::TimeShiftedServiceDescriptorTag
@ TimeShiftedServiceDescriptorTag
Definition: si.h:90
SI::CopyrightDescriptorTag
@ CopyrightDescriptorTag
Definition: si.h:64
SI::VariableLengthPart::getLength
virtual int getLength()
Definition: si.h:294
SI::MHP_DVBJApplicationLocationDescriptorTag
@ MHP_DVBJApplicationLocationDescriptorTag
Definition: si.h:173
SI::TableIdSDT_other
@ TableIdSDT_other
Definition: si.h:30
SI::DescriptorGroup
Definition: si.h:482
SI::T2DeliverySystemDescriptorTag
@ T2DeliverySystemDescriptorTag
Definition: si.h:152
SI::DescriptorGroup::length
int length
Definition: si.h:492
SI::NumberedSection::NumberedSection
NumberedSection(const unsigned char *data, bool doCopy=true)
Definition: si.h:276
SI::CharArray::FourBytes
u_int32_t FourBytes(const int index) const
Definition: util.h:60
SI::CPDescriptorTag
@ CPDescriptorTag
Definition: si.h:150
SI::MultilingualNetworkNameDescriptorTag
@ MultilingualNetworkNameDescriptorTag
Definition: si.h:105
SI::StructureLoop::getNext
bool getNext(T &obj, Iterator &it)
Definition: si.h:343
SI::DescriptorGroup::Delete
void Delete()
Definition: si.c:193
SI::AnnouncementSupportDescriptorTag
@ AnnouncementSupportDescriptorTag
Definition: si.h:124
SI::AudioTypeUndefined
@ AudioTypeUndefined
Definition: si.h:217
SI::LinkageTypeEPGService
@ LinkageTypeEPGService
Definition: si.h:205
SI::CRCSection::CRCSection
CRCSection()
Definition: si.h:266
SI::StuffingDescriptorTag
@ StuffingDescriptorTag
Definition: si.h:80
SI::CellListDescriptorTag
@ CellListDescriptorTag
Definition: si.h:122
SI::RunningStatus
RunningStatus
Definition: si.h:197
SI::AudioTypeVisualImpairedCommentary
@ AudioTypeVisualImpairedCommentary
Definition: si.h:220
SI::TableIdAIT
@ TableIdAIT
Definition: si.h:46
SI::LinkageTypeCaReplacementService
@ LinkageTypeCaReplacementService
Definition: si.h:206
SI::SetOverrideCharacterTable
bool SetOverrideCharacterTable(const char *CharacterTable)
Definition: si.c:324
SI::ImageIconDescriptorTag
@ ImageIconDescriptorTag
Definition: si.h:148
SI::ContentDescriptorTag
@ ContentDescriptorTag
Definition: si.h:98
SI::TableIdEIT_schedule_Other_first
@ TableIdEIT_schedule_Other_first
Definition: si.h:38
SI::DescriptorTag
DescriptorTag
Definition: si.h:51
SI::LinkageTypeServiceReplacementService
@ LinkageTypeServiceReplacementService
Definition: si.h:208
SI::PCIT
@ PCIT
Definition: si.h:195
SI::TableIdEIT_presentFollowing
@ TableIdEIT_presentFollowing
Definition: si.h:32
SI::TypeLoop::operator[]
T operator[](const int index) const
Definition: si.h:437
SI::DescriptorLoop::getNext
Descriptor * getNext(Iterator &it)
Definition: si.c:112
SI::String::Parse
virtual void Parse()
Definition: si.h:523
SI::TableIdTSDT
@ TableIdTSDT
Definition: si.h:26
SI::MocaicDescriptorTag
@ MocaicDescriptorTag
Definition: si.h:95
SI::SetSystemCharacterTable
bool SetSystemCharacterTable(const char *CharacterTable)
Definition: si.c:339
SI::DTSDescriptorTag
@ DTSDescriptorTag
Definition: si.h:138
SI::Section
Definition: si.h:250
SI::CPIdentifierDescriptorTag
@ CPIdentifierDescriptorTag
Definition: si.h:151
SI::VariableLengthPart::setData
void setData(CharArray d, int l)
Definition: si.h:291
SI::CaDescriptorTag
@ CaDescriptorTag
Definition: si.h:60
SI::ExtendedEventDescriptorTag
@ ExtendedEventDescriptorTag
Definition: si.h:92
SI::VariableLengthPart::setDataAndOffset
void setDataAndOffset(CharArray d, int l, int &offset)
Definition: si.h:293
SI::MHP_DVBHTMLApplicationBoundaryDescriptorTag
@ MHP_DVBHTMLApplicationBoundaryDescriptorTag
Definition: si.h:180
SI::TableIdEIT_presentFollowing_other
@ TableIdEIT_presentFollowing_other
Definition: si.h:33
SI::Loop::Iterator::i
int i
Definition: si.h:332
SI::TableIdBAT
@ TableIdBAT
Definition: si.h:31
SI::PreferredNameListDescriptorTag
@ PreferredNameListDescriptorTag
Definition: si.h:143
SI::PCIT_DescriptorLoop
Definition: si.h:468
SI::DescriptorLoop::createDescriptor
Descriptor * createDescriptor(int &i, bool returnUnimplemetedDescriptor)
Definition: si.c:159
SI::MHP_ApplicationStorageDescriptorTag
@ MHP_ApplicationStorageDescriptorTag
Definition: si.h:184
SI::AudioTypeCleanEffects
@ AudioTypeCleanEffects
Definition: si.h:218
SI::TableIdNIT_other
@ TableIdNIT_other
Definition: si.h:28
SI::VBIDataDescriptorTag
@ VBIDataDescriptorTag
Definition: si.h:83
SI::String::getText
char * getText()
Definition: si.c:222
SI::DescriptorGroup::deleteOnDesctruction
bool deleteOnDesctruction
Definition: si.h:494
SI::PDCDescriptorTag
@ PDCDescriptorTag
Definition: si.h:119
SI::MHP_DVBHTMLApplicationLocationDescriptorTag
@ MHP_DVBHTMLApplicationLocationDescriptorTag
Definition: si.h:179
SI::Parsable
Definition: util.h:127
SI::SatelliteDeliverySystemDescriptorTag
@ SatelliteDeliverySystemDescriptorTag
Definition: si.h:81
SI::SVCExtensionDescriptorTag
@ SVCExtensionDescriptorTag
Definition: si.h:75
util.h
SI::PCIT_DescriptorLoop::PCIT_DescriptorLoop
PCIT_DescriptorLoop()
Definition: si.h:470
SI::MHP_TransportProtocolDescriptorTag
@ MHP_TransportProtocolDescriptorTag
Definition: si.h:171
SI::NVODReferenceDescriptorTag
@ NVODReferenceDescriptorTag
Definition: si.h:89
SI::DescriptorLoop::getDescriptorTags
int getDescriptorTags(T *tags)
Definition: si.h:413
SI::NumberedSection::getVersionNumber
int getVersionNumber() const
Definition: si.c:84
SI::SixteenBit
uint16_t SixteenBit
Definition: si.h:430
SI::ThirtyTwoBit
uint32_t ThirtyTwoBit
Definition: si.h:431
SI::PrivateDataIndicatorDescriptorTag
@ PrivateDataIndicatorDescriptorTag
Definition: si.h:66
SI::RunningStatusStartsInAFewSeconds
@ RunningStatusStartsInAFewSeconds
Definition: si.h:199
SI::Object::getLength
virtual int getLength()=0
SI::TableIdPremiereCIT
@ TableIdPremiereCIT
Definition: si.h:47
SI::CpcmDeliverySignallingDescriptor
@ CpcmDeliverySignallingDescriptor
Definition: si.h:149
SI::AudioStreamDescriptorTag
@ AudioStreamDescriptorTag
Definition: si.h:54
SI::Object::setData
void setData(const unsigned char *data, int size, bool doCopy=true)
Definition: si.c:29
SI::Loop::Parse
virtual void Parse()
Definition: si.h:335
SI::VideoStreamDescriptorTag
@ VideoStreamDescriptorTag
Definition: si.h:53
SI::CarouselIdentifierDescriptorTag
@ CarouselIdentifierDescriptorTag
Definition: si.h:71
SI::DescriptorGroup::getDescriptors
GroupDescriptor ** getDescriptors()
Definition: si.h:489
SI::AVCDescriptorTag
@ AVCDescriptorTag
Definition: si.h:74
SI::AudioType
AudioType
Definition: si.h:217
SI::CellFrequencyLinkDescriptorTag
@ CellFrequencyLinkDescriptorTag
Definition: si.h:123
SI::DescriptorLoop
Definition: si.h:378
SI::PreferredNameIdentifierDescriptorTag
@ PreferredNameIdentifierDescriptorTag
Definition: si.h:144
SI::Descriptor::getDescriptor
static Descriptor * getDescriptor(CharArray d, DescriptorTagDomain domain, bool returnUnimplemetedDescriptor)
Definition: si.c:530