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