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 
8 
9 #include "sctedescriptors.h"
10 #include "atscdescriptors.h"
11 #include "dvbdescriptors.h"
12 
15 QMap<QString,QString> RegistrationDescriptor::description_map;
16 
18  const unsigned char *data, uint len)
19 {
21  uint off = 0;
22  while (off < len)
23  {
24  tmp.push_back(data+off);
25  MPEGDescriptor desc(data+off, len-off);
26  if (!desc.IsValid())
27  {
28  tmp.pop_back();
29  break;
30  }
31  off += desc.size();
32  }
33  return tmp;
34 }
35 
37  const unsigned char *data, uint len, int excluded_descid)
38 {
40  uint off = 0;
41  while (off < len)
42  {
43  if ((data+off)[0] != excluded_descid)
44  tmp.push_back(data+off);
45  MPEGDescriptor desc(data+off, len-off);
46  if (!desc.IsValid())
47  {
48  if ((data+off)[0] != excluded_descid)
49  tmp.pop_back();
50  break;
51  }
52  off += desc.size();
53  }
54  return tmp;
55 }
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  }
544  {
546  }
547  //
548  // Extension descriptors for extension 0x7F
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  else if (DescriptorTag() == DescriptorID::extension &&
586  {
588  }
589  else if (DescriptorTag() == DescriptorID::extension &&
591  {
593  }
594  else if (DescriptorTag() == DescriptorID::extension &&
596  {
598  }
599  else if (DescriptorTag() == DescriptorID::extension &&
601  {
603  }
604  //
605  // User Defined DVB descriptors, range 0x80-0xFE
606  else if (priv_dsid == PrivateDataSpecifierID::SES &&
608  {
609  str = descrDump("NorDig Content Protection");
610  }
611  else if (priv_dsid == PrivateDataSpecifierID::OTV &&
612  0x80 <= DescriptorTag() && DescriptorTag() < 0xFF)
613  {
614  str = descrDump("OpenTV Private ");
615  }
616  else if (priv_dsid == PrivateDataSpecifierID::BSB1 &&
618  {
620  }
621  else if (priv_dsid == PrivateDataSpecifierID::FSAT &&
623  {
625  }
626  else if (priv_dsid == PrivateDataSpecifierID::FSAT &&
628  {
630  }
631  else if (priv_dsid == PrivateDataSpecifierID::FSAT &&
633  {
635  }
636  else if (priv_dsid == PrivateDataSpecifierID::CASEMA &&
638  {
639  str = descrDump("Video on Demand");
640  }
641  else if (priv_dsid == PrivateDataSpecifierID::CASEMA &&
643  {
644  str = descrDump("Ziggo Package");
645  }
646  else if ((priv_dsid == PrivateDataSpecifierID::EACEM ||
647  priv_dsid == PrivateDataSpecifierID::NORDIG ||
648  priv_dsid == PrivateDataSpecifierID::ITC ) &&
650  {
652  }
653  else if ((priv_dsid == PrivateDataSpecifierID::EACEM ||
654  priv_dsid == PrivateDataSpecifierID::NORDIG ||
655  priv_dsid == PrivateDataSpecifierID::ITC ) &&
657  {
659  }
660  else if (priv_dsid == PrivateDataSpecifierID::CIPLUS &&
662  {
663  str = descrDump("CI Protection");
664  }
665  // All not otherwise specified private descriptors
666  else if (priv_dsid > 0 && DescriptorTag() > 0x80)
667  {
668  str = descrDump("User Defined");
669  }
670  //
671  // POSSIBLY UNSAFE ! -- begin
672  // ATSC/SCTE descriptors, range 0x80-0xFE
674  {
676  }
678  {
680  }
682  {
684  }
686  {
688  }
690  {
692  }
693  else if (priv_dsid == 0 &&
695  {
697  }
698  // POSSIBLY UNSAFE ! -- end
699  else
700  {
702  }
703  return str;
704 }
705 
708 QString MPEGDescriptor::toStringXML(uint level) const
709 {
710  QString indent_0 = StringUtil::indentSpaces(level);
711  QString indent_1 = StringUtil::indentSpaces(level+1);
712  QString str;
713 
714  str += indent_0 + "<Descriptor>\n";
715  str += indent_1 + QString("<Tag>0x%1</Tag>\n")
716  .arg(DescriptorTag(),2,16,QChar('0'));
717  str += indent_1 + QString("<Description>%1</Description>\n")
718  .arg(DescriptorTagString());
719 
720  str += indent_1 + "<Data>";
721  for (uint i = 0; i < DescriptorLength(); i++)
722  {
723  if (((i%8) == 0) && i)
724  str += "\n" + indent_1 + " ";
725  str += QString("0x%1 ").arg(m_data[i+2],2,16,QChar('0'));
726  }
727 
728  str += "\n" + indent_1 + "</Data>\n";
729  str += indent_1 + "<Decoded>" + toString().toHtmlEscaped() + "</Decoded>\n";
730  str += indent_0 + "</Descriptor>";
731 
732  return str;
733 }
734 
735 // Dump the descriptor in the same format as hexdump -C
736 QString MPEGDescriptor::hexdump(void) const
737 {
738  uint i = 0;
739  QString str;
740  QString hex;
741  QString prt;
742  for (i=0; i<DescriptorLength(); i++)
743  {
744  uint ch = m_data[i+2];
745  hex.append(QString(" %1").arg(ch, 2, 16, QChar('0')));
746  prt.append(QString("%1").arg(isprint(ch) ? QChar(ch) : '.'));
747  if (((i+1) % 8) == 0)
748  hex.append(" ");
749  if (((i+1) % 16) == 0)
750  {
751  str.append(QString(" %1 %2 |%3|")
752  .arg(i - (i % 16),3,16,QChar('0'))
753  .arg(hex, prt));
754  hex.clear();
755  prt.clear();
756  if (i < (DescriptorLength() - 1))
757  {
758  str.append("\n");
759  }
760  }
761  }
762  if (!hex.isEmpty())
763  {
764  str.append(QString(" %1 %2 |%3|")
765  .arg(i - (i % 16),3,16,QChar('0'))
766  .arg(hex,-50,' ').arg(prt));
767  }
768  return str;
769 }
770 
772 {
773  QString str = QString("Video Stream Descriptor: frame_rate(%1) MPEG-1(%2)")
774  .arg(FrameRateCode())
775  .arg(MPEG1OnlyFlag());
776  if (!MPEG1OnlyFlag())
777  {
778  str.append(QString(" still_picture(%1) profile(%2)")
779  .arg(StillPictureFlag())
780  .arg(ProfileAndLevelIndication()));
781  }
782  return str;
783 }
784 
786 {
787  return QString("Audio Stream Descriptor: free_format(%1) ID(%2) layer(%3) variable_rate(%4)")
788  .arg(FreeFormatFlag())
789  .arg(ID())
790  .arg(Layer())
792 }
793 
795 {
796  QMutexLocker locker(&description_map_lock);
798  return;
799 
800  description_map["AC-3"] = "ATSC audio stream A/52";
801  description_map["AVSV"] = "China A/V Working Group";
802  description_map["BDC0"] = "Broadcast Data Corporation Software Data Service";
803  description_map["BSSD"] = "SMPTE 302M-1998 Audio data as specified in (AES3)";
804  description_map["CAPO"] = "SMPTE 315M-1999 Camera Positioning Information";
805  description_map["CUEI"] = "SCTE 35 2003, Cable Digital Program Insertion Cueing Message";
806  description_map["DDED"] = "LGEUS Digital Delivery with encryption and decryption";
807  description_map["DISH"] = "EchoStar MPEG streams";
808  description_map["DRA1"] = "Chinese EIS SJ/T11368-2006 DRA digital audio";
809  description_map["DTS1"] = "DTS Frame size of 512 bytes";
810  description_map["DTS2"] = "DTS Frame size of 1024 bytes";
811  description_map["DTS3"] = "DTS Frame size of 2048";
812  description_map["DVDF"] = "DVD compatible MPEG2-TS";
813  description_map["ETV1"] = "CableLabs ETV info is present";
814  description_map["GA94"] = "ATSC program ID A/53";
815  description_map["GWKS"] = "GuideWorks EPG info";
816  description_map["HDMV"] = "Blu-Ray A/V for read-only media (H.264 TS)";
817  description_map["HDMX"] = "Matsushita-TS";
818  description_map["KLVA"] = "SMPTE RP 217-2001 MXF KLV packets present";
819  description_map["LU-A"] = "SMPTE RDD-11 HDSDI HD serial/video data";
820  description_map["MTRM"] = "D-VHS compatible MPEG2-TS";
821  description_map["NMR1"] = "Nielsen content identifier";
822  description_map["PAUX"] = "Philips ES containing low-speed data";
823  description_map["PMSF"] = "MPEG-TS stream modified by STB";
824  description_map["PRMC"] = "Philips ES containing remote control data";
825  description_map["SCTE"] = "SCTE 54 2003 Digital Video Service Multiplex and TS for Cable";
826  description_map["SEN1"] = "ATSC Private Information identifies source of stream";
827  description_map["SESF"] = "Blu-Ray A/V for ReWritable media (H.264 TS)";
828  description_map["SPLC"] = "SMPTE Proposed 312M Splice Point compatible TS";
829  description_map["SVMD"] = "SMPTE Proposed Video Metatdata Dictionary for MPEG2-TS";
830  description_map["SZMI"] = "ATSC Private Info from Building B";
831  description_map["TRIV"] = "ATSC Private Info from Triveni Digital";
832  description_map["TSBV"] = "Toshiba self-encoded H.264 TS";
833  description_map["TSHV"] = "Sony self-encoded MPEG-TS and private data";
834  description_map["TSMV"] = "Sony self-encoded MPEG-TS and private data";
835  description_map["TVG1"] = "TV Guide EPG Data";
836  description_map["TVG2"] = "TV Guide EPG Data";
837  description_map["TVG3"] = "TV Guide EPG Data";
838  description_map["ULE1"] = "IETF RFC4326 compatible MPEG2-TS";
839  description_map["VC-1"] = "SMPTE Draft RP 227 VC-1 Bitstream Transport Encodings";
840 
841  for (uint i = 0; i <= 99; i++)
842  {
843  description_map[QString("US%1").arg(i, 2, QLatin1Char('0'))] =
844  "NIMA, Unspecified military application";
845  }
846 
848 }
849 
850 QString RegistrationDescriptor::GetDescription(const QString &fmt)
851 {
853 
854  QString ret;
855  {
856  QMutexLocker locker(&description_map_lock);
857  QMap<QString,QString>::const_iterator it = description_map.constFind(fmt);
858  if (it != description_map.constEnd())
859  ret = *it;
860  }
861 
862  return ret;
863 }
864 
866 {
867  QString fmt = FormatIdentifierString();
868  QString msg = QString("Registration Descriptor: '%1' ").arg(fmt);
869 
870  QString msg2 = GetDescription(fmt);
871  if (msg2.isEmpty())
872  msg2 = "Unknown, see http://www.smpte-ra.org/mpegreg/mpegreg.html";
873 
874  return msg + msg2;
875 }
876 
878 {
879  return QString("Data Stream Alignment Descriptor: alignment_type(%1)")
880  .arg(AlignmentType());
881 }
882 
884 {
885  return QString("Conditional Access: sid(0x%1) pid(0x%2) data_size(%3)")
886  .arg(SystemID(),0,16).arg(PID(),0,16).arg(DataSize());
887 }
888 
890 {
891  return QString("ISO-639 Language: code(%1) canonical(%2) eng(%3)")
894 }
895 
897 {
898  return QString("System Clock Descriptor: extref(%1) accuracy(%2e-%3 ppm)")
900  .arg(ClockAccuracyInteger())
901  .arg(ClockAccuracyExponent());
902 }
903 
905 {
906  return QString("Maximum Bitrate Descriptor: maximum_bitrate(0x%1) %2 Mbit/s")
907  .arg(MaximumBitrate(),6,16,QChar('0'))
908  .arg(MaximumBitrate() * 1.0 * 50 * 8 / 1e6);
909 }
910 
912 {
913  QString str = QString("Smoothing Buffer Descriptor ");
914  str += QString("tag(0x%1) ").arg(DescriptorTag(),2,16,QChar('0'));
915  str += QString("length(%1) ").arg(DescriptorLength());
916 
917  str +=
918  QString("sb_leak_rate(0x%1) %2 kB/s ")
919  .arg(SBLeakRate(),6,16,QChar('0'))
920  .arg(SBLeakRate() * 400.0 / (8 * 1e3)) +
921  QString("sb_size(0x%1) %2 kB")
922  .arg(SBSize(),6,16,QChar('0'))
923  .arg(SBSize() / 1e3);
924  return str;
925 }
926 
928 {
929  return QString("AVC Video: IDC prof(%1) IDC level(%2) sets(%3%4%5) "
930  "compat(%6) still(%7) 24hr(%8) FramePacking(%9)")
931  .arg(ProfileIDC()).arg(LevelIDC())
932  .arg(static_cast<int>(ConstraintSet0()))
933  .arg(static_cast<int>(ConstraintSet1()))
934  .arg(static_cast<int>(ConstraintSet2()))
935  .arg(AVCCompatible())
936  .arg(static_cast<int>(AVCStill()))
937  .arg(static_cast<int>(AVC24HourPicture()))
938  .arg(static_cast<int>(FramePackingSEINotPresentFlag()));
939 }
940 
942 {
943  QString str = QString("HEVC Video: ProfileSpace(%1) Tier(%2) ProfileIDC(%3)")
944  .arg(ProfileSpace()).arg(Tier()).arg(ProfileIDC());
945  str.append(" Dumping\n");
946  str.append(hexdump());
947  return str;
948 }
ServiceRelocatedDescriptor
Definition: dvbdescriptors.h:1454
MPEGDescriptor::toString
virtual QString toString(void) const
Definition: mpegdescriptors.cpp:410
PrivateDataSpecifierID::ITC
@ ITC
Definition: mpegdescriptors.h:277
DescriptorID::system_clock
@ system_clock
Definition: mpegdescriptors.h:35
VideoStreamDescriptor::StillPictureFlag
bool StillPictureFlag(void) const
Definition: mpegdescriptors.h:395
MaximumBitrateDescriptor::toString
QString toString() const override
Definition: mpegdescriptors.cpp:904
DescriptorID::ac3
@ ac3
Definition: mpegdescriptors.h:116
DescriptorID::subtitling
@ subtitling
Definition: mpegdescriptors.h:98
PrivateDescriptorID::premiere_parental_information
@ premiere_parental_information
Definition: mpegdescriptors.h:242
DescriptorID::hevc_video
@ hevc_video
Definition: mpegdescriptors.h:69
DescriptorID::conditional_access
@ conditional_access
Definition: mpegdescriptors.h:33
SystemClockDescriptor::ExternalClockReferenceIndicator
bool ExternalClockReferenceIndicator(void) const
Definition: mpegdescriptors.h:519
DescriptorID::adaptation_field_data
@ adaptation_field_data
Definition: mpegdescriptors.h:123
DescriptorID::ac3_audio_stream
@ ac3_audio_stream
Definition: mpegdescriptors.h:161
ISO639LanguageDescriptor::CanonicalLanguageString
QString CanonicalLanguageString(void) const
Definition: mpegdescriptors.h:503
PrivateDataSpecifierID::CASEMA
@ CASEMA
Definition: mpegdescriptors.h:271
AudioStreamDescriptor
Definition: mpegdescriptors.h:407
PrivateDescriptorID::dish_event_mpaa
@ dish_event_mpaa
Definition: mpegdescriptors.h:215
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
CountryAvailabilityDescriptor
Definition: dvbdescriptors.h:657
MPEGDescriptor::descrDump
QString descrDump(const QString &name) const
Definition: mpegdescriptors.cpp:395
DescriptorID::component_name
@ component_name
Definition: mpegdescriptors.h:182
PrivateDataSpecifierID::EACEM
@ EACEM
Definition: mpegdescriptors.h:272
PrivateDescriptorID::freesat_lcn_table
@ freesat_lcn_table
Definition: mpegdescriptors.h:232
SystemClockDescriptor::ClockAccuracyInteger
uint ClockAccuracyInteger(void) const
Definition: mpegdescriptors.h:522
DescriptorID::service
@ service
Definition: mpegdescriptors.h:80
DescriptorID::application_signalling
@ application_signalling
Definition: mpegdescriptors.h:121
PrivateDescriptorID::nordig_content_protection
@ nordig_content_protection
Definition: mpegdescriptors.h:223
FrequencyListDescriptor
Definition: dvbdescriptors.h:1611
FreesatLCNDescriptor
Freesat Logical Channel Number descriptor.
Definition: dvbdescriptors.h:2645
AVCVideoDescriptor::ProfileIDC
uint ProfileIDC(void) const
Definition: mpegdescriptors.h:577
PrivateDescriptorID::dvb_simulcast_channel_descriptor
@ dvb_simulcast_channel_descriptor
Definition: mpegdescriptors.h:207
ExtendedEventDescriptor::CanonicalLanguageKey
int CanonicalLanguageKey(void) const
Definition: dvbdescriptors.h:1581
ExtendedChannelNameDescriptor
Provides the long channel name for the virtual channel containing this descriptor.
Definition: atscdescriptors.h:340
AudioStreamDescriptor::VariableRateAudioIndicator
bool VariableRateAudioIndicator(void) const
Definition: mpegdescriptors.h:422
CaptionServiceDescriptor
Definition: atscdescriptors.h:74
DescriptorID::teletext
@ teletext
Definition: mpegdescriptors.h:95
AudioStreamDescriptor::Layer
uint Layer(void) const
Definition: mpegdescriptors.h:420
DescriptorID::image_icon
@ image_icon
Definition: mpegdescriptors.h:143
DescriptorID::extension
@ extension
Definition: mpegdescriptors.h:138
MPEGDescriptor::hexdump
QString hexdump(void) const
Definition: mpegdescriptors.cpp:736
ISO639LanguageDescriptor
Definition: mpegdescriptors.h:488
ExtendedEventDescriptor::LanguageKey
int LanguageKey(void) const
Definition: dvbdescriptors.h:1577
AVCVideoDescriptor::FramePackingSEINotPresentFlag
bool FramePackingSEINotPresentFlag(void) const
Definition: mpegdescriptors.h:592
RegistrationDescriptor::toString
QString toString() const override
Definition: mpegdescriptors.cpp:865
MaximumBitrateDescriptor::MaximumBitrate
uint MaximumBitrate(void) const
Definition: mpegdescriptors.h:541
CableDeliverySystemDescriptor
Definition: dvbdescriptors.h:751
SystemClockDescriptor::toString
QString toString() const override
Definition: mpegdescriptors.cpp:896
SHDeliverySystemDescriptor
Definition: dvbdescriptors.h:1258
DescriptorID::country_availability
@ country_availability
Definition: mpegdescriptors.h:81
DescriptorID::maximum_bitrate
@ maximum_bitrate
Definition: mpegdescriptors.h:38
PrivateDescriptorID::dvb_logical_channel_descriptor
@ dvb_logical_channel_descriptor
Definition: mpegdescriptors.h:206
PrivateDataSpecifierID::NORDIG
@ NORDIG
Definition: mpegdescriptors.h:273
ScramblingDescriptor
Definition: dvbdescriptors.h:1940
StringUtil::indentSpaces
QString indentSpaces(unsigned int level, unsigned int size=4)
Definition: stringutil.h:33
DescriptorID::avc_video
@ avc_video
Definition: mpegdescriptors.h:64
DescriptorID::audio_stream
@ audio_stream
Definition: mpegdescriptors.h:27
ISO639LanguageDescriptor::toString
QString toString() const override
Definition: mpegdescriptors.cpp:889
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:2587
MaximumBitrateDescriptor
Definition: mpegdescriptors.h:531
SmoothingBufferDescriptor
Definition: mpegdescriptors.h:547
RegistrationDescriptor
Definition: mpegdescriptors.h:429
PrivateDescriptorID::sky_lcn_table
@ sky_lcn_table
Definition: mpegdescriptors.h:229
ShortEventDescriptor::CanonicalLanguageKey
int CanonicalLanguageKey(void) const
Definition: dvbdescriptors.h:2199
DescriptorID::default_authority
@ default_authority
Definition: mpegdescriptors.h:126
AC3AudioStreamDescriptor
Definition: atscdescriptors.h:206
PrivateDescriptorID::casema_video_on_demand
@ casema_video_on_demand
Definition: mpegdescriptors.h:210
DescriptorID::satellite_delivery_system
@ satellite_delivery_system
Definition: mpegdescriptors.h:75
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
PrivateDescriptorID::freesat_callsign
@ freesat_callsign
Definition: mpegdescriptors.h:238
VideoStreamDescriptor::toString
QString toString() const override
Definition: mpegdescriptors.cpp:771
BouquetNameDescriptor
Definition: dvbdescriptors.h:304
RegistrationDescriptor::FormatIdentifierString
QString FormatIdentifierString(void) const
Definition: mpegdescriptors.h:443
TerrestrialDeliverySystemDescriptor
Definition: dvbdescriptors.h:939
atscdescriptors.h
MPEGDescriptor::ParseAndExclude
static desc_list_t ParseAndExclude(const unsigned char *data, uint len, int excluded_descid)
Definition: mpegdescriptors.cpp:36
tmp
static guint32 * tmp
Definition: goom_core.cpp:26
VideoStreamDescriptor::FrameRateCode
uint FrameRateCode(void) const
Definition: mpegdescriptors.h:389
ShortEventDescriptor
Definition: dvbdescriptors.h:2185
DescriptorID::iso_639_language
@ iso_639_language
Definition: mpegdescriptors.h:34
PrivateDescriptorID::premiere_content_order
@ premiere_content_order
Definition: mpegdescriptors.h:241
MPEGDescriptor::FindExtension
static const unsigned char * FindExtension(const desc_list_t &parsed, uint desc_tag)
Definition: mpegdescriptors.cpp:86
VideoStreamDescriptor
Definition: mpegdescriptors.h:378
MPEGDescriptor::IsValid
bool IsValid(void) const
Definition: mpegdescriptors.h:342
DescriptorID::supplementary_audio
@ supplementary_audio
Definition: mpegdescriptors.h:146
sctedescriptors.h
DescriptorID::extended_channel_name
@ extended_channel_name
Definition: mpegdescriptors.h:179
mythlogging.h
DescriptorID::s2_satellite_delivery_system
@ s2_satellite_delivery_system
Definition: mpegdescriptors.h:132
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:708
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:17
S2XSatelliteDeliverySystemDescriptor
Definition: dvbdescriptors.h:1526
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
TargetRegionDescriptor
Definition: dvbdescriptors.h:1377
MPEGDescriptor::m_data
const unsigned char * m_data
Definition: mpegdescriptors.h:370
DescriptorID::extended_event
@ extended_event
Definition: mpegdescriptors.h:86
ConditionalAccessDescriptor
Definition: mpegdescriptors.h:475
desc_list_t
std::vector< const unsigned char * > desc_list_t
Definition: mpegdescriptors.h:18
MessageDescriptor
Definition: dvbdescriptors.h:1343
PrivateDataSpecifierID::FSAT
@ FSAT
Definition: mpegdescriptors.h:279
MPEGDescriptor::ParseOnlyInclude
static desc_list_t ParseOnlyInclude(const unsigned char *data, uint len, int excluded_descid)
Definition: mpegdescriptors.cpp:57
ExtendedEventDescriptor
Definition: dvbdescriptors.h:1563
SmoothingBufferDescriptor::SBLeakRate
uint SBLeakRate(void) const
Definition: mpegdescriptors.h:558
stringutil.h
AudioStreamDescriptor::ID
bool ID(void) const
Definition: mpegdescriptors.h:418
DataStreamAlignmentDescriptor::toString
QString toString() const override
Definition: mpegdescriptors.cpp:877
AVCVideoDescriptor::AVC24HourPicture
bool AVC24HourPicture(void) const
Definition: mpegdescriptors.h:591
T2DeliverySystemDescriptor
Definition: dvbdescriptors.h:1124
AudioStreamDescriptor::FreeFormatFlag
bool FreeFormatFlag(void) const
Definition: mpegdescriptors.h:416
SkyLCNDescriptor
Sky Logical Channel Number descriptor.
Definition: dvbdescriptors.h:2803
SET_STRING
#define SET_STRING(DESC_NAME)
Definition: mpegdescriptors.cpp:391
DVBSimulcastChannelDescriptor
DVB HD Simulcast Logical Channel Descriptor.
Definition: dvbdescriptors.h:2615
AVCVideoDescriptor::ConstraintSet2
bool ConstraintSet2(void) const
Definition: mpegdescriptors.h:583
PrivateDescriptorID::dish_event_properties
@ dish_event_properties
Definition: mpegdescriptors.h:218
MPEGDescriptor::DescriptorTagExtension
uint DescriptorTagExtension(void) const
Definition: mpegdescriptors.h:347
DescriptorID::c2_delivery_system
@ c2_delivery_system
Definition: mpegdescriptors.h:153
DescriptorID::scte_cue_identifier
@ scte_cue_identifier
Definition: mpegdescriptors.h:172
MPEGDescriptor::toStringPD
virtual QString toStringPD(uint priv_dsid) const
Definition: mpegdescriptors.cpp:415
SupplementaryAudioDescriptor
Definition: dvbdescriptors.h:1283
uint
unsigned int uint
Definition: compat.h:81
DescriptorID::s2x_satellite_delivery_system
@ s2x_satellite_delivery_system
Definition: mpegdescriptors.h:157
DescriptorID::registration
@ registration
Definition: mpegdescriptors.h:29
comma_list_append
static void comma_list_append(QString &str, const QString &extra)
Definition: mpegdescriptors.cpp:333
PrivateDescriptorID::ziggo_package_descriptor
@ ziggo_package_descriptor
Definition: mpegdescriptors.h:211
HEVCVideoDescriptor
ISO 13818-1:2013/FDAM 3 (E) page 7 ISO/IEC 13818-1:2019 (E) page 121.
Definition: mpegdescriptors.h:630
MPEGDescriptor::FindAll
static desc_list_t FindAll(const desc_list_t &parsed, uint desc_tag)
Definition: mpegdescriptors.cpp:97
DescriptorID::terrestrial_delivery_system
@ terrestrial_delivery_system
Definition: mpegdescriptors.h:99
FreesatCallsignDescriptor
Freesat Channel Callsign descriptor.
Definition: dvbdescriptors.h:2765
ISO639LanguageDescriptor::LanguageString
QString LanguageString(void) const
Definition: mpegdescriptors.h:499
DescriptorID::scrambling
@ scrambling
Definition: mpegdescriptors.h:111
AVCVideoDescriptor::AVCStill
bool AVCStill(void) const
Definition: mpegdescriptors.h:589
DescriptorID::target_region_name
@ target_region_name
Definition: mpegdescriptors.h:150
DescriptorID::video_stream
@ video_stream
Definition: mpegdescriptors.h:26
PrivateDescriptorID::dish_event_description
@ dish_event_description
Definition: mpegdescriptors.h:217
S2SatelliteDeliverySystemDescriptor
Definition: dvbdescriptors.h:2968
MPEGDescriptor::size
uint size(void) const
Definition: mpegdescriptors.h:343
SmoothingBufferDescriptor::SBSize
uint SBSize(void) const
Definition: mpegdescriptors.h:562
PrivateDescriptorID::premiere_content_transmission
@ premiere_content_transmission
Definition: mpegdescriptors.h:243
DescriptorID::smoothing_buffer
@ smoothing_buffer
Definition: mpegdescriptors.h:40
DescriptorID::short_event
@ short_event
Definition: mpegdescriptors.h:85
DescriptorID::bouquet_name
@ bouquet_name
Definition: mpegdescriptors.h:79
MPEGDescriptor::DescriptorTagString
QString DescriptorTagString(void) const
Definition: mpegdescriptors.cpp:341
SystemClockDescriptor
Definition: mpegdescriptors.h:510
DescriptorID::network_change_notify
@ network_change_notify
Definition: mpegdescriptors.h:147
ISO639LanguageDescriptor::CanonicalLanguageKey
int CanonicalLanguageKey(void) const
Definition: mpegdescriptors.h:501
PrivateDataSpecifierID::OTV
@ OTV
Definition: mpegdescriptors.h:280
RegistrationDescriptor::InitializeDescriptionMap
static void InitializeDescriptionMap(void)
Definition: mpegdescriptors.cpp:794
NetworkChangeNotifyDescriptor
Definition: dvbdescriptors.h:1322
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
SubtitlingDescriptor
Definition: dvbdescriptors.h:2289
DescriptorID::frequency_list
@ frequency_list
Definition: mpegdescriptors.h:108
StreamIdentifierDescriptor
This is used to label streams so the can be treated differently, for instance each stream may get it'...
Definition: dvbdescriptors.h:2253
PrivateDataSpecifierID::BSB1
@ BSB1
Definition: mpegdescriptors.h:270
AC3Descriptor
Definition: dvbdescriptors.h:2513
ImageIconDescriptor
Definition: dvbdescriptors.h:1081
ServiceDescriptor
Definition: dvbdescriptors.h:2064
ApplicationSignallingDescriptor
Definition: dvbdescriptors.h:218
SmoothingBufferDescriptor::toString
QString toString(void) const override
Definition: mpegdescriptors.cpp:911
RevisionDetectionDescriptor
Definition: sctedescriptors.h:257
DescriptorID::target_region
@ target_region
Definition: mpegdescriptors.h:149
PrivateDescriptorID::dish_event_tags
@ dish_event_tags
Definition: mpegdescriptors.h:220
MPEGDescriptor::FindBestMatches
static desc_list_t FindBestMatches(const desc_list_t &parsed, uint desc_tag, QMap< uint, uint > &langPref)
Definition: mpegdescriptors.cpp:158
HEVCVideoDescriptor::toString
QString toString() const override
Definition: mpegdescriptors.cpp:941
AVCVideoDescriptor
ISO 13818-1:2000/Amd.3:2004 page 11.
Definition: mpegdescriptors.h:568
SatelliteDeliverySystemDescriptor
Definition: dvbdescriptors.h:830
FreesatRegionDescriptor
Freesat Region descriptor.
Definition: dvbdescriptors.h:2710
DescriptorID::stream_identifier
@ stream_identifier
Definition: mpegdescriptors.h:91
PrivateDescriptorID::ci_protection_descriptor
@ ci_protection_descriptor
Definition: mpegdescriptors.h:257
DescriptorID::network_name
@ network_name
Definition: mpegdescriptors.h:72
AVCVideoDescriptor::AVCCompatible
uint AVCCompatible(void) const
Definition: mpegdescriptors.h:585
DescriptorID::service_relocated
@ service_relocated
Definition: mpegdescriptors.h:151
AVCVideoDescriptor::ConstraintSet1
bool ConstraintSet1(void) const
Definition: mpegdescriptors.h:581
DescriptorID::service_list
@ service_list
Definition: mpegdescriptors.h:73
RegistrationDescriptor::description_map_initialized
static bool description_map_initialized
Definition: mpegdescriptors.h:456
RegistrationDescriptor::GetDescription
static QString GetDescription(const QString &fmt)
Definition: mpegdescriptors.cpp:850
TargetRegionNameDescriptor
Definition: dvbdescriptors.h:1412
DescriptorID::t2_delivery_system
@ t2_delivery_system
Definition: mpegdescriptors.h:144
ConditionalAccessDescriptor::toString
QString toString() const override
Definition: mpegdescriptors.cpp:883
DefaultAuthorityDescriptor
Definition: dvbdescriptors.h:2943
AudioStreamDescriptor::toString
QString toString() const override
Definition: mpegdescriptors.cpp:785
DataStreamAlignmentDescriptor
Definition: mpegdescriptors.h:461
PrivateDescriptorID::freesat_region_table
@ freesat_region_table
Definition: mpegdescriptors.h:233
DescriptorID::data_stream_alignment
@ data_stream_alignment
Definition: mpegdescriptors.h:30
AdaptationFieldDataDescriptor
Definition: dvbdescriptors.h:241
PrivateDescriptorID::dish_event_rights
@ dish_event_rights
Definition: mpegdescriptors.h:214
DescriptorID::message
@ message
Definition: mpegdescriptors.h:148
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:927
MPEGDescriptor::Find
static const unsigned char * Find(const desc_list_t &parsed, uint desc_tag)
Definition: mpegdescriptors.cpp:78
EMPTY_STR_16
#define EMPTY_STR_16
Definition: mpegdescriptors.cpp:216
PrivateDataSpecifierID::SES
@ SES
Definition: mpegdescriptors.h:269
VideoStreamDescriptor::ProfileAndLevelIndication
uint ProfileAndLevelIndication(void) const
Definition: mpegdescriptors.h:397
ComponentNameDescriptor
Definition: atscdescriptors.h:186
PrivateDescriptorID::dish_event_name
@ dish_event_name
Definition: mpegdescriptors.h:216
ServiceListDescriptor
Definition: dvbdescriptors.h:2132
DescriptorID::sh_delivery_system
@ sh_delivery_system
Definition: mpegdescriptors.h:145
RegistrationDescriptor::description_map
static QMap< QString, QString > description_map
Definition: mpegdescriptors.h:457
TeletextDescriptor
Definition: dvbdescriptors.h:2358
DescriptorID::scte_revision_detection
@ scte_revision_detection
Definition: mpegdescriptors.h:176
AVCVideoDescriptor::ConstraintSet0
bool ConstraintSet0(void) const
Definition: mpegdescriptors.h:579
C2DeliverySystemDescriptor
Definition: dvbdescriptors.h:1482
PrivateDataSpecifierID::CIPLUS
@ CIPLUS
Definition: mpegdescriptors.h:274
DescriptorID::caption_service
@ caption_service
Definition: mpegdescriptors.h:163
AVCVideoDescriptor::LevelIDC
uint LevelIDC(void) const
Definition: mpegdescriptors.h:587
PrivateDescriptorID::opentv_channel_list
@ opentv_channel_list
Definition: mpegdescriptors.h:254
ConditionalAccessDescriptor::PID
uint PID(void) const
Definition: mpegdescriptors.h:482
DescriptorID::cable_delivery_system
@ cable_delivery_system
Definition: mpegdescriptors.h:76
dvbdescriptors.h
PrivateDescriptorID::dish_event_vchip
@ dish_event_vchip
Definition: mpegdescriptors.h:219
NetworkNameDescriptor
Definition: dvbdescriptors.h:80