MythTV  master
sctetables.h
Go to the documentation of this file.
1 // -*- Mode: c++ -*-
22 #ifndef SCTE_TABLES_H
23 #define SCTE_TABLES_H
24 
25 #include <cassert>
26 
27 // MythTV
28 #include "mpegtables.h"
29 #include "mythtvexp.h"
30 #include "iso639.h"
31 
32 // NOTE: MasterGuideTable defined in atsctables.h
33 // NOTE: VirtualChannelTable defined in atsctables.h
34 
35 // NOTE: Section 4.4.1 specifies that we should not attempt to
36 // use tables carrying a protocol_version greater than
37 // the one we are familiar with, as of the SCTE65-2002
38 // standard 0 is the only recognized version.
39 
41 {
42  public:
44  const unsigned char *beg, const unsigned char *end) :
45  m_beg(beg), m_end(end) { }
46 
47  // number_of_carriers 8 0.0+m_beg
48  uint NumberOfCarriers(void) const { return m_beg[0]; }
49  // spacing_unit 1 1.0+m_beg
50  enum // Table 5.4 Spacing Unit & Table 5.5 frequency unit
51  {
52  k10000Hz = 0x0,
53  k125000Hz = 0x1,
54  };
55  uint SpacingUnit(void) const { return m_beg[1]>>7; }
56  uint SpacingUnitHz(void) const { return SpacingUnit() ? 125000 : 1000; }
57  // zero 1 1.1+m_beg
58  // frequency_spacing 14 1.2+m_beg
59  uint FrequencySpacing(void) const
60  { return ((m_beg[1] & 0x3) << 8) | m_beg[2]; }
62  { return FrequencySpacing() * SpacingUnitHz(); }
63  // frequency_unit 1 3.0+m_beg
64  uint FrequencyUnit(void) const { return m_beg[3]>>7; }
65  uint FrequencyUnitHz(void) const { return FrequencyUnit() ? 125000 : 1000; }
66  // first_carrier_frequency 15 3.1+m_beg
68  { return ((m_beg[3] & 0x3) << 8) | m_beg[4]; }
69  uint64_t FirstCarrierFrequencyHz(void) const
70  { return (uint64_t)FirstCarrierFrequency() * FrequencyUnitHz(); }
71 
72  // descriptors_count 8 5.0+m_beg
73  uint DescriptorsCount(void) const { return m_beg[5]; }
74  // for (i=0; i<descriptors_count; i++) {
75  // descriptor() ? ?.0
76  // }
77  uint DescriptorsLength(void) const { return m_end - m_beg - 6; }
78  const unsigned char *Descriptors(void) const { return m_beg + 6; }
79 
80  QString toString(void) const;
81  QString toStringXML(uint indent_level) const;
82 
83  private:
84  const unsigned char *m_beg;
85  const unsigned char *m_end;
86 };
87 
89 {
90  public:
91  ModulationModeSubtable(const unsigned char *beg, const unsigned char *end) :
92  m_beg(beg), m_end(end) { }
93  // transmission_system 4 0.0+m_beg
94  enum // Table 5.7 TransmissionSystem
95  {
99  kTSITUQPSK = 3,
100  kTSATSC = 4,
102  // all other values are reserved
103  // ITU Rec. J.83 Annex A is the 8Mhz global standard,
104  // Annex B is the 6Mhz North American standard and
105  // Annex C is the 6Mhz Japanese standard. (QAM)
106  };
107  uint TransmissionSystem(void) const { return m_beg[0] >> 4; }
108  QString TransmissionSystemString(void) const;
109  // inner_coding_mode 4 0.4+m_beg
110  enum // Table 5.8
111  {
114  // reserved = 2,
116  // reserved = 4,
118  // reserved = 6,
122  // reserved = 10,
124  // reserved = 12,
125  // reserved = 13,
126  // reserved = 14,
127  kNone = 15,
128  // all other values are reserved
129  };
130  uint InnerCodingMode(void) const { return m_beg[0] & 0xf; }
131  QString InnerCodingModeString(void) const;
132  // split_bitstream_mode 1 1.0+m_beg
133  bool SplitBitstreamMode(void) const { return ( m_beg[1] & 0x80 ) != 0; }
134  // zero 2 1.1+m_beg
135  // modulation_format 5 1.3+m_beg
136  enum // Table 5.9
137  {
138  kUnknown = 0,
139  kQPSK = 1,
140  kBPSK = 2,
141  kOQPSK = 3,
142  kVSB8 = 4,
143  kVSB16 = 5,
144  kQAM16 = 6,
145  kQAM32 = 7,
146  kQAM64 = 8,
147  kQAM80 = 9, // last modulation format that 65 & 57 agree on
148  kQAM96 = 10,
149  kQAM112 = 11,
150  kQAM128 = 12,
151  kQAM160 = 13,
152  kQAM192 = 14,
153  kQAM224 = 15,
154  kQAM256 = 16,
155  kQAM320 = 17,
156  kQAM384 = 18,
157  kQAM448 = 19,
158  kQAM512 = 20,
159  kQAM640 = 21,
160  kQAM768 = 22,
161  kQAM896 = 23,
162  kQAM1024 = 24,
163  // all other values are reserved
164  };
165  uint ModulationFormat(void) const { return m_beg[1] & 0x1f; }
166  QString ModulationFormatString(void) const;
167  // zero 4 2.0+m_beg
168  // symbol_rate 28 2.4+m_beg
169  uint SymbolRate(void) const
170  {
171  return (((m_beg[2]&0xf)<<24) | (m_beg[3]<<16) |
172  (m_beg[4]<<8) | (m_beg[5]));
173  }
174  // descriptors_count 8 6.0+m_beg
175  uint DescriptorsCount(void) const { return m_beg[6]; }
176  // for (i=0; i<descriptors_count; i++) {
177  // descriptor() ? ?.0
178  // }
179  uint DescriptorsLength(void) const { return m_end - m_beg - 7; }
180  const unsigned char *Descriptors(void) const { return m_beg + 7; }
181 
182  static QString toString(void);
183  QString toStringXML(uint indent_level) const;
184 
185  private:
186  const unsigned char *m_beg;
187  const unsigned char *m_end;
188 };
189 
191 {
192  public:
194  PSIPTable(table)
195  {
197  Parse();
198  }
199  explicit SCTENetworkInformationTable(const PSIPTable &table) : PSIPTable(table)
200  {
202  Parse();
203  }
205  // SCTE65-2002, page 15, Table 5.1
206  // Name bits loc expected value
207  // table_id 8 0.0 0xC2
208  // zero 2 1.0 0
209  // reserved 2 1.2 3
210  // section_length 12 1.4
211  // ^^^ All above this line provided by PSIPTable
212  // zero 3 3.0 0
213  // protocol_version 5 3.3 0
214  // first_index 8 4.0 (value of 0 is illegal)
215  uint FirstIndex(void) const { return pesdata()[4]; }
216  // number_of_records 8 5.0
217  uint NumberOfRecords(void) const { return pesdata()[5]; }
218  // transmission_medium 4 6.0 0
219  uint TransmissionMedium(void) const { return pesdata()[6] >> 4; }
220  // table_subtype 4 6.4
221  enum // Table 5.2 NIT Subtype
222  {
223  kInvalid = 0x0,
224  kCarrierDefinitionSubtable = 0x1,
225  kModulationModeSubtable = 0x2,
226  // all other values are reserved
227  };
228  uint TableSubtype(void) const { return pesdata()[6] & 0xf; }
229  // for (i = 0; i < number_of_records; i++) {
230  // if (kCarrierDefinitionSubtable == table_subtype) {
232  { return {m_ptrs[i], m_ptrs[i+1]}; }
233  // if (kModulationModeSubtable == table_subtype) {
235  { return {m_ptrs[i], m_ptrs[i+1]}; }
236 
237  // }
238  // for (i=0; i<N; i++)
239  // descriptor() ? ?.0 optional (determined by looking
240  // at section_length)
242  { return SectionLength() - (m_ptrs.back() - pesdata()) - 4/*CRC*/; }
243  const unsigned char * Descriptors(void) const { return m_ptrs.back(); }
244  // CRC_32 32
245 
246  bool Parse(void);
247  QString toString(void) const override; // PSIPTable
248  QString toStringXML(uint indent_level) const override; // PSIPTable
249 
250  private:
251  vector<const unsigned char*> m_ptrs;
252 };
253 
255 {
256  public:
258  PSIPTable(table)
259  {
261  Parse();
262  }
263  explicit NetworkTextTable(const PSIPTable &table) : PSIPTable(table)
264  {
266  Parse();
267  }
268  ~NetworkTextTable() override { ; }
269  // SCTE65-2002, page 20, Table 5.10
270  // Name bits loc expected value
271  // table_id 8 0.0 0xC3
272  // zero 2 1.0 0
273  // reserved 2 1.2 3
274  // section_length 12 1.4
275  // ^^^ All above this line provided by PSIPTable
276  // zero 3 3.0 0
277  // protocol_version 5 3.3 0
278  // iso_639_language_code 24 4.0 see ISO 639.2/B
279  // * the value 0xFFFFFFFF shall match any language when text
280  // is only available in one language
281  int LanguageKey(void) const
282  { return iso639_str3_to_key(pesdata() + 4); }
283  QString LanguageString(void) const
284  { return iso639_key_to_str3(LanguageKey()); }
285  int CanonicalLanguageKey(void) const
286  { return iso639_key_to_canonical_key(LanguageKey()); }
287  QString CanonicalLanguageString(void) const
288  { return iso639_key_to_str3(CanonicalLanguageKey()); }
289  // transmission_medium 4 7.0 0
290  uint TransmissionMedium(void) const { return pesdata()[7] >> 4; }
291  // table_subtype 4 7.4 see Table 5.11
292  enum
293  {
294  kInvalid = 0x0,
295  kSourceNameSubtable = 0x6,
296  // all other values are reserved
297  };
298  uint TableSubtype(void) const { return pesdata()[7] & 0xf; }
299  // if (kSourceNameSubtable == table_subtype) {
300  // number_of_SNS_records 8 8.0
301  // for (i=0; i<number_of_SNS_records; i++) {
302  // application_type 1 0.0+_ptrs[i]
303  // zero 7 0.1+_ptrs[i] 0
304  // if (application_type)
305  // application_id 16 1.0+_ptrs[i]
306  // else
307  // source_id 16 1.0+_ptrs[i]
308  // name_length 8 3.0+_ptrs[i]
309  // source_name() name_length*8 4.0+_ptrs[i]
310  // sns_descriptors_count 8 4.0+ptrs[i]+name_length
311  // for (i = 0; i < sns_descriptors_count; i++)
312  // descriptor ? ?.0
313  // }
314  // }
315  // for (i=0; i<N; i++)
316  // descriptor() ? ?.0 optional (determined by looking
317  // at section_length)
318  // CRC_32 32
319 
320  void Parse(void) const;
321  QString toString(void) const override; // PSIPTable
322  QString toStringXML(uint indent_level) const override; // PSIPTable
323 };
324 
326 {
327  public:
328  explicit DefinedChannelsMapSubtable(const unsigned char *data) : m_data(data) {}
329  // zero 4 7.0 0
330  // first_virtual_channel 12 7.4
332  { return ((m_data[7]<<8) | m_data[8]) & 0xfff; }
333  // zero 1 9.0
334  // DCM_data_length 7 9.1
335  uint DCMDataLength(void) const { return m_data[9] & 0x7f; }
336  // for (i=0; i<DCM_data_length; i++) {
337  // range_defined 1 10.0+i
338  bool RangeDefined(uint i) const { return ( m_data[10+i] & 0x80 ) != 0; }
339  // channels_count 7 10.1+i
340  uint ChannelsCount(uint i) const { return m_data[10+i] & 0x7f; }
341  // }
342 
343  QString toStringXML(uint indent_level) const;
344  uint Size(void) const { return DCMDataLength() + 3; }
345 
346  private:
347  const unsigned char *m_data;
348 };
349 
351 {
352  public:
354  const unsigned char *data, const vector<const unsigned char*> &ptrs) :
355  m_data(data), _ptrs(ptrs) {}
356 
357  // zero 2 7.0
358  // descriptors_included 1 7.2
359  bool DescriptorsIncluded(void) const { return ( m_data[7] & 0x20 ) != 0; }
360  // zero 5 7.3
361  // splice 1 8.0
362  bool Splice(void) const { return ( m_data[8] & 0x80 ) != 0; }
363  // zero 7 8.1
364  // activation_time 32 9.0
366  {
367  return ((m_data[9] << 24) | (m_data[10] << 24) |
368  (m_data[11] << 24) | m_data[12]);
369  }
373  QDateTime ActivationTimeUTC(uint offset = 0) const
374  {
375  QDateTime dt;
376  dt.setSecsSinceEpoch(GPS_EPOCH + offset + ActivationTimeRaw());
377  return dt;
378  }
379  // number_of_VC_records 8 13.0
380  uint NumberOfVCRecords(void) const { return m_data[13]; }
381 
382  // for (i = 0; i < number_of_VC_records; i++) {
383  // zero 4 0.0+_ptrs[i]
384  // virtual_channel_number 12 0.4+_ptrs[i]
386  { return ((_ptrs[i][0]<<8) | _ptrs[i][1]) & 0xfff; }
387  // application_virtual_channel 1 2.0+_ptrs[i]
388  bool ApplicationVirtualChannel(uint i) const { return ( _ptrs[i][1] & 0x80 ) != 0; }
389  // zero 1 2.1+_ptrs[i]
390  // path_select 1 2.2+_ptrs[i]
391  enum // Table 5.18 path select
392  {
393  kPath1 = 0x0,
394  kPath2 = 0x1,
395  };
396  uint PathSelect(uint i) const { return (_ptrs[i][2]>>5) & 0x1; }
397  QString PathSelectString(uint i) const
398  { return PathSelect(i) ? "Path 2" : "Path 1"; }
399  // transport_type 1 2.3+_ptrs[i]
400  enum // Table 5.19 transport type
401  {
404  };
405  uint TransportType(uint i) const { return (_ptrs[i][2]>>4) & 0x1; }
406  QString TransportTypeString(uint i) const
407  { return TransportType(i) ? "Non-MPEG-2" : "MPEG-2"; }
408  // channel_type 4 2.4+_ptrs[i]
409  enum // Table 5.20 channel type
410  {
413  // all other values are reserved
414  };
415  uint ChannelType(uint i) const { return _ptrs[i][2] & 0xf; }
416  QString ChannelTypeString(uint i) const
417  { return ChannelType(i) ? "Hidden" : "Normal"; }
418  // if (application_virtual_channel) {
419  // application_id 16 3.0+_ptrs[i]
420  uint ApplicationID(uint i) const { return (_ptrs[i][3]<<8) | _ptrs[i][4]; }
421  // } else {
422  // source_id 16 3.0+_ptrs[i]
423  uint SourceID(uint i) const { return (_ptrs[i][3]<<8) | _ptrs[i][4]; }
424  // }
425  // if (transport_type==MPEG_2) {
426  // CDS_reference 8 5.0+_ptrs[i]
427  uint CDSReference(uint i) const { return _ptrs[i][5]; }
428  // program_number 16 6.0+_ptrs[i]
429  uint ProgramNumber(uint i) const { return (_ptrs[i][6]<<8) | _ptrs[i][7]; }
430  // MMS_reference 8 8.0+_ptrs[i]
431  uint MMSReference(uint i) const { return _ptrs[i][8]; }
432  // } else {
433  // CDS_reference 8 5.0+_ptrs[i]
434  // scrambled 1 6.0+_ptrs[i]
435  bool Scrambled(uint i) const { return ( _ptrs[i][6] & 0x80 ) != 0; }
436  // zero 3 6.1+_ptrs[i]
437  // video_standard 4 6.4+_ptrs[i]
438  enum // Table 5.21 video standard
439  {
440  kNTSC = 0x0,
441  kPAL625 = 0x1,
442  kPAL525 = 0x2,
443  kSECAM = 0x3,
444  kMAC = 0x4,
445  // all other values are reserved
446  };
447  uint VideoStandard(uint i) const { return _ptrs[i][6] & 0xf; }
448  QString VideoStandardString(uint i) const;
449  // zero 16 7.0+_ptrs[i] 0
450  // }
451  // if (descriptors_included) {
452  // descriptors_count 8 9.0+_ptrs[i]
453  uint DescriptorsCount(uint i) const { return _ptrs[i][9]; }
454  // for (i = 0; i < descriptors_count; i++)
455  // descriptor()
456  uint DescriptorsLength(uint i) const { return _ptrs[i+1] - _ptrs[i] - 10; }
457  const unsigned char *Descriptors(uint i) const { return _ptrs[i] + 10; }
458  // }
459  // }
460 
461  QString toStringXML(uint indent_level) const;
462  uint Size(void) const { return _ptrs.back() - m_data; }
463 
464  const unsigned char *m_data;
465  const vector<const unsigned char*> &_ptrs;
466 };
467 
469 {
470  public:
471  explicit InverseChannelMapSubtable(const unsigned char *data) : m_data(data) {}
472  // zero 4 7.0
473  // first_map_index 12 7.4
474  uint FirstMapIndex(void) const { return ((m_data[7]<<8)|m_data[8]) & 0xfff; }
475  // zero 1 9.0
476  // record_count 7 9.1
477  uint RecordCount(void) const { return m_data[9] & 0x7f; }
478  // for (i=0; i<record_count; i++) {
479  // source_id 16 10.0+i*4
480  uint SourceID(uint i) const { return (m_data[10+i*4]<<8) | m_data[11+i*4]; }
481  // zero 4 12.0+i*4
482  // virtual_channel_number 12 12.4+i*4
484  { return ((m_data[12+i*4]<<8) | m_data[13+i*4]) & 0xfff; }
485  // }
486 
487  QString toStringXML(uint indent_level) const;
488  uint Size(void) const { return RecordCount() * 4 + 3; }
489 
490  private:
491  const unsigned char *m_data;
492 };
493 
494 // AKA Short-form Virtual Channel Table
496 {
497  public:
499  PSIPTable(table)
500  {
502  Parse();
503  }
504  explicit ShortVirtualChannelTable(const PSIPTable &table) : PSIPTable(table)
505  {
507  Parse();
508  }
509  ~ShortVirtualChannelTable() override { ; }
510  // Name bits loc expected value
511  // table_id 8 0.0 0xC4
512  // zero 2 1.0 0
513  // reserved 2 1.2 3
514  // section_length 12 1.4
515  // ^^^ All above this line provided by PSIPTable
516  // zero 3 3.0 0
517  // protocol_version 5 3.3 0
518  // transmission_medium 4 4.0 0
519  uint TransmissionMedium(void) const { return pesdata()[4] >> 4; }
520  // table_subtype 4 4.4
521  enum // Table 5.14 Table Subtype
522  {
523  kVirtualChannelMap = 0x0,
524  kDefinedChannelsMap = 0x1,
525  kInverseChannelMap = 0x2,
526  // all other values are reserved
527  };
528  uint TableSubtype(void) const { return pesdata()[4] & 0xf; }
529  QString TableSubtypeString(void) const;
530  // vct_id 16 5.0
531  uint ID(void) const { return (pesdata()[5]<<8) | pesdata()[6]; }
532  // if (table_subtype==kDefinedChannelsMap) {
534  { return DefinedChannelsMapSubtable(pesdata()); }
535  // }
536  // if (table_subtype==kVirtualChannelMap) {
538  { return { pesdata(), m_ptrs}; }
539  // }
540  // if (table_subtype==kInverseChannelMap) {
542  { return InverseChannelMapSubtable(pesdata()); }
543  // }
544  // for (i=0; i<N; i++)
545  // descriptor() ? ?.0 optional (determined by looking
546  // at section_length)
548  { return SectionLength() - (m_ptrs.back() - pesdata()) - 4/*CRC*/; }
549  const unsigned char * Descriptors(void) const { return m_ptrs.back(); }
550  // }
551  // CRC_32 32
552 
553  bool Parse(void);
554  QString toString(void) const override; // PSIPTable
555  QString toStringXML(uint indent_level) const override; // PSIPTable
556 
557  private:
558  vector<const unsigned char*> m_ptrs;
559 };
560 
565 {
566  public:
568  {
570  }
571  explicit SCTESystemTimeTable(const PSIPTable &table) : PSIPTable(table)
572  {
574  }
575 
576  // Name bits loc expected value
577  // table_id 8 0.0 0xC5
578  // zero 2 1.0 0
579  // reserved 2 1.2 3
580  // section_length 12 1.4
581  // ^^^ All above this line provided by PSIPTable
582  // zero 3 3.0 0
583  // protocol_version 5 3.3 0
584  // zero 8 4.0 0
585  // system_time 32 5.0
586  uint32_t SystemTimeRaw(void) const
587  {
588  return ((pesdata()[5] <<24) | (pesdata()[6]<<16) |
589  (pesdata()[7]<< 8) | pesdata()[8]);
590  }
591  QDateTime SystemTimeGPS(void) const
592  {
593  QDateTime dt;
594  dt.setSecsSinceEpoch(GPSUnix());
595  return dt;
596  }
597  QDateTime SystemTimeUTC(void) const
598  {
599  QDateTime dt;
600  dt.setSecsSinceEpoch(UTCUnix());
601  return dt;
602  }
603  time_t GPSUnix(void) const
604  { return GPS_EPOCH + SystemTimeRaw(); }
605  time_t UTCUnix(void) const
606  { return GPSUnix() - GPSUTCOffset(); }
607  // GPS_UTC_offset 8 9.0 (leap seconds since 1980)
608  uint GPSUTCOffset(void) const { return pesdata()[9]; }
609  // for (I = 0;I< N;I++) { descriptor() }
611  { return SectionLength() - 10/*bytes before desc*/ - 4/*CRC*/; }
612  const unsigned char * Descriptors(void) const { return pesdata() + 10; }
613 
614  // CRC_32 32
615 
616  QString toString(void) const override; // PSIPTable
617  QString toStringXML(uint indent_level) const override; // PSIPTable
618 };
619 
620 // PIM = 0xC0 -- Program Information Message (57 2003) PMT PID
622 {
623  public:
625  const ProgramInformationMessageTable &table) : PSIPTable(table)
626  {
628  }
629  explicit ProgramInformationMessageTable(const PSIPTable &table) : PSIPTable(table)
630  {
632  }
633 
634  QString toString(void) const override // PSIPTable
635  { return "Program Information Message\n"; }
636  QString toStringXML(uint /*indent_level*/) const override // PSIPTable
637  { return "<ProgramInformationMessage />"; }
638 };
639 
640 // PNM = 0xC1 -- Program Name Message (57 2003) PMT PID
642 {
643  public:
645  const ProgramNameMessageTable &table) : PSIPTable(table)
646  {
648  }
649  explicit ProgramNameMessageTable(const PSIPTable &table) : PSIPTable(table)
650  {
652  }
653 
654  QString toString(void) const override // PSIPTable
655  { return "Program Name Message\n"; }
656  QString toStringXML(uint /*indent_level*/) const override // PSIPTable
657  { return "<ProgramNameMessage />"; }
658 };
659 
660 // ADET = 0xD9 -- Aggregate Data Event Table (80 2002)
662 {
663  public:
665  const AggregateDataEventTable &table) : PSIPTable(table)
666  {
668  }
669  explicit AggregateDataEventTable(const PSIPTable &table) : PSIPTable(table)
670  {
672  }
673 
674  QString toString(void) const override; // PSIPTable
675  QString toStringXML(uint indent_level) const override; // PSIPTable
676 };
677 
678 
679 #endif // SCTE_TABLES_H
CarrierDefinitionSubtable::NumberOfCarriers
uint NumberOfCarriers(void) const
Definition: sctetables.h:48
SCTESystemTimeTable::GPSUnix
time_t GPSUnix(void) const
Definition: sctetables.h:603
InverseChannelMapSubtable::VirtualChannelNumber
uint VirtualChannelNumber(uint i) const
Definition: sctetables.h:483
SCTENetworkInformationTable::~SCTENetworkInformationTable
~SCTENetworkInformationTable() override
Definition: sctetables.h:204
ModulationModeSubtable::kQAM1024
@ kQAM1024
Definition: sctetables.h:162
DefinedChannelsMapSubtable::FirstVirtualChannel
uint FirstVirtualChannel(void) const
Definition: sctetables.h:331
SCTESystemTimeTable::SystemTimeRaw
uint32_t SystemTimeRaw(void) const
Definition: sctetables.h:586
iso639_key_to_canonical_key
int iso639_key_to_canonical_key(int iso639_2)
Definition: iso639.cpp:121
VirtualChannelMapSubtable::kMAC
@ kMAC
Definition: sctetables.h:444
ModulationModeSubtable::kQAM160
@ kQAM160
Definition: sctetables.h:151
SCTENetworkInformationTable::SCTENetworkInformationTable
SCTENetworkInformationTable(const PSIPTable &table)
Definition: sctetables.h:199
ProgramInformationMessageTable::toString
QString toString(void) const override
Definition: sctetables.h:634
ModulationModeSubtable::kRate5_11Coding
@ kRate5_11Coding
Definition: sctetables.h:112
SCTESystemTimeTable::SystemTimeGPS
QDateTime SystemTimeGPS(void) const
Definition: sctetables.h:591
NetworkTextTable::CanonicalLanguageString
QString CanonicalLanguageString(void) const
Definition: sctetables.h:287
TableID::STTscte
@ STTscte
Definition: mpegtables.h:320
VirtualChannelMapSubtable::Splice
bool Splice(void) const
Definition: sctetables.h:362
ProgramNameMessageTable::toStringXML
QString toStringXML(uint) const override
Definition: sctetables.h:656
ModulationModeSubtable::kRate7_8Coding
@ kRate7_8Coding
Definition: sctetables.h:123
ModulationModeSubtable::kQAM640
@ kQAM640
Definition: sctetables.h:159
ModulationModeSubtable::kVSB8
@ kVSB8
Definition: sctetables.h:142
ShortVirtualChannelTable::DescriptorsLength
uint DescriptorsLength(void) const
Definition: sctetables.h:547
VirtualChannelMapSubtable::DescriptorsIncluded
bool DescriptorsIncluded(void) const
Definition: sctetables.h:359
VirtualChannelMapSubtable::ApplicationVirtualChannel
bool ApplicationVirtualChannel(uint i) const
Definition: sctetables.h:388
SCTESystemTimeTable::Descriptors
const unsigned char * Descriptors(void) const
Definition: sctetables.h:612
AggregateDataEventTable::AggregateDataEventTable
AggregateDataEventTable(const PSIPTable &table)
Definition: sctetables.h:669
ModulationModeSubtable::toString
static QString toString(void)
Definition: sctetables.cpp:129
NetworkTextTable
Definition: sctetables.h:255
SCTENetworkInformationTable::NumberOfRecords
uint NumberOfRecords(void) const
Definition: sctetables.h:217
NetworkTextTable::NetworkTextTable
NetworkTextTable(const PSIPTable &table)
Definition: sctetables.h:263
VirtualChannelMapSubtable::VideoStandardString
QString VideoStandardString(uint i) const
Definition: sctetables.cpp:390
CarrierDefinitionSubtable::m_end
const unsigned char * m_end
Definition: sctetables.h:85
ModulationModeSubtable::kQAM224
@ kQAM224
Definition: sctetables.h:153
NetworkTextTable::~NetworkTextTable
~NetworkTextTable() override
Definition: sctetables.h:268
VirtualChannelMapSubtable::kSECAM
@ kSECAM
Definition: sctetables.h:443
VirtualChannelMapSubtable::kNTSC
@ kNTSC
Definition: sctetables.h:440
VirtualChannelMapSubtable::TransportTypeString
QString TransportTypeString(uint i) const
Definition: sctetables.h:406
VirtualChannelMapSubtable::NumberOfVCRecords
uint NumberOfVCRecords(void) const
Definition: sctetables.h:380
ModulationModeSubtable::kQPSK
@ kQPSK
Definition: sctetables.h:139
mythtvexp.h
PESPacket::pesdata
const unsigned char * pesdata() const
Definition: pespacket.h:159
ModulationModeSubtable::kQAM64
@ kQAM64
Definition: sctetables.h:146
SCTESystemTimeTable::GPSUTCOffset
uint GPSUTCOffset(void) const
Definition: sctetables.h:608
VirtualChannelMapSubtable::kNormalChannel
@ kNormalChannel
Definition: sctetables.h:411
VirtualChannelMapSubtable::kPath2
@ kPath2
Definition: sctetables.h:394
CarrierDefinitionSubtable::SpacingUnit
uint SpacingUnit(void) const
Definition: sctetables.h:55
VirtualChannelMapSubtable::kMPEG2Transport
@ kMPEG2Transport
Definition: sctetables.h:402
ModulationModeSubtable::ModulationFormat
uint ModulationFormat(void) const
Definition: sctetables.h:165
DefinedChannelsMapSubtable::Size
uint Size(void) const
Definition: sctetables.h:344
SCTESystemTimeTable::UTCUnix
time_t UTCUnix(void) const
Definition: sctetables.h:605
ShortVirtualChannelTable::TransmissionMedium
uint TransmissionMedium(void) const
Definition: sctetables.h:519
CarrierDefinitionSubtable::m_beg
const unsigned char * m_beg
Definition: sctetables.h:84
AggregateDataEventTable::AggregateDataEventTable
AggregateDataEventTable(const AggregateDataEventTable &table)
Definition: sctetables.h:664
SCTENetworkInformationTable::Descriptors
const unsigned char * Descriptors(void) const
Definition: sctetables.h:243
SCTESystemTimeTable
This table contains the GPS time at the time of transmission.
Definition: sctetables.h:565
ModulationModeSubtable::ModulationFormatString
QString ModulationFormatString(void) const
Definition: sctetables.cpp:96
VirtualChannelMapSubtable::ProgramNumber
uint ProgramNumber(uint i) const
Definition: sctetables.h:429
ModulationModeSubtable::kQAM80
@ kQAM80
Definition: sctetables.h:147
ModulationModeSubtable::kOQPSK
@ kOQPSK
Definition: sctetables.h:141
x3
static int x3
Definition: mythsocket.cpp:62
TableID::PIM
@ PIM
Definition: mpegtables.h:299
ProgramNameMessageTable
Definition: sctetables.h:642
ModulationModeSubtable::Descriptors
const unsigned char * Descriptors(void) const
Definition: sctetables.h:180
ModulationModeSubtable::kTSATSC
@ kTSATSC
Definition: sctetables.h:100
ModulationModeSubtable::kTSITUAnnexB
@ kTSITUAnnexB
Specified in Annex B of ITU Rec. J.83.
Definition: sctetables.h:98
ShortVirtualChannelTable::DefinedChannelsMap
DefinedChannelsMapSubtable DefinedChannelsMap(void) const
Definition: sctetables.h:533
ModulationModeSubtable::kQAM320
@ kQAM320
Definition: sctetables.h:155
ModulationModeSubtable::kTSUnknown
@ kTSUnknown
Definition: sctetables.h:96
ProgramNameMessageTable::ProgramNameMessageTable
ProgramNameMessageTable(const ProgramNameMessageTable &table)
Definition: sctetables.h:644
VirtualChannelMapSubtable::ChannelType
uint ChannelType(uint i) const
Definition: sctetables.h:415
CarrierDefinitionSubtable::DescriptorsCount
uint DescriptorsCount(void) const
Definition: sctetables.h:73
TableID::NITscte
@ NITscte
Definition: mpegtables.h:317
VirtualChannelMapSubtable::ChannelTypeString
QString ChannelTypeString(uint i) const
Definition: sctetables.h:416
ModulationModeSubtable::kVSB16
@ kVSB16
Definition: sctetables.h:143
ModulationModeSubtable::m_end
const unsigned char * m_end
Definition: sctetables.h:187
VirtualChannelMapSubtable::m_data
const unsigned char * m_data
Definition: sctetables.h:464
ModulationModeSubtable::kNone
@ kNone
Definition: sctetables.h:127
VirtualChannelMapSubtable::MMSReference
uint MMSReference(uint i) const
Definition: sctetables.h:431
ModulationModeSubtable::kQAM512
@ kQAM512
Definition: sctetables.h:158
InverseChannelMapSubtable::Size
uint Size(void) const
Definition: sctetables.h:488
NetworkTextTable::CanonicalLanguageKey
int CanonicalLanguageKey(void) const
Definition: sctetables.h:285
ModulationModeSubtable::InnerCodingMode
uint InnerCodingMode(void) const
Definition: sctetables.h:130
Parse
Definition: rssparse.h:189
NetworkTextTable::NetworkTextTable
NetworkTextTable(const NetworkTextTable &table)
Definition: sctetables.h:257
DefinedChannelsMapSubtable
Definition: sctetables.h:326
PSIPTable
A PSIP table is a variant of a PES packet containing an MPEG, ATSC or DVB table.
Definition: mpegtables.h:387
VirtualChannelMapSubtable::kPAL525
@ kPAL525
Definition: sctetables.h:442
DefinedChannelsMapSubtable::DefinedChannelsMapSubtable
DefinedChannelsMapSubtable(const unsigned char *data)
Definition: sctetables.h:328
PSIPTable::toString
virtual QString toString(void) const
Definition: mpegtables.cpp:762
toString
QString toString(MarkTypes type)
Definition: programtypes.cpp:26
ModulationModeSubtable::kRate3_4Coding
@ kRate3_4Coding
Definition: sctetables.h:119
ModulationModeSubtable::kQAM192
@ kQAM192
Definition: sctetables.h:152
VirtualChannelMapSubtable::ActivationTimeUTC
QDateTime ActivationTimeUTC(uint offset=0) const
Definition: sctetables.h:373
ModulationModeSubtable::kQAM16
@ kQAM16
Definition: sctetables.h:144
SCTENetworkInformationTable::SCTENetworkInformationTable
SCTENetworkInformationTable(const SCTENetworkInformationTable &table)
Definition: sctetables.h:193
ModulationModeSubtable::kRate4_5Coding
@ kRate4_5Coding
Definition: sctetables.h:120
VirtualChannelMapSubtable::TransportType
uint TransportType(uint i) const
Definition: sctetables.h:405
ModulationModeSubtable::kTSDigiCipher
@ kTSDigiCipher
from SCTE 57 – DigiCipher II
Definition: sctetables.h:101
CarrierDefinitionSubtable::FrequencyUnitHz
uint FrequencyUnitHz(void) const
Definition: sctetables.h:65
ModulationModeSubtable::TransmissionSystem
uint TransmissionSystem(void) const
Definition: sctetables.h:107
ModulationModeSubtable::DescriptorsLength
uint DescriptorsLength(void) const
Definition: sctetables.h:179
VirtualChannelMapSubtable::Size
uint Size(void) const
Definition: sctetables.h:462
InverseChannelMapSubtable::m_data
const unsigned char * m_data
Definition: sctetables.h:491
ModulationModeSubtable::SymbolRate
uint SymbolRate(void) const
Definition: sctetables.h:169
SCTENetworkInformationTable::FirstIndex
uint FirstIndex(void) const
Definition: sctetables.h:215
ModulationModeSubtable::kTSITUQPSK
@ kTSITUQPSK
ITU-R Rec. BO.1211:1995 (QPSK)
Definition: sctetables.h:99
SCTENetworkInformationTable::m_ptrs
vector< const unsigned char * > m_ptrs
Definition: sctetables.h:251
CarrierDefinitionSubtable
SCTE System information tables.
Definition: sctetables.h:41
CarrierDefinitionSubtable::CarrierDefinitionSubtable
CarrierDefinitionSubtable(const unsigned char *beg, const unsigned char *end)
Definition: sctetables.h:43
ShortVirtualChannelTable
Definition: sctetables.h:496
ModulationModeSubtable::kQAM96
@ kQAM96
Definition: sctetables.h:148
CarrierDefinitionSubtable::FirstCarrierFrequency
uint FirstCarrierFrequency(void) const
Definition: sctetables.h:67
CarrierDefinitionSubtable::FrequencyUnit
uint FrequencyUnit(void) const
Definition: sctetables.h:64
ModulationModeSubtable::toStringXML
QString toStringXML(uint indent_level) const
Definition: sctetables.cpp:134
CarrierDefinitionSubtable::FrequencySpacingHz
uint FrequencySpacingHz(void) const
Definition: sctetables.h:61
ModulationModeSubtable::kRate1_2Coding
@ kRate1_2Coding
Definition: sctetables.h:113
ShortVirtualChannelTable::VirtualChannelMap
VirtualChannelMapSubtable VirtualChannelMap(void) const
Definition: sctetables.h:537
VirtualChannelMapSubtable::kNonMPEG2Transport
@ kNonMPEG2Transport
Definition: sctetables.h:403
VirtualChannelMapSubtable::kPAL625
@ kPAL625
Definition: sctetables.h:441
ProgramNameMessageTable::ProgramNameMessageTable
ProgramNameMessageTable(const PSIPTable &table)
Definition: sctetables.h:649
PSIPTable::toStringXML
virtual QString toStringXML(uint indent_level) const
Definition: mpegtables.cpp:780
VirtualChannelMapSubtable::_ptrs
const vector< const unsigned char * > & _ptrs
Definition: sctetables.h:465
CarrierDefinitionSubtable::SpacingUnitHz
uint SpacingUnitHz(void) const
Definition: sctetables.h:56
DefinedChannelsMapSubtable::RangeDefined
bool RangeDefined(uint i) const
Definition: sctetables.h:338
VirtualChannelMapSubtable::Descriptors
const unsigned char * Descriptors(uint i) const
Definition: sctetables.h:457
ProgramInformationMessageTable
Definition: sctetables.h:622
mpegtables.h
ModulationModeSubtable::kRate3_5Coding
@ kRate3_5Coding
Definition: sctetables.h:115
SCTESystemTimeTable::DescriptorsLength
uint DescriptorsLength(void) const
Definition: sctetables.h:610
NetworkTextTable::LanguageKey
int LanguageKey(void) const
Definition: sctetables.h:281
VirtualChannelMapSubtable::Scrambled
bool Scrambled(uint i) const
Definition: sctetables.h:435
ModulationModeSubtable
Definition: sctetables.h:89
VirtualChannelMapSubtable::SourceID
uint SourceID(uint i) const
Definition: sctetables.h:423
CarrierDefinitionSubtable::DescriptorsLength
uint DescriptorsLength(void) const
Definition: sctetables.h:77
iso639_key_to_str3
static QString iso639_key_to_str3(int code)
Definition: iso639.h:46
uint
unsigned int uint
Definition: compat.h:140
AggregateDataEventTable
Definition: sctetables.h:662
VirtualChannelMapSubtable::VideoStandard
uint VideoStandard(uint i) const
Definition: sctetables.h:447
InverseChannelMapSubtable::InverseChannelMapSubtable
InverseChannelMapSubtable(const unsigned char *data)
Definition: sctetables.h:471
VirtualChannelMapSubtable::PathSelectString
QString PathSelectString(uint i) const
Definition: sctetables.h:397
ModulationModeSubtable::kQAM128
@ kQAM128
Definition: sctetables.h:150
SCTENetworkInformationTable::TransmissionMedium
uint TransmissionMedium(void) const
Definition: sctetables.h:219
ModulationModeSubtable::kRate2_3Coding
@ kRate2_3Coding
Definition: sctetables.h:117
VirtualChannelMapSubtable::kHiddenChannel
@ kHiddenChannel
Definition: sctetables.h:412
VirtualChannelMapSubtable::ApplicationID
uint ApplicationID(uint i) const
Definition: sctetables.h:420
VirtualChannelMapSubtable::DescriptorsLength
uint DescriptorsLength(uint i) const
Definition: sctetables.h:456
ShortVirtualChannelTable::InverseChannelMap
InverseChannelMapSubtable InverseChannelMap(void) const
Definition: sctetables.h:541
MTV_PUBLIC
#define MTV_PUBLIC
Definition: mythtvexp.h:15
ModulationModeSubtable::ModulationModeSubtable
ModulationModeSubtable(const unsigned char *beg, const unsigned char *end)
Definition: sctetables.h:91
PSIPTable::SectionLength
uint SectionLength(void) const
Definition: mpegtables.h:500
DefinedChannelsMapSubtable::DCMDataLength
uint DCMDataLength(void) const
Definition: sctetables.h:335
ShortVirtualChannelTable::ShortVirtualChannelTable
ShortVirtualChannelTable(const PSIPTable &table)
Definition: sctetables.h:504
VirtualChannelMapSubtable::toStringXML
QString toStringXML(uint indent_level) const
Definition: sctetables.cpp:403
TableID::SVCTscte
@ SVCTscte
Definition: mpegtables.h:319
ProgramInformationMessageTable::toStringXML
QString toStringXML(uint) const override
Definition: sctetables.h:636
SCTESystemTimeTable::SCTESystemTimeTable
SCTESystemTimeTable(const PSIPTable &table)
Definition: sctetables.h:571
ShortVirtualChannelTable::TableSubtype
uint TableSubtype(void) const
Definition: sctetables.h:528
ModulationModeSubtable::kQAM256
@ kQAM256
Definition: sctetables.h:154
ModulationModeSubtable::kQAM112
@ kQAM112
Definition: sctetables.h:149
VirtualChannelMapSubtable::VirtualChannelMapSubtable
VirtualChannelMapSubtable(const unsigned char *data, const vector< const unsigned char * > &ptrs)
Definition: sctetables.h:353
VirtualChannelMapSubtable::DescriptorsCount
uint DescriptorsCount(uint i) const
Definition: sctetables.h:453
assert
#define assert(x)
Definition: audiooutputalsa.cpp:20
CarrierDefinitionSubtable::Descriptors
const unsigned char * Descriptors(void) const
Definition: sctetables.h:78
SCTESystemTimeTable::SCTESystemTimeTable
SCTESystemTimeTable(const SCTESystemTimeTable &table)
Definition: sctetables.h:567
InverseChannelMapSubtable
Definition: sctetables.h:469
SCTENetworkInformationTable::ModulationMode
ModulationModeSubtable ModulationMode(uint i) const
Definition: sctetables.h:234
CarrierDefinitionSubtable::FrequencySpacing
uint FrequencySpacing(void) const
Definition: sctetables.h:59
PSIPTable::TableID
uint TableID(void) const
Definition: mpegtables.h:489
ShortVirtualChannelTable::m_ptrs
vector< const unsigned char * > m_ptrs
Definition: sctetables.h:558
ModulationModeSubtable::kQAM768
@ kQAM768
Definition: sctetables.h:160
ModulationModeSubtable::m_beg
const unsigned char * m_beg
Definition: sctetables.h:186
SCTESystemTimeTable::SystemTimeUTC
QDateTime SystemTimeUTC(void) const
Definition: sctetables.h:597
NetworkTextTable::TableSubtype
uint TableSubtype(void) const
Definition: sctetables.h:298
TableID::ADET
@ ADET
Definition: mpegtables.h:325
ShortVirtualChannelTable::~ShortVirtualChannelTable
~ShortVirtualChannelTable() override
Definition: sctetables.h:509
VirtualChannelMapSubtable::kPath1
@ kPath1
Definition: sctetables.h:393
ModulationModeSubtable::kRate5_6Coding
@ kRate5_6Coding
Definition: sctetables.h:121
TableID::PNM
@ PNM
Definition: mpegtables.h:300
ModulationModeSubtable::kUnknown
@ kUnknown
Definition: sctetables.h:138
ShortVirtualChannelTable::ID
uint ID(void) const
Definition: sctetables.h:531
VirtualChannelMapSubtable
Definition: sctetables.h:351
ModulationModeSubtable::kQAM448
@ kQAM448
Definition: sctetables.h:157
ProgramNameMessageTable::toString
QString toString(void) const override
Definition: sctetables.h:654
DefinedChannelsMapSubtable::ChannelsCount
uint ChannelsCount(uint i) const
Definition: sctetables.h:340
iso639.h
ISO 639-1 and ISO 639-2 support functions.
CarrierDefinitionSubtable::FirstCarrierFrequencyHz
uint64_t FirstCarrierFrequencyHz(void) const
Definition: sctetables.h:69
SCTENetworkInformationTable::CarrierDefinition
CarrierDefinitionSubtable CarrierDefinition(uint i) const
Definition: sctetables.h:231
VirtualChannelMapSubtable::VirtualChannelNumber
uint VirtualChannelNumber(uint i) const
Definition: sctetables.h:385
SCTENetworkInformationTable
Definition: sctetables.h:191
NetworkTextTable::LanguageString
QString LanguageString(void) const
Definition: sctetables.h:283
ModulationModeSubtable::kQAM32
@ kQAM32
Definition: sctetables.h:145
ModulationModeSubtable::kQAM384
@ kQAM384
Definition: sctetables.h:156
VirtualChannelMapSubtable::PathSelect
uint PathSelect(uint i) const
Definition: sctetables.h:396
InverseChannelMapSubtable::FirstMapIndex
uint FirstMapIndex(void) const
Definition: sctetables.h:474
SCTENetworkInformationTable::DescriptorsLength
uint DescriptorsLength(void) const
Definition: sctetables.h:241
DefinedChannelsMapSubtable::m_data
const unsigned char * m_data
Definition: sctetables.h:347
ShortVirtualChannelTable::ShortVirtualChannelTable
ShortVirtualChannelTable(const ShortVirtualChannelTable &table)
Definition: sctetables.h:498
iso639_str3_to_key
static int iso639_str3_to_key(const unsigned char *iso639_2)
Definition: iso639.h:63
GPS_EPOCH
#define GPS_EPOCH
Seconds between start of GPS time and the start of UNIX time.
Definition: mpegtables.h:31
ProgramInformationMessageTable::ProgramInformationMessageTable
ProgramInformationMessageTable(const ProgramInformationMessageTable &table)
Definition: sctetables.h:624
ModulationModeSubtable::DescriptorsCount
uint DescriptorsCount(void) const
Definition: sctetables.h:175
TableID::NTT
@ NTT
Definition: mpegtables.h:318
VirtualChannelMapSubtable::CDSReference
uint CDSReference(uint i) const
Definition: sctetables.h:427
ModulationModeSubtable::TransmissionSystemString
QString TransmissionSystemString(void) const
Definition: sctetables.cpp:65
ShortVirtualChannelTable::Descriptors
const unsigned char * Descriptors(void) const
Definition: sctetables.h:549
InverseChannelMapSubtable::RecordCount
uint RecordCount(void) const
Definition: sctetables.h:477
ProgramInformationMessageTable::ProgramInformationMessageTable
ProgramInformationMessageTable(const PSIPTable &table)
Definition: sctetables.h:629
ModulationModeSubtable::kBPSK
@ kBPSK
Definition: sctetables.h:140
ModulationModeSubtable::SplitBitstreamMode
bool SplitBitstreamMode(void) const
Definition: sctetables.h:133
ModulationModeSubtable::kQAM896
@ kQAM896
Definition: sctetables.h:161
VirtualChannelMapSubtable::ActivationTimeRaw
uint ActivationTimeRaw(void) const
Definition: sctetables.h:365
ModulationModeSubtable::kTSITUAnnexA
@ kTSITUAnnexA
Specified in Annex A of ITU Rec. J.83.
Definition: sctetables.h:97
InverseChannelMapSubtable::SourceID
uint SourceID(uint i) const
Definition: sctetables.h:480
SCTENetworkInformationTable::TableSubtype
uint TableSubtype(void) const
Definition: sctetables.h:228
ModulationModeSubtable::InnerCodingModeString
QString InnerCodingModeString(void) const
Definition: sctetables.cpp:79
NetworkTextTable::TransmissionMedium
uint TransmissionMedium(void) const
Definition: sctetables.h:290