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