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