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