MythTV  master
sctetables.cpp
Go to the documentation of this file.
1 // -*- Mode: c++ -*-
22 #include "sctetables.h"
23 #include "mythdate.h" // for xml_indent
24 
26 {
27  return QString("CarrierDefinitionSubtable number_of_carriers(%1)")
28  .arg(NumberOfCarriers()) +
29  QString(" descriptors(%1)").arg(DescriptorsCount());
30 }
31 
32 QString CarrierDefinitionSubtable::toStringXML(uint indent_level) const
33 {
34  QString indent_0 = xml_indent(indent_level);
35  QString indent_1 = xml_indent(indent_level + 1);
36  QString str = indent_0 +
37  QString("<CarrierDefinition descriptors_count=\"%2\" ")
38  .arg(DescriptorsCount());
39  str += QString("number_of_carriers=\"%1\"").arg(NumberOfCarriers());
40  str += "\n" + indent_1;
41  str += QString("spacing_unit=\"%1\" spacing_unit_hz=\"%2\"")
42  .arg(SpacingUnit()).arg(SpacingUnitHz());
43  str += "\n" + indent_1;
44  str += QString("frequency_spacing=\"%1\" frequency_spacing_hz=\"%2\"")
45  .arg(FrequencySpacing()).arg(FrequencySpacingHz());
46  str += "\n" + indent_1;
47  str += QString("frequency_unit=\"%1\" frequency_unit_hz=\"%2\"")
48  .arg(FrequencyUnit()).arg(FrequencyUnitHz());
49  str += "\n" + indent_1;
50  str += QString("first_carrier_frequency=\"%1\" "
51  "first_carrier_frequency_hz=\"%2\">\n")
52  .arg(FirstCarrierFrequency())
54 
55  vector<const unsigned char*> desc =
57  for (uint i = 0; i < desc.size(); i++)
58  {
59  str += MPEGDescriptor(desc[i], 300)
60  .toStringXML(indent_level + 1) + "\n";
61  }
62  return str + indent_0 + "</CarrierDefinition>";
63 }
64 
66 {
67  switch (TransmissionSystem())
68  {
69  case kTSUnknown: return "Unknown";
70  case kTSITUAnnexA: return "Annex A (8 Mhz Global QAM)";
71  case kTSITUAnnexB: return "Annex B (6 Mhz US QAM)";
72  case kTSITUQPSK: return "ITU 1211 (QPSK Satelite)";
73  case kTSATSC: return "ATSC";
74  case kTSDigiCipher: return "DigiCipher II";
75  default: return QString("Reserved(%1)").arg(TransmissionSystem());
76  }
77 }
78 
80 {
81  switch (InnerCodingMode())
82  {
83  case kRate5_11Coding: return "5/11";
84  case kRate1_2Coding: return "1/2";
85  case kRate3_5Coding: return "3/5";
86  case kRate2_3Coding: return "2/3";
87  case kRate3_4Coding: return "3/4";
88  case kRate4_5Coding: return "4/5";
89  case kRate5_6Coding: return "5/6";
90  case kRate7_8Coding: return "7/8";
91  case kNone: return "None";
92  default: return QString("Reserved(%1)").arg(InnerCodingMode());
93  }
94 }
95 
97 {
98  switch (ModulationFormat())
99  {
100  case kUnknown: return "Unknown";
101  case kQPSK: return "QPSK";
102  case kBPSK: return "BPSK";
103  case kOQPSK: return "OQPSK";
104  case kVSB8: return "8-VSB";
105  case kVSB16: return "16-VSB";
106  case kQAM16: return "QAM-16";
107  case kQAM32: return "QAM-32";
108  case kQAM64: return "QAM-64";
109  case kQAM80: return "QAM-80";
110  case kQAM96: return "QAM-96";
111  case kQAM112: return "QAM-112";
112  case kQAM128: return "QAM-128";
113  case kQAM160: return "QAM-160";
114  case kQAM192: return "QAM-192";
115  case kQAM224: return "QAM-224";
116  case kQAM256: return "QAM-256";
117  case kQAM320: return "QAM-320";
118  case kQAM384: return "QAM-384";
119  case kQAM448: return "QAM-448";
120  case kQAM512: return "QAM-512";
121  case kQAM640: return "QAM-640";
122  case kQAM768: return "QAM-768";
123  case kQAM896: return "QAM-896";
124  case kQAM1024: return "QAM-1024";
125  default: return QString("Reserved(%1)").arg(ModulationFormat());
126  }
127 }
128 
130 {
131  return "ModulationMode";
132 }
133 
134 QString ModulationModeSubtable::toStringXML(uint indent_level) const
135 {
136  QString indent_0 = xml_indent(indent_level);
137  QString indent_1 = xml_indent(indent_level + 1);
138  QString str = indent_0 +
139  QString("<ModulationMode descriptors_count=\"%2\"")
140  .arg(DescriptorsCount());
141  str += "\n" + indent_1;
142  str += QString("transmission_system=\"%1\" transmission_system_desc=\"%2\"")
144  str += "\n" + indent_1;
145  str += QString("inner_coding_mode=\"%1\" inner_coding_mode_desc=\"%2\"")
146  .arg(InnerCodingMode()).arg(InnerCodingModeString());
147  str += "\n" + indent_1;
148  str += QString("split_bitstream_mode=\"%1\" ")
150  str += QString("symbol_rate=\"%1\"").arg(SymbolRate());
151 
152  vector<const unsigned char*> desc =
154 
155  if (desc.empty())
156  return str + " />";
157 
158  str += ">\n";
159  for (uint i = 0; i < desc.size(); i++)
160  {
161  str += MPEGDescriptor(desc[i], 300)
162  .toStringXML(indent_level + 1) + "\n";
163  }
164 
165  return str + indent_0 + "</ModulationMode>";
166 }
167 
169 {
170  _ptrs.clear();
171 
174  {
175  uint offset = (kCarrierDefinitionSubtable == TableSubtype()) ? 6 : 7;
176  const unsigned char *next = pesdata() + 7;
177  for (uint i = 0; i < NumberOfRecords(); i++)
178  {
179  _ptrs.push_back(next);
180  uint desc_count = next[offset-1];
181  next += offset;
182  for (uint j = 0; j < desc_count; j++)
183  {
184  MPEGDescriptor desc(next);
185  if (!desc.IsValid())
186  {
187  _ptrs.clear();
188  return false;
189  }
190  next += desc.size();
191  }
192  }
193  _ptrs.push_back(next);
194  return true;
195  }
196 
197  return false;
198 }
199 
201 {
202  QString str = QString("Network Information Section (SCTE) crc(0x%1)\n")
203  .arg(CRC(),8,16,QChar('0'));
204  str += QString("first_index(%1) number_of_records(%2) table_subtype(%3)\n")
205  .arg(FirstIndex()).arg(NumberOfRecords()).arg(TableSubtype());
207  {
208  for (uint i = 0; i < NumberOfRecords(); i++)
209  str += CarrierDefinition(i).toString() + "\n";
210  }
212  {
213  for (uint i = 0; i < NumberOfRecords(); i++)
214  str += ModulationMode(i).toString() + "\n";
215  }
216 
217  return str;
218 }
219 
221 {
222  QString indent_0 = xml_indent(indent_level);
223  QString indent_1 = xml_indent(indent_level + 1);
224 
225  QString str = indent_0 + "<SCTENetworkInformationSection psip=\"scte\" ";
226  str += QString("transmission_medium=\"%1\" ").arg(TransmissionMedium());
227  str += QString("first_index=\"%1\" ").arg(FirstIndex());
228  str += "\n" + indent_1;
229  str += QString("number_of_records=\"%1\" ").arg(NumberOfRecords());
230  str += QString("table_subtype=\"%1\"").arg(TableSubtype());
231  str += PSIPTable::XMLValues(indent_level + 1) + ">\n";
232 
234  {
235  for (uint i = 0; i < NumberOfRecords(); i++)
236  str += CarrierDefinition(i).toStringXML(indent_level + 1) + "\n";
237  }
239  {
240  for (uint i = 0; i < NumberOfRecords(); i++)
241  str += ModulationMode(i).toStringXML(indent_level + 1) + "\n";
242  }
243 
244  vector<const unsigned char*> desc =
246  for (uint i = 0; i < desc.size(); i++)
247  {
248  str += MPEGDescriptor(desc[i], 300)
249  .toStringXML(indent_level + 1) + "\n";
250  }
251 
252  return str + indent_0 + "</SCTENetworkInformationSection>";
253 }
254 
256 
257 void NetworkTextTable::Parse(void) const
258 {
259  // TODO
260 }
261 
262 QString NetworkTextTable::toString(void) const
263 {
264  // TODO
265  return QString("Network Text Section crc(0x%1)\n")
266  .arg(CRC(),8,16,QChar('0'));
267 }
268 
269 QString NetworkTextTable::toStringXML(uint indent_level) const
270 {
271  QString indent_0 = xml_indent(indent_level);
272  QString indent_1 = xml_indent(indent_level + 1);
273 
274  QString str = indent_0 + "<NetworkTextSection ";
275  str += QString("iso_639_language_code=\"%1\" ").arg(LanguageString());
276  str += QString("transmission_medium=\"%1\" ").arg(TransmissionMedium());
277  str += QString("table_subtype=\"%1\"").arg(TableSubtype());
278  return str + " />";
279 
280 /*
281  str += ">\n";
282  vector<const unsigned char*> desc =
283  MPEGDescriptor::Parse(Descriptors(), DescriptorsLength());
284  for (uint i = 0; i < desc.size(); i++)
285  {
286  str += MPEGDescriptor(desc[i], 300)
287  .toStringXML(indent_level + 1) + "\n";
288  }
289 
290  return str + indent_0 + "</NetworkTextSection>";
291 */
292 }
293 
295 
297 {
298  _ptrs.clear();
299 
301  {
302  _ptrs.push_back(pesdata() + DefinedChannelsMap().Size() + 7);
303  }
304  else if (kVirtualChannelMap == TableSubtype())
305  {
306  bool descriptors_included = pesdata()[7] & 0x20;
307  uint number_of_vc_records = pesdata()[13];
308  const unsigned char *next = pesdata() + 14;
309  if (!descriptors_included)
310  {
311  for (uint i = 0; i < number_of_vc_records; i++)
312  {
313  _ptrs.push_back(next);
314  next += 9;
315  }
316  _ptrs.push_back(next);
317  }
318  else
319  {
320  for (uint i = 0; i < number_of_vc_records; i++)
321  {
322  _ptrs.push_back(next);
323  uint desc_count = next[10];
324  next += 10;
325  for (uint j = 0; j < desc_count; j++)
326  {
327  MPEGDescriptor desc(next);
328  if (!desc.IsValid())
329  {
330  _ptrs.clear();
331  return false;
332  }
333  next += desc.size();
334  }
335  }
336  }
337  _ptrs.push_back(next);
338  }
339  else if (kInverseChannelMap == TableSubtype())
340  {
341  _ptrs.push_back(pesdata() + InverseChannelMap().Size() + 7);
342  }
343  else
344  {
345  return false;
346  }
347 
348  return true;
349 }
350 
352 {
353  QString indent_0 = xml_indent(indent_level);
354  QString indent_1 = xml_indent(indent_level + 1);
355  QString str = indent_0 + "<DefinedChannelsMap ";
356  str += QString("first_virtual_channel=\"%1\" ")
357  .arg(FirstVirtualChannel());
358  str += QString("dcm_data_length=\"%1\">\n")
359  .arg(DCMDataLength());
360 
361  for (uint i = 0; i < DCMDataLength(); i++)
362  {
363  str += indent_1 + QString("<Range range_defined=\"%1\"%2 "
364  "channels_count=\"%3\" />\n")
366  .arg(RangeDefined(i) ? " " : "")
367  .arg(ChannelsCount(i));
368  }
369 
370  return str + indent_0 + "</DefinedChannelsMap>";
371 }
372 
374 {
375  switch (VideoStandard(i))
376  {
377  case kNTSC: return "NTSC";
378  case kPAL625: return "PAL-625";
379  case kPAL525: return "PAL-525";
380  case kSECAM: return "SECAM";
381  case kMAC: return "MAC";
382  default: return QString("Reserved(%1)").arg(VideoStandard(i));
383  }
384 }
385 
386 QString VirtualChannelMapSubtable::toStringXML(uint indent_level) const
387 {
388  QString indent_0 = xml_indent(indent_level);
389  QString indent_1 = xml_indent(indent_level + 1);
390  QString indent_2 = xml_indent(indent_level + 2);
391  QString str = indent_0 + "<DefinedChannelsMap ";
392  str += QString("number_of_vc_records=\"%1\"")
393  .arg(NumberOfVCRecords());
394  str += "\n" + indent_1;
395  str += QString("descriptors_included=\"%1\" ")
397  str += QString("splice=\"%1\" ")
398  .arg(xml_bool_to_string(Splice()));
399  str += "\n" + indent_1;
400  str += QString("activation_time=\"%1\" actication_time_desc=\"%2\"")
401  .arg(ActivationTimeRaw())
403  str += ">\n";
404 
405  for (uint i = 0; i < NumberOfVCRecords(); i++)
406  {
407  str += indent_1 + "<Channel ";
408  str += QString("virtual_channel_number=\"%1\" ")
409  .arg(VirtualChannelNumber(i));
410  str += "\n" + indent_2;
411  str += QString("application_virtual_channel=\"%1\" ")
413  str += QString("path_select=\"%1\" ").arg(PathSelect(i));
414  str += "\n" + indent_2;
415  str += QString("transport_type=\"%1\" transport_type_desc=\"%2\" ")
416  .arg(TransportType(i)).arg(TransportTypeString(i));
417  str += "\n" + indent_2;
418  str += QString("channel_type=\"%1\" channel_type_desc=\"%2\" ")
419  .arg(ChannelType(i)).arg(ChannelTypeString(i));
421  str += QString("application_id=\"%1\" ").arg(ApplicationID(i));
422  else
423  str += QString("source_id=\"%1\" ").arg(SourceID(i));
424  str += "\n" + indent_2;
425  if (kMPEG2Transport == TransportType(i))
426  {
427  str += QString("cds_reference=\"%1\" ").arg(CDSReference(i));
428  str += QString("program_number=\"%1\" ").arg(ProgramNumber(i));
429  str += QString("mms_reference=\"%1\" ").arg(MMSReference(i));
430  }
431  else
432  {
433  str += QString("cds_reference=\"%1\" ").arg(CDSReference(i));
434  str += QString("scrampled=\"%1\" ").arg(Scrambled(i));
435  str += "\n" + indent_2;
436  str += QString("video_standard=\"%1\" video_standard_desc=\"%2\" ")
437  .arg(VideoStandard(i)).arg(VideoStandardString(i));
438  }
439  if (!DescriptorsIncluded())
440  {
441  str += "/>\n";
442  continue;
443  }
444 
445  str += "\n" + indent_2;
446  str += QString("descriptors_count=\"%1\"").arg(DescriptorsCount(i));
447  str += ">\n";
448 
449  vector<const unsigned char*> desc =
451  for (uint j = 0; j < desc.size(); j++)
452  {
453  str += MPEGDescriptor(desc[j], 300)
454  .toStringXML(indent_level + 2) + "\n";
455  }
456  str += indent_1 + "</Channel>";
457  }
458 
459  return str + indent_0 + "</DefinedChannelsMap>";
460 }
461 
462 QString InverseChannelMapSubtable::toStringXML(uint indent_level) const
463 {
464  QString indent_0 = xml_indent(indent_level);
465  QString indent_1 = xml_indent(indent_level + 1);
466  QString str = indent_0 + "<InverseChannelMap ";
467  str += QString("first_map_index=\"%1\" ")
468  .arg(FirstMapIndex());
469  str += QString("record_count=\"%1\">\n")
470  .arg(RecordCount());
471 
472  for (uint i = 0; i < RecordCount(); i++)
473  {
474  str += indent_1 + QString("<Map source_id=\"%1\" "
475  "virtual_channel_number=\"%2\" />\n")
476  .arg(SourceID(i)).arg(VirtualChannelNumber(i));
477  }
478 
479  return str + indent_0 + "</InverseChannelMap>";
480 }
481 
483 {
484  switch (TableSubtype())
485  {
486  case kVirtualChannelMap: return "Virtual Channel Map";
487  case kDefinedChannelsMap: return "Defined Channels Map";
488  case kInverseChannelMap: return "Inverse Channel Map";
489  default: return QString("Reserved(%1)").arg(TableSubtype());
490  }
491 }
492 
494 {
495  // TODO
496  return QString("Short Virtual Channel Section ID(%1) crc(0x%2)\n")
497  .arg(ID()).arg(CRC(),8,16,QChar('0'));
498 }
499 
500 QString ShortVirtualChannelTable::toStringXML(uint indent_level) const
501 {
502  QString indent_0 = xml_indent(indent_level);
503  QString indent_1 = xml_indent(indent_level + 1);
504  QString str = indent_0 +
505  QString("<ShortVirtualChannelSection vct_id=\"%1\" ").arg(ID());
506  str += QString("transmission_medium=\"%1\" ").arg(TransmissionMedium());
507  str += "\n" + indent_1;
508  str += QString("table_subtype=\"%1\" table_subtype_desc=\"%2\"")
509  .arg(TableSubtype()).arg(TableSubtypeString());
510  str += "\n" + indent_1 + PSIPTable::XMLValues(indent_level + 1) + ">\n";
511 
513  str += DefinedChannelsMap().toStringXML(indent_level + 1) + "\n";
514  else if (kVirtualChannelMap == TableSubtype())
515  str += VirtualChannelMap().toStringXML(indent_level + 1) + "\n";
516  else if (kInverseChannelMap == TableSubtype())
517  str += InverseChannelMap().toStringXML(indent_level + 1) + "\n";
518 
519  vector<const unsigned char*> desc =
521  for (uint i = 0; i < desc.size(); i++)
522  {
523  str += MPEGDescriptor(desc[i], 300)
524  .toStringXML(indent_level + 1) + "\n";
525  }
526 
527  return str + indent_0 + "</ShortVirtualChannelSection>";
528 }
529 
531 
532 QString SCTESystemTimeTable::toString(void) const
533 {
534  QString str =
535  QString("SystemTimeSection (SCTE) raw(%1) GPS_UTC_Offset(%2) utc(%3_")
536  .arg(SystemTimeRaw()).arg(GPSUTCOffset())
538  return str;
539 }
540 
541 QString SCTESystemTimeTable::toStringXML(uint indent_level) const
542 {
543  QString indent_0 = xml_indent(indent_level);
544  QString indent_1 = xml_indent(indent_level + 1);
545  QString str = indent_0 +
546  QString("<SCTESystemTimeSection system_time=\"%1\" "
547  "gps_utc_offset=\"%2\"\n%3utc_time_desc=\"%4\" psip=\"scte\"")
548  .arg(SystemTimeRaw()).arg(GPSUTCOffset())
549  .arg(indent_1)
551 
552  if (!DescriptorsLength())
553  return str + " />";
554 
555  str += ">\n";
556 
557  vector<const unsigned char*> desc =
559  for (uint i = 0; i < desc.size(); i++)
560  {
561  str += MPEGDescriptor(desc[i], 300)
562  .toStringXML(indent_level + 1) + "\n";
563  }
564 
565  return str + indent_0 + "</SCTESystemTimeSection>";
566 }
567 
569 
571 {
572  // TODO
573  return "Aggregate Data Event Section\n";
574 }
575 
576 QString AggregateDataEventTable::toStringXML(uint /*indent_level*/) const
577 {
578  // TODO
579  return "<AggregateDataEventSection />";
580 }
uint GPSUTCOffset(void) const
Definition: sctetables.h:620
const unsigned char * pesdata() const
Definition: pespacket.h:163
Specified in Annex B of ITU Rec. J.83.
Definition: sctetables.h:98
uint SourceID(uint i) const
Definition: sctetables.h:484
uint FirstMapIndex(void) const
Definition: sctetables.h:478
uint DescriptorsCount(void) const
Definition: sctetables.h:73
uint SpacingUnitHz(void) const
Definition: sctetables.h:56
uint TransmissionSystem(void) const
Definition: sctetables.h:107
QString toStringXML(uint indent_level) const
Definition: sctetables.cpp:32
uint TransmissionMedium(void) const
Definition: sctetables.h:290
uint TransmissionMedium(void) const
Definition: sctetables.h:523
ITU-R Rec. BO.1211:1995 (QPSK)
Definition: sctetables.h:99
uint DescriptorsLength(void) const
Definition: sctetables.h:241
uint InnerCodingMode(void) const
Definition: sctetables.h:130
QString VideoStandardString(uint i) const
Definition: sctetables.cpp:373
QDateTime ActivationTimeUTC(uint offset=0) const
Definition: sctetables.h:373
uint DescriptorsLength(void) const
Definition: sctetables.h:622
uint DescriptorsLength(void) const
Definition: sctetables.h:77
uint FrequencyUnit(void) const
Definition: sctetables.h:64
uint VirtualChannelNumber(uint i) const
Definition: sctetables.h:389
const unsigned char * Descriptors(void) const
Definition: sctetables.h:553
QString toString(MarkTypes type)
uint SymbolRate(void) const
Definition: sctetables.h:169
QString TableSubtypeString(void) const
Definition: sctetables.cpp:482
QString toString(void) const
SCTE System information tables.
Definition: sctetables.cpp:25
QString toStringXML(uint indent_level) const override
Definition: sctetables.cpp:576
uint FrequencyUnitHz(void) const
Definition: sctetables.h:65
uint DCMDataLength(void) const
Definition: sctetables.h:335
bool DescriptorsIncluded(void) const
Definition: sctetables.h:359
QString toStringXML(uint indent_level) const
Definition: sctetables.cpp:351
QString toStringXML(uint indent_level) const override
Definition: sctetables.cpp:541
bool Scrambled(uint i) const
Definition: sctetables.h:439
uint DescriptorsLength(void) const
Definition: sctetables.h:551
uint DescriptorsCount(void) const
Definition: sctetables.h:175
from SCTE 57 – DigiCipher II
Definition: sctetables.h:101
unsigned int uint
Definition: compat.h:140
QString toString(void) const override
Definition: sctetables.cpp:200
uint RecordCount(void) const
Definition: sctetables.h:481
vector< const unsigned char * > _ptrs
Definition: sctetables.h:562
uint NumberOfVCRecords(void) const
Definition: sctetables.h:384
uint PathSelect(uint i) const
Definition: sctetables.h:400
CarrierDefinitionSubtable CarrierDefinition(uint i) const
Definition: sctetables.h:231
uint SpacingUnit(void) const
Definition: sctetables.h:55
VirtualChannelMapSubtable VirtualChannelMap(void) const
Definition: sctetables.h:541
uint size(void) const
ModulationModeSubtable ModulationMode(uint i) const
Definition: sctetables.h:234
QString toString(void) const override
Definition: sctetables.cpp:493
QString toStringXML(uint indent_level) const override
Definition: sctetables.cpp:269
uint32_t SystemTimeRaw(void) const
Definition: sctetables.h:590
DefinedChannelsMapSubtable DefinedChannelsMap(void) const
Definition: sctetables.h:537
Specified in Annex A of ITU Rec. J.83.
Definition: sctetables.h:97
uint64_t FirstCarrierFrequencyHz(void) const
Definition: sctetables.h:69
uint FirstCarrierFrequency(void) const
Definition: sctetables.h:67
uint ChannelType(uint i) const
Definition: sctetables.h:419
uint TableSubtype(void) const
Definition: sctetables.h:532
uint ModulationFormat(void) const
Definition: sctetables.h:165
const unsigned char * Descriptors(void) const
Definition: sctetables.h:180
InverseChannelMapSubtable InverseChannelMap(void) const
Definition: sctetables.h:545
uint CDSReference(uint i) const
Definition: sctetables.h:431
uint DescriptorsLength(uint i) const
Definition: sctetables.h:460
const unsigned char * Descriptors(void) const
Definition: sctetables.h:624
uint VirtualChannelNumber(uint i) const
Definition: sctetables.h:487
uint ActivationTimeRaw(void) const
Definition: sctetables.h:365
uint TransmissionMedium(void) const
Definition: sctetables.h:219
uint FirstVirtualChannel(void) const
Definition: sctetables.h:331
void Parse(void) const
Definition: sctetables.cpp:257
uint DescriptorsCount(uint i) const
Definition: sctetables.h:457
uint ProgramNumber(uint i) const
Definition: sctetables.h:433
uint ChannelsCount(uint i) const
Definition: sctetables.h:340
uint TransportType(uint i) const
Definition: sctetables.h:409
QString toStringXML(uint indent_level) const
Definition: sctetables.cpp:462
QString toString(void) const override
Definition: sctetables.cpp:262
bool RangeDefined(uint i) const
Definition: sctetables.h:338
uint CRC(void) const
Definition: pespacket.h:188
uint ID(void) const
Definition: sctetables.h:535
uint DescriptorsLength(void) const
Definition: sctetables.h:179
PictureAttribute next(PictureAttributeSupported supported, PictureAttribute attribute)
QString ChannelTypeString(uint i) const
Definition: sctetables.h:420
const unsigned char * Descriptors(void) const
Definition: sctetables.h:78
QString TransmissionSystemString(void) const
Definition: sctetables.cpp:65
QString toString(void) const override
Definition: sctetables.cpp:532
QString XMLValues(uint indent_level) const
Definition: mpegtables.cpp:778
QString InnerCodingModeString(void) const
Definition: sctetables.cpp:79
bool SplitBitstreamMode(void) const
Definition: sctetables.h:133
QString toStringXML(uint indent_level) const
Definition: sctetables.cpp:134
uint VideoStandard(uint i) const
Definition: sctetables.h:451
QString toString(void) const override
Definition: sctetables.cpp:570
uint SourceID(uint i) const
Definition: sctetables.h:427
QString toStringXML(uint indent_level) const
Definition: sctetables.cpp:386
uint ApplicationID(uint i) const
Definition: sctetables.h:424
QString LanguageString(void) const
Definition: sctetables.h:283
bool ApplicationVirtualChannel(uint i) const
Definition: sctetables.h:392
bool Splice(void) const
Definition: sctetables.h:362
uint TableSubtype(void) const
Definition: sctetables.h:228
static QString xml_bool_to_string(bool val)
Definition: mythmiscutil.h:60
QString ModulationFormatString(void) const
Definition: sctetables.cpp:96
bool IsValid(void) const
vector< const unsigned char * > _ptrs
Definition: sctetables.h:251
QDateTime SystemTimeUTC(void) const
Definition: sctetables.h:605
uint TableSubtype(void) const
Definition: sctetables.h:298
uint NumberOfCarriers(void) const
Definition: sctetables.h:48
virtual QString toStringXML(uint indent_level) const
Returns XML representation of string the TS Reader XML format.
QString toStringXML(uint indent_level) const override
Definition: sctetables.cpp:220
const unsigned char * Descriptors(void) const
Definition: sctetables.h:243
uint FirstIndex(void) const
Definition: sctetables.h:215
const unsigned char * Descriptors(uint i) const
Definition: sctetables.h:461
QString toStringXML(uint indent_level) const override
Definition: sctetables.cpp:500
uint NumberOfRecords(void) const
Definition: sctetables.h:217
static desc_list_t Parse(const unsigned char *data, uint len)
QString TransportTypeString(uint i) const
Definition: sctetables.h:410
uint FrequencySpacingHz(void) const
Definition: sctetables.h:61
Default UTC.
Definition: mythdate.h:14
QString xml_indent(uint level)
QString toString(void) const
Definition: sctetables.cpp:129
uint FrequencySpacing(void) const
Definition: sctetables.h:59
uint MMSReference(uint i) const
Definition: sctetables.h:435