MythTV master
sctetables.cpp
Go to the documentation of this file.
1// -*- Mode: c++ -*-
23#include "sctetables.h"
24
26{
27 return QString("CarrierDefinitionSubtable number_of_carriers(%1)")
28 .arg(NumberOfCarriers()) +
29 QString(" descriptors(%1)").arg(DescriptorsCount());
30}
31
33{
34 QString indent_0 = StringUtil::indentSpaces(indent_level);
35 QString indent_1 = StringUtil::indentSpaces(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(R"(spacing_unit="%1" spacing_unit_hz="%2")")
42 .arg(SpacingUnit()).arg(SpacingUnitHz());
43 str += "\n" + indent_1;
44 str += QString(R"(frequency_spacing="%1" frequency_spacing_hz="%2")")
46 str += "\n" + indent_1;
47 str += QString(R"(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")
54
55 std::vector<const unsigned char*> desc =
57 for (auto & d : desc)
58 {
59 str += MPEGDescriptor(d, 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
134QString ModulationModeSubtable::toStringXML(uint indent_level) const
135{
136 QString indent_0 = StringUtil::indentSpaces(indent_level);
137 QString indent_1 = StringUtil::indentSpaces(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(R"(transmission_system="%1" transmission_system_desc="%2")")
144 str += "\n" + indent_1;
145 str += QString(R"(inner_coding_mode="%1" inner_coding_mode_desc="%2")")
147 str += "\n" + indent_1;
148 str += QString("split_bitstream_mode=\"%1\" ")
150 str += QString("symbol_rate=\"%1\"").arg(SymbolRate());
151
152 std::vector<const unsigned char*> desc =
154
155 if (desc.empty())
156 return str + " />";
157
158 str += ">\n";
159 for (auto & d : desc)
160 {
161 str += MPEGDescriptor(d, 300)
162 .toStringXML(indent_level + 1) + "\n";
163 }
164
165 return str + indent_0 + "</ModulationMode>";
166}
167
169{
170 m_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 m_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 m_ptrs.clear();
188 return false;
189 }
190 next += desc.size();
191 }
192 }
193 m_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 += ModulationModeSubtable::toString() + "\n";
215 }
216
217 return str;
218}
219
221{
222 QString indent_0 = StringUtil::indentSpaces(indent_level);
223 QString indent_1 = StringUtil::indentSpaces(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 std::vector<const unsigned char*> desc =
246 for (auto & d : desc)
247 {
248 str += MPEGDescriptor(d, 300)
249 .toStringXML(indent_level + 1) + "\n";
250 }
251
252 return str + indent_0 + "</SCTENetworkInformationSection>";
253}
254
256
258{
259 // TODO
260}
261
262QString 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
269QString NetworkTextTable::toStringXML(uint indent_level) const
270{
271 QString indent_0 = StringUtil::indentSpaces(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 m_ptrs.clear();
298
300 {
301 m_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 const unsigned char *end = pesdata()+Length();
309 bool ok = true;
310
311 if (!descriptors_included)
312 {
313 for (uint i = 0; i < number_of_vc_records && ok; i++)
314 {
315 if (next + 10 >= end)
316 {
317 ok = false;
318 break;
319 }
320 m_ptrs.push_back(next);
321 next += 9;
322 }
323 m_ptrs.push_back(next);
324 }
325 else
326 {
327 for (uint i = 0; i < number_of_vc_records; i++)
328 {
329 m_ptrs.push_back(next);
330 uint desc_count = next[10];
331 next += 10;
332 for (uint j = 0; j < desc_count; j++)
333 {
334 if (next >= end)
335 {
336 ok = false;
337 break;
338 }
339 MPEGDescriptor desc(next, end-next);
340 if (!desc.IsValid())
341 {
342 m_ptrs.clear();
343 return false;
344 }
345 next += desc.size();
346 }
347 }
348 }
349 m_ptrs.push_back(next);
350 if (!ok || next >= end)
351 {
352 m_ptrs.clear();
353 return false;
354 }
355 }
356 else if (kInverseChannelMap == TableSubtype())
357 {
358 m_ptrs.push_back(pesdata() + InverseChannelMap().Size() + 7);
359 }
360 else
361 {
362 return false;
363 }
364
365 return true;
366}
367
369{
370 QString indent_0 = StringUtil::indentSpaces(indent_level);
371 QString indent_1 = StringUtil::indentSpaces(indent_level + 1);
372 QString str = indent_0 + "<DefinedChannelsMap ";
373 str += QString("first_virtual_channel=\"%1\" ")
374 .arg(FirstVirtualChannel());
375 str += QString("dcm_data_length=\"%1\">\n")
376 .arg(DCMDataLength());
377
378 for (uint i = 0; i < DCMDataLength(); i++)
379 {
380 str += indent_1 + QString("<Range range_defined=\"%1\"%2 "
381 "channels_count=\"%3\" />\n")
383 RangeDefined(i) ? " " : "",
384 QString::number(ChannelsCount(i)));
385 }
386
387 return str + indent_0 + "</DefinedChannelsMap>";
388}
389
391{
392 switch (VideoStandard(i))
393 {
394 case kNTSC: return "NTSC";
395 case kPAL625: return "PAL-625";
396 case kPAL525: return "PAL-525";
397 case kSECAM: return "SECAM";
398 case kMAC: return "MAC";
399 default: return QString("Reserved(%1)").arg(VideoStandard(i));
400 }
401}
402
404{
405 QString indent_0 = StringUtil::indentSpaces(indent_level);
406 QString indent_1 = StringUtil::indentSpaces(indent_level + 1);
407 QString indent_2 = StringUtil::indentSpaces(indent_level + 2);
408 QString str = indent_0 + "<DefinedChannelsMap ";
409 str += QString("number_of_vc_records=\"%1\"")
410 .arg(NumberOfVCRecords());
411 str += "\n" + indent_1;
412 str += QString("descriptors_included=\"%1\" ")
414 str += QString("splice=\"%1\" ")
416 str += "\n" + indent_1;
417 str += QString(R"(activation_time="%1" actication_time_desc="%2")")
418 .arg(ActivationTimeRaw())
420 str += ">\n";
421
422 for (uint i = 0; i < NumberOfVCRecords(); i++)
423 {
424 str += indent_1 + "<Channel ";
425 str += QString("virtual_channel_number=\"%1\" ")
426 .arg(VirtualChannelNumber(i));
427 str += "\n" + indent_2;
428 str += QString("application_virtual_channel=\"%1\" ")
430 str += QString("path_select=\"%1\" ").arg(PathSelect(i));
431 str += "\n" + indent_2;
432 str += QString(R"(transport_type="%1" transport_type_desc="%2" )")
433 .arg(TransportType(i)).arg(TransportTypeString(i));
434 str += "\n" + indent_2;
435 str += QString(R"(channel_type="%1" channel_type_desc="%2" )")
436 .arg(ChannelType(i)).arg(ChannelTypeString(i));
438 str += QString("application_id=\"%1\" ").arg(ApplicationID(i));
439 else
440 str += QString("source_id=\"%1\" ").arg(SourceID(i));
441 str += "\n" + indent_2;
443 {
444 str += QString("cds_reference=\"%1\" ").arg(CDSReference(i));
445 str += QString("program_number=\"%1\" ").arg(ProgramNumber(i));
446 str += QString("mms_reference=\"%1\" ").arg(MMSReference(i));
447 }
448 else
449 {
450 str += QString("cds_reference=\"%1\" ").arg(CDSReference(i));
451 str += QString("scrampled=\"%1\" ").arg(static_cast<int>(Scrambled(i)));
452 str += "\n" + indent_2;
453 str += QString(R"(video_standard="%1" video_standard_desc="%2" )")
454 .arg(VideoStandard(i)).arg(VideoStandardString(i));
455 }
456 if (!DescriptorsIncluded())
457 {
458 str += "/>\n";
459 continue;
460 }
461
462 str += "\n" + indent_2;
463 str += QString("descriptors_count=\"%1\"").arg(DescriptorsCount(i));
464 str += ">\n";
465
466 std::vector<const unsigned char*> desc =
468 for (auto & d : desc)
469 {
470 str += MPEGDescriptor(d, 300)
471 .toStringXML(indent_level + 2) + "\n";
472 }
473 str += indent_1 + "</Channel>";
474 }
475
476 return str + indent_0 + "</DefinedChannelsMap>";
477}
478
480{
481 QString indent_0 = StringUtil::indentSpaces(indent_level);
482 QString indent_1 = StringUtil::indentSpaces(indent_level + 1);
483 QString str = indent_0 + "<InverseChannelMap ";
484 str += QString("first_map_index=\"%1\" ")
485 .arg(FirstMapIndex());
486 str += QString("record_count=\"%1\">\n")
487 .arg(RecordCount());
488
489 for (uint i = 0; i < RecordCount(); i++)
490 {
491 str += indent_1 + QString("<Map source_id=\"%1\" "
492 "virtual_channel_number=\"%2\" />\n")
493 .arg(SourceID(i)).arg(VirtualChannelNumber(i));
494 }
495
496 return str + indent_0 + "</InverseChannelMap>";
497}
498
500{
501 switch (TableSubtype())
502 {
503 case kVirtualChannelMap: return "Virtual Channel Map";
504 case kDefinedChannelsMap: return "Defined Channels Map";
505 case kInverseChannelMap: return "Inverse Channel Map";
506 default: return QString("Reserved(%1)").arg(TableSubtype());
507 }
508}
509
511{
512 // TODO
513 return QString("Short Virtual Channel Section ID(%1) crc(0x%2)\n")
514 .arg(ID()).arg(CRC(),8,16,QChar('0'));
515}
516
518{
519 QString indent_0 = StringUtil::indentSpaces(indent_level);
520 QString indent_1 = StringUtil::indentSpaces(indent_level + 1);
521 QString str = indent_0 +
522 QString("<ShortVirtualChannelSection vct_id=\"%1\" ").arg(ID());
523 str += QString("transmission_medium=\"%1\" ").arg(TransmissionMedium());
524 str += "\n" + indent_1;
525 str += QString(R"(table_subtype="%1" table_subtype_desc="%2")")
526 .arg(TableSubtype()).arg(TableSubtypeString());
527 str += "\n" + indent_1 + PSIPTable::XMLValues(indent_level + 1) + ">\n";
528
530 str += DefinedChannelsMap().toStringXML(indent_level + 1) + "\n";
531 else if (kVirtualChannelMap == TableSubtype())
532 str += VirtualChannelMap().toStringXML(indent_level + 1) + "\n";
533 else if (kInverseChannelMap == TableSubtype())
534 str += InverseChannelMap().toStringXML(indent_level + 1) + "\n";
535
536 std::vector<const unsigned char*> desc =
538 for (auto & d : desc)
539 {
540 str += MPEGDescriptor(d, 300)
541 .toStringXML(indent_level + 1) + "\n";
542 }
543
544 return str + indent_0 + "</ShortVirtualChannelSection>";
545}
546
548
550{
551 QString str =
552 QString("SystemTimeSection (SCTE) raw(%1) GPS_UTC_Offset(%2) utc(%3_")
553 .arg(SystemTimeRaw()).arg(GPSUTCOffset())
555 return str;
556}
557
558QString SCTESystemTimeTable::toStringXML(uint indent_level) const
559{
560 QString indent_0 = StringUtil::indentSpaces(indent_level);
561 QString indent_1 = StringUtil::indentSpaces(indent_level + 1);
562 QString str = indent_0 +
563 QString("<SCTESystemTimeSection system_time=\"%1\" "
564 "gps_utc_offset=\"%2\"\n%3utc_time_desc=\"%4\" psip=\"scte\"")
565 .arg(SystemTimeRaw()).arg(GPSUTCOffset())
566 .arg(indent_1,
568
569 if (!DescriptorsLength())
570 return str + " />";
571
572 str += ">\n";
573
574 std::vector<const unsigned char*> desc =
576 for (auto & d : desc)
577 {
578 str += MPEGDescriptor(d, 300)
579 .toStringXML(indent_level + 1) + "\n";
580 }
581
582 return str + indent_0 + "</SCTESystemTimeSection>";
583}
584
586
588{
589 // TODO
590 return "Aggregate Data Event Section\n";
591}
592
593QString AggregateDataEventTable::toStringXML(uint /*indent_level*/) const
594{
595 // TODO
596 return "<AggregateDataEventSection />";
597}
QString toString(void) const override
Definition: sctetables.cpp:587
QString toStringXML(uint indent_level) const override
Definition: sctetables.cpp:593
uint FrequencySpacing(void) const
Definition: sctetables.h:67
uint DescriptorsCount(void) const
Definition: sctetables.h:81
const unsigned char * Descriptors(void) const
Definition: sctetables.h:86
uint SpacingUnitHz(void) const
Definition: sctetables.h:64
uint DescriptorsLength(void) const
Definition: sctetables.h:85
uint FrequencySpacingHz(void) const
Definition: sctetables.h:69
uint64_t FirstCarrierFrequencyHz(void) const
Definition: sctetables.h:77
QString toString(void) const
SCTE System information tables.
Definition: sctetables.cpp:25
uint NumberOfCarriers(void) const
Definition: sctetables.h:56
uint FrequencyUnitHz(void) const
Definition: sctetables.h:73
uint SpacingUnit(void) const
Definition: sctetables.h:63
QString toStringXML(uint indent_level) const
Definition: sctetables.cpp:32
uint FirstCarrierFrequency(void) const
Definition: sctetables.h:75
uint FrequencyUnit(void) const
Definition: sctetables.h:72
uint FirstVirtualChannel(void) const
Definition: sctetables.h:339
bool RangeDefined(uint i) const
Definition: sctetables.h:346
uint ChannelsCount(uint i) const
Definition: sctetables.h:348
uint DCMDataLength(void) const
Definition: sctetables.h:343
QString toStringXML(uint indent_level) const
Definition: sctetables.cpp:368
uint SourceID(uint i) const
Definition: sctetables.h:488
uint RecordCount(void) const
Definition: sctetables.h:485
QString toStringXML(uint indent_level) const
Definition: sctetables.cpp:479
uint FirstMapIndex(void) const
Definition: sctetables.h:482
uint VirtualChannelNumber(uint i) const
Definition: sctetables.h:491
static desc_list_t Parse(const unsigned char *data, uint len)
bool IsValid(void) const
uint size(void) const
virtual QString toStringXML(uint indent_level) const
Returns XML representation of string the TS Reader XML format.
uint TransmissionSystem(void) const
Definition: sctetables.h:115
uint InnerCodingMode(void) const
Definition: sctetables.h:138
uint DescriptorsCount(void) const
Definition: sctetables.h:183
static QString toString(void)
Definition: sctetables.cpp:129
@ kTSITUAnnexB
Specified in Annex B of ITU Rec. J.83.
Definition: sctetables.h:106
@ kTSITUQPSK
ITU-R Rec. BO.1211:1995 (QPSK)
Definition: sctetables.h:107
@ kTSDigiCipher
from SCTE 57 – DigiCipher II
Definition: sctetables.h:109
@ kTSITUAnnexA
Specified in Annex A of ITU Rec. J.83.
Definition: sctetables.h:105
QString InnerCodingModeString(void) const
Definition: sctetables.cpp:79
const unsigned char * Descriptors(void) const
Definition: sctetables.h:188
uint ModulationFormat(void) const
Definition: sctetables.h:173
uint DescriptorsLength(void) const
Definition: sctetables.h:187
uint SymbolRate(void) const
Definition: sctetables.h:177
bool SplitBitstreamMode(void) const
Definition: sctetables.h:141
QString ModulationFormatString(void) const
Definition: sctetables.cpp:96
QString TransmissionSystemString(void) const
Definition: sctetables.cpp:65
QString toStringXML(uint indent_level) const
Definition: sctetables.cpp:134
void Parse(void) const
Definition: sctetables.cpp:257
QString LanguageString(void) const
Definition: sctetables.h:291
uint TableSubtype(void) const
Definition: sctetables.h:306
QString toString(void) const override
Definition: sctetables.cpp:262
QString toStringXML(uint indent_level) const override
Definition: sctetables.cpp:269
uint TransmissionMedium(void) const
Definition: sctetables.h:298
const unsigned char * pesdata() const
Definition: pespacket.h:164
uint CRC(void) const
Definition: pespacket.h:189
uint Length() const
Definition: pespacket.h:99
QString XMLValues(uint indent_level) const
Definition: mpegtables.cpp:813
QString toString(void) const override
Definition: sctetables.cpp:200
std::vector< const unsigned char * > m_ptrs
Definition: sctetables.h:259
CarrierDefinitionSubtable CarrierDefinition(uint i) const
Definition: sctetables.h:239
uint FirstIndex(void) const
Definition: sctetables.h:223
uint DescriptorsLength(void) const
Definition: sctetables.h:249
uint TableSubtype(void) const
Definition: sctetables.h:236
uint NumberOfRecords(void) const
Definition: sctetables.h:225
ModulationModeSubtable ModulationMode(uint i) const
Definition: sctetables.h:242
QString toStringXML(uint indent_level) const override
Definition: sctetables.cpp:220
uint TransmissionMedium(void) const
Definition: sctetables.h:227
const unsigned char * Descriptors(void) const
Definition: sctetables.h:251
QString toStringXML(uint indent_level) const override
Definition: sctetables.cpp:558
uint32_t SystemTimeRaw(void) const
Definition: sctetables.h:594
uint GPSUTCOffset(void) const
Definition: sctetables.h:616
QDateTime SystemTimeUTC(void) const
Definition: sctetables.h:605
const unsigned char * Descriptors(void) const
Definition: sctetables.h:620
uint DescriptorsLength(void) const
Definition: sctetables.h:618
QString toString(void) const override
Definition: sctetables.cpp:549
uint ID(void) const
Definition: sctetables.h:539
DefinedChannelsMapSubtable DefinedChannelsMap(void) const
Definition: sctetables.h:541
QString toString(void) const override
Definition: sctetables.cpp:510
uint TableSubtype(void) const
Definition: sctetables.h:536
VirtualChannelMapSubtable VirtualChannelMap(void) const
Definition: sctetables.h:545
QString toStringXML(uint indent_level) const override
Definition: sctetables.cpp:517
InverseChannelMapSubtable InverseChannelMap(void) const
Definition: sctetables.h:549
const unsigned char * Descriptors(void) const
Definition: sctetables.h:557
uint DescriptorsLength(void) const
Definition: sctetables.h:555
QString TableSubtypeString(void) const
Definition: sctetables.cpp:499
uint TransmissionMedium(void) const
Definition: sctetables.h:527
std::vector< const unsigned char * > m_ptrs
Definition: sctetables.h:566
QDateTime ActivationTimeUTC(uint offset=0) const
Definition: sctetables.h:381
uint MMSReference(uint i) const
Definition: sctetables.h:439
uint NumberOfVCRecords(void) const
Definition: sctetables.h:388
uint ProgramNumber(uint i) const
Definition: sctetables.h:437
uint VirtualChannelNumber(uint i) const
Definition: sctetables.h:393
uint VideoStandard(uint i) const
Definition: sctetables.h:455
uint CDSReference(uint i) const
Definition: sctetables.h:435
QString VideoStandardString(uint i) const
Definition: sctetables.cpp:390
uint ApplicationID(uint i) const
Definition: sctetables.h:428
bool Scrambled(uint i) const
Definition: sctetables.h:443
QString TransportTypeString(uint i) const
Definition: sctetables.h:414
uint DescriptorsLength(uint i) const
Definition: sctetables.h:464
uint TransportType(uint i) const
Definition: sctetables.h:413
uint DescriptorsCount(uint i) const
Definition: sctetables.h:461
QString ChannelTypeString(uint i) const
Definition: sctetables.h:424
uint PathSelect(uint i) const
Definition: sctetables.h:404
uint SourceID(uint i) const
Definition: sctetables.h:431
uint ChannelType(uint i) const
Definition: sctetables.h:423
bool ApplicationVirtualChannel(uint i) const
Definition: sctetables.h:396
bool Splice(void) const
Definition: sctetables.h:370
uint ActivationTimeRaw(void) const
Definition: sctetables.h:373
const unsigned char * Descriptors(uint i) const
Definition: sctetables.h:465
QString toStringXML(uint indent_level) const
Definition: sctetables.cpp:403
bool DescriptorsIncluded(void) const
Definition: sctetables.h:367
unsigned int uint
Definition: freesurround.h:24
static const iso6937table * d
QString toString(const QDateTime &raw_dt, uint format)
Returns formatted string representing the time.
Definition: mythdate.cpp:93
@ ISODate
Default UTC.
Definition: mythdate.h:17
QString bool_to_string(bool val)
This is equivalent to QVariant(bool).toString()
Definition: stringutil.h:44
QString indentSpaces(unsigned int level, unsigned int size=4)
Definition: stringutil.h:36