openATV enigma2
openATV is an open source SetTopBox Graphical user interface.
atsc.h
Go to the documentation of this file.
1 #ifndef __ATSC_H__
2 #define __ATSC_H__
3 
4 #include <sys/types.h>
5 #include <lib/dvb/specs.h>
6 
7 #include <dvbsi++/long_crc_section.h>
8 #include <dvbsi++/descriptor_container.h>
9 
11 {
12 protected:
13  std::vector<uint8_t> dataBytes;
14  uint8_t mode;
15  uint8_t compression;
16 
17 public:
18  StringSegment(const uint8_t *const buffer);
19  ~StringSegment(void);
20 
21  const uint8_t getMode(void) const;
22  const uint8_t getCompression(void) const;
23  const std::vector<uint8_t> &getData(void) const;
24  const std::string getValue(void) const;
25 };
26 
28 {
29 protected:
30  std::string iso639LanguageCode;
31  uint32_t size;
32  std::vector<StringSegment *> segments;
33 
34 public:
35  StringValue(const uint8_t *const buffer);
36  ~StringValue(void);
37 
38  const uint32_t getSize(void) const;
39  const std::string &getIso639LanguageCode(void) const;
40  const std::vector<StringSegment *> &getSegments(void) const;
41  const std::string getValue(void) const;
42 };
43 
44 typedef std::list<StringValue*> StringValueList;
45 typedef StringValueList::iterator StringValueListIterator;
46 typedef StringValueList::const_iterator StringValueListConstIterator;
47 
49 {
50 protected:
52 
53 public:
54  MultipleStringStructure(const uint8_t *const buffer);
56 
57  const StringValueList *getStrings(void) const;
58 };
59 
60 class VirtualChannel : public DescriptorContainer
61 {
62 protected:
63  std::string name;
64  unsigned majorChannelNumber : 10;
65  unsigned minorChannelNumber : 10;
66  unsigned transportStreamId : 16;
67  unsigned serviceId : 16;
68  unsigned sourceId : 16;
69  unsigned serviceType : 6;
70  unsigned accessControlled : 1;
71  unsigned descriptorsLoopLength : 10;
72 
73 public:
74  VirtualChannel(const uint8_t *const buffer, bool terrestrial);
75  ~VirtualChannel(void);
76 
77  const std::string &getName(void) const;
78  uint16_t getMajorChannelNumber(void) const;
79  uint16_t getMinorChannelNumber(void) const;
80  uint16_t getTransportStreamId(void) const;
81  uint16_t getServiceId(void) const;
82  uint16_t getSourceId(void) const;
83  uint8_t getServiceType(void) const;
84  uint16_t getDescriptorsLoopLength(void) const;
85  bool isAccessControlled(void) const;
86 };
87 
88 typedef std::list<VirtualChannel*> VirtualChannelList;
89 typedef VirtualChannelList::iterator VirtualChannelListIterator;
90 typedef VirtualChannelList::const_iterator VirtualChannelListConstIterator;
91 
92 class VirtualChannelTableSection : public LongCrcSection
93 {
94 protected:
95  unsigned transportStreamId : 16;
97 
98 public:
99  VirtualChannelTableSection(const uint8_t * const buffer);
101 
102  static const uint16_t LENGTH = 4096;
103  static const uint16_t PID = 0x1ffb;
104  static const int TID = 0xc8;
105  static const uint32_t TIMEOUT = 5000;
106 
107  uint16_t getTransportStreamId(void) const;
108  const VirtualChannelList *getChannels(void) const;
109 };
110 
111 class ExtendedChannelNameDescriptor : public Descriptor
112 {
113 protected:
115 
116 public:
117  ExtendedChannelNameDescriptor(const uint8_t * const buffer);
119 
120  const std::string getName(void) const;
121 };
122 
123 class SystemTimeTableSection : public DescriptorContainer, public LongCrcSection
124 {
125 protected:
126  unsigned systemTime : 32;
127  unsigned gpsOffset : 8;
128 
129 public:
130  SystemTimeTableSection(const uint8_t * const buffer);
132 
133  static const uint16_t LENGTH = 4096;
134  static const uint16_t PID = 0x1ffb;
135  static const int TID = 0xcd;
136  static const uint32_t TIMEOUT = 5000;
137 
138  uint32_t getSystemTime(void) const;
139  uint8_t getGPSOffset(void) const;
140 };
141 
142 class MasterGuideTable : public DescriptorContainer
143 {
144 protected:
145  unsigned PID : 16;
146  unsigned tableType : 16;
147  unsigned numberBytes : 32;
148  unsigned descriptorsLoopLength : 10;
149 
150 public:
151  MasterGuideTable(const uint8_t *const buffer);
152  ~MasterGuideTable(void);
153 
154  uint16_t getPID(void) const;
155  uint16_t getTableType(void) const;
156  uint32_t getNumberBytes(void) const;
157  uint16_t getDescriptorsLoopLength(void) const;
158 };
159 
160 typedef std::list<MasterGuideTable*> MasterGuideTableList;
161 typedef MasterGuideTableList::iterator MasterGuideTableListIterator;
162 typedef MasterGuideTableList::const_iterator MasterGuideTableListConstIterator;
163 
164 class MasterGuideTableSection : public LongCrcSection
165 {
166 protected:
168 
169 public:
170  MasterGuideTableSection(const uint8_t * const buffer);
172 
173  static const uint16_t LENGTH = 4096;
174  static const uint16_t PID = 0x1ffb;
175  static const int TID = 0xc7;
176  static const uint32_t TIMEOUT = 1000;
177 
178  const MasterGuideTableList *getTables(void) const;
179 };
180 
181 class ATSCEvent : public DescriptorContainer
182 {
183 protected:
185  unsigned eventId : 14;
186  unsigned startTime : 32;
187  unsigned ETMLocation : 2;
188  unsigned lengthInSeconds : 20;
189  unsigned titleLength : 8;
190  unsigned descriptorsLoopLength : 12;
191 
192 public:
193  ATSCEvent(const uint8_t *const buffer);
194  ~ATSCEvent(void);
195 
196  const std::string getTitle(const std::string &language) const;
197  uint16_t getEventId(void) const;
198  uint32_t getStartTime(void) const;
199  uint8_t getETMLocation(void) const;
200  uint32_t getLengthInSeconds(void) const;
201  uint16_t getTitleLength(void) const;
202  uint16_t getDescriptorsLoopLength(void) const;
203 };
204 
205 typedef std::list<ATSCEvent*> ATSCEventList;
206 typedef ATSCEventList::iterator ATSCEventListIterator;
207 typedef ATSCEventList::const_iterator ATSCEventListConstIterator;
208 
209 class ATSCEventInformationSection : public LongCrcSection
210 {
211 protected:
213 
214 public:
215  ATSCEventInformationSection(const uint8_t * const buffer);
217 
218  static const uint16_t LENGTH = 4096;
219  static const int TID = 0xcb;
220  static const uint32_t TIMEOUT = 5000;
221 
222  const ATSCEventList *getEvents(void) const;
223 };
224 
225 class ExtendedTextTableSection : public LongCrcSection
226 {
227 protected:
228  unsigned ETMId : 32;
230 
231 public:
232  ExtendedTextTableSection(const uint8_t * const buffer);
234 
235  static const uint16_t LENGTH = 4096;
236  static const int TID = 0xcc;
237  static const uint32_t TIMEOUT = 10000;
238 
239  uint32_t getETMId(void) const;
240  const std::string getMessage(const std::string &language) const;
241 };
242 
244 {
246 public:
248  {
251  m_spec.tid_mask = 0xfe;
256  }
257  operator eDVBTableSpec &()
258  {
259  return m_spec;
260  }
261 };
262 
264 {
266 public:
268  {
275  }
276  operator eDVBTableSpec &()
277  {
278  return m_spec;
279  }
280 };
281 
283 {
285 public:
287  {
294  }
295  operator eDVBTableSpec &()
296  {
297  return m_spec;
298  }
299 };
300 
302 {
304 public:
305  eATSCEITSpec(int pid, int source_id)
306  {
307  m_spec.pid = pid;
309  m_spec.tidext = source_id;
314  }
315  operator eDVBTableSpec &()
316  {
317  return m_spec;
318  }
319 };
320 
322 {
324 public:
325  eATSCETTSpec(int pid)
326  {
327  m_spec.pid = pid;
333  }
334  operator eDVBTableSpec &()
335  {
336  return m_spec;
337  }
338 };
339 
340 #endif
std::list< VirtualChannel * > VirtualChannelList
Definition: atsc.h:88
std::list< MasterGuideTable * > MasterGuideTableList
Definition: atsc.h:160
MasterGuideTableList::const_iterator MasterGuideTableListConstIterator
Definition: atsc.h:162
StringValueList::const_iterator StringValueListConstIterator
Definition: atsc.h:46
MasterGuideTableList::iterator MasterGuideTableListIterator
Definition: atsc.h:161
ATSCEventList::const_iterator ATSCEventListConstIterator
Definition: atsc.h:207
VirtualChannelList::iterator VirtualChannelListIterator
Definition: atsc.h:89
std::list< StringValue * > StringValueList
Definition: atsc.h:44
StringValueList::iterator StringValueListIterator
Definition: atsc.h:45
std::list< ATSCEvent * > ATSCEventList
Definition: atsc.h:205
VirtualChannelList::const_iterator VirtualChannelListConstIterator
Definition: atsc.h:90
ATSCEventList::iterator ATSCEventListIterator
Definition: atsc.h:206
Definition: atsc.h:182
~ATSCEvent(void)
Definition: atsc.cpp:453
unsigned eventId
Definition: atsc.h:185
uint32_t getLengthInSeconds(void) const
Definition: atsc.cpp:499
MultipleStringStructure * title
Definition: atsc.h:184
uint8_t getETMLocation(void) const
Definition: atsc.cpp:489
unsigned lengthInSeconds
Definition: atsc.h:188
uint32_t getStartTime(void) const
Definition: atsc.cpp:494
const std::string getTitle(const std::string &language) const
Definition: atsc.cpp:458
uint16_t getTitleLength(void) const
Definition: atsc.cpp:504
uint16_t getDescriptorsLoopLength(void) const
Definition: atsc.cpp:509
uint16_t getEventId(void) const
Definition: atsc.cpp:484
unsigned descriptorsLoopLength
Definition: atsc.h:190
unsigned titleLength
Definition: atsc.h:189
ATSCEvent(const uint8_t *const buffer)
Definition: atsc.cpp:436
unsigned startTime
Definition: atsc.h:186
unsigned ETMLocation
Definition: atsc.h:187
Definition: atsc.h:210
~ATSCEventInformationSection(void)
Definition: atsc.cpp:528
ATSCEventInformationSection(const uint8_t *const buffer)
Definition: atsc.cpp:514
const ATSCEventList * getEvents(void) const
Definition: atsc.cpp:534
static const int TID
Definition: atsc.h:219
ATSCEventList events
Definition: atsc.h:212
static const uint32_t TIMEOUT
Definition: atsc.h:220
static const uint16_t LENGTH
Definition: atsc.h:218
Definition: atsc.h:112
const std::string getName(void) const
Definition: atsc.cpp:344
MultipleStringStructure * value
Definition: atsc.h:114
ExtendedChannelNameDescriptor(const uint8_t *const buffer)
Definition: atsc.cpp:333
~ExtendedChannelNameDescriptor(void)
Definition: atsc.cpp:339
Definition: atsc.h:226
~ExtendedTextTableSection(void)
Definition: atsc.cpp:546
unsigned ETMId
Definition: atsc.h:228
ExtendedTextTableSection(const uint8_t *const buffer)
Definition: atsc.cpp:539
MultipleStringStructure * message
Definition: atsc.h:229
static const int TID
Definition: atsc.h:236
const std::string getMessage(const std::string &language) const
Definition: atsc.cpp:556
static const uint16_t LENGTH
Definition: atsc.h:235
static const uint32_t TIMEOUT
Definition: atsc.h:237
uint32_t getETMId(void) const
Definition: atsc.cpp:551
Definition: atsc.h:143
unsigned tableType
Definition: atsc.h:146
uint16_t getPID(void) const
Definition: atsc.cpp:391
MasterGuideTable(const uint8_t *const buffer)
Definition: atsc.cpp:374
~MasterGuideTable(void)
Definition: atsc.cpp:387
uint32_t getNumberBytes(void) const
Definition: atsc.cpp:401
unsigned numberBytes
Definition: atsc.h:147
uint16_t getDescriptorsLoopLength(void) const
Definition: atsc.cpp:406
unsigned descriptorsLoopLength
Definition: atsc.h:148
unsigned PID
Definition: atsc.h:145
uint16_t getTableType(void) const
Definition: atsc.cpp:396
Definition: atsc.h:165
static const uint16_t LENGTH
Definition: atsc.h:173
const MasterGuideTableList * getTables(void) const
Definition: atsc.cpp:431
static const uint16_t PID
Definition: atsc.h:174
MasterGuideTableSection(const uint8_t *const buffer)
Definition: atsc.cpp:411
static const int TID
Definition: atsc.h:175
~MasterGuideTableSection(void)
Definition: atsc.cpp:425
static const uint32_t TIMEOUT
Definition: atsc.h:176
MasterGuideTableList tables
Definition: atsc.h:167
Definition: atsc.h:49
MultipleStringStructure(const uint8_t *const buffer)
Definition: atsc.cpp:183
const StringValueList * getStrings(void) const
Definition: atsc.cpp:202
StringValueList strings
Definition: atsc.h:51
~MultipleStringStructure(void)
Definition: atsc.cpp:196
Definition: atsc.h:11
StringSegment(const uint8_t *const buffer)
Definition: atsc.cpp:11
std::vector< uint8_t > dataBytes
Definition: atsc.h:13
const uint8_t getMode(void) const
Definition: atsc.cpp:23
const uint8_t getCompression(void) const
Definition: atsc.cpp:28
~StringSegment(void)
Definition: atsc.cpp:19
uint8_t compression
Definition: atsc.h:15
uint8_t mode
Definition: atsc.h:14
const std::string getValue(void) const
Definition: atsc.cpp:38
const std::vector< uint8_t > & getData(void) const
Definition: atsc.cpp:33
Definition: atsc.h:28
const std::string getValue(void) const
Definition: atsc.cpp:168
StringValue(const uint8_t *const buffer)
Definition: atsc.cpp:137
std::string iso639LanguageCode
Definition: atsc.h:30
const std::vector< StringSegment * > & getSegments(void) const
Definition: atsc.cpp:163
uint32_t size
Definition: atsc.h:31
const std::string & getIso639LanguageCode(void) const
Definition: atsc.cpp:158
const uint32_t getSize(void) const
Definition: atsc.cpp:178
~StringValue(void)
Definition: atsc.cpp:152
std::vector< StringSegment * > segments
Definition: atsc.h:32
Definition: atsc.h:124
unsigned systemTime
Definition: atsc.h:126
uint8_t getGPSOffset(void) const
Definition: atsc.cpp:369
static const uint32_t TIMEOUT
Definition: atsc.h:136
static const uint16_t PID
Definition: atsc.h:134
static const int TID
Definition: atsc.h:135
~SystemTimeTableSection(void)
Definition: atsc.cpp:360
static const uint16_t LENGTH
Definition: atsc.h:133
unsigned gpsOffset
Definition: atsc.h:127
uint32_t getSystemTime(void) const
Definition: atsc.cpp:364
SystemTimeTableSection(const uint8_t *const buffer)
Definition: atsc.cpp:354
Definition: atsc.h:61
unsigned minorChannelNumber
Definition: atsc.h:65
unsigned serviceId
Definition: atsc.h:67
unsigned accessControlled
Definition: atsc.h:70
VirtualChannel(const uint8_t *const buffer, bool terrestrial)
Definition: atsc.cpp:207
unsigned majorChannelNumber
Definition: atsc.h:64
bool isAccessControlled(void) const
Definition: atsc.cpp:296
std::string name
Definition: atsc.h:63
unsigned transportStreamId
Definition: atsc.h:66
uint8_t getServiceType(void) const
Definition: atsc.cpp:286
uint16_t getDescriptorsLoopLength(void) const
Definition: atsc.cpp:291
const std::string & getName(void) const
Definition: atsc.cpp:256
uint16_t getTransportStreamId(void) const
Definition: atsc.cpp:271
unsigned sourceId
Definition: atsc.h:68
uint16_t getMajorChannelNumber(void) const
Definition: atsc.cpp:261
uint16_t getMinorChannelNumber(void) const
Definition: atsc.cpp:266
~VirtualChannel(void)
Definition: atsc.cpp:252
uint16_t getServiceId(void) const
Definition: atsc.cpp:276
uint16_t getSourceId(void) const
Definition: atsc.cpp:281
unsigned descriptorsLoopLength
Definition: atsc.h:71
unsigned serviceType
Definition: atsc.h:69
Definition: atsc.h:93
static const int TID
Definition: atsc.h:104
VirtualChannelList channels
Definition: atsc.h:96
const VirtualChannelList * getChannels(void) const
Definition: atsc.cpp:328
static const uint16_t LENGTH
Definition: atsc.h:102
static const uint32_t TIMEOUT
Definition: atsc.h:105
static const uint16_t PID
Definition: atsc.h:103
uint16_t getTransportStreamId(void) const
Definition: atsc.cpp:323
unsigned transportStreamId
Definition: atsc.h:95
~VirtualChannelTableSection(void)
Definition: atsc.cpp:317
VirtualChannelTableSection(const uint8_t *const buffer)
Definition: atsc.cpp:301
language
Definition: Language.py:57
Definition: atsc.h:302
eATSCEITSpec(int pid, int source_id)
Definition: atsc.h:305
eDVBTableSpec m_spec
Definition: atsc.h:303
Definition: atsc.h:322
eDVBTableSpec m_spec
Definition: atsc.h:323
eATSCETTSpec(int pid)
Definition: atsc.h:325
Definition: atsc.h:283
eDVBTableSpec m_spec
Definition: atsc.h:284
eATSCMGTSpec()
Definition: atsc.h:286
Definition: atsc.h:264
eDVBTableSpec m_spec
Definition: atsc.h:265
eDVBSTTSpec()
Definition: atsc.h:267
Definition: idvb.h:37
int tid_mask
Definition: idvb.h:38
int flags
Definition: idvb.h:58
int pid
Definition: idvb.h:38
int tid
Definition: idvb.h:38
int tidext
Definition: idvb.h:38
int timeout
Definition: idvb.h:40
@ tfHaveTIDExt
Definition: idvb.h:52
@ tfHaveTimeout
Definition: idvb.h:54
@ tfHaveTIDMask
Definition: idvb.h:55
@ tfAnyVersion
Definition: idvb.h:49
@ tfHaveTID
Definition: idvb.h:51
@ tfCheckCRC
Definition: idvb.h:53
Definition: atsc.h:244
eDVBTableSpec m_spec
Definition: atsc.h:245
eDVBVCTSpec()
Definition: atsc.h:247