MythTV  0.28pre
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Groups Pages
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  {
80  Parse();
81  }
82  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 
189 class MTV_PUBLIC VirtualChannelTable : public PSIPTable
190 {
191  public:
193  {
195  Parse();
196  }
197  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 UTF-16 chars padded by 0x0000)
225  const QString ShortChannelName(uint i) const
226  {
227  QString str;
228  const unsigned short* ustr =
229  reinterpret_cast<const unsigned short*>(_ptrs[i]);
230  for (int j=0; j<7; j++)
231  {
232  QChar c((ustr[j]<<8) | (ustr[j]>>8));
233  if (c != QChar('\0')) str.append(c);
234  }
235  return str;
236  }
237  // reserved 4 13.0 0xf
238 
239  // major_channel_number 10 13.4
240  // 14 RRRR JJJJ 15 jjjj jjmm 16 MMMM MMMM
241  // JJ JJjj jjjj mm MMMM MMMM
243  {
244  return (((_ptrs[i][14])<<6)&0x3c0) | (_ptrs[i][15]>>2);
245  }
246  // minor_channel_number 10 14.6
248  {
249  return (((_ptrs[i][15])<<8)&0x300) | _ptrs[i][16];
250  }
251  // modulation_mode 8 16.0
253  {
254  return _ptrs[i][17];
255  }
256  QString ModulationModeString(uint i) const;
257  // carrier_frequency 32 17.0 deprecated
258  // channel_TSID 16 21.0
260  {
261  return ((_ptrs[i][22]<<8) | _ptrs[i][23]);
262  }
263  // program_number 16 23.0
265  {
266  return ((_ptrs[i][24]<<8) | _ptrs[i][25]);
267  }
268  // ETM_location 2 25.0
270  {
271  return (_ptrs[i][26]>>6) & 0x03;
272  }
273  // access_controlled 1 25.2
274  bool IsAccessControlled(uint i) const
275  {
276  return bool(_ptrs[i][26] & 0x20);
277  }
278  // hidden 1 25.3
279  bool IsHidden(uint i) const
280  {
281  return bool(_ptrs[i][26] & 0x10);
282  }
283  // reserved 2 25.4 3
284  // hide_guide 1 25.6
285  bool IsHiddenInGuide(uint i) const
286  {
287  return bool(_ptrs[i][26] & 0x2);
288  }
289  // reserved 6 25.7 0x3f
290  // service_type 6 26.2
292  {
293  return _ptrs[i][27] & 0x3f;
294  }
295  QString ServiceTypeString(uint i) const;
296  // source_id 16 27.0
297  uint SourceID(uint i) const
298  {
299  return ((_ptrs[i][28]<<8) | _ptrs[i][29]);
300  }
301  // reserved 6 29.0 0xfb
302  // descriptors_length 10 29.6
304  {
305  return ((_ptrs[i][30]<<8) | _ptrs[i][31]) & 0x03ff;
306  }
307  // for (i=0;i<N;i++) { descriptor() }
308  const unsigned char* Descriptors(uint i) const
309  {
310  return _ptrs[i]+32;
311  }
312  // }
313  // reserved 6 0xfb
314  // additional_descriptors_length 10
316  {
317  uint i = ChannelCount();
318  return ((_ptrs[i][0]<<8) | _ptrs[i][1]) & 0x03ff;
319  }
320  // for (j=0; j<N; j++) { additional_descriptor() }
321  const unsigned char* GlobalDescriptors() const
322  {
323  return _ptrs[ChannelCount()]+2;
324  }
325  // CRC_32 32
326  void Parse() const;
327  int Find(int major, int minor) const;
328  QString GetExtendedChannelName(uint idx) const;
329  virtual QString toString(void) const;
330  virtual QString ChannelString(uint channel) const = 0;
331  virtual QString toStringXML(uint indent_level) const;
332  virtual QString ChannelStringXML(uint indent_level, uint channel) const;
333  virtual QString XMLChannelValues(uint indent_level, uint channel) const;
334  protected:
335  mutable vector<unsigned char*> _ptrs;
336 };
337 
344 {
345  public:
347  : VirtualChannelTable(table)
348  {
350  }
352  : VirtualChannelTable(table)
353  {
355  }
357 
358  // Name bits loc expected value
359  // table_id 8 0.0 0xC8
360  // section_syntax_indicator 1 1.0 1
361  // private_indicator 1 1.1 1
362  // reserved 2 1.2 3
363  // table_id_extension 16 3.0 0x0000
364  // reserved 2 5.0 3
365  // current_next_indicator 1 5.7 1
366  // section_number 8 6.0 0x00
367  // last_section_number 8 7.0 0x00
368  // protocol_version 8 8.0 0x00 for now
369 
370  // transport_stream_id 16 3.0
371  // num_channels_in_section 8 9.0
372 
373  // for (i=0; i<num_channels_in_section; i++)
374  // {
375  // short_name 7*16 0.0 (7 UTF-16 chars padded by 0x0000)
376  // reserved 4 14.0 0xf
377 
378  // major_channel_number 10 14.4
379  // 14 RRRR JJJJ 15 jjjj jjmm 16 MMMM MMMM
380  // JJ JJjj jjjj mm MMMM MMMM
381  // minor_channel_number 10 15.6
382  // modulation_mode 8 17.0
383  // carrier_frequency 32 18.0 deprecated
384  // channel_TSID 16 22.0
385  // program_number 16 24.0
386  // ETM_location 2 26.0
387  // access_controlled 1 26.2
388  // hidden 1 26.3
389  // reserved 2 26.4 3
390  // hide_guide 1 26.6
391  // reserved 6 26.7 0x3f
392  // service_type 6 27.2
393  // source_id 16 28.0
394  // reserved 6 30.0 0xfb
395  // descriptors_length 10 30.6-31
396  // for (i=0;i<N;i++) { descriptor() }
397  // }
398  // reserved 6 0xfb
399  // additional_descriptors_length 10
400  // for (j=0; j<N; j++) { additional_descriptor() }
401  // CRC_32 32
402  virtual QString ChannelString(uint channel) const;
403  virtual QString XMLChannelValues(uint indent_level, uint channel) const;
404 };
405 
406 
413 {
414  public:
416  : VirtualChannelTable(table)
417  {
419  }
421  : VirtualChannelTable(table)
422  {
424  }
426 
427  // Name bits loc expected value
428  // table_id 8 0.0 0xC9
429  // section_syntax_indicator 1 1.0 1
430  // private_indicator 1 1.1 1
431  // reserved 2 1.2 3
432  // table_id_extension 16 3.0 0x0000
433 
434  /* Each Map ID corresponds to one set of channel mappings. Each STB
435  * is expected to ignore any Map ID's other than the one corresponding
436  * to it's head-end.
437  *
438  * Note: This is only defined for SCTE streams,
439  * it is always 0 in ATSC streams.
440  */
441  uint SCTEMapId() const
442  {
443  return (pesdata()[3]<<8) | pesdata()[4];
444  }
445 
446  // reserved 2 5.0 3
447  // current_next_indicator 1 5.7 1
448  // section_number 8 6.0 0x00
449  // last_section_number 8 7.0 0x00
450  // protocol_version 8 8.0 0x00 for now
451 
452  // for (i=0; i<num_channels_in_section; i++)
453  // {
454  // short_name 7*16 0.0 (7 UTF-16 chars padded by 0x0000)
455  // reserved 4 14.0 0xf
456 
457  // major_channel_number 10 14.4
458  // 14 RRRR JJJJ 15 jjjj jjmm 16 MMMM MMMM
459  // JJ JJjj jjjj mm MMMM MMMM
460  // minor_channel_number 10 15.6
461 
463  {
464  return (MajorChannel(i) >> 4) == 0x3f;
465  }
467  {
468  return MajorChannel(i) < 1000;
469  }
470  // Note: In SCTE streams, the channel number is undefined if
471  // the two functions above return false. As of 2002 spec.
472 
474  {
475  if (SCTEIsChannelNumberOnePart(i))
476  return ((MajorChannel(i) & 0xf) << 10) | MinorChannel(i);
477  return 0;
478  }
479 
480  // modulation_mode 8 17.0
481  // carrier_frequency 32 18.0 deprecated
482  // channel_TSID 16 22.0
483  // program_number 16 24.0
484  // ETM_location 2 26.0
485  // access_controlled 1 26.2
486  // hidden 1 26.3
487  // path_select 1 26.4
488  bool IsPathSelect(uint i) const
489  {
490  return bool(_ptrs[i][26] & 0x8);
491  }
492  // out_of_band 1 26.5
493  bool IsOutOfBand(uint i) const
494  {
495  return bool(_ptrs[i][26] & 0x4);
496  }
497  // hide_guide 1 26.6
498  // reserved 3 26.7 7
499  // service_type 6 27.2
500  // source_id 16 28.0
501  // reserved 6 30.0 0xfb
502  // descriptors_length 10 30.6-31
503  // for (i=0;i<N;i++) { descriptor() }
504  // }
505  // reserved 6 0xfb
506  // additional_descriptors_length 10
507  // for (j=0; j<N; j++) { additional_descriptor() }
508  // CRC_32 32
509  virtual QString ChannelString(uint channel) const;
510  virtual QString XMLChannelValues(uint indent_level, uint channel) const;
511 };
512 
518 class MTV_PUBLIC EventInformationTable : public PSIPTable
519 {
520  public:
522  : PSIPTable(table)
523  {
525  Parse();
526  }
528  {
530  Parse();
531  }
533 
534  // Name bits loc expected value
535  // table_id 8 0.0 0xCB
536  // section_syntax_indicator 1 1.0 1
537  // private_indicator 1 1.1 1
538  // reserved 2 1.2 3
539  // table_id_extension 16 3.0 0x0000
540  // reserved 2 5.0 3
541  // current_next_indicator 1 5.7 1
542  // section_number 8 6.0 0x00
543  // last_section_number 8 7.0 0x00
544  // protocol_version 8 8.0 0x00 for now
545 
546  // source_id 16 3.0 0x0000
547  uint SourceID() const { return TableIDExtension(); }
548 
549  // num_events_in_section 8 9.0
550  uint EventCount() const { return psipdata()[1]; }
551  // for (j = 0; j< num_events_in_section;j++)
552  // {
553  // reserved 2 0.0 3
554  // event_id 14 0.2
555  uint EventID(uint i) const
556  {
557  return ((_ptrs[i][0]<<8) | _ptrs[i][1])&0x3fff;
558  }
559  // start_time 32 2.0
561  {
562  return ((_ptrs[i][2]<<24) | (_ptrs[i][3]<<16) |
563  (_ptrs[i][4]<<8) | (_ptrs[i][5]));
564  }
565  QDateTime StartTimeGPS(uint i) const
566  {
567  // Time in GPS seconds since 00:00:00 on January 6th, 1980 UTC
568  return MythDate::fromTime_t(GPS_EPOCH + StartTimeRaw(i));
569  }
570  // reserved 2 6.0 3
571  // ETM_location 2 6.2
573  {
574  return (_ptrs[i][6]>>4)&3;
575  }
576  // length_in_seconds 20 6.4
578  {
579  return ((_ptrs[i][6]<<16) | (_ptrs[i][7]<<8) |
580  (_ptrs[i][8])) & 0xfffff;
581  }
582  // title_length 8 9.0
584  { return _ptrs[i][9]; }
585  // title_text() var * 10.0
587  {
588  return MultipleStringStructure(_ptrs[i]+10);
589  }
590  // reserved 4 0xf
591  // descriptors_length 12
593  {
594  unsigned char *desc=_ptrs[i]+10+TitleLength(i);
595  return ((desc[0]<<8)|(desc[1]))&0xfff;
596  }
597  // for (i=0;i<N;i++)
598  // {
599  // descriptor()
600  const unsigned char* Descriptors(uint i) const
601  {
602  return _ptrs[i]+12+TitleLength(i);
603  }
604  // }
605  // }
606  // CRC_32 32
607  void Parse() const;
608  QString toString() const;
609  private:
610  mutable vector<unsigned char*> _ptrs;
611 };
612 
618 class MTV_PUBLIC ExtendedTextTable : public PSIPTable
619 {
620  public:
622  {
624  }
625  ExtendedTextTable(const PSIPTable &table) : PSIPTable(table)
626  {
628  }
630 
631  // Name bits loc expected value
632  // table_id 8 0.0 0xCC
633  // section_syntax_indicator 1 1.0 1
634  // private_indicator 1 1.1 1
635  // reserved 2 1.2 3
636  // section_length 12 1.4
637  // ETT_table_id_extension 16 3.0 unique per pid
638  // reserved 2 5.0 3
639  // current_next_indicator 1 5.7 1
640  // section_number 8 6.0 0x00
641  // last_section_number 8 7.0 0x00
642  // protocol_version 8 8.0 0x00 for now
643 
646  { SetTableIDExtension(id); }
647 
648  // ETM_id 32 10.0
649  // 31..16 15..2 iff 1..0
650  // channel ETM_id source_id 0 00
651  // event ETM_id source_id event_id 10
652  bool IsChannelETM(void) const { return 0 == (psipdata()[4] & 3); }
653  bool IsEventETM(void) const { return 2 == (psipdata()[4] & 3); }
654  uint SourceID(void) const
655  { return (psipdata()[1] << 8) | psipdata()[2]; }
656  uint EventID(void) const
657  { return (psipdata()[3] << 6) | (psipdata()[4] >> 2); }
658 
659  // extended_text_message * 14.0 multiple string structure a/65b p81
661  {
662  return MultipleStringStructure(psipdata() + 5);
663  }
664 
665  QString toString() const;
666  // CRC_32 32
667 };
668 
676 class MTV_PUBLIC SystemTimeTable : public PSIPTable
677 {
678  public:
680  {
682  }
683  SystemTimeTable(const PSIPTable &table) : PSIPTable(table)
684  {
686  }
687 
688  // Name bits loc expected value
689  // table_id 8 0.0 0xCD
690  // section_syntax_indicator 1 1.0 1
691  // private_indicator 1 1.1 1
692  // reserved 2 1.2 3
693  // section_length 12 1.4
694  // table_id_extension 16 3.0 0
695  // reserved 2 5.0 3
696  // version_number 5 5.2 0
697  // current_next_indicator 1 5.7 1
698  // section_number 8 6.0 0x00
699  // last_section_number 8 7.0 0x00
700  // protocol_version 8 8.0 0x00 for now
701 
702  // system_time 32 9.0
703  uint32_t GPSRaw(void) const
704  {
705  return ((pesdata()[9] <<24) | (pesdata()[10]<<16) |
706  (pesdata()[11]<< 8) | pesdata()[12]);
707  }
708  QDateTime SystemTimeGPS(void) const
709  {
710  return MythDate::fromTime_t(GPS_EPOCH + GPSRaw());
711  }
712  time_t GPSUnix(void) const
713  { return GPS_EPOCH + GPSRaw(); }
714  time_t UTCUnix(void) const
715  { return GPSUnix() - GPSOffset(); }
716 
717  // GPS_UTC_offset 8 13.0
718  uint GPSOffset() const { return pesdata()[13]; }
719  // daylight_savings 16 14.0
720  // DS_status 1 14.0
721  // reserved 2 14.1 3
722  // DS_day_of_month 5 14.3
723  // DS_hour 8 15.0
724  bool InDaylightSavingsTime() const { return pesdata()[14]&0x80; }
725  uint DayDaylightSavingsStarts() const { return pesdata()[14]&0x1f; }
726  uint HourDaylightSavingsStarts() const { return pesdata()[15]; }
727  // for (I = 0;I< N;I++) { descriptor() }
728  // CRC_32 32
729 
730  QString toString(void) const;
731  QString toStringXML(uint indent_level) const;
732 };
733 
737 class MTV_PUBLIC RatingRegionTable : public PSIPTable
738 {
739  public:
741  {
743  }
744  RatingRegionTable(const PSIPTable &table) : PSIPTable(table)
745  {
747  }
748 };
749 
753 class MTV_PUBLIC DirectedChannelChangeTable : public PSIPTable
754 {
755  public:
757  : PSIPTable(table)
758  {
760  }
762  {
764  }
765 };
766 
771 {
772  public:
775  : PSIPTable(table)
776  {
778  }
780  : PSIPTable(table)
781  {
783  }
784 };
785 
787 class MTV_PUBLIC AggregateEventInformationTable : public PSIPTable
788 {
789  public:
791  const AggregateEventInformationTable &table) : PSIPTable(table)
792  {
794  }
796  {
798  }
799 
800  QString toString(void) const
801  { return "AggregateEventInformationTable\n"; }
802  QString toStringXML(uint indent_level) const
803  { return "<AggregateEventInformationTable />"; }
804 };
805 
807 class MTV_PUBLIC AggregateExtendedTextTable : public PSIPTable
808 {
809  public:
811  const AggregateExtendedTextTable &table) : PSIPTable(table)
812  {
814  }
816  {
818  }
819 
820  QString toString(void) const
821  { return "AggregateExtendedTextTable\n"; }
822  QString toStringXML(uint indent_level) const
823  { return "<AggregateExtendedTextTable />"; }
824 };
825 
826 #endif // _ATSC_TABLES_H_
No one has had time to decode this table yet...
Definition: atsctables.h:770
uint MajorChannel(uint i) const
Definition: atsctables.h:242
MultipleStringStructure title(int i) const
Definition: atsctables.h:586
EventInformationTable(const EventInformationTable &table)
Definition: atsctables.h:521
SCTE 65 & ATSC/81 0xD7.
Definition: atsctables.h:807
DirectedChannelChangeTable(const PSIPTable &table)
Definition: atsctables.h:761
uint SourceID() const
Definition: atsctables.h:547
vector< unsigned char * > _ptrs
Definition: atsctables.h:180
uint ModulationMode(uint i) const
Definition: atsctables.h:252
bool IsPathSelect(uint i) const
Definition: atsctables.h:488
AggregateExtendedTextTable(const AggregateExtendedTextTable &table)
Definition: atsctables.h:810
CableVirtualChannelTable(const PSIPTable &table)
Definition: atsctables.h:420
const MultipleStringStructure ExtendedTextMessage() const
Definition: atsctables.h:660
uint StartTimeRaw(uint i) const
Definition: atsctables.h:560
ExtendedTextTable contain additional text not contained in EventInformationTables.
Definition: atsctables.h:618
virtual QString toStringXML(uint indent_level) const
Definition: mpegtables.cpp:769
uint HourDaylightSavingsStarts() const
Definition: atsctables.h:726
uint DescriptorsLength(uint i) const
Definition: atsctables.h:303
uint ProgramNumber(uint i) const
Definition: atsctables.h:264
assert(size > 0)
bool
Definition: pxsup2dast.c:30
bool SCTEIsChannelNumberTwoPart(uint i) const
Definition: atsctables.h:466
vector< unsigned char * > _ptrs
Definition: atsctables.h:610
time_t GPSUnix(void) const
Definition: atsctables.h:712
const unsigned char * GlobalDescriptors() const
Definition: atsctables.h:167
unsigned int uint
Definition: compat.h:135
uint ServiceType(uint i) const
Definition: atsctables.h:291
VirtualChannelTable(const VirtualChannelTable &table)
Definition: atsctables.h:192
uint MinorChannel(uint i) const
Definition: atsctables.h:247
uint TablePID(uint i) const
Definition: atsctables.h:128
AggregateEventInformationTable(const AggregateEventInformationTable &table)
Definition: atsctables.h:790
time_t UTCUnix(void) const
Definition: atsctables.h:714
bool IsHiddenInGuide(uint i) const
Definition: atsctables.h:285
uint SCTEOnePartChannel(uint i) const
Definition: atsctables.h:473
const unsigned char * psipdata(void) const
Definition: mpegtables.h:518
static int x4
Definition: mythsocket.cpp:58
const unsigned char * Descriptors(uint i) const
Definition: atsctables.h:308
uint TableIDExtension(void) const
Definition: mpegtables.h:492
uint TableDescriptorsLength(uint i) const
Definition: atsctables.h:146
A PSIP table is a variant of a PES packet containing an MPEG, ATSC or DVB table.
Definition: mpegtables.h:367
uint ETMlocation(uint i) const
Definition: atsctables.h:269
uint TitleLength(uint i) const
Definition: atsctables.h:583
QString toString(void) const
Definition: atsctables.h:820
This table contains information about the cable channels transmitted on this multiplex.
Definition: atsctables.h:412
TerrestrialVirtualChannelTable(const PSIPTable &table)
Definition: atsctables.h:351
No one has had time to decode this table yet...
Definition: atsctables.h:737
uint TableID(void) const
Definition: mpegtables.h:475
static int x2
Definition: mythsocket.cpp:56
uint TableType(uint i) const
Definition: atsctables.h:120
uint EventID(void) const
Definition: atsctables.h:656
virtual QString toString(void) const
Definition: mpegtables.cpp:751
uint TransportStreamID() const
Definition: atsctables.h:218
MBASE_PUBLIC QDateTime fromTime_t(uint seconds)
Definition: mythdate.cpp:60
No one has had time to decode this table yet...
Definition: atsctables.h:753
MasterGuideTable(const MasterGuideTable &table)
Definition: atsctables.h:77
CableVirtualChannelTable(const CableVirtualChannelTable &table)
Definition: atsctables.h:415
uint EventID(uint i) const
Definition: atsctables.h:555
uint GPSOffset() const
Definition: atsctables.h:718
const QString ShortChannelName(uint i) const
Definition: atsctables.h:225
virtual QString ChannelString(uint channel) const =0
uint ChannelTransportStreamID(uint i) const
Definition: atsctables.h:259
const unsigned char * pesdata() const
Definition: pespacket.h:161
void SetExtendedTextTableID(uint id)
Definition: atsctables.h:645
uint SourceID(uint i) const
Definition: atsctables.h:297
uint SourceID(void) const
Definition: atsctables.h:654
DirectedChannelChangeSelectionCodeTable(const PSIPTable &table)
Definition: atsctables.h:779
QString toString(void) const
Definition: atsctables.h:800
DirectedChannelChangeSelectionCodeTable(const DirectedChannelChangeSelectionCodeTable &table)
Definition: atsctables.h:773
SystemTimeTable(const PSIPTable &table)
Definition: atsctables.h:683
AggregateExtendedTextTable(const PSIPTable &table)
Definition: atsctables.h:815
uint SCTEMapId() const
Definition: atsctables.h:441
QDateTime SystemTimeGPS(void) const
Definition: atsctables.h:708
bool IsOutOfBand(uint i) const
Definition: atsctables.h:493
void SetTableIDExtension(uint len)
Definition: mpegtables.h:528
EventInformationTable(const PSIPTable &table)
Definition: atsctables.h:527
const unsigned char * GlobalDescriptors() const
Definition: atsctables.h:321
EventInformationTables contain program titles, start times, and channel information.
Definition: atsctables.h:518
uint ExtendedTextTableID() const
Definition: atsctables.h:644
bool IsEventETM(void) const
Definition: atsctables.h:653
virtual QString XMLChannelValues(uint indent_level, uint channel) const
Definition: atsctables.cpp:300
uint GlobalDescriptorsLength() const
Definition: atsctables.h:315
int c
Definition: minilzo.cpp:2402
bool IsChannelETM(void) const
Definition: atsctables.h:652
ExtendedTextTable(const PSIPTable &table)
Definition: atsctables.h:625
QDateTime StartTimeGPS(uint i) const
Definition: atsctables.h:565
VirtualChannelTable(const PSIPTable &table)
Definition: atsctables.h:197
uint TableVersion(uint i) const
Definition: atsctables.h:134
uint TableCount() const
Definition: atsctables.h:114
bool InDaylightSavingsTime() const
Definition: atsctables.h:724
This table tells the decoder on which PIDs to find other tables, and their sizes and each table's cur...
Definition: atsctables.h:74
vector< unsigned char * > _ptrs
Definition: atsctables.h:335
AggregateEventInformationTable(const PSIPTable &table)
Definition: atsctables.h:795
uint ChannelCount() const
Definition: atsctables.h:221
bool SCTEIsChannelNumberOnePart(uint i) const
Definition: atsctables.h:462
bool IsHidden(uint i) const
Definition: atsctables.h:279
uint DayDaylightSavingsStarts() const
Definition: atsctables.h:725
uint GlobalDescriptorsLength() const
Definition: atsctables.h:161
uint TableDescriptorsBytes(uint i) const
Definition: atsctables.h:139
const unsigned char * TableDescriptors(uint i) const
Definition: atsctables.h:155
RatingRegionTable(const RatingRegionTable &table)
Definition: atsctables.h:740
uint SCTEMapId() const
Definition: atsctables.h:102
This table contains information about the channels transmitted on this multiplex. ...
Definition: atsctables.h:189
uint EventCount() const
Definition: atsctables.h:550
uint LengthInSeconds(uint i) const
Definition: atsctables.h:577
const unsigned char * Descriptors(uint i) const
Definition: atsctables.h:600
uint DescriptorsLength(uint i) const
Definition: atsctables.h:592
TerrestrialVirtualChannelTable(const TerrestrialVirtualChannelTable &table)
Definition: atsctables.h:346
ExtendedTextTable(const ExtendedTextTable &table)
Definition: atsctables.h:621
uint ETMLocation(uint i) const
Definition: atsctables.h:572
SystemTimeTable(const SystemTimeTable &table)
Definition: atsctables.h:679
This table contains the GPS time at the time of transmission.
Definition: atsctables.h:676
bool IsAccessControlled(uint i) const
Definition: atsctables.h:274
uint32_t GPSRaw(void) const
Definition: atsctables.h:703
SCTE 65 & ATSC/81 0xD6.
Definition: atsctables.h:787
This table contains information about the terrestrial channels transmitted on this multiplex...
Definition: atsctables.h:343
RatingRegionTable(const PSIPTable &table)
Definition: atsctables.h:744
DirectedChannelChangeTable(const DirectedChannelChangeTable &table)
Definition: atsctables.h:756
MasterGuideTable(const PSIPTable &table)
Definition: atsctables.h:82
QString toStringXML(uint indent_level) const
Definition: atsctables.h:822
QString toStringXML(uint indent_level) const
Definition: atsctables.h:802