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