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 (size_t 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 (size_t 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 (size_t 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 
273  QString str = indent_0 + "<NetworkTextSection ";
274  str += QString("iso_639_language_code=\"%1\" ").arg(LanguageString());
275  str += QString("transmission_medium=\"%1\" ").arg(TransmissionMedium());
276  str += QString("table_subtype=\"%1\"").arg(TableSubtype());
277  return str + " />";
278 
279 /*
280  str += ">\n";
281  vector<const unsigned char*> desc =
282  MPEGDescriptor::Parse(Descriptors(), DescriptorsLength());
283  for (uint i = 0; i < desc.size(); i++)
284  {
285  str += MPEGDescriptor(desc[i], 300)
286  .toStringXML(indent_level + 1) + "\n";
287  }
288 
289  return str + indent_0 + "</NetworkTextSection>";
290 */
291 }
292 
294 
296 {
297  _ptrs.clear();
298 
300  {
301  _ptrs.push_back(pesdata() + DefinedChannelsMap().Size() + 7);
302  }
303  else if (kVirtualChannelMap == TableSubtype())
304  {
305  bool descriptors_included = (pesdata()[7] & 0x20) != 0;
306  uint number_of_vc_records = pesdata()[13];
307  const unsigned char *next = pesdata() + 14;
308  if (!descriptors_included)
309  {
310  for (uint i = 0; i < number_of_vc_records; i++)
311  {
312  _ptrs.push_back(next);
313  next += 9;
314  }
315  _ptrs.push_back(next);
316  }
317  else
318  {
319  for (uint i = 0; i < number_of_vc_records; i++)
320  {
321  _ptrs.push_back(next);
322  uint desc_count = next[10];
323  next += 10;
324  for (uint j = 0; j < desc_count; j++)
325  {
326  MPEGDescriptor desc(next);
327  if (!desc.IsValid())
328  {
329  _ptrs.clear();
330  return false;
331  }
332  next += desc.size();
333  }
334  }
335  }
336  _ptrs.push_back(next);
337  }
338  else if (kInverseChannelMap == TableSubtype())
339  {
340  _ptrs.push_back(pesdata() + InverseChannelMap().Size() + 7);
341  }
342  else
343  {
344  return false;
345  }
346 
347  return true;
348 }
349 
351 {
352  QString indent_0 = xml_indent(indent_level);
353  QString indent_1 = xml_indent(indent_level + 1);
354  QString str = indent_0 + "<DefinedChannelsMap ";
355  str += QString("first_virtual_channel=\"%1\" ")
356  .arg(FirstVirtualChannel());
357  str += QString("dcm_data_length=\"%1\">\n")
358  .arg(DCMDataLength());
359 
360  for (uint i = 0; i < DCMDataLength(); i++)
361  {
362  str += indent_1 + QString("<Range range_defined=\"%1\"%2 "
363  "channels_count=\"%3\" />\n")
365  .arg(RangeDefined(i) ? " " : "")
366  .arg(ChannelsCount(i));
367  }
368 
369  return str + indent_0 + "</DefinedChannelsMap>";
370 }
371 
373 {
374  switch (VideoStandard(i))
375  {
376  case kNTSC: return "NTSC";
377  case kPAL625: return "PAL-625";
378  case kPAL525: return "PAL-525";
379  case kSECAM: return "SECAM";
380  case kMAC: return "MAC";
381  default: return QString("Reserved(%1)").arg(VideoStandard(i));
382  }
383 }
384 
385 QString VirtualChannelMapSubtable::toStringXML(uint indent_level) const
386 {
387  QString indent_0 = xml_indent(indent_level);
388  QString indent_1 = xml_indent(indent_level + 1);
389  QString indent_2 = xml_indent(indent_level + 2);
390  QString str = indent_0 + "<DefinedChannelsMap ";
391  str += QString("number_of_vc_records=\"%1\"")
392  .arg(NumberOfVCRecords());
393  str += "\n" + indent_1;
394  str += QString("descriptors_included=\"%1\" ")
396  str += QString("splice=\"%1\" ")
397  .arg(xml_bool_to_string(Splice()));
398  str += "\n" + indent_1;
399  str += QString("activation_time=\"%1\" actication_time_desc=\"%2\"")
400  .arg(ActivationTimeRaw())
402  str += ">\n";
403 
404  for (uint i = 0; i < NumberOfVCRecords(); i++)
405  {
406  str += indent_1 + "<Channel ";
407  str += QString("virtual_channel_number=\"%1\" ")
408  .arg(VirtualChannelNumber(i));
409  str += "\n" + indent_2;
410  str += QString("application_virtual_channel=\"%1\" ")
412  str += QString("path_select=\"%1\" ").arg(PathSelect(i));
413  str += "\n" + indent_2;
414  str += QString("transport_type=\"%1\" transport_type_desc=\"%2\" ")
415  .arg(TransportType(i)).arg(TransportTypeString(i));
416  str += "\n" + indent_2;
417  str += QString("channel_type=\"%1\" channel_type_desc=\"%2\" ")
418  .arg(ChannelType(i)).arg(ChannelTypeString(i));
420  str += QString("application_id=\"%1\" ").arg(ApplicationID(i));
421  else
422  str += QString("source_id=\"%1\" ").arg(SourceID(i));
423  str += "\n" + indent_2;
424  if (kMPEG2Transport == TransportType(i))
425  {
426  str += QString("cds_reference=\"%1\" ").arg(CDSReference(i));
427  str += QString("program_number=\"%1\" ").arg(ProgramNumber(i));
428  str += QString("mms_reference=\"%1\" ").arg(MMSReference(i));
429  }
430  else
431  {
432  str += QString("cds_reference=\"%1\" ").arg(CDSReference(i));
433  str += QString("scrampled=\"%1\" ").arg(Scrambled(i));
434  str += "\n" + indent_2;
435  str += QString("video_standard=\"%1\" video_standard_desc=\"%2\" ")
436  .arg(VideoStandard(i)).arg(VideoStandardString(i));
437  }
438  if (!DescriptorsIncluded())
439  {
440  str += "/>\n";
441  continue;
442  }
443 
444  str += "\n" + indent_2;
445  str += QString("descriptors_count=\"%1\"").arg(DescriptorsCount(i));
446  str += ">\n";
447 
448  vector<const unsigned char*> desc =
450  for (size_t j = 0; j < desc.size(); j++)
451  {
452  str += MPEGDescriptor(desc[j], 300)
453  .toStringXML(indent_level + 2) + "\n";
454  }
455  str += indent_1 + "</Channel>";
456  }
457 
458  return str + indent_0 + "</DefinedChannelsMap>";
459 }
460 
461 QString InverseChannelMapSubtable::toStringXML(uint indent_level) const
462 {
463  QString indent_0 = xml_indent(indent_level);
464  QString indent_1 = xml_indent(indent_level + 1);
465  QString str = indent_0 + "<InverseChannelMap ";
466  str += QString("first_map_index=\"%1\" ")
467  .arg(FirstMapIndex());
468  str += QString("record_count=\"%1\">\n")
469  .arg(RecordCount());
470 
471  for (uint i = 0; i < RecordCount(); i++)
472  {
473  str += indent_1 + QString("<Map source_id=\"%1\" "
474  "virtual_channel_number=\"%2\" />\n")
475  .arg(SourceID(i)).arg(VirtualChannelNumber(i));
476  }
477 
478  return str + indent_0 + "</InverseChannelMap>";
479 }
480 
482 {
483  switch (TableSubtype())
484  {
485  case kVirtualChannelMap: return "Virtual Channel Map";
486  case kDefinedChannelsMap: return "Defined Channels Map";
487  case kInverseChannelMap: return "Inverse Channel Map";
488  default: return QString("Reserved(%1)").arg(TableSubtype());
489  }
490 }
491 
493 {
494  // TODO
495  return QString("Short Virtual Channel Section ID(%1) crc(0x%2)\n")
496  .arg(ID()).arg(CRC(),8,16,QChar('0'));
497 }
498 
499 QString ShortVirtualChannelTable::toStringXML(uint indent_level) const
500 {
501  QString indent_0 = xml_indent(indent_level);
502  QString indent_1 = xml_indent(indent_level + 1);
503  QString str = indent_0 +
504  QString("<ShortVirtualChannelSection vct_id=\"%1\" ").arg(ID());
505  str += QString("transmission_medium=\"%1\" ").arg(TransmissionMedium());
506  str += "\n" + indent_1;
507  str += QString("table_subtype=\"%1\" table_subtype_desc=\"%2\"")
508  .arg(TableSubtype()).arg(TableSubtypeString());
509  str += "\n" + indent_1 + PSIPTable::XMLValues(indent_level + 1) + ">\n";
510 
512  str += DefinedChannelsMap().toStringXML(indent_level + 1) + "\n";
513  else if (kVirtualChannelMap == TableSubtype())
514  str += VirtualChannelMap().toStringXML(indent_level + 1) + "\n";
515  else if (kInverseChannelMap == TableSubtype())
516  str += InverseChannelMap().toStringXML(indent_level + 1) + "\n";
517 
518  vector<const unsigned char*> desc =
520  for (size_t i = 0; i < desc.size(); i++)
521  {
522  str += MPEGDescriptor(desc[i], 300)
523  .toStringXML(indent_level + 1) + "\n";
524  }
525 
526  return str + indent_0 + "</ShortVirtualChannelSection>";
527 }
528 
530 
531 QString SCTESystemTimeTable::toString(void) const
532 {
533  QString str =
534  QString("SystemTimeSection (SCTE) raw(%1) GPS_UTC_Offset(%2) utc(%3_")
535  .arg(SystemTimeRaw()).arg(GPSUTCOffset())
537  return str;
538 }
539 
540 QString SCTESystemTimeTable::toStringXML(uint indent_level) const
541 {
542  QString indent_0 = xml_indent(indent_level);
543  QString indent_1 = xml_indent(indent_level + 1);
544  QString str = indent_0 +
545  QString("<SCTESystemTimeSection system_time=\"%1\" "
546  "gps_utc_offset=\"%2\"\n%3utc_time_desc=\"%4\" psip=\"scte\"")
547  .arg(SystemTimeRaw()).arg(GPSUTCOffset())
548  .arg(indent_1)
550 
551  if (!DescriptorsLength())
552  return str + " />";
553 
554  str += ">\n";
555 
556  vector<const unsigned char*> desc =
558  for (size_t i = 0; i < desc.size(); i++)
559  {
560  str += MPEGDescriptor(desc[i], 300)
561  .toStringXML(indent_level + 1) + "\n";
562  }
563 
564  return str + indent_0 + "</SCTESystemTimeSection>";
565 }
566 
568 
570 {
571  // TODO
572  return "Aggregate Data Event Section\n";
573 }
574 
575 QString AggregateDataEventTable::toStringXML(uint /*indent_level*/) const
576 {
577  // TODO
578  return "<AggregateDataEventSection />";
579 }
uint GPSUTCOffset(void) const
Definition: sctetables.h:620
const unsigned char * pesdata() const
Definition: pespacket.h:163
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
uint DescriptorsLength(void) const
Definition: sctetables.h:241
uint InnerCodingMode(void) const
Definition: sctetables.h:130
QString VideoStandardString(uint i) const
Definition: sctetables.cpp:372
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:481
QString toString(void) const
SCTE System information tables.
Definition: sctetables.cpp:25
QString toStringXML(uint indent_level) const override
Definition: sctetables.cpp:575
Specified in Annex A of ITU Rec. J.83.
Definition: sctetables.h:97
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:350
QString toStringXML(uint indent_level) const override
Definition: sctetables.cpp:540
bool Scrambled(uint i) const
Definition: sctetables.h:439
uint DescriptorsLength(void) const
Definition: sctetables.h:551
Specified in Annex B of ITU Rec. J.83.
Definition: sctetables.h:98
uint DescriptorsCount(void) const
Definition: sctetables.h:175
unsigned int uint
Definition: compat.h:140
QString toString(void) const override
Definition: sctetables.cpp:200
from SCTE 57 – DigiCipher II
Definition: sctetables.h:101
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:492
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
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
ITU-R Rec. BO.1211:1995 (QPSK)
Definition: sctetables.h:99
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:461
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:531
QString XMLValues(uint indent_level) const
Definition: mpegtables.cpp:781
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:569
uint SourceID(uint i) const
Definition: sctetables.h:427
QString toStringXML(uint indent_level) const
Definition: sctetables.cpp:385
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:499
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