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");
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 tag(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  }
484  {
486  }
487  else if (DescriptorID::service == DescriptorTag())
488  {
490  }
492  {
494  }
495  //else if (DescriptorID::linkage == DescriptorTag())
496  //{
497  // SET_STRING(LinkageDescriptor);
498  //}
500  {
502  }
504  {
506  }
508  {
510  }
512  {
514  }
516  {
518  }
520  {
522  }
523  else if (DescriptorID::ac3 == DescriptorTag())
524  {
526  }
527  //else if (DescriptorID::ancillary_data == DescriptorTag())
528  //{
529  // SET_STRING(AncillaryDataDescriptor);
530  //}
532  {
534  }
536  {
538  }
540  {
542  }
543  //
544  // Extension descriptors for extension 0x7F
545  else if (DescriptorTag() == DescriptorID::extension &&
547  {
549  }
550  else if (DescriptorTag() == DescriptorID::extension &&
552  {
554  }
555  else if (DescriptorTag() == DescriptorID::extension &&
557  {
559  }
560  else if (DescriptorTag() == DescriptorID::extension &&
562  {
564  }
565  else if (DescriptorTag() == DescriptorID::extension &&
567  {
569  }
570  else if (DescriptorTag() == DescriptorID::extension &&
572  {
574  }
575  else if (DescriptorTag() == DescriptorID::extension &&
577  {
579  }
580  else if (DescriptorTag() == DescriptorID::extension &&
582  {
584  }
585  else if (DescriptorTag() == DescriptorID::extension &&
587  {
589  }
590  else if (DescriptorTag() == DescriptorID::extension &&
592  {
594  }
595  else if (DescriptorTag() == DescriptorID::extension &&
597  {
599  }
600  //
601  // User Defined DVB descriptors, range 0x80-0xFE
602  else if (priv_dsid == PrivateDataSpecifierID::SES &&
604  {
605  str = descrDump("NorDig Content Protection");
606  }
607  else if (priv_dsid == PrivateDataSpecifierID::OTV &&
608  0x80 <= DescriptorTag() && DescriptorTag() < 0xFF)
609  {
610  str = descrDump("OpenTV Private ");
611  }
612  else if (priv_dsid == PrivateDataSpecifierID::BSB1 &&
614  {
616  }
617  else if (priv_dsid == PrivateDataSpecifierID::FSAT &&
619  {
621  }
622  else if (priv_dsid == PrivateDataSpecifierID::FSAT &&
624  {
626  }
627  else if (priv_dsid == PrivateDataSpecifierID::FSAT &&
629  {
631  }
632  else if (priv_dsid == PrivateDataSpecifierID::CASEMA &&
634  {
635  str = descrDump("Video on Demand");
636  }
637  else if (priv_dsid == PrivateDataSpecifierID::CASEMA &&
639  {
640  str = descrDump("Ziggo Package");
641  }
642  else if ((priv_dsid == PrivateDataSpecifierID::EACEM ||
643  priv_dsid == PrivateDataSpecifierID::NORDIG ||
644  priv_dsid == PrivateDataSpecifierID::ITC ) &&
646  {
648  }
649  else if ((priv_dsid == PrivateDataSpecifierID::EACEM ||
650  priv_dsid == PrivateDataSpecifierID::NORDIG ||
651  priv_dsid == PrivateDataSpecifierID::ITC ) &&
653  {
655  }
656  else if (priv_dsid == PrivateDataSpecifierID::CIPLUS &&
658  {
659  str = descrDump("CI Protection");
660  }
661  // All not otherwise specified private descriptors
662  else if (priv_dsid > 0 && DescriptorTag() > 0x80)
663  {
664  str = descrDump("User Defined");
665  }
666  //
667  // POSSIBLY UNSAFE ! -- begin
668  // ATSC/SCTE descriptors, range 0x80-0xFE
670  {
672  }
674  {
676  }
678  {
680  }
682  {
684  }
686  {
688  }
689  else if (priv_dsid == 0 &&
691  {
693  }
694  // POSSIBLY UNSAFE ! -- end
695  else
696  {
698  }
699  return str;
700 }
701 
704 QString MPEGDescriptor::toStringXML(uint level) const
705 {
706  QString indent_0 = xml_indent(level);
707  QString indent_1 = xml_indent(level+1);
708  QString str;
709 
710  str += indent_0 + "<Descriptor>\n";
711  str += indent_1 + QString("<Tag>0x%1</Tag>\n")
712  .arg(DescriptorTag(),2,16,QChar('0'));
713  str += indent_1 + QString("<Description>%1</Description>\n")
714  .arg(DescriptorTagString());
715 
716  str += indent_1 + "<Data>";
717  for (uint i = 0; i < DescriptorLength(); i++)
718  {
719  if (((i%8) == 0) && i)
720  str += "\n" + indent_1 + " ";
721  str += QString("0x%1 ").arg(m_data[i+2],2,16,QChar('0'));
722  }
723 
724  str += "\n" + indent_1 + "</Data>\n";
725  str += indent_1 + "<Decoded>" + toString().toHtmlEscaped() + "</Decoded>\n";
726  str += indent_0 + "</Descriptor>";
727 
728  return str;
729 }
730 
731 // Dump the descriptor in the same format as hexdump -C
732 QString MPEGDescriptor::hexdump(void) const
733 {
734  uint i = 0;
735  QString str;
736  QString hex;
737  QString prt;
738  for (i=0; i<DescriptorLength(); i++)
739  {
740  uint ch = m_data[i+2];
741  hex.append(QString(" %1").arg(ch, 2, 16, QChar('0')));
742  prt.append(QString("%1").arg(isprint(ch) ? QChar(ch) : '.'));
743  if (((i+1) % 8) == 0)
744  hex.append(" ");
745  if (((i+1) % 16) == 0)
746  {
747  str.append(QString(" %1 %2 |%3|")
748  .arg(i - (i % 16),3,16,QChar('0'))
749  .arg(hex, prt));
750  hex.clear();
751  prt.clear();
752  if (i < (DescriptorLength() - 1))
753  {
754  str.append("\n");
755  }
756  }
757  }
758  if (!hex.isEmpty())
759  {
760  str.append(QString(" %1 %2 |%3|")
761  .arg(i - (i % 16),3,16,QChar('0'))
762  .arg(hex,-50,' ').arg(prt));
763  }
764  return str;
765 }
766 
768 {
769  QString str = QString("Video Stream Descriptor: frame_rate(%1) MPEG-1(%2)")
770  .arg(FrameRateCode())
771  .arg(MPEG1OnlyFlag());
772  if (!MPEG1OnlyFlag())
773  {
774  str.append(QString(" still_picture(%1) profile(%2)")
775  .arg(StillPictureFlag())
776  .arg(ProfileAndLevelIndication()));
777  }
778  return str;
779 }
780 
782 {
783  return QString("Audio Stream Descriptor: free_format(%1) ID(%2) layer(%3) variable_rate(%4)")
784  .arg(FreeFormatFlag())
785  .arg(ID())
786  .arg(Layer())
788 }
789 
791 {
792  QMutexLocker locker(&description_map_lock);
794  return;
795 
796  description_map["AC-3"] = "ATSC audio stream A/52";
797  description_map["AVSV"] = "China A/V Working Group";
798  description_map["BDC0"] = "Broadcast Data Corporation Software Data Service";
799  description_map["BSSD"] = "SMPTE 302M-1998 Audio data as specified in (AES3)";
800  description_map["CAPO"] = "SMPTE 315M-1999 Camera Positioning Information";
801  description_map["CUEI"] = "SCTE 35 2003, Cable Digital Program Insertion Cueing Message";
802  description_map["DDED"] = "LGEUS Digital Delivery with encryption and decryption";
803  description_map["DISH"] = "EchoStar MPEG streams";
804  description_map["DRA1"] = "Chinese EIS SJ/T11368-2006 DRA digital audio";
805  description_map["DTS1"] = "DTS Frame size of 512 bytes";
806  description_map["DTS2"] = "DTS Frame size of 1024 bytes";
807  description_map["DTS3"] = "DTS Frame size of 2048";
808  description_map["DVDF"] = "DVD compatible MPEG2-TS";
809  description_map["ETV1"] = "CableLabs ETV info is present";
810  description_map["GA94"] = "ATSC program ID A/53";
811  description_map["GWKS"] = "GuideWorks EPG info";
812  description_map["HDMV"] = "Blu-Ray A/V for read-only media (H.264 TS)";
813  description_map["HDMX"] = "Matsushita-TS";
814  description_map["KLVA"] = "SMPTE RP 217-2001 MXF KLV packets present";
815  description_map["LU-A"] = "SMPTE RDD-11 HDSDI HD serial/video data";
816  description_map["MTRM"] = "D-VHS compatible MPEG2-TS";
817  description_map["NMR1"] = "Nielsen content identifier";
818  description_map["PAUX"] = "Philips ES containing low-speed data";
819  description_map["PMSF"] = "MPEG-TS stream modified by STB";
820  description_map["PRMC"] = "Philips ES containing remote control data";
821  description_map["SCTE"] = "SCTE 54 2003 Digital Video Service Multiplex and TS for Cable";
822  description_map["SEN1"] = "ATSC Private Information identifies source of stream";
823  description_map["SESF"] = "Blu-Ray A/V for ReWritable media (H.264 TS)";
824  description_map["SPLC"] = "SMPTE Proposed 312M Splice Point compatible TS";
825  description_map["SVMD"] = "SMPTE Proposed Video Metatdata Dictionary for MPEG2-TS";
826  description_map["SZMI"] = "ATSC Private Info from Building B";
827  description_map["TRIV"] = "ATSC Private Info from Triveni Digital";
828  description_map["TSBV"] = "Toshiba self-encoded H.264 TS";
829  description_map["TSHV"] = "Sony self-encoded MPEG-TS and private data";
830  description_map["TSMV"] = "Sony self-encoded MPEG-TS and private data";
831  description_map["TVG1"] = "TV Guide EPG Data";
832  description_map["TVG2"] = "TV Guide EPG Data";
833  description_map["TVG3"] = "TV Guide EPG Data";
834  description_map["ULE1"] = "IETF RFC4326 compatible MPEG2-TS";
835  description_map["VC-1"] = "SMPTE Draft RP 227 VC-1 Bitstream Transport Encodings";
836 
837  for (uint i = 0; i <= 99; i++)
838  {
839  description_map[QString("US%1").arg(i, 2, QLatin1Char('0'))] =
840  "NIMA, Unspecified military application";
841  }
842 
844 }
845 
846 QString RegistrationDescriptor::GetDescription(const QString &fmt)
847 {
849 
850  QString ret;
851  {
852  QMutexLocker locker(&description_map_lock);
853  QMap<QString,QString>::const_iterator it = description_map.constFind(fmt);
854  if (it != description_map.constEnd())
855  ret = *it;
856  }
857 
858  return ret;
859 }
860 
862 {
863  QString fmt = FormatIdentifierString();
864  QString msg = QString("Registration Descriptor: '%1' ").arg(fmt);
865 
866  QString msg2 = GetDescription(fmt);
867  if (msg2.isEmpty())
868  msg2 = "Unknown, see http://www.smpte-ra.org/mpegreg/mpegreg.html";
869 
870  return msg + msg2;
871 }
872 
874 {
875  return QString("Data Stream Alignment Descriptor: alignment_type(%1)")
876  .arg(AlignmentType());
877 }
878 
880 {
881  return QString("Conditional Access: sid(0x%1) pid(0x%2) data_size(%3)")
882  .arg(SystemID(),0,16).arg(PID(),0,16).arg(DataSize());
883 }
884 
886 {
887  return QString("ISO-639 Language: code(%1) canonical(%2) eng(%3)")
890 }
891 
893 {
894  return QString("System Clock Descriptor: extref(%1) accuracy(%2e-%3 ppm)")
896  .arg(ClockAccuracyInteger())
897  .arg(ClockAccuracyExponent());
898 }
899 
901 {
902  return QString("Maximum Bitrate Descriptor: maximum_bitrate(0x%1) %2 Mbit/s")
903  .arg(MaximumBitrate(),6,16,QChar('0'))
904  .arg(MaximumBitrate() * 1.0 * 50 * 8 / 1e6);
905 }
906 
908 {
909  QString str = QString("Smoothing Buffer Descriptor ");
910  str += QString("tag(0x%1) ").arg(DescriptorTag(),2,16,QChar('0'));
911  str += QString("length(%1) ").arg(DescriptorLength());
912 
913  str +=
914  QString("sb_leak_rate(0x%1) %2 kB/s ")
915  .arg(SBLeakRate(),6,16,QChar('0'))
916  .arg(SBLeakRate() * 400.0 / (8 * 1e3)) +
917  QString("sb_size(0x%1) %2 kB")
918  .arg(SBSize(),6,16,QChar('0'))
919  .arg(SBSize() / 1e3);
920  return str;
921 }
922 
924 {
925  return QString("AVC Video: IDC prof(%1) IDC level(%2) sets(%3%4%5) "
926  "compat(%6) still(%7) 24hr(%8) FramePacking(%9)")
927  .arg(ProfileIDC()).arg(LevelIDC())
928  .arg(static_cast<int>(ConstraintSet0()))
929  .arg(static_cast<int>(ConstraintSet1()))
930  .arg(static_cast<int>(ConstraintSet2()))
931  .arg(AVCCompatible())
932  .arg(static_cast<int>(AVCStill()))
933  .arg(static_cast<int>(AVC24HourPicture()))
934  .arg(static_cast<int>(FramePackingSEINotPresentFlag()));
935 }
936 
938 {
939  QString str = QString("HEVC Video: ProfileSpace(%1) Tier(%2) ProfileIDC(%3)")
940  .arg(ProfileSpace()).arg(Tier()).arg(ProfileIDC());
941  str.append(" Dumping\n");
942  str.append(hexdump());
943  return str;
944 }
ServiceRelocatedDescriptor
Definition: dvbdescriptors.h:1440
MPEGDescriptor::toString
virtual QString toString(void) const
Definition: mpegdescriptors.cpp:410
VideoStreamDescriptor::StillPictureFlag
bool StillPictureFlag(void) const
Definition: mpegdescriptors.h:395
MaximumBitrateDescriptor::toString
QString toString() const override
Definition: mpegdescriptors.cpp:900
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:519
ISO639LanguageDescriptor::CanonicalLanguageString
QString CanonicalLanguageString(void) const
Definition: mpegdescriptors.h:503
AudioStreamDescriptor
Definition: mpegdescriptors.h:407
HEVCVideoDescriptor::ProfileSpace
uint ProfileSpace(void) const
Definition: mpegdescriptors.h:641
MPEGDescriptor::DescriptorTag
uint DescriptorTag(void) const
Definition: mpegdescriptors.h:345
MPEGDescriptor::DescriptorLength
uint DescriptorLength(void) const
Definition: mpegdescriptors.h:346
DescriptorID::service
@ service
Definition: mpegdescriptors.h:80
CountryAvailabilityDescriptor
Definition: dvbdescriptors.h:645
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:522
FrequencyListDescriptor
Definition: dvbdescriptors.h:1597
DescriptorID::audio_stream
@ audio_stream
Definition: mpegdescriptors.h:27
FreesatLCNDescriptor
Freesat Logical Channel Number descriptor.
Definition: dvbdescriptors.h:2624
AVCVideoDescriptor::ProfileIDC
uint ProfileIDC(void) const
Definition: mpegdescriptors.h:577
DescriptorID::iso_639_language
@ iso_639_language
Definition: mpegdescriptors.h:34
ExtendedEventDescriptor::CanonicalLanguageKey
int CanonicalLanguageKey(void) const
Definition: dvbdescriptors.h:1567
ExtendedChannelNameDescriptor
Provides the long channel name for the virtual channel containing this descriptor.
Definition: atscdescriptors.h:340
PrivateDataSpecifierID::EACEM
@ EACEM
Definition: mpegdescriptors.h:272
AudioStreamDescriptor::VariableRateAudioIndicator
bool VariableRateAudioIndicator(void) const
Definition: mpegdescriptors.h:422
PrivateDescriptorID::opentv_channel_list
@ opentv_channel_list
Definition: mpegdescriptors.h:254
CaptionServiceDescriptor
Definition: atscdescriptors.h:74
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:420
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:732
ISO639LanguageDescriptor
Definition: mpegdescriptors.h:488
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:1563
DescriptorID::target_region
@ target_region
Definition: mpegdescriptors.h:149
AVCVideoDescriptor::FramePackingSEINotPresentFlag
bool FramePackingSEINotPresentFlag(void) const
Definition: mpegdescriptors.h:592
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:861
DescriptorID::network_change_notify
@ network_change_notify
Definition: mpegdescriptors.h:147
DescriptorID::short_event
@ short_event
Definition: mpegdescriptors.h:85
MaximumBitrateDescriptor::MaximumBitrate
uint MaximumBitrate(void) const
Definition: mpegdescriptors.h:541
PrivateDescriptorID::ci_protection_descriptor
@ ci_protection_descriptor
Definition: mpegdescriptors.h:257
CableDeliverySystemDescriptor
Definition: dvbdescriptors.h:739
SystemClockDescriptor::toString
QString toString() const override
Definition: mpegdescriptors.cpp:892
SHDeliverySystemDescriptor
Definition: dvbdescriptors.h:1244
DescriptorID::caption_service
@ caption_service
Definition: mpegdescriptors.h:163
DescriptorID::stream_identifier
@ stream_identifier
Definition: mpegdescriptors.h:91
ScramblingDescriptor
Definition: dvbdescriptors.h:1919
ISO639LanguageDescriptor::toString
QString toString() const override
Definition: mpegdescriptors.cpp:885
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:156
DVBLogicalChannelDescriptor
DVB Logical Channel Descriptor.
Definition: dvbdescriptors.h:2566
MaximumBitrateDescriptor
Definition: mpegdescriptors.h:531
SmoothingBufferDescriptor
Definition: mpegdescriptors.h:547
RegistrationDescriptor
Definition: mpegdescriptors.h:429
DescriptorID::smoothing_buffer
@ smoothing_buffer
Definition: mpegdescriptors.h:40
ShortEventDescriptor::CanonicalLanguageKey
int CanonicalLanguageKey(void) const
Definition: dvbdescriptors.h:2178
DescriptorID::frequency_list
@ frequency_list
Definition: mpegdescriptors.h:108
AC3AudioStreamDescriptor
Definition: atscdescriptors.h:206
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:483
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:524
VideoStreamDescriptor::toString
QString toString() const override
Definition: mpegdescriptors.cpp:767
BouquetNameDescriptor
Definition: dvbdescriptors.h:292
RegistrationDescriptor::FormatIdentifierString
QString FormatIdentifierString(void) const
Definition: mpegdescriptors.h:443
TerrestrialDeliverySystemDescriptor
Definition: dvbdescriptors.h:927
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:389
PrivateDataSpecifierID::BSB1
@ BSB1
Definition: mpegdescriptors.h:270
ShortEventDescriptor
Definition: dvbdescriptors.h:2164
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:378
MPEGDescriptor::IsValid
bool IsValid(void) const
Definition: mpegdescriptors.h:342
DescriptorID::maximum_bitrate
@ maximum_bitrate
Definition: mpegdescriptors.h:38
sctedescriptors.h
mythlogging.h
HEVCVideoDescriptor::Tier
bool Tier(void) const
Definition: mpegdescriptors.h:643
MPEGDescriptor::toStringXML
virtual QString toStringXML(uint indent_level) const
Returns XML representation of string the TS Reader XML format.
Definition: mpegdescriptors.cpp:704
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:1512
ConditionalAccessDescriptor::SystemID
uint SystemID(void) const
Definition: mpegdescriptors.h:481
MPEGDescriptor
Definition: mpegdescriptors.h:302
VideoStreamDescriptor::MPEG1OnlyFlag
bool MPEG1OnlyFlag(void) const
Definition: mpegdescriptors.h:391
PrivateDataSpecifierID::FSAT
@ FSAT
Definition: mpegdescriptors.h:279
TargetRegionDescriptor
Definition: dvbdescriptors.h:1363
DescriptorID::default_authority
@ default_authority
Definition: mpegdescriptors.h:126
MPEGDescriptor::m_data
const unsigned char * m_data
Definition: mpegdescriptors.h:370
ConditionalAccessDescriptor
Definition: mpegdescriptors.h:475
desc_list_t
std::vector< const unsigned char * > desc_list_t
Definition: mpegdescriptors.h:18
MessageDescriptor
Definition: dvbdescriptors.h:1329
MPEGDescriptor::ParseOnlyInclude
static desc_list_t ParseOnlyInclude(const unsigned char *data, uint len, int excluded_descid)
Definition: mpegdescriptors.cpp:57
ExtendedEventDescriptor
Definition: dvbdescriptors.h:1549
SmoothingBufferDescriptor::SBLeakRate
uint SBLeakRate(void) const
Definition: mpegdescriptors.h:558
AudioStreamDescriptor::ID
bool ID(void) const
Definition: mpegdescriptors.h:418
DataStreamAlignmentDescriptor::toString
QString toString() const override
Definition: mpegdescriptors.cpp:873
PrivateDescriptorID::dish_event_description
@ dish_event_description
Definition: mpegdescriptors.h:217
AVCVideoDescriptor::AVC24HourPicture
bool AVC24HourPicture(void) const
Definition: mpegdescriptors.h:591
T2DeliverySystemDescriptor
Definition: dvbdescriptors.h:1112
AudioStreamDescriptor::FreeFormatFlag
bool FreeFormatFlag(void) const
Definition: mpegdescriptors.h:416
SkyLCNDescriptor
Sky Logical Channel Number descriptor.
Definition: dvbdescriptors.h:2782
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:2594
AVCVideoDescriptor::ConstraintSet2
bool ConstraintSet2(void) const
Definition: mpegdescriptors.h:583
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:347
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:1269
uint
unsigned int uint
Definition: compat.h:140
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 ISO/IEC 13818-1:2019 (E) page 121.
Definition: mpegdescriptors.h:630
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:2744
ISO639LanguageDescriptor::LanguageString
QString LanguageString(void) const
Definition: mpegdescriptors.h:499
PrivateDescriptorID::sky_lcn_table
@ sky_lcn_table
Definition: mpegdescriptors.h:229
AVCVideoDescriptor::AVCStill
bool AVCStill(void) const
Definition: mpegdescriptors.h:589
DescriptorID::ac3_audio_stream
@ ac3_audio_stream
Definition: mpegdescriptors.h:161
MPEGDescriptor::size
uint size(void) const
Definition: mpegdescriptors.h:343
DescriptorID::c2_delivery_system
@ c2_delivery_system
Definition: mpegdescriptors.h:153
SmoothingBufferDescriptor::SBSize
uint SBSize(void) const
Definition: mpegdescriptors.h:562
MPEGDescriptor::DescriptorTagString
QString DescriptorTagString(void) const
Definition: mpegdescriptors.cpp:341
SystemClockDescriptor
Definition: mpegdescriptors.h:510
mythmiscutil.h
ISO639LanguageDescriptor::CanonicalLanguageKey
int CanonicalLanguageKey(void) const
Definition: mpegdescriptors.h:501
DescriptorID::image_icon
@ image_icon
Definition: mpegdescriptors.h:143
RegistrationDescriptor::InitializeDescriptionMap
static void InitializeDescriptionMap(void)
Definition: mpegdescriptors.cpp:790
DescriptorID::registration
@ registration
Definition: mpegdescriptors.h:29
NetworkChangeNotifyDescriptor
Definition: dvbdescriptors.h:1308
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:470
PrivateDescriptorID::freesat_callsign
@ freesat_callsign
Definition: mpegdescriptors.h:238
SubtitlingDescriptor
Definition: dvbdescriptors.h:2268
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:2232
DescriptorID::component_name
@ component_name
Definition: mpegdescriptors.h:182
AC3Descriptor
Definition: dvbdescriptors.h:2492
ImageIconDescriptor
Definition: dvbdescriptors.h:1069
ServiceDescriptor
Definition: dvbdescriptors.h:2043
ApplicationSignallingDescriptor
Definition: dvbdescriptors.h:206
SmoothingBufferDescriptor::toString
QString toString(void) const override
Definition: mpegdescriptors.cpp:907
RevisionDetectionDescriptor
Definition: sctedescriptors.h:257
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:1009
HEVCVideoDescriptor::toString
QString toString() const override
Definition: mpegdescriptors.cpp:937
DescriptorID::hevc_video
@ hevc_video
Definition: mpegdescriptors.h:69
AVCVideoDescriptor
ISO 13818-1:2000/Amd.3:2004 page 11.
Definition: mpegdescriptors.h:568
PrivateDescriptorID::dish_event_name
@ dish_event_name
Definition: mpegdescriptors.h:216
DescriptorID::country_availability
@ country_availability
Definition: mpegdescriptors.h:81
SatelliteDeliverySystemDescriptor
Definition: dvbdescriptors.h:818
FreesatRegionDescriptor
Freesat Region descriptor.
Definition: dvbdescriptors.h:2689
DescriptorID::conditional_access
@ conditional_access
Definition: mpegdescriptors.h:33
AVCVideoDescriptor::AVCCompatible
uint AVCCompatible(void) const
Definition: mpegdescriptors.h:585
AVCVideoDescriptor::ConstraintSet1
bool ConstraintSet1(void) const
Definition: mpegdescriptors.h:581
RegistrationDescriptor::description_map_initialized
static bool description_map_initialized
Definition: mpegdescriptors.h:456
DescriptorID::message
@ message
Definition: mpegdescriptors.h:148
RegistrationDescriptor::GetDescription
static QString GetDescription(const QString &fmt)
Definition: mpegdescriptors.cpp:846
TargetRegionNameDescriptor
Definition: dvbdescriptors.h:1398
ConditionalAccessDescriptor::toString
QString toString() const override
Definition: mpegdescriptors.cpp:879
DescriptorID::ac3
@ ac3
Definition: mpegdescriptors.h:116
PrivateDescriptorID::dish_event_rights
@ dish_event_rights
Definition: mpegdescriptors.h:214
DefaultAuthorityDescriptor
Definition: dvbdescriptors.h:2921
AudioStreamDescriptor::toString
QString toString() const override
Definition: mpegdescriptors.cpp:781
DataStreamAlignmentDescriptor
Definition: mpegdescriptors.h:461
AdaptationFieldDataDescriptor
Definition: dvbdescriptors.h:229
DescriptorID::application_signalling
@ application_signalling
Definition: mpegdescriptors.h:121
DescriptorID::bouquet_name
@ bouquet_name
Definition: mpegdescriptors.h:79
HEVCVideoDescriptor::ProfileIDC
uint ProfileIDC(void) const
Definition: mpegdescriptors.h:645
RegistrationDescriptor::description_map_lock
static QMutex description_map_lock
Definition: mpegdescriptors.h:455
AVCVideoDescriptor::toString
QString toString() const override
Definition: mpegdescriptors.cpp:923
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:397
PrivateDataSpecifierID::NORDIG
@ NORDIG
Definition: mpegdescriptors.h:273
ComponentNameDescriptor
Definition: atscdescriptors.h:186
DescriptorID::satellite_delivery_system
@ satellite_delivery_system
Definition: mpegdescriptors.h:75
ServiceListDescriptor
Definition: dvbdescriptors.h:2111
RegistrationDescriptor::description_map
static QMap< QString, QString > description_map
Definition: mpegdescriptors.h:457
TeletextDescriptor
Definition: dvbdescriptors.h:2337
DescriptorID::subtitling
@ subtitling
Definition: mpegdescriptors.h:98
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:579
DescriptorID::supplementary_audio
@ supplementary_audio
Definition: mpegdescriptors.h:146
C2DeliverySystemDescriptor
Definition: dvbdescriptors.h:1468
AVCVideoDescriptor::LevelIDC
uint LevelIDC(void) const
Definition: mpegdescriptors.h:587
ConditionalAccessDescriptor::PID
uint PID(void) const
Definition: mpegdescriptors.h:482
PrivateDescriptorID::dish_event_properties
@ dish_event_properties
Definition: mpegdescriptors.h:218
dvbdescriptors.h
PrivateDataSpecifierID::CIPLUS
@ CIPLUS
Definition: mpegdescriptors.h:274
NetworkNameDescriptor
Definition: dvbdescriptors.h:68