MythTV  master
mpegdescriptors.cpp
Go to the documentation of this file.
1 // -*- Mode: c++ -*-
2 // Copyright (c) 2005, Daniel Thor Kristjansson
3 
4 #include <climits>
5 
6 #include "sctedescriptors.h"
7 #include "atscdescriptors.h"
8 #include "dvbdescriptors.h"
9 #include "mythmiscutil.h" // for xml_indent
10 
13 QMap<QString,QString> RegistrationDescriptor::description_map;
14 
16  const unsigned char *data, uint len)
17 {
19  uint off = 0;
20  while (off < len)
21  {
22  tmp.push_back(data+off);
23  MPEGDescriptor desc(data+off, len-off);
24  if (!desc.IsValid())
25  {
26  tmp.pop_back();
27  break;
28  }
29  off += desc.size();
30  }
31  return tmp;
32 }
33 
35  const unsigned char *data, uint len, int excluded_descid)
36 {
38  uint off = 0;
39  while (off < len)
40  {
41  if ((data+off)[0] != excluded_descid)
42  tmp.push_back(data+off);
43  MPEGDescriptor desc(data+off, len-off);
44  if (!desc.IsValid())
45  {
46  if ((data+off)[0] != excluded_descid)
47  tmp.pop_back();
48  break;
49  }
50  off += desc.size();
51  }
52  return tmp;
53 }
54 
55 #include "mythlogging.h"
56 
58  const unsigned char *data, uint len, int excluded_descid)
59 {
61  uint off = 0;
62  while (off < len)
63  {
64  if ((data+off)[0] == excluded_descid)
65  tmp.push_back(data+off);
66  MPEGDescriptor desc(data+off, len-off);
67  if (!desc.IsValid())
68  {
69  if ((data+off)[0] == excluded_descid)
70  tmp.pop_back();
71  break;
72  }
73  off += desc.size();
74  }
75  return tmp;
76 }
77 
78 const unsigned char *MPEGDescriptor::Find(const desc_list_t &parsed,
79  uint desc_tag)
80 {
81  auto sametag = [desc_tag](const auto *item){ return item[0] == desc_tag; };
82  auto it = std::find_if(parsed.cbegin(), parsed.cend(), sametag);
83  return (it != parsed.cend()) ? *it : nullptr;
84 }
85 
86 const unsigned char *MPEGDescriptor::FindExtension(const desc_list_t &parsed,
87  uint desc_tag)
88 {
89  auto sametag = [desc_tag](const auto *item)
90  { return item[0] == DescriptorID::extension &&
91  item[1] > 1 &&
92  item[2] == desc_tag; };
93  auto it = std::find_if(parsed.cbegin(), parsed.cend(), sametag);
94  return (it != parsed.cend()) ? *it : nullptr;
95 }
96 
98 {
100  auto sametag = [desc_tag](const auto *item){ return item[0] == desc_tag; };
101  std::copy_if(parsed.cbegin(), parsed.cend(), std::back_inserter(tmp), sametag);
102  return tmp;
103 }
104 
105 static uint maxPriority(const QMap<uint,uint> &langPrefs)
106 {
107  uint max_pri = 0;
108  for (uint pref : langPrefs)
109  max_pri = std::max(max_pri, pref);
110  return max_pri;
111 }
112 
113 const unsigned char *MPEGDescriptor::FindBestMatch(
114  const desc_list_t &parsed, uint desc_tag, QMap<uint,uint> &langPrefs)
115 {
116  uint match_idx = 0;
117  uint match_pri = UINT_MAX;
118  int unmatched_idx = -1;
119 
120  size_t i = (desc_tag == DescriptorID::short_event) ? 0 : parsed.size();
121  for (; i < parsed.size(); i++)
122  {
123  if (DescriptorID::short_event == parsed[i][0])
124  {
125  ShortEventDescriptor sed(parsed[i]);
126  if (!sed.IsValid())
127  continue;
128  QMap<uint,uint>::const_iterator it =
129  langPrefs.constFind(sed.CanonicalLanguageKey());
130 
131  if ((it != langPrefs.constEnd()) && (*it < match_pri))
132  {
133  match_idx = i;
134  match_pri = *it;
135  }
136 
137  if (unmatched_idx < 0)
138  unmatched_idx = i;
139  }
140  }
141 
142  if (match_pri != UINT_MAX)
143  return parsed[match_idx];
144 
145  if ((desc_tag == DescriptorID::short_event) && (unmatched_idx >= 0))
146  {
147  ShortEventDescriptor sed(parsed[unmatched_idx]);
148  if (sed.IsValid())
149  {
150  langPrefs[sed.CanonicalLanguageKey()] = maxPriority(langPrefs) + 1;
151  return parsed[unmatched_idx];
152  }
153  }
154 
155  return nullptr;
156 }
157 
159  const desc_list_t &parsed, uint desc_tag, QMap<uint,uint> &langPrefs)
160 {
161  uint match_pri = UINT_MAX;
162  int match_key = 0;
163  int unmatched_idx = -1;
164 
165  size_t i = (desc_tag == DescriptorID::extended_event) ? 0 : parsed.size();
166  for (; i < parsed.size(); i++)
167  {
168  if (DescriptorID::extended_event == parsed[i][0])
169  {
170  ExtendedEventDescriptor eed(parsed[i]);
171  if (!eed.IsValid())
172  continue;
173  QMap<uint,uint>::const_iterator it =
174  langPrefs.constFind(eed.CanonicalLanguageKey());
175 
176  if ((it != langPrefs.constEnd()) && (*it < match_pri))
177  {
178  match_key = eed.LanguageKey();
179  match_pri = *it;
180  }
181 
182  if (unmatched_idx < 0)
183  unmatched_idx = i;
184  }
185  }
186 
187  if ((desc_tag == DescriptorID::extended_event) &&
188  (match_key == 0) && (unmatched_idx >= 0))
189  {
190  ExtendedEventDescriptor eed(parsed[unmatched_idx]);
191  if (eed.IsValid())
192  {
193  langPrefs[eed.CanonicalLanguageKey()] = maxPriority(langPrefs) + 1;
194  match_key = eed.LanguageKey();
195  }
196  }
197 
199  if (match_pri == UINT_MAX)
200  return tmp;
201 
202  for (const auto *j : parsed)
203  {
204  if ((DescriptorID::extended_event == desc_tag) &&
206  {
208  if (eed.IsValid() && (eed.LanguageKey() == match_key))
209  tmp.push_back(j);
210  }
211  }
212 
213  return tmp;
214 }
215 
216 #define EMPTY_STR_16 "","","","", "","","","", "","","","", "","","","",
217 
218 const std::array<const std::string,256> descriptor_tag_strings
219 {
220  /* 0x00 */ "", /* 0x01 */ "",
221  /* 0x02 */ "Video", /* 0x03 */ "Audio",
222  /* 0x04 */ "Hierarchy", /* 0x05 */ "Registration",
223  /* 0x06 */ "Data Stream Alignment", /* 0x07 */ "Target Background Grid",
224  /* 0x08 */ "Video Window", /* 0x09 */ "Conditional Access",
225  /* 0x0A */ "ISO-639 Language", /* 0x0B */ "System Clock",
226  /* 0x0C */ "Multiplex Buffer Utilization", /* 0x0D */ "Copyright",
227  /* 0x0E */ "Maximum Bitrate", /* 0x0F */ "Private Data Indicator",
228 
229  /* 0x10 */ "Smoothing Buffer", /* 0x11 */ "STD",
230  /* 0x12 */ "IBP", /* 0x13 */ "DSM-CC Carousel Identifier",
231  /* 0x14 */ "DSM-CC Association Tag",
232  /* 0x15 */ "DSM-CC Deferred Association Tag",
233  /* 0x16 */ "Reserved(0x16)", /* 0x17 */ "DSM-CC NPT Reference",
234  /* 0x18 */ "DSM-CC NPT Endpoint", /* 0x19 */ "DSM-CC Stream Mode",
235  /* 0x1A */ "DSM-CC Stream Event", /* 0x1B */ "MPEG-4 Video",
236  /* 0x1C */ "MPEG-4 Audio", /* 0x1D */ "IOD",
237  /* 0x1E */ "SL", /* 0x1F */ "FMC",
238 
239  /* 0x20 */ "External ES ID", /* 0x21 */ "Multimpex Code",
240  /* 0x22 */ "FMX buffer Size", /* 0x23 */ "Multiplex Buffer",
241  /* 0x24 */ "Content Labeling", /* 0x25 */ "Metadata Pointer",
242  /* 0x26 */ "Metadata", /* 0x27 */ "Metadata Std",
243  /* 0x28 */ "AVC Video", /* 0x29 */ "IPMP DRM",
244  /* 0x2A */ "AVC Timing & HRD", /* 0x2B */ "AAC Audio",
245  /* 0x2C */ "Flex Mux Timing", /* 0x2D */ "",
246  /* 0x2E */ "", /* 0x2F */ "",
247 
248  /* 0x30-0x3F */ EMPTY_STR_16
249 
250  /* 0x40 */ "Network Name", /* 0x41 */ "Service List",
251  /* 0x42 */ "DVB Stuffing", /* 0x43 */ "Satellite Delivery System",
252  /* 0x44 */ "Cable Delivery System", /* 0x45 */ "VBI Data",
253  /* 0x46 */ "VBI Teletext", /* 0x47 */ "Bouquet Name",
254  /* 0x48 */ "Service", /* 0x49 */ "Country Availability",
255  /* 0x4A */ "Linkage", /* 0x4B */ "NVOD Reference",
256  /* 0x4C */ "DVB Time-shifted Service",/* 0x4D */ "Short Event",
257  /* 0x4E */ "Extended Event", /* 0x4F */ "Time-shifted Event",
258 
259  /* 0x50 */ "Component", /* 0x51 */ "Mosaic",
260  /* 0x52 */ "Stream Identifier",
261  /* 0x53 */ "Conditional Access Identifier",
262  /* 0x54 */ "Content", /* 0x55 */ "Parental Rating",
263  /* 0x56 */ "Teletext", /* 0x57 */ "Telephone",
264  /* 0x58 */ "Local Time Offset", /* 0x59 */ "Subtitling",
265  /* 0x5A */ "Terrestrial Delivery System",
266  /* 0x5B */ "Multilingual Network Name",
267  /* 0x5C */ "Multilingual Bouquet Name",
268  /* 0x5D */ "Multilingual Service Name",
269  /* 0x5E */ "Multilingual Component",
270  /* 0x5F */ "Private Data Specifier",
271 
272  /* 0x60 */ "Service Move", /* 0x61 */ "Short Smoothing Buffer",
273  /* 0x62 */ "Frequency List", /* 0x63 */ "Partial Transport Stream",
274  /* 0x64 */ "Data Broadcast", /* 0x65 */ "Scrambling",
275  /* 0x66 */ "Data Broadcast ID", /* 0x67 */ "Transport Stream",
276  /* 0x68 */ "DSNG", /* 0x69 */ "PDC",
277  /* 0x6A */ "AC-3", /* 0x6B */ "Ancillary Data",
278  /* 0x6C */ "Cell List", /* 0x6D */ "Cell Frequency Link",
279  /* 0x6E */ "Announcement Support", /* 0x6F */ "Application Signalling",
280 
281  /* 0x70 */ "Adaptation Field Data", /* 0x71 */ "Service Identifier",
282  /* 0x72 */ "Service Availability", /* 0x73 */ "Default Authority",
283  /* 0x74 */ "Related Content", /* 0x75 */ "TVA ID",
284  /* 0x76 */ "DVB Content Identifier",/* 0x77 */ "Time Slice FEC Identifier",
285  /* 0x78 */ "ECM Repetition Rate", /* 0x79 */ "DVB-S2 Delivery Identifier",
286  /* 0x7A */ "E-AC-3", /* 0x7B */ "DTS",
287  /* 0x7C */ "AAC", /* 0x7D */ "XAIT location",
288  /* 0x7E */ "FTA content management",/* 0x7F */ "Extension",
289 
290  /* 0x80 */ "ATSC Stuffing", /* 0x81 */ "AC-3 Audio",
291  /* 0x82 */ "SCTE Frame Rate", /* 0x83 */ "SCTE Extended Video",
292  /* 0x84 */ "SCTE Component Name", /* 0x85 */ "ATSC Program Identifier",
293  /* 0x86 */ "Caption Service", /* 0x87 */ "Content Advisory",
294  /* 0x88 */ "ATSC CA", /* 0x89 */ "ATSC Descriptor Tag",
295  /* 0x8A */ "SCTE CUE Identifier", /* 0x8B */ "",
296  /* 0x8C */ "TimeStamp", /* 0x8D */ "",
297  /* 0x8E */ "", /* 0x8F */ "",
298 
299  /* 0x90 */ "SCTE Frequency Spec", /* 0x91 */ "SCTE Modulation Params",
300  /* 0x92 */ "SCTE TSID", /* 0x93 */ "SCTE Revision Detection",
301  /* 0x94 */ "SCTE Two part channel", /* 0x95 */ "SCTE Channel Properties",
302  /* 0x96 */ "SCTE Daylight Savings", /* 0x97 */ "SCTE AFD",
303  /* 0x98 */ "", /* 0x99 */ "",
304  /* 0x9A */ "", /* 0x9B */ "",
305  /* 0x9C */ "", /* 0x9D */ "",
306  /* 0x9E */ "", /* 0x9F */ "",
307 
308  /* 0xA0 */ "Extended Channel Name", /* 0xA1 */ "Service Location",
309  /* 0xA2 */ "ATSC Time-shifted Service",/*0xA3*/"Component Name",
310  /* 0xA4 */ "ATSC Data Service", /* 0xA5 */ "ATSC PID Count",
311  /* 0xA6 */ "ATSC Download",
312  /* 0xA7 */ "ATSC Multiprotocol Encapsulation",
313  /* 0xA8 */ "DCC Departing Request", /* 0xA9 */ "DCC Arriving Request",
314  /* 0xAA */ "ATSC Restrictions Control",/*0xAB*/"ATSC Genre",
315  /* 0xAC */ "SCTE MAC Address List", /* 0xAD */ "ATSC Private Information",
316  /* 0xAE */ "ATSC Compatibility Wrap",/* 0xAF */"ATSC Broadcaster Policy",
317 
318  /* 0xB0 */ "", /* 0xB1 */ "",
319  /* 0xB2 */ "", /* 0xB3 */ "",
320  /* 0xB4 */ "", /* 0xB5 */ "",
321  /* 0xB6 */ "ATSC Content ID", /* 0xB7 */ "",
322  /* 0xB8 */ "", /* 0xB9 */ "",
323  /* 0xBA */ "", /* 0xBB */ "",
324  /* 0xBC */ "", /* 0xBD */ "",
325  /* 0xBE */ "", /* 0xBF */ "",
326 
327  /* 0xC0-0xCF */ EMPTY_STR_16
328  /* 0xD0-0xDF */ EMPTY_STR_16
329  /* 0xE0-0xEF */ EMPTY_STR_16
330  /* 0xF0-0xFF */ EMPTY_STR_16
331 };
332 
333 static void comma_list_append(QString &str, const QString& extra)
334 {
335  if (str.isEmpty())
336  str = extra;
337  else
338  str = str + ", " + extra;
339 }
340 
342 {
343  QString str = QString::fromStdString(descriptor_tag_strings[DescriptorTag()]);
344 
345  switch (DescriptorTag())
346  {
348  comma_list_append(str, "Possibly DVB Logical Channel Descriptor");
349  break;
351  comma_list_append(str, "Possibly Dishnet Rights");
352  break;
354  comma_list_append(str, "Possibly Dishnet MPAA");
355  break;
357  comma_list_append(str, "Possibly Dishnet EIT Name");
358  break;
360  comma_list_append(str, "Possibly Dishnet EIT Description");
361  break;
363  comma_list_append(str, "Possibly Dishnet Properties");
364  break;
366  comma_list_append(str, "Possibly Dishnet V-Chip");
367  break;
368  case PrivateDescriptorID::dish_event_tags: /* 0x96 */
369  comma_list_append(str, "Possibly Dishnet Tag");
370  break;
372  comma_list_append(str, "Possibly DVB Sky/OpenTV Channel List");
373  break;
375  comma_list_append(str, "Possibly Premiere DE Content Order");
376  break;
378  comma_list_append(str, "Possibly Premiere DE Parental Information");
379  break;
381  comma_list_append(str, "Possibly Premiere DE Content Transmission");
382  break;
383  }
384 
385  if (str.isEmpty())
386  str = QString("Unknown(%1)").arg(DescriptorTag());
387 
388  return str;
389 }
390 
391 #define SET_STRING(DESC_NAME) do { \
392  if (IsValid()) { DESC_NAME d(m_data, DescriptorLength()+2); \
393  if (d.IsValid()) str = d.toString(); } } while (false)
394 
395 QString MPEGDescriptor::descrDump(const QString &name) const
396 {
397  QString str;
398  str = QString("%1 Descriptor (0x%2) length(%3).")
399  .arg(name)
400  .arg(DescriptorTag(),2,16,QChar('0'))
401  .arg(DescriptorLength());
402  if (DescriptorLength() > 0)
403  {
404  str.append(" Dumping\n");
405  str.append(hexdump());
406  }
407  return str;
408 }
409 
410 QString MPEGDescriptor::toString(void) const
411 {
412  return toStringPD(0);
413 }
414 
415 QString MPEGDescriptor::toStringPD(uint priv_dsid) const
416 {
417  QString str;
418 
419  if (!IsValid())
420  {
421  str = "Invalid Descriptor";
422  }
424  {
426  }
428  {
430  }
432  {
434  }
436  {
438  }
440  {
442  }
444  {
446  }
448  {
450  }
452  {
454  }
456  {
458  }
460  {
462  }
464  {
466  }
468  {
470  }
472  {
474  }
476  {
478  }
480  {
482  }
483  else if (DescriptorID::service == DescriptorTag())
484  {
486  }
488  {
490  }
491  //else if (DescriptorID::linkage == DescriptorTag())
492  //{
493  // SET_STRING(LinkageDescriptor);
494  //}
496  {
498  }
500  {
502  }
504  {
506  }
508  {
510  }
512  {
514  }
515  //else if (DescriptorID::ancillary_data == DescriptorTag())
516  //{
517  // SET_STRING(AncillaryDataDescriptor);
518  //}
520  {
522  }
524  {
526  }
527  //
528  // Extension descriptors for extension 0x7F
529  else if (DescriptorTag() == DescriptorID::extension &&
531  {
533  }
534  else if (DescriptorTag() == DescriptorID::extension &&
536  {
538  }
539  else if (DescriptorTag() == DescriptorID::extension &&
541  {
543  }
544  else if (DescriptorTag() == DescriptorID::extension &&
546  {
548  }
549  else if (DescriptorTag() == DescriptorID::extension &&
551  {
553  }
554  else if (DescriptorTag() == DescriptorID::extension &&
556  {
558  }
559  else if (DescriptorTag() == DescriptorID::extension &&
561  {
563  }
564  else if (DescriptorTag() == DescriptorID::extension &&
566  {
568  }
569  else if (DescriptorTag() == DescriptorID::extension &&
571  {
573  }
574  else if (DescriptorTag() == DescriptorID::extension &&
576  {
578  }
579  else if (DescriptorTag() == DescriptorID::extension &&
581  {
583  }
584  //
585  // User Defined DVB descriptors, range 0x80-0xFE
586  else if (priv_dsid == PrivateDataSpecifierID::SES &&
588  {
589  str = descrDump("NorDig Content Protection");
590  }
591  else if (priv_dsid == PrivateDataSpecifierID::OTV &&
592  0x80 <= DescriptorTag() && DescriptorTag() < 0xFF)
593  {
594  str = descrDump("OpenTV Private ");
595  }
596  else if (priv_dsid == PrivateDataSpecifierID::BSB1 &&
598  {
600  }
601  else if (priv_dsid == PrivateDataSpecifierID::FSAT &&
603  {
605  }
606  else if (priv_dsid == PrivateDataSpecifierID::FSAT &&
608  {
610  }
611  else if (priv_dsid == PrivateDataSpecifierID::FSAT &&
613  {
615  }
616  else if (priv_dsid == PrivateDataSpecifierID::CASEMA &&
618  {
619  str = descrDump("Video on Demand");
620  }
621  else if (priv_dsid == PrivateDataSpecifierID::CASEMA &&
623  {
624  str = descrDump("Ziggo Package");
625  }
626  else if ((priv_dsid == PrivateDataSpecifierID::EACEM ||
627  priv_dsid == PrivateDataSpecifierID::NORDIG ||
628  priv_dsid == PrivateDataSpecifierID::ITC ) &&
630  {
632  }
633  else if ((priv_dsid == PrivateDataSpecifierID::EACEM ||
634  priv_dsid == PrivateDataSpecifierID::NORDIG ||
635  priv_dsid == PrivateDataSpecifierID::ITC ) &&
637  {
639  }
640  else if (priv_dsid == PrivateDataSpecifierID::CIPLUS &&
642  {
643  str = descrDump("CI Protection");
644  }
645  // All not otherwise specified private descriptors
646  else if (priv_dsid > 0 && DescriptorTag() > 0x80)
647  {
648  str = descrDump("User Defined");
649  }
650  //
651  // POSSIBLY UNSAFE ! -- begin
652  // ATSC/SCTE descriptors, range 0x80-0xFE
654  {
656  }
658  {
660  }
662  {
664  }
666  {
668  }
670  {
672  }
673  else if (priv_dsid == 0 &&
675  {
677  }
678  // POSSIBLY UNSAFE ! -- end
679  else
680  {
682  }
683  return str;
684 }
685 
688 QString MPEGDescriptor::toStringXML(uint level) const
689 {
690  QString indent_0 = xml_indent(level);
691  QString indent_1 = xml_indent(level+1);
692  QString str;
693 
694  str += indent_0 + "<Descriptor>\n";
695  str += indent_1 + QString("<Tag>0x%1</Tag>\n")
696  .arg(DescriptorTag(),2,16,QChar('0'));
697  str += indent_1 + QString("<Description>%1</Description>\n")
698  .arg(DescriptorTagString(),0,16);
699 
700  str += indent_1 + "<Data>";
701  for (uint i = 0; i < DescriptorLength(); i++)
702  {
703  if (((i%8) == 0) && i)
704  str += "\n" + indent_1 + " ";
705  str += QString("0x%1 ").arg(m_data[i+2],2,16,QChar('0'));
706  }
707 
708  str += "\n" + indent_1 + "</Data>\n";
709  str += indent_1 + "<Decoded>" + toString().toHtmlEscaped() + "</Decoded>\n";
710  str += indent_0 + "</Descriptor>";
711 
712  return str;
713 }
714 
715 // Dump the descriptor in the same format as hexdump -C
716 QString MPEGDescriptor::hexdump(void) const
717 {
718  uint i = 0;
719  QString str;
720  QString hex;
721  QString prt;
722  for (i=0; i<DescriptorLength(); i++)
723  {
724  uint ch = m_data[i+2];
725  hex.append(QString(" %1").arg(ch, 2, 16, QChar('0')));
726  prt.append(QString("%1").arg(isprint(ch) ? QChar(ch) : '.'));
727  if (((i+1) % 8) == 0)
728  hex.append(" ");
729  if (((i+1) % 16) == 0)
730  {
731  str.append(QString(" %1 %2 |%3|")
732  .arg(i - (i % 16),3,16,QChar('0'))
733  .arg(hex).arg(prt));
734  hex.clear();
735  prt.clear();
736  if (i < (DescriptorLength() - 1))
737  {
738  str.append("\n");
739  }
740  }
741  }
742  if (!hex.isEmpty())
743  {
744  str.append(QString(" %1 %2 |%3|")
745  .arg(i - (i % 16),3,16,QChar('0'))
746  .arg(hex,-50,' ').arg(prt));
747  }
748  return str;
749 }
750 
752 {
753  QString str = QString("Video Stream Descriptor: frame_rate(%1) MPEG-1(%2)")
754  .arg(FrameRateCode())
755  .arg(MPEG1OnlyFlag());
756  if (!MPEG1OnlyFlag())
757  {
758  str.append(QString(" still_picture(%1) profile(%2)")
761  }
762  return str;
763 }
764 
766 {
767  return QString("Audio Stream Descriptor: free_format(%1) ID(%2) layer(%3) variable_rate(%4)")
768  .arg(FreeFormatFlag())
769  .arg(ID())
770  .arg(Layer())
772 }
773 
775 {
776  QMutexLocker locker(&description_map_lock);
778  return;
779 
780  description_map["AC-3"] = "ATSC audio stream A/52";
781  description_map["AVSV"] = "China A/V Working Group";
782  description_map["BDC0"] = "Broadcast Data Corporation Software Data Service";
783  description_map["BSSD"] = "SMPTE 302M-1998 Audio data as specified in (AES3)";
784  description_map["CAPO"] = "SMPTE 315M-1999 Camera Positioning Information";
785  description_map["CUEI"] = "SCTE 35 2003, Cable Digital Program Insertion Cueing Message";
786  description_map["DDED"] = "LGEUS Digital Delivery with encryption and decryption";
787  description_map["DISH"] = "EchoStar MPEG streams";
788  description_map["DRA1"] = "Chinese EIS SJ/T11368-2006 DRA digital audio";
789  description_map["DTS1"] = "DTS Frame size of 512 bytes";
790  description_map["DTS2"] = "DTS Frame size of 1024 bytes";
791  description_map["DTS3"] = "DTS Frame size of 2048";
792  description_map["DVDF"] = "DVD compatible MPEG2-TS";
793  description_map["ETV1"] = "CableLabs ETV info is present";
794  description_map["GA94"] = "ATSC program ID A/53";
795  description_map["GWKS"] = "GuideWorks EPG info";
796  description_map["HDMV"] = "Blu-Ray A/V for read-only media (H.264 TS)";
797  description_map["HDMX"] = "Matsushita-TS";
798  description_map["KLVA"] = "SMPTE RP 217-2001 MXF KLV packets present";
799  description_map["LU-A"] = "SMPTE RDD-11 HDSDI HD serial/video data";
800  description_map["MTRM"] = "D-VHS compatible MPEG2-TS";
801  description_map["NMR1"] = "Nielsen content identifier";
802  description_map["PAUX"] = "Philips ES containing low-speed data";
803  description_map["PMSF"] = "MPEG-TS stream modified by STB";
804  description_map["PRMC"] = "Philips ES containing remote control data";
805  description_map["SCTE"] = "SCTE 54 2003 Digital Video Service Multiplex and TS for Cable";
806  description_map["SEN1"] = "ATSC Private Information identifies source of stream";
807  description_map["SESF"] = "Blu-Ray A/V for ReWritable media (H.264 TS)";
808  description_map["SPLC"] = "SMPTE Proposed 312M Splice Point compatible TS";
809  description_map["SVMD"] = "SMPTE Proposed Video Metatdata Dictionary for MPEG2-TS";
810  description_map["SZMI"] = "ATSC Private Info from Building B";
811  description_map["TRIV"] = "ATSC Private Info from Triveni Digital";
812  description_map["TSBV"] = "Toshiba self-encoded H.264 TS";
813  description_map["TSHV"] = "Sony self-encoded MPEG-TS and private data";
814  description_map["TSMV"] = "Sony self-encoded MPEG-TS and private data";
815  description_map["TVG1"] = "TV Guide EPG Data";
816  description_map["TVG2"] = "TV Guide EPG Data";
817  description_map["TVG3"] = "TV Guide EPG Data";
818  description_map["ULE1"] = "IETF RFC4326 compatible MPEG2-TS";
819  description_map["VC-1"] = "SMPTE Draft RP 227 VC-1 Bitstream Transport Encodings";
820 
821  for (uint i = 0; i <= 99; i++)
822  {
823  description_map[QString("US%1").arg(i, 2, QLatin1Char('0'))] =
824  "NIMA, Unspecified military application";
825  }
826 
828 }
829 
830 QString RegistrationDescriptor::GetDescription(const QString &fmt)
831 {
833 
834  QString ret;
835  {
836  QMutexLocker locker(&description_map_lock);
837  QMap<QString,QString>::const_iterator it = description_map.constFind(fmt);
838  if (it != description_map.constEnd())
839  ret = *it;
840  }
841 
842  return ret;
843 }
844 
846 {
847  QString fmt = FormatIdentifierString();
848  QString msg = QString("Registration Descriptor: '%1' ").arg(fmt);
849 
850  QString msg2 = GetDescription(fmt);
851  if (msg2.isEmpty())
852  msg2 = "Unknown, see http://www.smpte-ra.org/mpegreg/mpegreg.html";
853 
854  return msg + msg2;
855 }
856 
858 {
859  return QString("Data Stream Alignment Descriptor: alignment_type(%1)")
860  .arg(AlignmentType());
861 }
862 
864 {
865  return QString("Conditional Access: sid(0x%1) pid(0x%2) data_size(%3)")
866  .arg(SystemID(),0,16).arg(PID(),0,16).arg(DataSize());
867 }
868 
870 {
871  return QString("ISO-639 Language: code(%1) canonical(%2) eng(%3)")
874 }
875 
877 {
878  return QString("System Clock Descriptor: extref(%1) accuracy(%2e-%3 ppm)")
880  .arg(ClockAccuracyInteger())
881  .arg(ClockAccuracyExponent());
882 }
883 
885 {
886  return QString("Maximum Bitrate Descriptor: maximum_bitrate(0x%1) %2 Mbits/second")
887  .arg(MaximumBitrate(),6,16,QChar('0'))
888  .arg(MaximumBitrate() * 1.0 * 50 * 8 / 1e6);
889 }
890 
892 {
893  return QString("AVC Video: IDC prof(%1) IDC level(%2) sets(%3%4%5) "
894  "compat(%6) still(%7) 24hr(%8) FramePacking(%9)")
895  .arg(ProfileIDC()).arg(LevelIDC())
896  .arg(static_cast<int>(ConstraintSet0()))
897  .arg(static_cast<int>(ConstraintSet1()))
898  .arg(static_cast<int>(ConstraintSet2()))
899  .arg(AVCCompatible())
900  .arg(static_cast<int>(AVCStill()))
901  .arg(static_cast<int>(AVC24HourPicture()))
902  .arg(static_cast<int>(FramePackingSEINotPresentFlag()));
903 }
904 
906 {
907  QString str = QString("HEVC Video: ProfileSpace(%1) Tier(%2) ProfileIDC(%3)")
908  .arg(ProfileSpace()).arg(Tier()).arg(ProfileIDC());
909  str.append(" Dumping\n");
910  str.append(hexdump());
911  return str;
912 }
ServiceRelocatedDescriptor
Definition: dvbdescriptors.h:1414
MPEGDescriptor::toString
virtual QString toString(void) const
Definition: mpegdescriptors.cpp:410
VideoStreamDescriptor::StillPictureFlag
bool StillPictureFlag(void) const
Definition: mpegdescriptors.h:393
MaximumBitrateDescriptor::toString
QString toString() const override
Definition: mpegdescriptors.cpp:884
PrivateDescriptorID::freesat_region_table
@ freesat_region_table
Definition: mpegdescriptors.h:233
DescriptorID::service_list
@ service_list
Definition: mpegdescriptors.h:73
SystemClockDescriptor::ExternalClockReferenceIndicator
bool ExternalClockReferenceIndicator(void) const
Definition: mpegdescriptors.h:517
ISO639LanguageDescriptor::CanonicalLanguageString
QString CanonicalLanguageString(void) const
Definition: mpegdescriptors.h:501
AudioStreamDescriptor
Definition: mpegdescriptors.h:406
HEVCVideoDescriptor::ProfileSpace
uint ProfileSpace(void) const
Definition: mpegdescriptors.h:616
MPEGDescriptor::DescriptorTag
uint DescriptorTag(void) const
Definition: mpegdescriptors.h:343
MPEGDescriptor::DescriptorLength
uint DescriptorLength(void) const
Definition: mpegdescriptors.h:344
DescriptorID::service
@ service
Definition: mpegdescriptors.h:80
CountryAvailabilityDescriptor
Definition: dvbdescriptors.h:623
PrivateDataSpecifierID::SES
@ SES
Definition: mpegdescriptors.h:269
MPEGDescriptor::descrDump
QString descrDump(const QString &name) const
Definition: mpegdescriptors.cpp:395
SystemClockDescriptor::ClockAccuracyInteger
uint ClockAccuracyInteger(void) const
Definition: mpegdescriptors.h:520
FrequencyListDescriptor
Definition: dvbdescriptors.h:1571
DescriptorID::audio_stream
@ audio_stream
Definition: mpegdescriptors.h:27
FreesatLCNDescriptor
Freesat Logical Channel Number descriptor.
Definition: dvbdescriptors.h:2592
AVCVideoDescriptor::ProfileIDC
uint ProfileIDC(void) const
Definition: mpegdescriptors.h:554
DescriptorID::iso_639_language
@ iso_639_language
Definition: mpegdescriptors.h:34
ExtendedEventDescriptor::CanonicalLanguageKey
int CanonicalLanguageKey(void) const
Definition: dvbdescriptors.h:1540
ExtendedChannelNameDescriptor
Provides the long channel name for the virtual channel containing this descriptor.
Definition: atscdescriptors.h:341
PrivateDataSpecifierID::EACEM
@ EACEM
Definition: mpegdescriptors.h:272
AudioStreamDescriptor::VariableRateAudioIndicator
bool VariableRateAudioIndicator(void) const
Definition: mpegdescriptors.h:420
PrivateDescriptorID::opentv_channel_list
@ opentv_channel_list
Definition: mpegdescriptors.h:254
CaptionServiceDescriptor
Definition: atscdescriptors.h:75
DescriptorID::extension
@ extension
Definition: mpegdescriptors.h:138
PrivateDescriptorID::dish_event_vchip
@ dish_event_vchip
Definition: mpegdescriptors.h:219
AudioStreamDescriptor::Layer
uint Layer(void) const
Definition: mpegdescriptors.h:418
PrivateDescriptorID::premiere_content_transmission
@ premiere_content_transmission
Definition: mpegdescriptors.h:243
PrivateDescriptorID::dvb_simulcast_channel_descriptor
@ dvb_simulcast_channel_descriptor
Definition: mpegdescriptors.h:207
MPEGDescriptor::hexdump
QString hexdump(void) const
Definition: mpegdescriptors.cpp:716
ISO639LanguageDescriptor
Definition: mpegdescriptors.h:487
PrivateDescriptorID::premiere_content_order
@ premiere_content_order
Definition: mpegdescriptors.h:241
DescriptorID::s2x_satellite_delivery_system
@ s2x_satellite_delivery_system
Definition: mpegdescriptors.h:157
ExtendedEventDescriptor::LanguageKey
int LanguageKey(void) const
Definition: dvbdescriptors.h:1536
DescriptorID::target_region
@ target_region
Definition: mpegdescriptors.h:149
AVCVideoDescriptor::FramePackingSEINotPresentFlag
bool FramePackingSEINotPresentFlag(void) const
Definition: mpegdescriptors.h:569
DescriptorID::data_stream_alignment
@ data_stream_alignment
Definition: mpegdescriptors.h:30
PrivateDataSpecifierID::OTV
@ OTV
Definition: mpegdescriptors.h:280
RegistrationDescriptor::toString
QString toString() const override
Definition: mpegdescriptors.cpp:845
DescriptorID::network_change_notify
@ network_change_notify
Definition: mpegdescriptors.h:147
DescriptorID::short_event
@ short_event
Definition: mpegdescriptors.h:85
arg
arg(title).arg(filename).arg(doDelete))
MaximumBitrateDescriptor::MaximumBitrate
uint MaximumBitrate(void) const
Definition: mpegdescriptors.h:539
PrivateDescriptorID::ci_protection_descriptor
@ ci_protection_descriptor
Definition: mpegdescriptors.h:257
CableDeliverySystemDescriptor
Definition: dvbdescriptors.h:717
SystemClockDescriptor::toString
QString toString() const override
Definition: mpegdescriptors.cpp:876
SHDeliverySystemDescriptor
Definition: dvbdescriptors.h:1222
DescriptorID::caption_service
@ caption_service
Definition: mpegdescriptors.h:163
DescriptorID::stream_identifier
@ stream_identifier
Definition: mpegdescriptors.h:91
ScramblingDescriptor
Definition: dvbdescriptors.h:1889
ISO639LanguageDescriptor::toString
QString toString() const override
Definition: mpegdescriptors.cpp:869
DescriptorID::sh_delivery_system
@ sh_delivery_system
Definition: mpegdescriptors.h:145
CueIdentifierDescriptor
This descriptor is used to identify streams with SpliceInformationTable data in them.
Definition: sctedescriptors.h:157
DVBLogicalChannelDescriptor
DVB Logical Channel Descriptor.
Definition: dvbdescriptors.h:2534
MaximumBitrateDescriptor
Definition: mpegdescriptors.h:530
RegistrationDescriptor
Definition: mpegdescriptors.h:428
ShortEventDescriptor::CanonicalLanguageKey
int CanonicalLanguageKey(void) const
Definition: dvbdescriptors.h:2147
DescriptorID::frequency_list
@ frequency_list
Definition: mpegdescriptors.h:108
AC3AudioStreamDescriptor
Definition: atscdescriptors.h:207
PrivateDataSpecifierID::ITC
@ ITC
Definition: mpegdescriptors.h:277
DescriptorID::teletext
@ teletext
Definition: mpegdescriptors.h:95
DescriptorID::target_region_name
@ target_region_name
Definition: mpegdescriptors.h:150
ConditionalAccessDescriptor::DataSize
uint DataSize(void) const
Definition: mpegdescriptors.h:481
iso639_key_toName
QString iso639_key_toName(int iso639_2)
Converts a canonical key to language name in English.
Definition: iso639.cpp:109
descriptor_tag_strings
const std::array< const std::string, 256 > descriptor_tag_strings
Definition: mpegdescriptors.cpp:219
SystemClockDescriptor::ClockAccuracyExponent
uint ClockAccuracyExponent(void) const
Definition: mpegdescriptors.h:522
VideoStreamDescriptor::toString
QString toString() const override
Definition: mpegdescriptors.cpp:751
BouquetNameDescriptor
Definition: dvbdescriptors.h:270
RegistrationDescriptor::FormatIdentifierString
QString FormatIdentifierString(void) const
Definition: mpegdescriptors.h:441
TerrestrialDeliverySystemDescriptor
Definition: dvbdescriptors.h:905
atscdescriptors.h
DescriptorID::cable_delivery_system
@ cable_delivery_system
Definition: mpegdescriptors.h:76
MPEGDescriptor::ParseAndExclude
static desc_list_t ParseAndExclude(const unsigned char *data, uint len, int excluded_descid)
Definition: mpegdescriptors.cpp:34
PrivateDescriptorID::dish_event_tags
@ dish_event_tags
Definition: mpegdescriptors.h:220
DescriptorID::t2_delivery_system
@ t2_delivery_system
Definition: mpegdescriptors.h:144
tmp
static guint32 * tmp
Definition: goom_core.cpp:31
VideoStreamDescriptor::FrameRateCode
uint FrameRateCode(void) const
Definition: mpegdescriptors.h:387
PrivateDataSpecifierID::BSB1
@ BSB1
Definition: mpegdescriptors.h:270
ShortEventDescriptor
Definition: dvbdescriptors.h:2134
DescriptorID::avc_video
@ avc_video
Definition: mpegdescriptors.h:64
DescriptorID::scte_cue_identifier
@ scte_cue_identifier
Definition: mpegdescriptors.h:172
DescriptorID::extended_event
@ extended_event
Definition: mpegdescriptors.h:86
MPEGDescriptor::FindExtension
static const unsigned char * FindExtension(const desc_list_t &parsed, uint desc_tag)
Definition: mpegdescriptors.cpp:86
PrivateDataSpecifierID::CASEMA
@ CASEMA
Definition: mpegdescriptors.h:271
DescriptorID::terrestrial_delivery_system
@ terrestrial_delivery_system
Definition: mpegdescriptors.h:99
VideoStreamDescriptor
Definition: mpegdescriptors.h:377
MPEGDescriptor::IsValid
bool IsValid(void) const
Definition: mpegdescriptors.h:340
DescriptorID::maximum_bitrate
@ maximum_bitrate
Definition: mpegdescriptors.h:38
sctedescriptors.h
mythlogging.h
HEVCVideoDescriptor::Tier
bool Tier(void) const
Definition: mpegdescriptors.h:618
MPEGDescriptor::toStringXML
virtual QString toStringXML(uint indent_level) const
Returns XML representation of string the TS Reader XML format.
Definition: mpegdescriptors.cpp:688
PrivateDescriptorID::dish_event_mpaa
@ dish_event_mpaa
Definition: mpegdescriptors.h:215
maxPriority
static uint maxPriority(const QMap< uint, uint > &langPrefs)
Definition: mpegdescriptors.cpp:105
MPEGDescriptor::Parse
static desc_list_t Parse(const unsigned char *data, uint len)
Definition: mpegdescriptors.cpp:15
S2XSatelliteDeliverySystemDescriptor
Definition: dvbdescriptors.h:1486
ConditionalAccessDescriptor::SystemID
uint SystemID(void) const
Definition: mpegdescriptors.h:479
MPEGDescriptor
Definition: mpegdescriptors.h:301
VideoStreamDescriptor::MPEG1OnlyFlag
bool MPEG1OnlyFlag(void) const
Definition: mpegdescriptors.h:389
PrivateDataSpecifierID::FSAT
@ FSAT
Definition: mpegdescriptors.h:279
TargetRegionDescriptor
Definition: dvbdescriptors.h:1341
DescriptorID::default_authority
@ default_authority
Definition: mpegdescriptors.h:126
MPEGDescriptor::m_data
const unsigned char * m_data
Definition: mpegdescriptors.h:368
ConditionalAccessDescriptor
Definition: mpegdescriptors.h:474
desc_list_t
std::vector< const unsigned char * > desc_list_t
Definition: mpegdescriptors.h:18
MessageDescriptor
Definition: dvbdescriptors.h:1307
MPEGDescriptor::ParseOnlyInclude
static desc_list_t ParseOnlyInclude(const unsigned char *data, uint len, int excluded_descid)
Definition: mpegdescriptors.cpp:57
ExtendedEventDescriptor
Definition: dvbdescriptors.h:1523
AudioStreamDescriptor::ID
bool ID(void) const
Definition: mpegdescriptors.h:416
DataStreamAlignmentDescriptor::toString
QString toString() const override
Definition: mpegdescriptors.cpp:857
PrivateDescriptorID::dish_event_description
@ dish_event_description
Definition: mpegdescriptors.h:217
AVCVideoDescriptor::AVC24HourPicture
bool AVC24HourPicture(void) const
Definition: mpegdescriptors.h:568
T2DeliverySystemDescriptor
Definition: dvbdescriptors.h:1090
AudioStreamDescriptor::FreeFormatFlag
bool FreeFormatFlag(void) const
Definition: mpegdescriptors.h:414
SkyLCNDescriptor
Sky Logical Channel Number descriptor.
Definition: dvbdescriptors.h:2750
SET_STRING
#define SET_STRING(DESC_NAME)
Definition: mpegdescriptors.cpp:391
DescriptorID::scrambling
@ scrambling
Definition: mpegdescriptors.h:111
DVBSimulcastChannelDescriptor
DVB HD Simulcast Logical Channel Descriptor.
Definition: dvbdescriptors.h:2562
AVCVideoDescriptor::ConstraintSet2
bool ConstraintSet2(void) const
Definition: mpegdescriptors.h:560
DescriptorID::network_name
@ network_name
Definition: mpegdescriptors.h:72
DescriptorID::scte_revision_detection
@ scte_revision_detection
Definition: mpegdescriptors.h:176
MPEGDescriptor::DescriptorTagExtension
uint DescriptorTagExtension(void) const
Definition: mpegdescriptors.h:345
DescriptorID::extended_channel_name
@ extended_channel_name
Definition: mpegdescriptors.h:179
MPEGDescriptor::toStringPD
virtual QString toStringPD(uint priv_dsid) const
Definition: mpegdescriptors.cpp:415
PrivateDescriptorID::dvb_logical_channel_descriptor
@ dvb_logical_channel_descriptor
Definition: mpegdescriptors.h:206
SupplementaryAudioDescriptor
Definition: dvbdescriptors.h:1247
uint
unsigned int uint
Definition: compat.h:141
comma_list_append
static void comma_list_append(QString &str, const QString &extra)
Definition: mpegdescriptors.cpp:333
HEVCVideoDescriptor
ISO 13818-1:2013/FDAM 3 (E) page 7.
Definition: mpegdescriptors.h:606
DescriptorID::video_stream
@ video_stream
Definition: mpegdescriptors.h:26
MPEGDescriptor::FindAll
static desc_list_t FindAll(const desc_list_t &parsed, uint desc_tag)
Definition: mpegdescriptors.cpp:97
PrivateDescriptorID::freesat_lcn_table
@ freesat_lcn_table
Definition: mpegdescriptors.h:232
FreesatCallsignDescriptor
Freesat Channel Callsign descriptor.
Definition: dvbdescriptors.h:2712
ISO639LanguageDescriptor::LanguageString
QString LanguageString(void) const
Definition: mpegdescriptors.h:497
PrivateDescriptorID::sky_lcn_table
@ sky_lcn_table
Definition: mpegdescriptors.h:229
AVCVideoDescriptor::AVCStill
bool AVCStill(void) const
Definition: mpegdescriptors.h:566
DescriptorID::ac3_audio_stream
@ ac3_audio_stream
Definition: mpegdescriptors.h:161
MPEGDescriptor::size
uint size(void) const
Definition: mpegdescriptors.h:341
DescriptorID::c2_delivery_system
@ c2_delivery_system
Definition: mpegdescriptors.h:153
MPEGDescriptor::DescriptorTagString
QString DescriptorTagString(void) const
Definition: mpegdescriptors.cpp:341
SystemClockDescriptor
Definition: mpegdescriptors.h:509
mythmiscutil.h
ISO639LanguageDescriptor::CanonicalLanguageKey
int CanonicalLanguageKey(void) const
Definition: mpegdescriptors.h:499
DescriptorID::image_icon
@ image_icon
Definition: mpegdescriptors.h:143
RegistrationDescriptor::InitializeDescriptionMap
static void InitializeDescriptionMap(void)
Definition: mpegdescriptors.cpp:774
DescriptorID::registration
@ registration
Definition: mpegdescriptors.h:29
NetworkChangeNotifyDescriptor
Definition: dvbdescriptors.h:1286
MPEGDescriptor::FindBestMatch
static const unsigned char * FindBestMatch(const desc_list_t &parsed, uint desc_tag, QMap< uint, uint > &langPref)
Definition: mpegdescriptors.cpp:113
DataStreamAlignmentDescriptor::AlignmentType
uint AlignmentType(void) const
Definition: mpegdescriptors.h:468
PrivateDescriptorID::freesat_callsign
@ freesat_callsign
Definition: mpegdescriptors.h:238
PrivateDescriptorID::casema_video_on_demand
@ casema_video_on_demand
Definition: mpegdescriptors.h:210
StreamIdentifierDescriptor
This is used to label streams so the can be treated differently, for instance each stream may get it'...
Definition: dvbdescriptors.h:2202
DescriptorID::component_name
@ component_name
Definition: mpegdescriptors.h:182
ImageIconDescriptor
Definition: dvbdescriptors.h:1047
ServiceDescriptor
Definition: dvbdescriptors.h:2013
RevisionDetectionDescriptor
Definition: sctedescriptors.h:258
PrivateDescriptorID::ziggo_package_descriptor
@ ziggo_package_descriptor
Definition: mpegdescriptors.h:211
MPEGDescriptor::FindBestMatches
static desc_list_t FindBestMatches(const desc_list_t &parsed, uint desc_tag, QMap< uint, uint > &langPref)
Definition: mpegdescriptors.cpp:158
xml_indent
QString xml_indent(uint level)
Definition: mythmiscutil.cpp:1007
HEVCVideoDescriptor::toString
QString toString() const override
Definition: mpegdescriptors.cpp:905
DescriptorID::hevc_video
@ hevc_video
Definition: mpegdescriptors.h:69
AVCVideoDescriptor
ISO 13818-1:2000/Amd.3:2004 page 11.
Definition: mpegdescriptors.h:546
PrivateDescriptorID::dish_event_name
@ dish_event_name
Definition: mpegdescriptors.h:216
DescriptorID::country_availability
@ country_availability
Definition: mpegdescriptors.h:81
SatelliteDeliverySystemDescriptor
Definition: dvbdescriptors.h:796
FreesatRegionDescriptor
Freesat Region descriptor.
Definition: dvbdescriptors.h:2657
DescriptorID::conditional_access
@ conditional_access
Definition: mpegdescriptors.h:33
AVCVideoDescriptor::AVCCompatible
uint AVCCompatible(void) const
Definition: mpegdescriptors.h:562
AVCVideoDescriptor::ConstraintSet1
bool ConstraintSet1(void) const
Definition: mpegdescriptors.h:558
RegistrationDescriptor::description_map_initialized
static bool description_map_initialized
Definition: mpegdescriptors.h:454
DescriptorID::message
@ message
Definition: mpegdescriptors.h:148
RegistrationDescriptor::GetDescription
static QString GetDescription(const QString &fmt)
Definition: mpegdescriptors.cpp:830
TargetRegionNameDescriptor
Definition: dvbdescriptors.h:1374
ConditionalAccessDescriptor::toString
QString toString() const override
Definition: mpegdescriptors.cpp:863
PrivateDescriptorID::dish_event_rights
@ dish_event_rights
Definition: mpegdescriptors.h:214
DefaultAuthorityDescriptor
Definition: dvbdescriptors.h:2889
AudioStreamDescriptor::toString
QString toString() const override
Definition: mpegdescriptors.cpp:765
DataStreamAlignmentDescriptor
Definition: mpegdescriptors.h:460
AdaptationFieldDataDescriptor
Definition: dvbdescriptors.h:207
DescriptorID::bouquet_name
@ bouquet_name
Definition: mpegdescriptors.h:79
HEVCVideoDescriptor::ProfileIDC
uint ProfileIDC(void) const
Definition: mpegdescriptors.h:620
RegistrationDescriptor::description_map_lock
static QMutex description_map_lock
Definition: mpegdescriptors.h:453
AVCVideoDescriptor::toString
QString toString() const override
Definition: mpegdescriptors.cpp:891
MPEGDescriptor::Find
static const unsigned char * Find(const desc_list_t &parsed, uint desc_tag)
Definition: mpegdescriptors.cpp:78
PrivateDescriptorID::premiere_parental_information
@ premiere_parental_information
Definition: mpegdescriptors.h:242
DescriptorID::adaptation_field_data
@ adaptation_field_data
Definition: mpegdescriptors.h:123
PrivateDescriptorID::nordig_content_protection
@ nordig_content_protection
Definition: mpegdescriptors.h:223
EMPTY_STR_16
#define EMPTY_STR_16
Definition: mpegdescriptors.cpp:216
VideoStreamDescriptor::ProfileAndLevelIndication
uint ProfileAndLevelIndication(void) const
Definition: mpegdescriptors.h:395
PrivateDataSpecifierID::NORDIG
@ NORDIG
Definition: mpegdescriptors.h:273
ComponentNameDescriptor
Definition: atscdescriptors.h:187
DescriptorID::satellite_delivery_system
@ satellite_delivery_system
Definition: mpegdescriptors.h:75
ServiceListDescriptor
Definition: dvbdescriptors.h:2081
RegistrationDescriptor::description_map
static QMap< QString, QString > description_map
Definition: mpegdescriptors.h:455
TeletextDescriptor
Definition: dvbdescriptors.h:2306
DescriptorID::system_clock
@ system_clock
Definition: mpegdescriptors.h:35
DescriptorID::service_relocated
@ service_relocated
Definition: mpegdescriptors.h:151
AVCVideoDescriptor::ConstraintSet0
bool ConstraintSet0(void) const
Definition: mpegdescriptors.h:556
DescriptorID::supplementary_audio
@ supplementary_audio
Definition: mpegdescriptors.h:146
C2DeliverySystemDescriptor
Definition: dvbdescriptors.h:1442
AVCVideoDescriptor::LevelIDC
uint LevelIDC(void) const
Definition: mpegdescriptors.h:564
ConditionalAccessDescriptor::PID
uint PID(void) const
Definition: mpegdescriptors.h:480
PrivateDescriptorID::dish_event_properties
@ dish_event_properties
Definition: mpegdescriptors.h:218
dvbdescriptors.h
PrivateDataSpecifierID::CIPLUS
@ CIPLUS
Definition: mpegdescriptors.h:274
NetworkNameDescriptor
Definition: dvbdescriptors.h:69