MythTV  0.28pre
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 
51 class MTV_PUBLIC TableClass
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 
74 class MTV_PUBLIC MasterGuideTable : public PSIPTable
75 {
76  public:
78  {
79  assert(TableID::MGT == TableID());
80  Parse();
81  }
82  MasterGuideTable(const PSIPTable& table) : PSIPTable(table)
83  {
84  assert(TableID::MGT == TableID());
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 
189 class MTV_PUBLIC VirtualChannelTable : public PSIPTable
190 {
191  public:
193  {
194  assert(TableID::TVCT == TableID() || TableID::CVCT == TableID());
195  Parse();
196  }
197  VirtualChannelTable(const PSIPTable &table) : PSIPTable(table)
198  {
199  assert(TableID::TVCT == TableID() || TableID::CVCT == TableID());
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::null;
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  {
352  assert(TableID::TVCT == TableID());
353  }
355  : VirtualChannelTable(table)
356  {
357  assert(TableID::TVCT == TableID());
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  {
421  assert(TableID::CVCT == TableID());
422  }
424  : VirtualChannelTable(table)
425  {
426  assert(TableID::CVCT == TableID());
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 
521 class MTV_PUBLIC EventInformationTable : public PSIPTable
522 {
523  public:
525  : PSIPTable(table)
526  {
527  assert(TableID::EIT == TableID());
528  Parse();
529  }
531  {
532  assert(TableID::EIT == TableID());
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  return MythDate::fromTime_t(GPS_EPOCH + StartTimeRaw(i));
572  }
573  // reserved 2 6.0 3
574  // ETM_location 2 6.2
576  {
577  return (_ptrs[i][6]>>4)&3;
578  }
579  // length_in_seconds 20 6.4
581  {
582  return ((_ptrs[i][6]<<16) | (_ptrs[i][7]<<8) |
583  (_ptrs[i][8])) & 0xfffff;
584  }
585  // title_length 8 9.0
587  { return _ptrs[i][9]; }
588  // title_text() var * 10.0
590  {
591  return MultipleStringStructure(_ptrs[i]+10);
592  }
593  // reserved 4 0xf
594  // descriptors_length 12
596  {
597  unsigned char *desc=_ptrs[i]+10+TitleLength(i);
598  return ((desc[0]<<8)|(desc[1]))&0xfff;
599  }
600  // for (i=0;i<N;i++)
601  // {
602  // descriptor()
603  const unsigned char* Descriptors(uint i) const
604  {
605  return _ptrs[i]+12+TitleLength(i);
606  }
607  // }
608  // }
609  // CRC_32 32
610  void Parse() const;
611  QString toString() const;
612  private:
613  mutable vector<unsigned char*> _ptrs;
614 };
615 
621 class MTV_PUBLIC ExtendedTextTable : public PSIPTable
622 {
623  public:
625  {
626  assert(TableID::ETT == TableID());
627  }
628  ExtendedTextTable(const PSIPTable &table) : PSIPTable(table)
629  {
630  assert(TableID::ETT == TableID());
631  }
633 
634  // Name bits loc expected value
635  // table_id 8 0.0 0xCC
636  // section_syntax_indicator 1 1.0 1
637  // private_indicator 1 1.1 1
638  // reserved 2 1.2 3
639  // section_length 12 1.4
640  // ETT_table_id_extension 16 3.0 unique per pid
641  // reserved 2 5.0 3
642  // current_next_indicator 1 5.7 1
643  // section_number 8 6.0 0x00
644  // last_section_number 8 7.0 0x00
645  // protocol_version 8 8.0 0x00 for now
646 
649  { SetTableIDExtension(id); }
650 
651  // ETM_id 32 10.0
652  // 31..16 15..2 iff 1..0
653  // channel ETM_id source_id 0 00
654  // event ETM_id source_id event_id 10
655  bool IsChannelETM(void) const { return 0 == (psipdata()[4] & 3); }
656  bool IsEventETM(void) const { return 2 == (psipdata()[4] & 3); }
657  uint SourceID(void) const
658  { return (psipdata()[1] << 8) | psipdata()[2]; }
659  uint EventID(void) const
660  { return (psipdata()[3] << 6) | (psipdata()[4] >> 2); }
661 
662  // extended_text_message * 14.0 multiple string structure a/65b p81
664  {
665  return MultipleStringStructure(psipdata() + 5);
666  }
667 
668  QString toString() const;
669  // CRC_32 32
670 };
671 
679 class MTV_PUBLIC SystemTimeTable : public PSIPTable
680 {
681  public:
683  {
684  assert(TableID::STT == TableID());
685  }
686  SystemTimeTable(const PSIPTable &table) : PSIPTable(table)
687  {
688  assert(TableID::STT == TableID());
689  }
690 
691  // Name bits loc expected value
692  // table_id 8 0.0 0xCD
693  // section_syntax_indicator 1 1.0 1
694  // private_indicator 1 1.1 1
695  // reserved 2 1.2 3
696  // section_length 12 1.4
697  // table_id_extension 16 3.0 0
698  // reserved 2 5.0 3
699  // version_number 5 5.2 0
700  // current_next_indicator 1 5.7 1
701  // section_number 8 6.0 0x00
702  // last_section_number 8 7.0 0x00
703  // protocol_version 8 8.0 0x00 for now
704 
705  // system_time 32 9.0
706  uint32_t GPSRaw(void) const
707  {
708  return ((pesdata()[9] <<24) | (pesdata()[10]<<16) |
709  (pesdata()[11]<< 8) | pesdata()[12]);
710  }
711  QDateTime SystemTimeGPS(void) const
712  {
713  return MythDate::fromTime_t(GPS_EPOCH + GPSRaw());
714  }
715  time_t GPSUnix(void) const
716  { return GPS_EPOCH + GPSRaw(); }
717  time_t UTCUnix(void) const
718  { return GPSUnix() - GPSOffset(); }
719 
720  // GPS_UTC_offset 8 13.0
721  uint GPSOffset() const { return pesdata()[13]; }
722  // daylight_savings 16 14.0
723  // DS_status 1 14.0
724  // reserved 2 14.1 3
725  // DS_day_of_month 5 14.3
726  // DS_hour 8 15.0
727  bool InDaylightSavingsTime() const { return pesdata()[14]&0x80; }
728  uint DayDaylightSavingsStarts() const { return pesdata()[14]&0x1f; }
729  uint HourDaylightSavingsStarts() const { return pesdata()[15]; }
730  // for (I = 0;I< N;I++) { descriptor() }
731  // CRC_32 32
732 
733  QString toString(void) const;
734  QString toStringXML(uint indent_level) const;
735 };
736 
740 class MTV_PUBLIC RatingRegionTable : public PSIPTable
741 {
742  public:
744  {
745  assert(TableID::RRT == TableID());
746  }
747  RatingRegionTable(const PSIPTable &table) : PSIPTable(table)
748  {
749  assert(TableID::RRT == TableID());
750  }
751 };
752 
756 class MTV_PUBLIC DirectedChannelChangeTable : public PSIPTable
757 {
758  public:
760  : PSIPTable(table)
761  {
762  assert(TableID::DCCT == TableID());
763  }
765  {
766  assert(TableID::DCCT == TableID());
767  }
768 };
769 
774 {
775  public:
778  : PSIPTable(table)
779  {
780  assert(TableID::DCCSCT == TableID());
781  }
783  : PSIPTable(table)
784  {
785  assert(TableID::DCCSCT == TableID());
786  }
787 };
788 
790 class MTV_PUBLIC AggregateEventInformationTable : public PSIPTable
791 {
792  public:
794  const AggregateEventInformationTable &table) : PSIPTable(table)
795  {
796  assert(TableID::AEIT == TableID());
797  }
799  {
800  assert(TableID::AEIT == TableID());
801  }
802 
803  QString toString(void) const
804  { return "AggregateEventInformationTable\n"; }
805  QString toStringXML(uint indent_level) const
806  { return "<AggregateEventInformationTable />"; }
807 };
808 
810 class MTV_PUBLIC AggregateExtendedTextTable : public PSIPTable
811 {
812  public:
814  const AggregateExtendedTextTable &table) : PSIPTable(table)
815  {
816  assert(TableID::AETT == TableID());
817  }
819  {
820  assert(TableID::AETT == TableID());
821  }
822 
823  QString toString(void) const
824  { return "AggregateExtendedTextTable\n"; }
825  QString toStringXML(uint indent_level) const
826  { return "<AggregateExtendedTextTable />"; }
827 };
828 
829 #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:773
uint SCTEMapId() const
Definition: atsctables.h:444
const unsigned char * psipdata(void) const
Definition: mpegtables.h:522
QString toStringXML(uint indent_level) const
Definition: atsctables.h:825
EventInformationTable(const EventInformationTable &table)
Definition: atsctables.h:524
SCTE 65 & ATSC/81 0xD7.
Definition: atsctables.h:810
uint HourDaylightSavingsStarts() const
Definition: atsctables.h:729
DirectedChannelChangeTable(const PSIPTable &table)
Definition: atsctables.h:764
uint MajorChannel(uint i) const
Definition: atsctables.h:245
vector< unsigned char * > _ptrs
Definition: atsctables.h:180
QString toStringXML(uint indent_level) const
Definition: atsctables.h:805
AggregateExtendedTextTable(const AggregateExtendedTextTable &table)
Definition: atsctables.h:813
CableVirtualChannelTable(const PSIPTable &table)
Definition: atsctables.h:423
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:727
uint TableIDExtension(void) const
Definition: mpegtables.h:496
ExtendedTextTable contain additional text not contained in EventInformationTables.
Definition: atsctables.h:621
time_t GPSUnix(void) const
Definition: atsctables.h:715
QString toString(void) const
Definition: atsctables.h:803
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
uint ExtendedTextTableID() const
Definition: atsctables.h:647
bool
Definition: pxsup2dast.c:30
vector< unsigned char * > _ptrs
Definition: atsctables.h:613
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:823
uint SourceID() const
Definition: atsctables.h:550
VirtualChannelTable(const VirtualChannelTable &table)
Definition: atsctables.h:192
AggregateEventInformationTable(const AggregateEventInformationTable &table)
Definition: atsctables.h:793
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:63
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
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
No one has had time to decode this table yet...
Definition: atsctables.h:740
bool IsHiddenInGuide(uint i) const
Definition: atsctables.h:288
static int x2
Definition: mythsocket.cpp:61
uint DayDaylightSavingsStarts() const
Definition: atsctables.h:728
uint ETMLocation(uint i) const
Definition: atsctables.h:575
uint ChannelCount() const
Definition: atsctables.h:221
MBASE_PUBLIC QDateTime fromTime_t(uint seconds)
Definition: mythdate.cpp:60
uint TableDescriptorsBytes(uint i) const
Definition: atsctables.h:139
No one has had time to decode this table yet...
Definition: atsctables.h:756
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
uint GlobalDescriptorsLength() const
Definition: atsctables.h:161
uint EventID(uint i) const
Definition: atsctables.h:558
void SetExtendedTextTableID(uint id)
Definition: atsctables.h:648
uint32_t GPSRaw(void) const
Definition: atsctables.h:706
uint TableVersion(uint i) const
Definition: atsctables.h:134
DirectedChannelChangeSelectionCodeTable(const PSIPTable &table)
Definition: atsctables.h:782
DirectedChannelChangeSelectionCodeTable(const DirectedChannelChangeSelectionCodeTable &table)
Definition: atsctables.h:776
SystemTimeTable(const PSIPTable &table)
Definition: atsctables.h:686
AggregateExtendedTextTable(const PSIPTable &table)
Definition: atsctables.h:818
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:586
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:628
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:656
uint SourceID(uint i) const
Definition: atsctables.h:300
QDateTime SystemTimeGPS(void) const
Definition: atsctables.h:711
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:603
uint LengthInSeconds(uint i) const
Definition: atsctables.h:580
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:655
vector< unsigned char * > _ptrs
Definition: atsctables.h:338
AggregateEventInformationTable(const PSIPTable &table)
Definition: atsctables.h:798
const unsigned char * TableDescriptors(uint i) const
Definition: atsctables.h:155
time_t UTCUnix(void) const
Definition: atsctables.h:717
uint EventID(void) const
Definition: atsctables.h:659
virtual QString toString(void) const
Definition: mpegtables.cpp:751
const MultipleStringStructure ExtendedTextMessage() const
Definition: atsctables.h:663
RatingRegionTable(const RatingRegionTable &table)
Definition: atsctables.h:743
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:595
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:721
ExtendedTextTable(const ExtendedTextTable &table)
Definition: atsctables.h:624
QDateTime StartTimeGPS(uint i) const
Definition: atsctables.h:568
SystemTimeTable(const SystemTimeTable &table)
Definition: atsctables.h:682
This table contains the GPS time at the time of transmission.
Definition: atsctables.h:679
SCTE 65 & ATSC/81 0xD6.
Definition: atsctables.h:790
bool IsPathSelect(uint i) const
Definition: atsctables.h:491
virtual QString toStringXML(uint indent_level) const
Definition: mpegtables.cpp:769
This table contains information about the terrestrial channels transmitted on this multiplex...
Definition: atsctables.h:346
MultipleStringStructure title(int i) const
Definition: atsctables.h:589
RatingRegionTable(const PSIPTable &table)
Definition: atsctables.h:747
uint TransportStreamID() const
Definition: atsctables.h:218
DirectedChannelChangeTable(const DirectedChannelChangeTable &table)
Definition: atsctables.h:759
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:657