MythTV  master
atsctables.h
Go to the documentation of this file.
1 // -*- Mode: c++ -*-
2 // Copyright (c) 2003-2004, Daniel Thor Kristjansson
3 #ifndef _ATSC_TABLES_H_
4 #define _ATSC_TABLES_H_
5 
6 #include <stdint.h> // uint32_t
7 #include <QString>
8 
9 #include "atscdescriptors.h"
10 #include "mythmiscutil.h" // for xml_indent
11 #include "mpegtables.h"
12 #include "mythtvexp.h"
13 #include "mythdate.h"
14 
15 // Some sample code is in pcHDTV's dtvscan.c,
16 // accum_sect/dequeue_buf/atsc_tables. We should stuff
17 // this data back into the channel's guide data, though if
18 // it's unreliable we will need to be able to prefer the
19 // downloaded XMLTV data.
20 
52 {
53  public:
54  typedef enum
55  {
56  UNKNOWN = -1,
57  TVCTc = 0,
58  TVCTnc = 1,
59  CVCTc = 2,
60  CVCTnc = 3,
61  ETTc = 4,
62  DCCSCT = 5,
63  EIT = 6,
64  ETTe = 7,
65  DCCT = 8,
66  RRT = 9,
67  } kTableTypes;
68 };
69 
75 {
76  public:
78  {
80  Parse();
81  }
82  explicit MasterGuideTable(const PSIPTable& table) : PSIPTable(table)
83  {
85  Parse();
86  }
88 
89  // Name bits loc expected value
90  // table_id 8 0.0 0xC7
91  // section_syntax_indicator 1 1.0 1
92  // private_indicator 1 1.1 1
93  // reserved 2 1.2 3
94  // table_id_extension 16 3.0 0x0000
95 
96  /* Each Map ID corresponds to one set of channel mappings. Each STB
97  * is expected to ignore any Map ID's other than the one corresponding
98  * to it's head-end.
99  *
100  * Note: This is only defined for SCTE streams, it is always 0 in ATSC streams
101  */
102  uint SCTEMapId() const
103  {
104  return (pesdata()[3]<<8) | pesdata()[4];
105  }
106 
107  // reserved 2 5.0 3
108  // current_next_indicator 1 5.7 1
109  // section_number 8 6.0 0x00
110  // last_section_number 8 7.0 0x00
111  // protocol_version 8 8.0 0x00 for now
112 
113  // tables_defined 16 9.0, 6-370 valid OTA, 2-370 valid w/Cable
114  uint TableCount() const
115  {
116  return (pesdata()[9]<<8) | pesdata()[10];
117  }
118  // for (i=0; i<tableCount(); i++) {
119  // table_type 16 0.0
120  uint TableType(uint i) const
121  {
122  return (_ptrs[i][0]<<8) | _ptrs[i][1];
123  }
124  int TableClass(uint i) const;
125  QString TableClassString(uint i) const;
126  // reserved 3 2.0 0x7
127  // table_type_PID 13 2.3
128  uint TablePID(uint i) const
129  {
130  return ((_ptrs[i][2]<<8) | (_ptrs[i][3])) & 0x1fff;
131  }
132  // reserved 3 4.0 0x7
133  // table_type_version_number 5 4.3
135  {
136  return (_ptrs[i][4]) & 0x1f;
137  }
138  // number_bytes for table desc. 32 5.0
140  {
141  return ((_ptrs[i][5]<<24) | (_ptrs[i][6]<<16) |
142  (_ptrs[i][7]<<8) | (_ptrs[i][8]));
143  }
144  // reserved 4 9.0 0xf
145  // table_type_descriptors_length 12 9.4
147  {
148  return ((_ptrs[i][9]<<8) | (_ptrs[i][10])) & 0xfff;
149  }
150 
151  // for (I = 0; I<M; I++)
152  // descriptor = 11 + (offset)
153  // }
154  // }
155  const unsigned char* TableDescriptors(uint i) const
156  {
157  return _ptrs[i]+11;
158  }
159  // reserved 4 0xf
160  // descriptors_length 12
162  {
163  return ((_ptrs[TableCount()][0]<<8) |
164  (_ptrs[TableCount()][1])) & 0xfff;
165  }
166 
167  const unsigned char* GlobalDescriptors() const
168  {
169  return _ptrs[TableCount()]+2;
170  }
171  // for (I=0; I<N; I++) {
172  // descriptor()
173  // }
174  // CRC_32 32
175 
176  void Parse(void) const;
177  virtual QString toString(void) const;
178  virtual QString toStringXML(uint indent_level) const;
179  private:
180  mutable vector<unsigned char*> _ptrs; // used to parse
181 };
182 
190 {
191  public:
193  {
195  Parse();
196  }
197  explicit VirtualChannelTable(const PSIPTable &table) : PSIPTable(table)
198  {
200  Parse();
201  }
202 
204 
205  // Name bits loc expected value
206  // table_id 8 0.0 0xC8/0xC9
207  // section_syntax_indicator 1 1.0 1
208  // private_indicator 1 1.1 1
209  // reserved 2 1.2 3
210  // table_id_extension 16 3.0 0x0000
211  // reserved 2 5.0 3
212  // current_next_indicator 1 5.7 1
213  // section_number 8 6.0 0x00
214  // last_section_number 8 7.0 0x00
215  // protocol_version 8 8.0 0x00 for now
216 
217  // transport_stream_id 16 3.0
219 
220  // num_channels_in_section 8 9.0
221  uint ChannelCount() const { return pesdata()[9]; }
222 
223  // for(i=0; i<num_channels_in_section; i++) {
224  // short_name 7*16 0.0 (7 UCS-2 chars padded by 0x0000)
225  const QString ShortChannelName(uint i) const
226  {
227  if (i >= ChannelCount())
228  return QString();
229 
230  QString str;
231  const unsigned short* ustr =
232  reinterpret_cast<const unsigned short*>(_ptrs[i]);
233  for (int j=0; j<7; j++)
234  {
235  QChar c((ustr[j]<<8) | (ustr[j]>>8));
236  if (c != QChar('\0')) str.append(c);
237  }
238  return str.simplified();
239  }
240  // reserved 4 13.0 0xf
241 
242  // major_channel_number 10 13.4
243  // 14 RRRR JJJJ 15 jjjj jjmm 16 MMMM MMMM
244  // JJ JJjj jjjj mm MMMM MMMM
246  {
247  return (((_ptrs[i][14])<<6)&0x3c0) | (_ptrs[i][15]>>2);
248  }
249  // minor_channel_number 10 14.6
251  {
252  return (((_ptrs[i][15])<<8)&0x300) | _ptrs[i][16];
253  }
254  // modulation_mode 8 16.0
256  {
257  return _ptrs[i][17];
258  }
259  QString ModulationModeString(uint i) const;
260  // carrier_frequency 32 17.0 deprecated
261  // channel_TSID 16 21.0
263  {
264  return ((_ptrs[i][22]<<8) | _ptrs[i][23]);
265  }
266  // program_number 16 23.0
268  {
269  return ((_ptrs[i][24]<<8) | _ptrs[i][25]);
270  }
271  // ETM_location 2 25.0
273  {
274  return (_ptrs[i][26]>>6) & 0x03;
275  }
276  // access_controlled 1 25.2
277  bool IsAccessControlled(uint i) const
278  {
279  return bool(_ptrs[i][26] & 0x20);
280  }
281  // hidden 1 25.3
282  bool IsHidden(uint i) const
283  {
284  return bool(_ptrs[i][26] & 0x10);
285  }
286  // reserved 2 25.4 3
287  // hide_guide 1 25.6
288  bool IsHiddenInGuide(uint i) const
289  {
290  return bool(_ptrs[i][26] & 0x2);
291  }
292  // reserved 6 25.7 0x3f
293  // service_type 6 26.2
295  {
296  return _ptrs[i][27] & 0x3f;
297  }
298  QString ServiceTypeString(uint i) const;
299  // source_id 16 27.0
300  uint SourceID(uint i) const
301  {
302  return ((_ptrs[i][28]<<8) | _ptrs[i][29]);
303  }
304  // reserved 6 29.0 0xfb
305  // descriptors_length 10 29.6
307  {
308  return ((_ptrs[i][30]<<8) | _ptrs[i][31]) & 0x03ff;
309  }
310  // for (i=0;i<N;i++) { descriptor() }
311  const unsigned char* Descriptors(uint i) const
312  {
313  return _ptrs[i]+32;
314  }
315  // }
316  // reserved 6 0xfb
317  // additional_descriptors_length 10
319  {
320  uint i = ChannelCount();
321  return ((_ptrs[i][0]<<8) | _ptrs[i][1]) & 0x03ff;
322  }
323  // for (j=0; j<N; j++) { additional_descriptor() }
324  const unsigned char* GlobalDescriptors() const
325  {
326  return _ptrs[ChannelCount()]+2;
327  }
328  // CRC_32 32
329  void Parse() const;
330  int Find(int major, int minor) const;
331  QString GetExtendedChannelName(uint idx) const;
332  virtual QString toString(void) const;
333  virtual QString ChannelString(uint channel) const = 0;
334  virtual QString toStringXML(uint indent_level) const;
335  virtual QString ChannelStringXML(uint indent_level, uint channel) const;
336  virtual QString XMLChannelValues(uint indent_level, uint channel) const;
337  protected:
338  mutable vector<unsigned char*> _ptrs;
339 };
340 
347 {
348  public:
350  : VirtualChannelTable(table)
351  {
353  }
355  : VirtualChannelTable(table)
356  {
358  }
360 
361  // Name bits loc expected value
362  // table_id 8 0.0 0xC8
363  // section_syntax_indicator 1 1.0 1
364  // private_indicator 1 1.1 1
365  // reserved 2 1.2 3
366  // table_id_extension 16 3.0 0x0000
367  // reserved 2 5.0 3
368  // current_next_indicator 1 5.7 1
369  // section_number 8 6.0 0x00
370  // last_section_number 8 7.0 0x00
371  // protocol_version 8 8.0 0x00 for now
372 
373  // transport_stream_id 16 3.0
374  // num_channels_in_section 8 9.0
375 
376  // for (i=0; i<num_channels_in_section; i++)
377  // {
378  // short_name 7*16 0.0 (7 UTF-16 chars padded by 0x0000)
379  // reserved 4 14.0 0xf
380 
381  // major_channel_number 10 14.4
382  // 14 RRRR JJJJ 15 jjjj jjmm 16 MMMM MMMM
383  // JJ JJjj jjjj mm MMMM MMMM
384  // minor_channel_number 10 15.6
385  // modulation_mode 8 17.0
386  // carrier_frequency 32 18.0 deprecated
387  // channel_TSID 16 22.0
388  // program_number 16 24.0
389  // ETM_location 2 26.0
390  // access_controlled 1 26.2
391  // hidden 1 26.3
392  // reserved 2 26.4 3
393  // hide_guide 1 26.6
394  // reserved 6 26.7 0x3f
395  // service_type 6 27.2
396  // source_id 16 28.0
397  // reserved 6 30.0 0xfb
398  // descriptors_length 10 30.6-31
399  // for (i=0;i<N;i++) { descriptor() }
400  // }
401  // reserved 6 0xfb
402  // additional_descriptors_length 10
403  // for (j=0; j<N; j++) { additional_descriptor() }
404  // CRC_32 32
405  virtual QString ChannelString(uint channel) const;
406  virtual QString XMLChannelValues(uint indent_level, uint channel) const;
407 };
408 
409 
416 {
417  public:
419  : VirtualChannelTable(table)
420  {
422  }
423  explicit CableVirtualChannelTable(const PSIPTable &table)
424  : VirtualChannelTable(table)
425  {
427  }
429 
430  // Name bits loc expected value
431  // table_id 8 0.0 0xC9
432  // section_syntax_indicator 1 1.0 1
433  // private_indicator 1 1.1 1
434  // reserved 2 1.2 3
435  // table_id_extension 16 3.0 0x0000
436 
437  /* Each Map ID corresponds to one set of channel mappings. Each STB
438  * is expected to ignore any Map ID's other than the one corresponding
439  * to it's head-end.
440  *
441  * Note: This is only defined for SCTE streams,
442  * it is always 0 in ATSC streams.
443  */
444  uint SCTEMapId() const
445  {
446  return (pesdata()[3]<<8) | pesdata()[4];
447  }
448 
449  // reserved 2 5.0 3
450  // current_next_indicator 1 5.7 1
451  // section_number 8 6.0 0x00
452  // last_section_number 8 7.0 0x00
453  // protocol_version 8 8.0 0x00 for now
454 
455  // for (i=0; i<num_channels_in_section; i++)
456  // {
457  // short_name 7*16 0.0 (7 UTF-16 chars padded by 0x0000)
458  // reserved 4 14.0 0xf
459 
460  // major_channel_number 10 14.4
461  // 14 RRRR JJJJ 15 jjjj jjmm 16 MMMM MMMM
462  // JJ JJjj jjjj mm MMMM MMMM
463  // minor_channel_number 10 15.6
464 
466  {
467  return (MajorChannel(i) >> 4) == 0x3f;
468  }
470  {
471  return MajorChannel(i) < 1000;
472  }
473  // Note: In SCTE streams, the channel number is undefined if
474  // the two functions above return false. As of 2002 spec.
475 
477  {
478  if (SCTEIsChannelNumberOnePart(i))
479  return ((MajorChannel(i) & 0xf) << 10) | MinorChannel(i);
480  return 0;
481  }
482 
483  // modulation_mode 8 17.0
484  // carrier_frequency 32 18.0 deprecated
485  // channel_TSID 16 22.0
486  // program_number 16 24.0
487  // ETM_location 2 26.0
488  // access_controlled 1 26.2
489  // hidden 1 26.3
490  // path_select 1 26.4
491  bool IsPathSelect(uint i) const
492  {
493  return bool(_ptrs[i][26] & 0x8);
494  }
495  // out_of_band 1 26.5
496  bool IsOutOfBand(uint i) const
497  {
498  return bool(_ptrs[i][26] & 0x4);
499  }
500  // hide_guide 1 26.6
501  // reserved 3 26.7 7
502  // service_type 6 27.2
503  // source_id 16 28.0
504  // reserved 6 30.0 0xfb
505  // descriptors_length 10 30.6-31
506  // for (i=0;i<N;i++) { descriptor() }
507  // }
508  // reserved 6 0xfb
509  // additional_descriptors_length 10
510  // for (j=0; j<N; j++) { additional_descriptor() }
511  // CRC_32 32
512  virtual QString ChannelString(uint channel) const;
513  virtual QString XMLChannelValues(uint indent_level, uint channel) const;
514 };
515 
522 {
523  public:
525  : PSIPTable(table)
526  {
528  Parse();
529  }
530  explicit EventInformationTable(const PSIPTable &table) : PSIPTable(table)
531  {
533  Parse();
534  }
536 
537  // Name bits loc expected value
538  // table_id 8 0.0 0xCB
539  // section_syntax_indicator 1 1.0 1
540  // private_indicator 1 1.1 1
541  // reserved 2 1.2 3
542  // table_id_extension 16 3.0 0x0000
543  // reserved 2 5.0 3
544  // current_next_indicator 1 5.7 1
545  // section_number 8 6.0 0x00
546  // last_section_number 8 7.0 0x00
547  // protocol_version 8 8.0 0x00 for now
548 
549  // source_id 16 3.0 0x0000
550  uint SourceID() const { return TableIDExtension(); }
551 
552  // num_events_in_section 8 9.0
553  uint EventCount() const { return psipdata()[1]; }
554  // for (j = 0; j< num_events_in_section;j++)
555  // {
556  // reserved 2 0.0 3
557  // event_id 14 0.2
558  uint EventID(uint i) const
559  {
560  return ((_ptrs[i][0]<<8) | _ptrs[i][1])&0x3fff;
561  }
562  // start_time 32 2.0
564  {
565  return ((_ptrs[i][2]<<24) | (_ptrs[i][3]<<16) |
566  (_ptrs[i][4]<<8) | (_ptrs[i][5]));
567  }
568  QDateTime StartTimeGPS(uint i) const
569  {
570  // Time in GPS seconds since 00:00:00 on January 6th, 1980 UTC
571 #if QT_VERSION < QT_VERSION_CHECK(5,8,0)
572  return MythDate::fromTime_t(GPS_EPOCH + StartTimeRaw(i));
573 #else
574  return MythDate::fromSecsSinceEpoch(GPS_EPOCH + StartTimeRaw(i));
575 #endif
576  }
577  // reserved 2 6.0 3
578  // ETM_location 2 6.2
580  {
581  return (_ptrs[i][6]>>4)&3;
582  }
583  // length_in_seconds 20 6.4
585  {
586  return ((_ptrs[i][6]<<16) | (_ptrs[i][7]<<8) |
587  (_ptrs[i][8])) & 0xfffff;
588  }
589  // title_length 8 9.0
591  { return _ptrs[i][9]; }
592  // title_text() var * 10.0
594  {
595  return MultipleStringStructure(_ptrs[i]+10);
596  }
597  // reserved 4 0xf
598  // descriptors_length 12
600  {
601  unsigned char *desc=_ptrs[i]+10+TitleLength(i);
602  return ((desc[0]<<8)|(desc[1]))&0xfff;
603  }
604  // for (i=0;i<N;i++)
605  // {
606  // descriptor()
607  const unsigned char* Descriptors(uint i) const
608  {
609  return _ptrs[i]+12+TitleLength(i);
610  }
611  // }
612  // }
613  // CRC_32 32
614  void Parse() const;
615  QString toString() const;
616  private:
617  mutable vector<unsigned char*> _ptrs;
618 };
619 
626 {
627  public:
629  {
631  }
632  explicit ExtendedTextTable(const PSIPTable &table) : PSIPTable(table)
633  {
635  }
637 
638  // Name bits loc expected value
639  // table_id 8 0.0 0xCC
640  // section_syntax_indicator 1 1.0 1
641  // private_indicator 1 1.1 1
642  // reserved 2 1.2 3
643  // section_length 12 1.4
644  // ETT_table_id_extension 16 3.0 unique per pid
645  // reserved 2 5.0 3
646  // current_next_indicator 1 5.7 1
647  // section_number 8 6.0 0x00
648  // last_section_number 8 7.0 0x00
649  // protocol_version 8 8.0 0x00 for now
650 
653  { SetTableIDExtension(id); }
654 
655  // ETM_id 32 10.0
656  // 31..16 15..2 iff 1..0
657  // channel ETM_id source_id 0 00
658  // event ETM_id source_id event_id 10
659  bool IsChannelETM(void) const { return 0 == (psipdata()[4] & 3); }
660  bool IsEventETM(void) const { return 2 == (psipdata()[4] & 3); }
661  uint SourceID(void) const
662  { return (psipdata()[1] << 8) | psipdata()[2]; }
663  uint EventID(void) const
664  { return (psipdata()[3] << 6) | (psipdata()[4] >> 2); }
665 
666  // extended_text_message * 14.0 multiple string structure a/65b p81
668  {
669  return MultipleStringStructure(psipdata() + 5);
670  }
671 
672  QString toString() const;
673  // CRC_32 32
674 };
675 
684 {
685  public:
687  {
689  }
690  explicit SystemTimeTable(const PSIPTable &table) : PSIPTable(table)
691  {
693  }
694 
695  // Name bits loc expected value
696  // table_id 8 0.0 0xCD
697  // section_syntax_indicator 1 1.0 1
698  // private_indicator 1 1.1 1
699  // reserved 2 1.2 3
700  // section_length 12 1.4
701  // table_id_extension 16 3.0 0
702  // reserved 2 5.0 3
703  // version_number 5 5.2 0
704  // current_next_indicator 1 5.7 1
705  // section_number 8 6.0 0x00
706  // last_section_number 8 7.0 0x00
707  // protocol_version 8 8.0 0x00 for now
708 
709  // system_time 32 9.0
710  uint32_t GPSRaw(void) const
711  {
712  return ((pesdata()[9] <<24) | (pesdata()[10]<<16) |
713  (pesdata()[11]<< 8) | pesdata()[12]);
714  }
715  QDateTime SystemTimeGPS(void) const
716  {
717 #if QT_VERSION < QT_VERSION_CHECK(5,8,0)
718  return MythDate::fromTime_t(GPS_EPOCH + GPSRaw());
719 #else
720  return MythDate::fromSecsSinceEpoch(GPS_EPOCH + GPSRaw());
721 #endif
722  }
723  time_t GPSUnix(void) const
724  { return GPS_EPOCH + GPSRaw(); }
725  time_t UTCUnix(void) const
726  { return GPSUnix() - GPSOffset(); }
727 
728  // GPS_UTC_offset 8 13.0
729  uint GPSOffset() const { return pesdata()[13]; }
730  // daylight_savings 16 14.0
731  // DS_status 1 14.0
732  // reserved 2 14.1 3
733  // DS_day_of_month 5 14.3
734  // DS_hour 8 15.0
735  bool InDaylightSavingsTime() const { return pesdata()[14]&0x80; }
736  uint DayDaylightSavingsStarts() const { return pesdata()[14]&0x1f; }
737  uint HourDaylightSavingsStarts() const { return pesdata()[15]; }
738  // for (I = 0;I< N;I++) { descriptor() }
739  // CRC_32 32
740 
741  QString toString(void) const;
742  QString toStringXML(uint indent_level) const;
743 };
744 
749 {
750  public:
752  {
754  }
755  explicit RatingRegionTable(const PSIPTable &table) : PSIPTable(table)
756  {
758  }
759 };
760 
765 {
766  public:
768  : PSIPTable(table)
769  {
771  }
772  explicit DirectedChannelChangeTable(const PSIPTable &table) : PSIPTable(table)
773  {
775  }
776 };
777 
782 {
783  public:
786  : PSIPTable(table)
787  {
789  }
791  : PSIPTable(table)
792  {
794  }
795 };
796 
799 {
800  public:
802  const AggregateEventInformationTable &table) : PSIPTable(table)
803  {
805  }
806  explicit AggregateEventInformationTable(const PSIPTable &table) : PSIPTable(table)
807  {
809  }
810 
811  QString toString(void) const
812  { return "AggregateEventInformationTable\n"; }
813  QString toStringXML(uint /*indent_level*/) const
814  { return "<AggregateEventInformationTable />"; }
815 };
816 
819 {
820  public:
822  const AggregateExtendedTextTable &table) : PSIPTable(table)
823  {
825  }
826  explicit AggregateExtendedTextTable(const PSIPTable &table) : PSIPTable(table)
827  {
829  }
830 
831  QString toString(void) const
832  { return "AggregateExtendedTextTable\n"; }
833  QString toStringXML(uint /*indent_level*/) const
834  { return "<AggregateExtendedTextTable />"; }
835 };
836 
837 #endif // _ATSC_TABLES_H_
const unsigned char * pesdata() const
Definition: pespacket.h:163
No one has had time to decode this table yet...
Definition: atsctables.h:781
uint SCTEMapId() const
Definition: atsctables.h:444
const unsigned char * psipdata(void) const
Definition: mpegtables.h:522
EventInformationTable(const EventInformationTable &table)
Definition: atsctables.h:524
SCTE 65 & ATSC/81 0xD7.
Definition: atsctables.h:818
uint HourDaylightSavingsStarts() const
Definition: atsctables.h:737
DirectedChannelChangeTable(const PSIPTable &table)
Definition: atsctables.h:772
uint MajorChannel(uint i) const
Definition: atsctables.h:245
vector< unsigned char * > _ptrs
Definition: atsctables.h:180
AggregateExtendedTextTable(const AggregateExtendedTextTable &table)
Definition: atsctables.h:821
CableVirtualChannelTable(const PSIPTable &table)
Definition: atsctables.h:423
#define GPS_EPOCH
Seconds between start of GPS time and the start of UNIX time.
Definition: mpegtables.h:28
uint MinorChannel(uint i) const
Definition: atsctables.h:250
virtual QString XMLChannelValues(uint indent_level, uint channel) const
Definition: atsctables.cpp:307
bool InDaylightSavingsTime() const
Definition: atsctables.h:735
uint TableIDExtension(void) const
Definition: mpegtables.h:496
ExtendedTextTable contain additional text not contained in EventInformationTables.
Definition: atsctables.h:625
time_t GPSUnix(void) const
Definition: atsctables.h:723
QString toString(void) const
Definition: atsctables.h:811
uint TableCount() const
Definition: atsctables.h:114
uint ProgramNumber(uint i) const
Definition: atsctables.h:267
uint ServiceType(uint i) const
Definition: atsctables.h:294
const unsigned char * GlobalDescriptors() const
Definition: atsctables.h:167
QString toStringXML(uint) const
Definition: atsctables.h:833
uint ExtendedTextTableID() const
Definition: atsctables.h:651
bool
Definition: pxsup2dast.c:30
vector< unsigned char * > _ptrs
Definition: atsctables.h:617
uint SCTEOnePartChannel(uint i) const
Definition: atsctables.h:476
unsigned int uint
Definition: compat.h:136
bool IsOutOfBand(uint i) const
Definition: atsctables.h:496
uint ChannelTransportStreamID(uint i) const
Definition: atsctables.h:262
QString toString(void) const
Definition: atsctables.h:831
uint SourceID() const
Definition: atsctables.h:550
VirtualChannelTable(const VirtualChannelTable &table)
Definition: atsctables.h:192
AggregateEventInformationTable(const AggregateEventInformationTable &table)
Definition: atsctables.h:801
const unsigned char * GlobalDescriptors() const
Definition: atsctables.h:324
uint ModulationMode(uint i) const
Definition: atsctables.h:255
uint EventCount() const
Definition: atsctables.h:553
bool SCTEIsChannelNumberOnePart(uint i) const
Definition: atsctables.h:465
static int x4
Definition: mythsocket.cpp:64
bool IsHidden(uint i) const
Definition: atsctables.h:282
A PSIP table is a variant of a PES packet containing an MPEG, ATSC or DVB table.
Definition: mpegtables.h:371
MBASE_PUBLIC QDateTime fromSecsSinceEpoch(uint seconds)
This function takes the number of seconds since the start of the epoch and returns a QDateTime with t...
Definition: mythdate.cpp:88
This table contains information about the cable channels transmitted on this multiplex.
Definition: atsctables.h:415
TerrestrialVirtualChannelTable(const PSIPTable &table)
Definition: atsctables.h:354
uint ETMlocation(uint i) const
Definition: atsctables.h:272
#define MTV_PUBLIC
Definition: mythtvexp.h:15
No one has had time to decode this table yet...
Definition: atsctables.h:748
bool IsHiddenInGuide(uint i) const
Definition: atsctables.h:288
static int x2
Definition: mythsocket.cpp:62
uint DayDaylightSavingsStarts() const
Definition: atsctables.h:736
uint ETMLocation(uint i) const
Definition: atsctables.h:579
uint ChannelCount() const
Definition: atsctables.h:221
uint TableDescriptorsBytes(uint i) const
Definition: atsctables.h:139
No one has had time to decode this table yet...
Definition: atsctables.h:764
MasterGuideTable(const MasterGuideTable &table)
Definition: atsctables.h:77
CableVirtualChannelTable(const CableVirtualChannelTable &table)
Definition: atsctables.h:418
uint TablePID(uint i) const
Definition: atsctables.h:128
virtual QString ChannelString(uint channel) const =0
#define minor(X)
Definition: compat.h:134
uint GlobalDescriptorsLength() const
Definition: atsctables.h:161
uint EventID(uint i) const
Definition: atsctables.h:558
void SetExtendedTextTableID(uint id)
Definition: atsctables.h:652
uint32_t GPSRaw(void) const
Definition: atsctables.h:710
uint TableVersion(uint i) const
Definition: atsctables.h:134
DirectedChannelChangeSelectionCodeTable(const PSIPTable &table)
Definition: atsctables.h:790
DirectedChannelChangeSelectionCodeTable(const DirectedChannelChangeSelectionCodeTable &table)
Definition: atsctables.h:784
SystemTimeTable(const PSIPTable &table)
Definition: atsctables.h:690
AggregateExtendedTextTable(const PSIPTable &table)
Definition: atsctables.h:826
const unsigned char * Descriptors(uint i) const
Definition: atsctables.h:311
void SetTableIDExtension(uint len)
Definition: mpegtables.h:532
uint TitleLength(uint i) const
Definition: atsctables.h:590
EventInformationTable(const PSIPTable &table)
Definition: atsctables.h:530
EventInformationTables contain program titles, start times, and channel information.
Definition: atsctables.h:521
ExtendedTextTable(const PSIPTable &table)
Definition: atsctables.h:632
bool IsAccessControlled(uint i) const
Definition: atsctables.h:277
uint SCTEMapId() const
Definition: atsctables.h:102
VirtualChannelTable(const PSIPTable &table)
Definition: atsctables.h:197
uint TableID(void) const
Definition: mpegtables.h:479
bool IsEventETM(void) const
Definition: atsctables.h:660
uint SourceID(uint i) const
Definition: atsctables.h:300
QDateTime SystemTimeGPS(void) const
Definition: atsctables.h:715
uint TableDescriptorsLength(uint i) const
Definition: atsctables.h:146
uint StartTimeRaw(uint i) const
Definition: atsctables.h:563
const unsigned char * Descriptors(uint i) const
Definition: atsctables.h:607
#define assert(x)
uint LengthInSeconds(uint i) const
Definition: atsctables.h:584
This table tells the decoder on which PIDs to find other tables, and their sizes and each table&#39;s cur...
Definition: atsctables.h:74
bool IsChannelETM(void) const
Definition: atsctables.h:659
vector< unsigned char * > _ptrs
Definition: atsctables.h:338
AggregateEventInformationTable(const PSIPTable &table)
Definition: atsctables.h:806
const unsigned char * TableDescriptors(uint i) const
Definition: atsctables.h:155
time_t UTCUnix(void) const
Definition: atsctables.h:725
uint EventID(void) const
Definition: atsctables.h:663
QString toStringXML(uint) const
Definition: atsctables.h:813
virtual QString toString(void) const
Definition: mpegtables.cpp:754
const MultipleStringStructure ExtendedTextMessage() const
Definition: atsctables.h:667
RatingRegionTable(const RatingRegionTable &table)
Definition: atsctables.h:751
This table contains information about the channels transmitted on this multiplex. ...
Definition: atsctables.h:189
uint TableType(uint i) const
Definition: atsctables.h:120
uint DescriptorsLength(uint i) const
Definition: atsctables.h:599
uint DescriptorsLength(uint i) const
Definition: atsctables.h:306
bool SCTEIsChannelNumberTwoPart(uint i) const
Definition: atsctables.h:469
TerrestrialVirtualChannelTable(const TerrestrialVirtualChannelTable &table)
Definition: atsctables.h:349
uint GPSOffset() const
Definition: atsctables.h:729
ExtendedTextTable(const ExtendedTextTable &table)
Definition: atsctables.h:628
QDateTime StartTimeGPS(uint i) const
Definition: atsctables.h:568
SystemTimeTable(const SystemTimeTable &table)
Definition: atsctables.h:686
This table contains the GPS time at the time of transmission.
Definition: atsctables.h:683
SCTE 65 & ATSC/81 0xD6.
Definition: atsctables.h:798
bool IsPathSelect(uint i) const
Definition: atsctables.h:491
virtual QString toStringXML(uint indent_level) const
Definition: mpegtables.cpp:772
This table contains information about the terrestrial channels transmitted on this multiplex...
Definition: atsctables.h:346
MultipleStringStructure title(int i) const
Definition: atsctables.h:593
RatingRegionTable(const PSIPTable &table)
Definition: atsctables.h:755
uint TransportStreamID() const
Definition: atsctables.h:218
DirectedChannelChangeTable(const DirectedChannelChangeTable &table)
Definition: atsctables.h:767
uint GlobalDescriptorsLength() const
Definition: atsctables.h:318
const QString ShortChannelName(uint i) const
Definition: atsctables.h:225
MasterGuideTable(const PSIPTable &table)
Definition: atsctables.h:82
uint SourceID(void) const
Definition: atsctables.h:661