MythTV  master
atsctables.cpp
Go to the documentation of this file.
1 // -*- Mode: c++ -*-
2 // Copyright (c) 2003-2004, Daniel Thor Kristjansson
3 #include "atsctables.h"
4 
6 
7 #include "atscdescriptors.h"
8 
10 {
11  static const std::array<const QString,11> kTts {
12  QString("UNKNOWN"),
13  QString("Terrestrial VCT with current()"),
14  QString("Terrestrial VCT with !current()"),
15  QString("Cable VCT with current()"),
16  QString("Cable VCT with !current()"),
17  QString("Channel ETT"),
18  QString("DCCSCT"),
19  QString("EIT + 0x100"),
20  QString("Event ETT + 0x200"),
21  QString("DCCT + 0x1400"),
22  QString("RTT + 0x300")
23  };
24  int tt = TableClass(i) + 1;
25  return kTts[tt];
26 }
27 
29 {
30  const int tt = TableType(i);
31  if (tt < 6)
32  {
33  return tt;
34  }
35  if (tt < 0x300)
36  {
37  if (tt < 0x200) return TableClass::EIT;
38  return TableClass::ETTe;
39  }
40  if (tt >= 0x1400 && tt < 0x1500)
41  return TableClass::DCCT;
42  if (tt < 0x400)
43  return TableClass::RRT;
44  return TableClass::UNKNOWN;
45 }
46 
47 void MasterGuideTable::Parse(void) const
48 {
49  m_ptrs.clear();
50  m_ptrs.push_back(const_cast<unsigned char*>(psipdata()) + 3);
51  for (uint i = 0; i < TableCount(); i++)
52  m_ptrs.push_back(m_ptrs[i] + 11 + TableDescriptorsLength(i));
53 }
54 
55 
57 {
58  m_ptrs.clear();
59  m_ptrs.push_back(const_cast<unsigned char*>(psipdata()) + 2);
60  for (uint i = 0; i < ChannelCount(); i++)
61  m_ptrs.push_back(m_ptrs[i] + 32 + DescriptorsLength(i));
62 }
63 
65 {
66  m_ptrs.clear();
67  m_ptrs.push_back(const_cast<unsigned char*>(psipdata()) + 2);
68  for (uint i = 0; i < EventCount(); i++)
69  m_ptrs.push_back(m_ptrs[i] + 12 + TitleLength(i) + DescriptorsLength(i));
70 }
71 
72 QString MasterGuideTable::toString(void) const
73 {
74  QString str;
75  str.append(QString("Master Guide Section\n%1"
76  " table_count(%2)\n")
77  .arg(PSIPTable::toString())
78  .arg(TableCount()));
79 
80  if (m_ptrs.size() < TableCount())
81  LOG(VB_GENERAL, LOG_ERR, "MasterGuideTable::toString(): Table count mismatch");
82 
83  for (uint i = 0; i < TableCount() && i < m_ptrs.size(); i++)
84  {
85  str.append(QString(" Table #%1 ").arg(i, 2, 10));
86  str.append(QString("pid(0x%1) ver(%2) ")
87  .arg(TablePID(i), 0, 16).arg(TableVersion(i), 2, 10));
88  str.append(QString("size(%1) desc_len(%2) type: %4 %3 \n")
89  .arg(TableDescriptorsBytes(i), 4, 10)
90  .arg(TableDescriptorsLength(i))
91  .arg(TableClassString(i)).arg(TableType(i)));
92  if (0 != TableDescriptorsLength(i))
93  {
94  std::vector<const unsigned char*> desc =
97  for (auto & d : desc)
98  str.append(QString(" %1\n")
99  .arg(MPEGDescriptor(d).toString()));
100  }
101  }
102  if (0 != GlobalDescriptorsLength())
103  {
104  str.append(QString(" global descriptors length(%1) ")
105  .arg(GlobalDescriptorsLength()));
106  std::vector<const unsigned char*> desc =
109  str.append(QString("count: %1\n").arg(desc.size()));
110  for (auto & i : desc)
111  {
112  str.append(QString(" %1\n")
113  .arg(MPEGDescriptor(i).toString()));
114  }
115  }
116  return str;
117 }
118 
119 QString MasterGuideTable::toStringXML(uint indent_level) const
120 {
121  QString indent_0 = StringUtil::indentSpaces(indent_level);
122  QString indent_1 = StringUtil::indentSpaces(indent_level + 1);
123  QString indent_2 = StringUtil::indentSpaces(indent_level + 2);
124 
125  QString str =
126  QString("%1<MasterGuideSection table_count=\"%2\" "
127  "global_descriptors_length=\"%3\"\n%4%5>\n")
128  .arg(indent_0)
129  .arg(TableCount())
131  .arg(indent_1,
132  PSIPTable::XMLValues(indent_level + 1));
133 
134  std::vector<const unsigned char*> gdesc =
136  for (auto & i : gdesc)
137  {
138  str += MPEGDescriptor(i, 300)
139  .toStringXML(indent_level + 1) + "\n";
140  }
141 
142  if (m_ptrs.size() < TableCount())
143  LOG(VB_GENERAL, LOG_ERR, "MasterGuideTable::toStringXML(): Table count mismatch");
144 
145  for (uint i = 0; i < TableCount() && i < m_ptrs.size(); i++)
146  {
147  str += QString(
148  "%1<Table pid=\"0x%2\" version=\"%3\""
149  "\n%4type=\"0x%5\" type_desc=\"%6\""
150  "\n%7number_bytes=\"%8\" table_descriptors_length=\"%9\"")
151  .arg(indent_1)
152  .arg(TablePID(i),4,16,QChar('0'))
153  .arg(TableVersion(i))
154  .arg(indent_1)
155  .arg(TableType(i),4,16,QChar('0'))
156  .arg(TableClassString(i),
157  indent_2)
158  .arg(TableDescriptorsBytes(i))
159  .arg(TableDescriptorsLength(i));
160 
161  std::vector<const unsigned char*> desc =
164  str += (desc.empty()) ? " />\n" : ">\n";
165  for (auto & j : desc)
166  {
167  str += MPEGDescriptor(j, 300)
168  .toStringXML(indent_level + 2) + "\n";
169  }
170 
171  if (!desc.empty())
172  str += indent_1 + "</Table>\n";
173  }
174 
175  return str + "</MasterGuideSection>";
176 }
177 
179 {
180  static const std::array<const std::string,6>s_modnames
181  {
182  "[Reserved]", "Analog", "SCTE mode 1",
183  "SCTE mode 2", "ATSC 8-VSB", "ATSC 16-VSB",
184  };
185  uint mode = ModulationMode(i);
186  if (mode >= (sizeof(s_modnames) / sizeof(char*)))
187  return QString("Unknown 0x%1").arg(mode,2,16,QChar('0'));
188  return QString::fromStdString(s_modnames[mode]);
189 }
190 
192 {
193  static const std::array<const std::string,5> s_servicenames
194  {
195  "[Reserved]", "Analog", "ATSC TV", "ATSC Audio", "ATSC Data",
196  };
197  uint type = ServiceType(i);
198  if (type >= s_servicenames.size())
199  return QString("Unknown 0x%1").arg(type,2,16,QChar('0'));
200  return QString::fromStdString(s_servicenames[type]);
201 }
202 
203 QString VirtualChannelTable::toString(void) const
204 {
205  QString str;
206  str.append(QString("%1 Virtual Channel Section\n%2"
207  " channel_count(%3) tsid(0x%4)")
208  .arg((TableID::TVCT == TableID()) ? "Terrestrial":"Cable",
210  .arg(ChannelCount())
211  .arg(TransportStreamID(),4,16,QChar('0')));
212 
213  if (TableID::CVCT == TableID())
214  {
215  uint sctemapid = (pesdata()[3]<<8) | pesdata()[4];
216  str.append(QString(" mapid(0x%1)").arg(sctemapid,0,16));
217  }
218 
219  str.append("\n");
220 
221  for (uint i = 0; i < ChannelCount(); i++)
222  str.append(ChannelString(i));
223 
224  if (0 != GlobalDescriptorsLength())
225  {
226  str.append(QString("global descriptors length(%1) ")
227  .arg(GlobalDescriptorsLength()));
228  std::vector<const unsigned char*> desc =
231  str.append(QString("count: %1\n").arg(desc.size()));
232  for (auto & i : desc)
233  {
234  str.append(QString(" %1\n")
235  .arg(MPEGDescriptor(i).toString()));
236  }
237  }
238 
239  return str;
240 }
241 
242 QString VirtualChannelTable::toStringXML(uint indent_level) const
243 {
244  QString indent_0 = StringUtil::indentSpaces(indent_level);
245  QString indent_1 = StringUtil::indentSpaces(indent_level + 1);
246 
247  QString section_name = QString("%1VirtualChannelSection")
248  .arg((TableID::TVCT == TableID()) ? "Terrestrial" : "Cable");
249 
250  QString mapid;
251  if (TableID::CVCT == TableID())
252  {
253  uint sctemapid = (pesdata()[3]<<8) | pesdata()[4];
254  mapid = QString(" mapid=\"0x%1\"").arg(sctemapid,4,16,QChar('0'));
255  }
256 
257  QString str =
258  QString("%1<%2 tsid=\"0x%3\" channel_count=\"%4\""
259  "\n%5global_descriptors_length=\"%6\"%7"
260  "\n%8%9>\n")
261  .arg(indent_0,
262  section_name)
263  .arg(TransportStreamID(),4,16,QChar('0'))
264  .arg(ChannelCount())
265  .arg(indent_1)
267  .arg(mapid,
268  indent_1,
269  PSIPTable::XMLValues(indent_level + 1));
270 
271  std::vector<const unsigned char*> gdesc =
273  for (auto & i : gdesc)
274  {
275  str += MPEGDescriptor(i, 300)
276  .toStringXML(indent_level + 1) + "\n";
277  }
278 
279  for (uint i = 0; i < ChannelCount(); i++)
280  str += ChannelStringXML(indent_level + 1, i) + "\n";
281 
282  return str + indent_0 + QString("</%1>").arg(section_name);
283 }
284 
286  uint indent_level, uint chan) const
287 {
288  QString indent_0 = StringUtil::indentSpaces(indent_level);
289  QString indent_1 = StringUtil::indentSpaces(indent_level + 1);
290  QString str = QString("%1<Channel %2\n%3descriptors_length=\"%4\">\n")
291  .arg(indent_0,
292  XMLChannelValues(indent_level + 1, chan),
293  indent_1)
294  .arg(DescriptorsLength(chan));
295 
296  std::vector<const unsigned char*> desc =
298  for (auto & i : desc)
299  {
300  str += MPEGDescriptor(i, 300)
301  .toStringXML(indent_level + 1) + "\n";
302  }
303 
304  return str + indent_0 + "</Channel>";
305 }
306 
308  uint indent_level, uint chan) const
309 {
310  QString indent_0 = StringUtil::indentSpaces(indent_level);
311  QString str;
312 
313  str += QString("short_channel_name=\"%1\" ").arg(ShortChannelName(chan));
314  str += "\n" + indent_0;
315 
316  str += QString(R"(modulation="0x%1" modulation_desc="%2" )")
317  .arg(ModulationMode(chan),2,16,QChar('0'))
318  .arg(ModulationModeString(chan));
319  str += QString("channel_tsid=\"0x%1\"")
320  .arg(ChannelTransportStreamID(chan),4,16,QChar('0'));
321  str += "\n" + indent_0;
322 
323  str += QString("program_number=\"%1\" ").arg(ProgramNumber(chan));
324  str += QString("etm_location=\"%1\" ").arg(ETMlocation(chan));
325  str += QString("access_controlled=\"%1\"")
327  str += "\n" + indent_0;
328 
329  str += QString("hidden=\"%1\" ")
331  str += QString("hide_guide=\"%1\"")
333  str += "\n" + indent_0;
334 
335  str += QString(R"(service_type="0x%1" service_type_desc="%2")")
336  .arg(ServiceType(chan),2,16,QChar('0'))
337  .arg(ServiceTypeString(chan));
338  str += "\n" + indent_0;
339 
340  str += QString("source_id=\"0x%1\"")
341  .arg(SourceID(chan),4,16,QChar('0'));
342 
343  return str;
344 }
345 
347  uint indent_level, uint chan) const
348 {
349  return QString(R"(major_channel="%1" minor_channel="%2" )")
350  .arg(MajorChannel(chan)).arg(MinorChannel(chan)) +
351  VirtualChannelTable::XMLChannelValues(indent_level, chan);
352 }
353 
355 {
356  QString str;
357  str.append(QString(" Channel #%1 ").arg(chan));
358  str.append(QString("name(%1) %2-%3 ").arg(ShortChannelName(chan))
359  .arg(MajorChannel(chan)).arg(MinorChannel(chan)));
360  str.append(QString("mod(%1) ").arg(ModulationModeString(chan)));
361  str.append(QString("cTSID(0x%1)\n")
362  .arg(ChannelTransportStreamID(chan),4,16,QChar('0')));
363 
364  str.append(QString(" pnum(%1) ").arg(ProgramNumber(chan)));
365  str.append(QString("ETM_loc(%1) ").arg(ETMlocation(chan)));
366  str.append(QString("access_ctrl(%1) ").arg(static_cast<int>(IsAccessControlled(chan))));
367  str.append(QString("hidden(%1) ").arg(static_cast<int>(IsHidden(chan))));
368  str.append(QString("hide_guide(%1) ").arg(static_cast<int>(IsHiddenInGuide(chan))));
369  str.append(QString("service_type(%1)\n").arg(ServiceTypeString(chan)));
370 
371  str.append(QString(" source_id(%1)\n").arg(SourceID(chan)));
372  if (0 != DescriptorsLength(chan))
373  {
374  str.append(QString(" descriptors length(%1) ")
375  .arg(DescriptorsLength(chan)));
376  std::vector<const unsigned char*> desc =
378  str.append(QString("count:%1\n").arg(desc.size()));
379  for (auto & i : desc)
380  {
381  str.append(QString(" %1\n")
382  .arg(MPEGDescriptor(i).toString()));
383  }
384  }
385  return str;
386 }
387 
389  uint indent_level, uint chan) const
390 {
391  QString channel_info = SCTEIsChannelNumberTwoPart(chan) ?
392  QString(R"(major_channel="%1" minor_channel="%2" )")
393  .arg(MajorChannel(chan)).arg(MinorChannel(chan)) :
394  QString("channel_number=\"%1\" ")
395  .arg(SCTEOnePartChannel(chan));
396 
397  return channel_info +
398  VirtualChannelTable::XMLChannelValues(indent_level, chan) +
399  QString(R"( path_select="%1" out_of_band="%2")")
402 }
403 
405 {
406  QString str;
407  str.append(QString(" Channel #%1 ").arg(chan));
408  str.append(QString("name(%1)").arg(ShortChannelName(chan)));
409 
410  if (SCTEIsChannelNumberTwoPart(chan))
411  {
412  str.append(QString(" %1-%2 ")
413  .arg(MajorChannel(chan)).arg(MinorChannel(chan)));
414  }
415  else
416  {
417  str.append(QString(" %1 ").arg(SCTEOnePartChannel(chan)));
418  }
419 
420  str.append(QString("mod(%1) ").arg(ModulationModeString(chan)));
421  str.append(QString("cTSID(0x%1)\n")
422  .arg(ChannelTransportStreamID(chan),4,16,QChar('0')));
423 
424  str.append(QString(" pnum(%1) ").arg(ProgramNumber(chan)));
425  str.append(QString("ETM_loc(%1) ").arg(ETMlocation(chan)));
426  str.append(QString("access_ctrl(%1) ").arg(static_cast<int>(IsAccessControlled(chan))));
427  str.append(QString("hidden(%1) ").arg(static_cast<int>(IsHidden(chan))));
428  str.append(QString("hide_guide(%1) ").arg(static_cast<int>(IsHiddenInGuide(chan))));
429  str.append(QString("service_type(%1)\n").arg(ServiceTypeString(chan)));
430 
431  str.append(QString(" source_id(%1) ").arg(SourceID(chan)));
432  str.append(QString("path_select(%1) ").arg(static_cast<int>(IsPathSelect(chan))));
433  str.append(QString("out_of_band(%1)\n").arg(static_cast<int>(IsOutOfBand(chan))));
434 
435  if (0 != DescriptorsLength(chan))
436  {
437  str.append(QString(" descriptors length(%1) ")
438  .arg(DescriptorsLength(chan)));
439  std::vector<const unsigned char*> desc =
441  str.append(QString("count:%1\n").arg(desc.size()));
442  for (auto & i : desc)
443  str.append(QString(" %1\n")
444  .arg(MPEGDescriptor(i).toString()));
445  }
446  return str;
447 }
448 
450 {
451  QString str;
452  str.append(QString("Event Information Table\n"));
453  str.append(static_cast<const PSIPTable*>(this)->toString());
454  str.append(QString(" pid(0x%1) sourceID(%2) eventCount(%3)\n")
455  .arg(tsheader()->PID()).arg(SourceID()).arg(EventCount()));
456  for (uint i = 0; i < EventCount(); i++)
457  {
458  str.append(QString(" Event #%1 ID(%2) start_time(%3) length(%4 sec)\n")
459  .arg(i,2,10).arg(EventID(i))
461  .arg(LengthInSeconds(i)));
462  str.append(QString(" ETM_loc(%1) Title(%2)\n").
463  arg(ETMLocation(i)).arg(title(i).toString()));
464  if (0 != DescriptorsLength(i))
465  {
466  std::vector<const unsigned char*> desc =
468  for (auto & j : desc)
469  str.append(QString("%1\n")
470  .arg(MPEGDescriptor(j).toString()));
471  }
472  }
473  return str;
474 }
475 
476 QString ExtendedTextTable::toString(void) const
477 {
478  QString str =
479  QString("Extended Text Table -- sourceID(%1) eventID(%2) "
480  "ettID(%3) isChannelETM(%4) isEventETM(%5)\n%6")
481  .arg(SourceID()).arg(EventID()).arg(ExtendedTextTableID())
482  .arg(static_cast<int>(IsChannelETM())).arg(static_cast<int>(IsEventETM()))
483  .arg(ExtendedTextMessage().toString());
484  return str;
485 }
486 
487 int VirtualChannelTable::Find(int major, int minor) const
488 {
489  if (major>0)
490  {
491  for (uint i = 0; i < ChannelCount(); i++)
492  {
493  if ((MajorChannel(i) == (uint)major) &&
494  (MinorChannel(i) == (uint)minor))
495  return (int)i;
496  }
497  }
498  else if (minor>0)
499  {
500  for (uint i = 0; i < ChannelCount(); i++)
501  {
502  if (MinorChannel(i) == (uint)minor)
503  return (int)i;
504  }
505  }
506  return -1;
507 }
508 
510 {
511  if ((i >= ChannelCount()) || DescriptorsLength(i) == 0)
512  return {};
513 
514  std::vector<const unsigned char*> parsed =
516 
517  const unsigned char* desc =
519 
520  if (!desc)
521  return {};
522 
524 }
525 
526 QString SystemTimeTable::toString(void) const
527 {
528  QString str =
529  QString("System Time Section GPSTime(%1) GPS2UTC_Offset(%2) ")
531  str.append(QString("DS(%3) Day(%4) Hour(%5)\n")
532  .arg(static_cast<int>(InDaylightSavingsTime()))
534  .arg(HourDaylightSavingsStarts()));
535  return str;
536 }
537 
538 QString SystemTimeTable::toStringXML(uint indent_level) const
539 {
540  QString indent_0 = StringUtil::indentSpaces(indent_level);
541  QString indent_1 = StringUtil::indentSpaces(indent_level + 1);
542 
543  return QString(
544  "%1<SystemTimeSection system_time=\"%2\" system_time_iso=\"%3\""
545  "\n%4in_dst=\"%5\" dst_start_day=\"%6\" dst_start_hour=\"%7\""
546  "\n%8%9 />")
547  .arg(indent_0,
548  QString::number(GPSRaw()),
550  indent_1,
552  QString::number(DayDaylightSavingsStarts()), /* day-of-month */
553  QString::number(HourDaylightSavingsStarts()),
554  indent_1,
555  PSIPTable::XMLValues(indent_level + 1));
556 }
VirtualChannelTable::ETMlocation
uint ETMlocation(uint i) const
Definition: atsctables.h:276
MasterGuideTable::TableClass
int TableClass(uint i) const
Definition: atsctables.cpp:28
EventInformationTable::LengthInSeconds
uint LengthInSeconds(uint i) const
Definition: atsctables.h:585
ExtendedTextTable::SourceID
uint SourceID(void) const
Definition: atsctables.h:662
MasterGuideTable::Parse
void Parse(void) const
Definition: atsctables.cpp:47
MasterGuideTable::TableClassString
QString TableClassString(uint i) const
Definition: atsctables.cpp:9
VirtualChannelTable::IsAccessControlled
bool IsAccessControlled(uint i) const
Definition: atsctables.h:281
VirtualChannelTable::toStringXML
QString toStringXML(uint indent_level) const override
Definition: atsctables.cpp:242
VirtualChannelTable::Parse
void Parse() const
Definition: atsctables.cpp:56
SystemTimeTable::toStringXML
QString toStringXML(uint indent_level) const override
Definition: atsctables.cpp:538
EventInformationTable::TitleLength
uint TitleLength(uint i) const
Definition: atsctables.h:591
EventInformationTable::toString
QString toString() const override
Definition: atsctables.cpp:449
CableVirtualChannelTable::XMLChannelValues
QString XMLChannelValues(uint indent_level, uint channel) const override
Definition: atsctables.cpp:388
ExtendedChannelNameDescriptor
Provides the long channel name for the virtual channel containing this descriptor.
Definition: atscdescriptors.h:340
MasterGuideTable::toStringXML
QString toStringXML(uint indent_level) const override
Definition: atsctables.cpp:119
EventInformationTable::DescriptorsLength
uint DescriptorsLength(uint i) const
Definition: atsctables.h:600
ExtendedTextTable::ExtendedTextTableID
uint ExtendedTextTableID() const
Definition: atsctables.h:652
MasterGuideTable::GlobalDescriptorsLength
uint GlobalDescriptorsLength() const
Definition: atsctables.h:165
PESPacket::pesdata
const unsigned char * pesdata() const
Definition: pespacket.h:164
PESPacket::tsheader
const TSHeader * tsheader() const
Definition: pespacket.h:90
SystemTimeTable::DayDaylightSavingsStarts
uint DayDaylightSavingsStarts() const
Definition: atsctables.h:733
VirtualChannelTable::ShortChannelName
QString ShortChannelName(uint i) const
Definition: atsctables.h:230
CableVirtualChannelTable::ChannelString
QString ChannelString(uint channel) const override
Definition: atsctables.cpp:404
TableClass::RRT
@ RRT
Definition: atsctables.h:71
VirtualChannelTable::SourceID
uint SourceID(uint i) const
Definition: atsctables.h:304
TerrestrialVirtualChannelTable::XMLChannelValues
QString XMLChannelValues(uint indent_level, uint channel) const override
Definition: atsctables.cpp:346
StringUtil::indentSpaces
QString indentSpaces(unsigned int level, unsigned int size=4)
Definition: stringutil.h:36
LOG
#define LOG(_MASK_, _LEVEL_, _QSTRING_)
Definition: mythlogging.h:39
TableClass::EIT
@ EIT
Definition: atsctables.h:68
EventInformationTable::EventCount
uint EventCount() const
Definition: atsctables.h:557
TerrestrialVirtualChannelTable::ChannelString
QString ChannelString(uint channel) const override
Definition: atsctables.cpp:354
SystemTimeTable::SystemTimeGPS
QDateTime SystemTimeGPS(void) const
Definition: atsctables.h:716
VirtualChannelTable::ProgramNumber
uint ProgramNumber(uint i) const
Definition: atsctables.h:271
MasterGuideTable::m_ptrs
std::vector< unsigned char * > m_ptrs
Definition: atsctables.h:184
MasterGuideTable::TableCount
uint TableCount() const
Definition: atsctables.h:120
VirtualChannelTable::IsHiddenInGuide
bool IsHiddenInGuide(uint i) const
Definition: atsctables.h:292
VirtualChannelTable::toString
QString toString(void) const override
Definition: atsctables.cpp:203
TableClass::ETTe
@ ETTe
Definition: atsctables.h:69
VirtualChannelTable::Descriptors
const unsigned char * Descriptors(uint i) const
Definition: atsctables.h:315
atscdescriptors.h
VirtualChannelTable::IsHidden
bool IsHidden(uint i) const
Definition: atsctables.h:286
EventInformationTable::Parse
void Parse() const
Definition: atsctables.cpp:64
VirtualChannelTable::m_ptrs
std::vector< unsigned char * > m_ptrs
Definition: atsctables.h:342
VirtualChannelTable::ChannelTransportStreamID
uint ChannelTransportStreamID(uint i) const
Definition: atsctables.h:266
PSIPTable
A PSIP table is a variant of a PES packet containing an MPEG, ATSC or DVB table.
Definition: mpegtables.h:409
TableID::CVCT
@ CVCT
Definition: mpegtables.h:363
DescriptorID::extended_channel_name
@ extended_channel_name
Definition: mpegdescriptors.h:179
VirtualChannelTable::XMLChannelValues
virtual QString XMLChannelValues(uint indent_level, uint channel) const
Definition: atsctables.cpp:307
PSIPTable::toString
virtual QString toString(void) const
Definition: mpegtables.cpp:789
VirtualChannelTable::MajorChannel
uint MajorChannel(uint i) const
Definition: atsctables.h:249
SystemTimeTable::GPSOffset
uint GPSOffset() const
Definition: atsctables.h:726
VirtualChannelTable::ServiceTypeString
QString ServiceTypeString(uint i) const
Definition: atsctables.cpp:191
SystemTimeTable::HourDaylightSavingsStarts
uint HourDaylightSavingsStarts() const
Definition: atsctables.h:734
minor
#define minor(X)
Definition: compat.h:78
mythlogging.h
MPEGDescriptor::toStringXML
virtual QString toStringXML(uint indent_level) const
Returns XML representation of string the TS Reader XML format.
Definition: mpegdescriptors.cpp:707
VirtualChannelTable::Find
int Find(int major, int minor) const
Definition: atsctables.cpp:487
MasterGuideTable::TablePID
uint TablePID(uint i) const
Definition: atsctables.h:132
MPEGDescriptor::Parse
static desc_list_t Parse(const unsigned char *data, uint len)
Definition: mpegdescriptors.cpp:16
MasterGuideTable::TableVersion
uint TableVersion(uint i) const
Definition: atsctables.h:138
MasterGuideTable::TableDescriptorsBytes
uint TableDescriptorsBytes(uint i) const
Definition: atsctables.h:143
MPEGDescriptor
Definition: mpegdescriptors.h:302
ExtendedTextTable::toString
QString toString() const override
Definition: atsctables.cpp:476
VirtualChannelTable::ChannelString
virtual QString ChannelString(uint channel) const =0
MasterGuideTable::TableDescriptorsLength
uint TableDescriptorsLength(uint i) const
Definition: atsctables.h:150
PID
Contains Packet Identifier numeric values.
Definition: mpegtables.h:206
EventInformationTable::ETMLocation
uint ETMLocation(uint i) const
Definition: atsctables.h:580
VirtualChannelTable::GlobalDescriptors
const unsigned char * GlobalDescriptors() const
Definition: atsctables.h:328
VirtualChannelTable::DescriptorsLength
uint DescriptorsLength(uint i) const
Definition: atsctables.h:310
TableClass::DCCT
@ DCCT
Definition: atsctables.h:70
CableVirtualChannelTable::IsPathSelect
bool IsPathSelect(uint i) const
Definition: atsctables.h:495
TableID::TVCT
@ TVCT
Definition: mpegtables.h:362
VirtualChannelTable::ChannelStringXML
virtual QString ChannelStringXML(uint indent_level, uint channel) const
Definition: atsctables.cpp:285
VirtualChannelTable::GlobalDescriptorsLength
uint GlobalDescriptorsLength() const
Definition: atsctables.h:322
MasterGuideTable::TableDescriptors
const unsigned char * TableDescriptors(uint i) const
Definition: atsctables.h:159
MasterGuideTable::toString
QString toString(void) const override
Definition: atsctables.cpp:72
VirtualChannelTable::ServiceType
uint ServiceType(uint i) const
Definition: atsctables.h:298
ExtendedTextTable::IsEventETM
bool IsEventETM(void) const
Definition: atsctables.h:661
PSIPTable::TableID
uint TableID(void) const
Definition: mpegtables.h:496
CableVirtualChannelTable::SCTEIsChannelNumberTwoPart
bool SCTEIsChannelNumberTwoPart(uint i) const
Definition: atsctables.h:473
MythDate::ISODate
@ ISODate
Default UTC.
Definition: mythdate.h:17
ExtendedTextTable::ExtendedTextMessage
MultipleStringStructure ExtendedTextMessage() const
Definition: atsctables.h:668
SystemTimeTable::InDaylightSavingsTime
bool InDaylightSavingsTime() const
Definition: atsctables.h:732
MasterGuideTable::GlobalDescriptors
const unsigned char * GlobalDescriptors() const
Definition: atsctables.h:171
EventInformationTable::StartTimeGPS
QDateTime StartTimeGPS(uint i) const
Definition: atsctables.h:573
SystemTimeTable::GPSRaw
uint32_t GPSRaw(void) const
Definition: atsctables.h:711
EventInformationTable::Descriptors
const unsigned char * Descriptors(uint i) const
Definition: atsctables.h:608
CableVirtualChannelTable::SCTEOnePartChannel
uint SCTEOnePartChannel(uint i) const
Definition: atsctables.h:480
atsctables.h
EventInformationTable::EventID
uint EventID(uint i) const
Definition: atsctables.h:563
EventInformationTable::title
MultipleStringStructure title(int i) const
Definition: atsctables.h:594
SystemTimeTable::toString
QString toString(void) const override
Definition: atsctables.cpp:526
PSIPTable::XMLValues
QString XMLValues(uint indent_level) const
Definition: mpegtables.cpp:813
d
static const iso6937table * d
Definition: iso6937tables.cpp:1025
ExtendedTextTable::IsChannelETM
bool IsChannelETM(void) const
Definition: atsctables.h:660
VirtualChannelTable::ModulationModeString
QString ModulationModeString(uint i) const
Definition: atsctables.cpp:178
VirtualChannelTable::ModulationMode
uint ModulationMode(uint i) const
Definition: atsctables.h:259
MPEGDescriptor::Find
static const unsigned char * Find(const desc_list_t &parsed, uint desc_tag)
Definition: mpegdescriptors.cpp:77
MasterGuideTable::TableType
uint TableType(uint i) const
Definition: atsctables.h:124
StringUtil::bool_to_string
QString bool_to_string(bool val)
This is equivalent to QVariant(bool).toString()
Definition: stringutil.h:44
VirtualChannelTable::ChannelCount
uint ChannelCount() const
Definition: atsctables.h:225
VirtualChannelTable::TransportStreamID
uint TransportStreamID() const
Definition: atsctables.h:222
ExtendedChannelNameDescriptor::LongChannelNameString
QString LongChannelNameString(void) const
Convenience function that returns a QString comprising a concatenation of all the segments in the Lon...
Definition: atscdescriptors.cpp:344
ExtendedTextTable::EventID
uint EventID(void) const
Definition: atsctables.h:664
EventInformationTable::m_ptrs
std::vector< unsigned char * > m_ptrs
Definition: atsctables.h:618
CableVirtualChannelTable::IsOutOfBand
bool IsOutOfBand(uint i) const
Definition: atsctables.h:500
VirtualChannelTable::MinorChannel
uint MinorChannel(uint i) const
Definition: atsctables.h:254
EventInformationTable::SourceID
uint SourceID() const
Definition: atsctables.h:554
PSIPTable::psipdata
const unsigned char * psipdata(void) const
Definition: mpegtables.h:541
uint
unsigned int uint
Definition: freesurround.h:24
TableClass::UNKNOWN
@ UNKNOWN
Definition: atsctables.h:61
VirtualChannelTable::GetExtendedChannelName
QString GetExtendedChannelName(uint idx) const
Definition: atsctables.cpp:509