MythTV  master
dvbdescriptors.h
Go to the documentation of this file.
1 // -*- Mode: c++ -*-
2 // Copyright (c) 2003-2004, Daniel Thor Kristjansson
3 #ifndef DVB_DESCRIPTORS_H
4 #define DVB_DESCRIPTORS_H
5 
6 #include <cassert>
7 
8 #include <QMutex>
9 #include <QString>
10 
11 #include "libmythbase/programinfo.h" // for subtitle types and audio and video properties
12 #include "libmythtv/mythtvexp.h" // MTV_PUBLIC - Symbol Visibility
13 #include "mpegdescriptors.h"
14 
15 /*
16 // needed for scanning
17  conditional_access = 0x09, // maybe
18  satellite_delivery_system = 0x43,*
19  cable_delivery_system = 0x44,*
20  service = 0x48,*
21  terrestrial_delivery_system = 0x5A,*
22  frequency_list = 0x62,*
23 
24 // needed for captions
25  teletext = 0x56,
26  subtitling = 0x59,
27 
28 // needed for sound
29  registration = 0x05,
30  AC3 = 0x6A,
31 
32 // needed for eit
33  short_event = 0x4D,
34  extended_event = 0x4E,
35  content = 0x54,
36 */
37 
38 static QString coderate_inner(uint coderate);
39 
40 using enc_override = std::vector<uint8_t>;
41 MTV_PUBLIC QString dvb_decode_text(const unsigned char *src, uint length,
42  const enc_override &encoding_override);
43 
44 inline QString dvb_decode_text(const unsigned char *src, uint length)
45 {
46  return dvb_decode_text(src, length, {} );
47 }
48 
49 QString dvb_decode_short_name(const unsigned char *src, uint raw_length);
50 
51 static constexpr uint8_t byteBCDH2int(uint8_t i) { return i >> 4; };
52 static constexpr uint8_t byteBCDL2int(uint8_t i) { return i & 0x0f; };
53 static constexpr uint8_t byteBCD2int(uint8_t i)
54 { return (byteBCDH2int(i) * 10) + byteBCDL2int(i); };
55 static constexpr uint16_t byte2BCD2int(uint8_t i, uint8_t j)
56 { return (byteBCDH2int(i) * 1000 + byteBCDL2int(i) * 100 +
57  byteBCDH2int(j) * 10 + byteBCDL2int(j)); };
58 static constexpr uint32_t byte3BCD2int(uint8_t i, uint8_t j, uint8_t k)
59 { return (byteBCDH2int(i) * 100000 + byteBCDL2int(i) * 10000 +
60  byteBCDH2int(j) * 1000 + byteBCDL2int(j) * 100 +
61  byteBCDH2int(k) * 10 + byteBCDL2int(k)); };
62 static constexpr uint32_t byte4BCD2int(uint8_t i, uint8_t j, uint8_t k, uint8_t l)
63 { return (byteBCDH2int(i) * 10000000LL + byteBCDL2int(i) * 1000000 +
64  byteBCDH2int(j) * 100000 + byteBCDL2int(j) * 10000 +
65  byteBCDH2int(k) * 1000 + byteBCDL2int(k) * 100 +
66  byteBCDH2int(l) * 10 + byteBCDL2int(l)); };
67 
68 static_assert( byteBCD2int(0x98) == 98);
69 static_assert(byte2BCD2int(0x98, 0x76) == 9876);
70 static_assert(byte3BCD2int(0x98, 0x76, 0x54) == 987654);
71 static_assert(byte4BCD2int(0x98, 0x76, 0x54, 0x32) == 98765432);
72 
73 // DVB Bluebook A038 (Sept 2011) p 77
75 {
76  public:
77  explicit NetworkNameDescriptor(const unsigned char *data, int len = 300) :
78  MPEGDescriptor(data, len, DescriptorID::network_name) { }
79  // Name bits loc expected value
80  // descriptor_tag 8 0.0 0x40
81  // descriptor_length 8 1.0
82  // for (i=0;i<N;i++){ char 8 uimsbf }
83  QString Name(void) const
84  { return dvb_decode_text(m_data+2, DescriptorLength()); }
85  QString ShortName(void) const
87  QString toString(void) const override // MPEGDescriptor
88  { return QString("NetworkNameDescriptor: ")+Name(); }
89 };
90 
91 // DVB Bluebook A038 (Sept 2011) p 63
93 {
94  public:
95  explicit LinkageDescriptor(const unsigned char *data, int len = 300) :
96  MPEGDescriptor(data, len, DescriptorID::linkage)
97  {
98  if (!m_data)
99  return;
100  if (DescriptorLength() < 7)
101  {
102  m_data = nullptr;
103  }
104  else if (kMobileHandOver == LinkageType())
105  {
106  uint end = 8;
107  if (DescriptorLength() < end)
108  {
109  m_data = nullptr;
110  return;
111  }
112  end += (HasMobileNetworkID()) ? 2 : 0;
113  end += (HasMobileInitialServiceID()) ? 2 : 0;
114  if (DescriptorLength() < end)
115  m_data = nullptr;
116  m_offset = end + 2;
117  }
118  else if (kEventLinkage == LinkageType())
119  {
120  if (DescriptorLength() < 10)
121  m_data = nullptr;
122  m_offset = 12;
123  }
124  }
125  // Name bits loc expected value
126  // descriptor_tag 8 0.0 0x4A
127  // descriptor_length 8 1.0
128  // transport_stream_id 16 2.0
129  uint TSID(void) const { return (m_data[2]<<8) | m_data[3]; }
130  // original_network_id 16 4.0
131  uint OriginalNetworkID() const { return (m_data[4]<<8) | m_data[5]; }
132  // service_id 16 6.0
133  uint ServiceID(void) const { return (m_data[6]<<8) | m_data[7]; }
134  // linkage_type 8 8.0
135  enum
136  {
138  kEPGService = 0x02,
143  kRCSMap = 0x07,
150  };
151  uint LinkageType(void) const { return m_data[8]; }
152  QString LinkageTypeString(void) const;
153 
154  // if (linkage_type == 0x08)
155  // {
156  // hand-over_type 4 9.0
157  enum
158  {
162  };
163  uint MobileHandOverType(void) const { return m_data[9]>>4; }
164  QString MobileHandOverTypeString(void) const;
165  // reserved_future_use 3 9.4
166  // origin_type 1 9.7
167  enum
168  {
169  kOriginNIT = 0x0,
170  kOriginSDT = 0x1,
171  };
172  uint MobileOriginType(void) const { return m_data[9]&0x1; }
173  QString MobileOriginTypeString(void) const;
174  // if (hand-over_type == 0x01 || hand-over_type == 0x02 ||
175  // hand-over_type == 0x03)
176  // { network_id 16 10.0 }
177  bool HasMobileNetworkID(void) const
178  { return bool(MobileHandOverType() & 0x3); }
179  uint MobileNetworkID(void) const { return (m_data[10]<<8) | m_data[11]; }
180  // if (origin_type ==0x00)
181  // { initial_service_id 16 HasNetworkID()?10.0:12.0 }
182  bool HasMobileInitialServiceID(void) const
183  { return kOriginNIT == MobileOriginType(); }
185  {
186  return HasMobileNetworkID() ?
187  ((m_data[12]<<8) | m_data[13]) : ((m_data[10]<<8) | m_data[11]);
188  }
189  // }
190  // if (linkage_type == 0x0D)
191  // {
192  // target_event_id 16 9.0
193  uint TargetEventID(void) const { return (m_data[9]<<8) | m_data[10]; }
194  // target_listed 1 11.0
195  bool IsTargetListed(void) const { return ( m_data[11]&0x80 ) != 0; }
196  // event_simulcast 1 11.1
197  bool IsEventSimulcast(void) const { return ( m_data[11]&0x40 ) != 0; }
198  // reserved 6 11.2
199  // }
200  // for (i=0;i<N;i++)
201  // { private_data_byte 8 bslbf }
202  const unsigned char *PrivateData(void) const
203  { return &m_data[m_offset]; }
205  { return DescriptorLength() + 2 - m_offset; }
206 
207  private:
209 };
210 
211 // ETSI TS 102 809 V1.3.1 (2017-06) p 36
213 {
214  public:
215  explicit ApplicationSignallingDescriptor(const unsigned char *data, int len = 300) :
216  MPEGDescriptor(data, len, DescriptorID::application_signalling) { }
217  // Name bits loc expected value
218  // descriptor_tag 8 0.0 0x6F
219  // descriptor_length 8 1.0
220  // for( i=0; i<N; i++ ){
221  // reserved_future_use 1 2.0
222  // application_type 15 2.1
223  // reserved_future_use 3 4.0
224  // AIT_version_number 5 4.3
225  // }
226  uint Count() const { return DescriptorLength() / 3; }
228  { return (m_data[2 + i*3] & 0x7F) << 8 | m_data[2 + i*3 + 1] ; }
230  { return m_data[2 + i*3 + 2] & 0x1F ; }
231  QString toString(void) const override; // MPEGDescriptor
232 };
233 
234 // DVB Bluebook A038 (Sept 2011) p 38
236 {
237  public:
238  explicit AdaptationFieldDataDescriptor(const unsigned char *data, int len = 300) :
239  MPEGDescriptor(data, len, DescriptorID::adaptation_field_data, 1) { }
240  // Name bits loc expected value
241  // descriptor_tag 8 0.0 0x70
242  // descriptor_length 8 1.0
243  // adapt_field_data_id 8 2.0
244  uint AdaptationFieldDataID(void) const { return m_data[2]; }
245  QString toString(void) const override // MPEGDescriptor
246  {
247  return QString("AdaptationFieldDataDescriptor "
248  "adaptation_field_data_identifier(%1)")
249  .arg(AdaptationFieldDataID());
250  }
251 };
252 
253 // DVB Bluebook A038 (Sept 2011) p 38
255 {
256  public:
257  explicit AncillaryDataDescriptor(const unsigned char *data, int len = 300) :
258  MPEGDescriptor(data, len, DescriptorID::ancillary_data, 1) { }
259  // Name bits loc expected value
260  // descriptor_tag 8 0.0 0x6b
261  // descriptor_length 8 1.0
262  // ancillary_data_id 8 2.0
263  uint AncillaryDataID(void) const { return m_data[2]; }
264  QString toString(void) const override // MPEGDescriptor
265  {
266  return QString("AncillaryDataDescriptor "
267  "ancillary_data_identifier(%1)")
268  .arg(AncillaryDataID());
269  }
270 };
271 
272 // DVB Bluebook A038 (Sept 2011) p 39
274 {
275  public:
276  explicit AnnouncementSupportDescriptor(const unsigned char *data, int len = 300) :
277  MPEGDescriptor(data, len, DescriptorID::announcement_support) { }
278  // Name bits loc expected value
279  // descriptor_tag 8 0.0 0x6e
280  // descriptor_length 8 1.0
281  // announcmnt_supprt_indic 16 2.0
282  // for (i=0; i<N; i++)
283  // {
284  // announcement_type 4 0.0+p
285  // reserved_future_use 1 0.4+p
286  // reference_type 3 0.5+p
287  // if (reference_type & 0x3)
288  // {
289  // original_network_id 16 0.0+p
290  // transport_stream_id 16 2.0+p
291  // service_id 16 4.0+p
292  // component_tag 8 6.0+p
293  // } 7.0
294  // }
295 };
296 
297 // DVB Bluebook A038 (Sept 2011) p 41
299 {
300  public:
301  explicit BouquetNameDescriptor(const unsigned char *data, int len = 300) :
302  MPEGDescriptor(data, len, DescriptorID::bouquet_name) { }
303  // Name bits loc expected value
304  // descriptor_tag 8 0.0 0x47
305  // descriptor_length 8 1.0
306  // for(i=0;i<N;i++) { char 8 }
307  QString BouquetName(void) const
308  { return dvb_decode_text(m_data+2, m_data[1]); }
309  QString BouquetShortName(void) const
310  { return dvb_decode_short_name(m_data+2, m_data[1]); }
311 
312  QString toString(void) const override // MPEGDescriptor
313  {
314  return QString("BouquetNameDescriptor: Bouquet Name(%1)")
315  .arg(BouquetName());
316  }
317 };
318 
319 // DVB Bluebook A038 (Sept 2011) p 41
321 {
322  public:
323  explicit CAIdentifierDescriptor(const unsigned char *data, int len = 300) :
324  MPEGDescriptor(data, len, DescriptorID::ca_identifier) { }
325  // Name bits loc expected value
326  // descriptor_tag 8 0.0 0x53
327  // descriptor_length 8 1.0
328  //
329  uint CASystemCount(void) const { return DescriptorLength() >> 1; }
330  // for (i=0; i<N; i++)
331  // { CA_system_id 16 }
332  int CASystemId(uint i) const
333  { return (m_data[2 + i*2] << 8) | m_data[3 + i*2]; }
334  QString toString(void) const override; // MPEGDescriptor
335 };
336 
337 // DVB Bluebook A038 (Sept 2011) p 42
339 {
340  public:
341  explicit CellFrequencyLinkDescriptor(const unsigned char *data, int len = 300) :
342  MPEGDescriptor(data, len, DescriptorID::cell_frequency_link) { }
343  // Name bits loc expected value
344  // descriptor_tag 8 0.0 0x6d
345  // descriptor_length 8 1.0
346  // for (i=0; i<N; i++)
347  // {
348  // cell_id 16 0.0+p
349  // frequency 32 2.0+p
350  // subcell_info_loop_len 8 6.0+p
351  // for (j=0;j<N;j++)
352  // {
353  // cell_id_extension 8 0.0+p2
354  // transposer_freq 32 1.0+p2
355  // } 5.0
356  // }
357 };
358 
359 // DVB Bluebook A038 (Sept 2011) p 42
361 {
362  public:
363  explicit CellListDescriptor(const unsigned char *data, int len = 300) :
364  MPEGDescriptor(data, len, DescriptorID::cell_list) { }
365  // Name bits loc expected value
366  // descriptor_tag 8 0.0 0x6c
367  // descriptor_length 8 1.0
368  // for (i=0; i<N; i++)
369  // {
370  // cell_id 16 0.0+p
371  // cell_latitude 16 2.0+p
372  // cell_longitude 16 4.0+p
373  // cell_extent_of_lat 12 6.0+p
374  // cell_extent_of_longit 12 7.4+p
375  // subcell_info_loop_len 8 9.0+p
376  // for (j=0;j<N;j++)
377  // {
378  // cell_id_extension 8 0.0+p2
379  // subcell_latitude 16 1.0+p2
380  // subcell_longitude 16 3.0+p2
381  // subcell_ext_of_lat 12 4.0+p2
382  // subcell_ext_of_long 12 5.4+p2
383  // } 7.0
384  // }
385 };
386 
387 // DVB Bluebook A038 (Sept 2011) p 44
389 {
390  public:
391  explicit ComponentDescriptor(const unsigned char *data, int len = 300) :
392  MPEGDescriptor(data, len, DescriptorID::component) { }
393  // Name bits loc expected value
394  // descriptor_tag 8 0.0 0x50
395  // descriptor_length 8 1.0
396  // reserved_future_use 4 2.0
397  // stream_content 4 2.4
398  uint StreamContent(void) const { return m_data[2] & 0xf; }
399  // component_type 8 3.0
400  uint ComponentType(void) const { return m_data[3]; }
401  // component_tag 8 4.0
402  uint ComponentTag(void) const { return m_data[4]; }
403  // ISO_639_language_code 24 5.0
404  int LanguageKey(void) const
405  { return iso639_str3_to_key(&m_data[5]); }
406  QString LanguageString(void) const
407  { return iso639_key_to_str3(LanguageKey()); }
408  int CanonicalLanguageKey(void) const
410  QString CanonicalLanguageString(void) const
412  //
413  // for (i=0; i<N; i++) { text_char 8 }
414 
415  bool IsVideo(void) const
416  {
417  return 0x1 == StreamContent() || // MPEG-2
418  0x5 == StreamContent() || // H.264
419  0x9 == StreamContent(); // HEVC
420  }
421  bool IsAudio(void) const
422  {
423  switch(StreamContent())
424  {
425  case 0x02:
426  case 0x04:
427  case 0x06:
428  case 0x07:
429  return true;
430  default:
431  return false;
432  }
433  }
434  bool IsSubtitle(void) const { return 0x3 == StreamContent(); }
435 
436  uint VideoProperties(void) const
437  {
438  if (0x1 == StreamContent())
439  return MPEG2Properties();
440  if (0x5 == StreamContent())
441  return VID_AVC | AVCProperties();
442  if (0x9 == StreamContent())
443  return VID_HEVC | HEVCProperties();
444 
445  return VID_UNKNOWN;
446  }
447 
448  uint MPEG2Properties(void) const
449  {
450  switch(ComponentType())
451  {
452  case 0x2: case 0x3: case 0x4:
453  case 0x6: case 0x7: case 0x8:
454  return VID_WIDESCREEN;
455  case 0x09:
456  case 0x0D:
457  return VID_HDTV;
458  case 0x0A: case 0x0B: case 0x0C:
459  case 0x0E: case 0x0F: case 0x10:
460  return VID_WIDESCREEN | VID_HDTV;
461  default:
462  return VID_UNKNOWN;
463  }
464  }
465 
466  uint AVCProperties(void) const
467  {
468  switch(ComponentType())
469  {
470  case 0x3: case 0x4:
471  case 0x7: case 0x8:
472  return VID_WIDESCREEN;
473  case 0x0B: case 0x0C:
474  case 0x0F: case 0x10:
475  return VID_WIDESCREEN | VID_HDTV;
476  case 0x80: case 0x81:
477  case 0x82: case 0x83:
478  return VID_WIDESCREEN | VID_HDTV | VID_3DTV;
479  default:
480  return VID_UNKNOWN;
481  }
482  }
483 
484  uint HEVCProperties(void) const
485  {
486  switch(ComponentType())
487  {
488  // NOLINTNEXTLINE(bugprone-branch-clone)
489  case 0x0: case 0x1:
490  case 0x2: case 0x3:
491  return VID_HDTV;
492  case 0x5:
493  return VID_HDTV; // | VID_UHDTV;
494  default:
495  return VID_UNKNOWN;
496  }
497  }
498 
499  uint AudioProperties(void) const
500  {
501  switch (StreamContent())
502  {
503  case 0x2:
504  return MP2Properties();
505  case 0x04:
506  return AC3Properties();
507  case 0x06:
508  return HEAACProperties();
509  default:
510  return AUD_UNKNOWN;
511  }
512  }
513 
514  uint MP2Properties(void) const
515  {
516  switch (ComponentType())
517  {
518  case 0x1:
519  return AUD_MONO;
520  case 0x3:
521  return AUD_STEREO;
522  case 0x5:
523  return AUD_SURROUND;
524  case 0x40:
525  return AUD_VISUALIMPAIR;
526  case 0x41:
527  return AUD_HARDHEAR;
528  default:
529  return AUD_UNKNOWN;
530  }
531  }
532 
533  uint AC3Properties(void) const
534  {
535  unsigned char properties = AUD_UNKNOWN;
536 
537  switch (ComponentType() & 0x7)
538  {
539  case 0x0:
540  properties |= AUD_MONO;
541  break;
542  case 0x2:
543  properties |= AUD_STEREO;
544  break;
545  case 0x3:
546  properties |= AUD_DOLBY;
547  break;
548  case 0x4: case 0x5:
549  properties |= AUD_SURROUND;
550  break;
551  }
552 
553  if (((ComponentType() >> 3) & 0x7) == 0x2)
554  properties |= AUD_VISUALIMPAIR;
555 
556  if (((ComponentType() >> 3) & 0x7) == 0x3)
557  properties |= AUD_HARDHEAR;
558 
559  return properties;
560  }
561 
562  uint HEAACProperties(void) const
563  {
564  switch (ComponentType())
565  {
566  case 0x1:
567  return AUD_MONO;
568  case 0x3:
569  case 0x43:
570  return AUD_STEREO;
571  case 0x5:
572  return AUD_SURROUND;
573  case 0x40:
574  case 0x44:
575  return AUD_VISUALIMPAIR;
576  case 0x41:
577  case 0x45:
578  return AUD_HARDHEAR;
579  default:
580  return AUD_UNKNOWN;
581  }
582  }
583 
584  uint SubtitleType(void) const
585  {
586  if (!IsSubtitle())
587  return SUB_UNKNOWN;
588 
589  switch (ComponentType())
590  {
591  case 0x1:
592  case 0x3:
593  case 0x10: case 0x11: case 0x12: case 0x13:
594  return SUB_NORMAL;
595  case 0x20: case 0x21: case 0x22: case 0x23:
596  return SUB_HARDHEAR;
597  default:
598  return SUB_UNKNOWN;
599  }
600  }
601 
602  QString toString(void) const override // MPEGDescriptor
603  {
604  return QString("ComponentDescriptor(stream_content: 0x%1, "
605  "component_type: 0x%2)").arg(StreamContent(), 0, 16)
606  .arg(ComponentType(), 0, 16);
607  }
608 };
609 
610 // DVB Bluebook A038 (Sept 2011) p 46
612 {
613  public:
614  explicit ContentDescriptor(const unsigned char *data, int len = 300) :
615  MPEGDescriptor(data, len, DescriptorID::content) { }
616  // Name bits loc expected value
617  // descriptor_tag 8 0.0 0x54
618  // descriptor_length 8 1.0
619 
620  uint Count(void) const { return DescriptorLength() >> 1; }
621  // for (i=0;i<N;i++)
622  // {
623  // content_nibble_level_1 4 0.0+p
624  uint Nibble1(uint i) const { return m_data[2 + (i<<1)] >> 4; }
625  // content_nibble_level_2 4 0.4+p
626  uint Nibble2(uint i) const { return m_data[2 + (i<<1)] & 0xf; }
627 
628  uint Nibble(uint i) const { return m_data[2 + (i<<1)]; }
629 
630  // user_nibble 4 1.0+p
631  uint UserNibble1(uint i) const { return m_data[3 + (i<<1)] >> 4; }
632  // user_nibble 4 1.4+p
633  uint UserNibble2(uint i) const { return m_data[3 + (i<<1)] & 0xf; }
634  uint UserNibble(uint i) const { return m_data[3 + (i<<1)]; }
635  // } 2.0
636 
638  QString GetDescription(uint i) const;
639  QString toString(void) const override; // MPEGDescriptor
640 
641  protected:
642  static void Init(void);
643 
644  protected:
645  static QMutex s_categoryLock;
646  static QMap<uint,QString> s_categoryDesc;
647  static volatile bool s_categoryDescExists;
648 };
649 
650 // DVB Bluebook A038 (Sept 2011) p 49
652 {
653  public:
654  explicit CountryAvailabilityDescriptor(const unsigned char *data, int len = 300) :
655  MPEGDescriptor(data, len, DescriptorID::country_availability) { }
656  // Name bits loc expected value
657  // descriptor_tag 8 0.0 0x49
658  // descriptor_length 8 1.0
659 
660  uint CountryCount(void) const { return ((DescriptorLength() - 1) / 3); }
661 
662  // country_avail_flag 1 2.0
663  bool IsAvailable(void) const { return (m_data[2] & 0x1) != 0; }
664  // reserved_future_use 7 2.1
665  //
666  // for (i=0; i<N; i++)
667  // { country_code 24 }
668  QString CountryNames(void) const
669  {
670  QString countries="";
671  for (uint i=0; i<CountryCount(); i++)
672  {
673  if (i!=0) countries.append(" ");
674  countries.append(QString::fromLatin1(
675  (const char *)m_data+(3*(i+1)), 3));
676  };
677  return countries;
678  }
679 
680  QString toString(void) const override // MPEGDescriptor
681  {
682  return QString("CountryAvailabilityDescriptor: Available(%1) in (%2)")
683  .arg(static_cast<int>(IsAvailable())).arg(CountryNames());
684  }
685 };
686 
687 // DVB Bluebook A038 (Sept 2011) p 50
689 {
690  public:
691  explicit DataBroadcastDescriptor(const unsigned char *data, int len = 300) :
692  MPEGDescriptor(data, len, DescriptorID::data_broadcast) { }
693  // Name bits loc expected value
694  // descriptor_tag 8 0.0 0x64
695  // descriptor_length 8 1.0
696 
697  // data_broadcast_id 16 2.0
698  uint DataBroadcastId(void) const { return m_data[2] << 8 | m_data[3]; }
699  // component_tag 8 4.0
700  uint DataComponentTag(void) const { return m_data[4]; }
701  // selector_length 8 5.0
702  uint SelectorLength(void) const { return m_data[5]; }
703  // for (i=0; i<selector_length; i++)
704  // {
705  // selector_byte 8
706  const unsigned char *Selector(void) const { return &m_data[6]; }
707  // }
708  // ISO_639_language_code 24
709  int LanguageKey(void) const
710  { return iso639_str3_to_key(&m_data[6 + SelectorLength()]); }
711  QString LanguageString(void) const
712  { return iso639_key_to_str3(LanguageKey()); }
713  int CanonicalLanguageKey(void) const
715  QString CanonicalLanguageString(void) const
717  // text_length 8
718  uint TextLength(void) const { return m_data[6 + SelectorLength() + 3]; }
719  // for (i=0; i<text_length; i++) { text_char 8 }
720  QString Text(void) const
721  {
722  return dvb_decode_text(&m_data[6 + SelectorLength() + 4], TextLength());
723  }
724 
725  QString toString(void) const override; // MPEGDescriptor
726 };
727 
728 // DVB Bluebook A038 (Sept 2011) p 51
730 {
731  public:
732  explicit DataBroadcastIdDescriptor(const unsigned char *data, int len = 300) :
733  MPEGDescriptor(data, len, DescriptorID::data_broadcast_id) { }
734  // Name bits loc expected value
735  // descriptor_tag 8 0.0 0x66
736  // descriptor_length 8 1.0
737 
738  // data_broadcast_id 16 2.0
739  uint DataBroadCastId(void) const { return m_data[2] << 8 | m_data[3]; }
740  // for(i=0; i < N;i++ )
741  // { id_selector_byte 8 }
742 };
743 
744 // DVB Bluebook A038 (Sept 2011) p 51
746 {
747  public:
748  explicit CableDeliverySystemDescriptor(const unsigned char *data, int len = 300) :
749  MPEGDescriptor(data, len, DescriptorID::cable_delivery_system) { }
750  // Name bits loc expected value
751  // descriptor_tag 8 0.0 0x44
752  // descriptor_length 8 1.0
753 
754  // frequency 32 2.0
755  uint FrequencyRaw(void) const
756  {
757  return ((m_data[2]<<24) | (m_data[3]<<16) |
758  (m_data[4]<<8) | (m_data[5]));
759  }
760  unsigned long long FrequencyHz(void) const
761  {
762  if (m_data == nullptr)
763  return 0;
764  return byte4BCD2int(m_data[2], m_data[3], m_data[4], m_data[5]) * 100;
765  }
766  // reserved_future_use 12 6.0
767  // FEC_outer 4 7.4
768  enum
769  {
772  };
773  uint FECOuter(void) const { return m_data[7] & 0xf; }
774  QString FECOuterString(void) const
775  {
776  return (FECOuter() == kOuterFEC_None) ? "None" :
777  ((FECOuter() == kOuterFEC_RS204_RS188) ? "RS(204/188)" : "unknown");
778  }
779  // modulation 8 8.0
780  enum
781  {
787  };
788  uint Modulation(void) const { return m_data[8]; }
789  QString ModulationString(void) const
790  {
791  static std::array<QString,6> ms
792  { "auto", "qam_16", "qam_32", "qam_64", "qam_128", "qam_256" };
793  return (Modulation() <= kModulationQAM256) ?
794  ms[Modulation()] : QString("auto");
795  }
796  // symbol_rate 28 9.0
797  uint SymbolRateRaw(void) const
798  {
799  return ((m_data[9]<<20) | (m_data[10]<<12) |
800  (m_data[11]<<4) | (m_data[12]>>4));
801  }
802  uint SymbolRateHz(void) const
803  {
804  return ((byte3BCD2int(m_data[9], m_data[10], m_data[11]) * 1000) +
805  (byteBCDH2int(m_data[12]) * 100));
806  }
807  // FEC_inner 4 12.4
808  enum
809  {
817  };
818  uint FECInner(void) const { return m_data[12] & 0xf; }
819  QString FECInnerString(void) const { return coderate_inner(FECInner()); }
820  QString toString(void) const override; // MPEGDescriptor
821 };
822 
823 // DVB Bluebook A038 (Feb 2019) p 58
825 {
826  public:
828  const unsigned char *data, int len = 300) :
829  MPEGDescriptor(data, len, DescriptorID::satellite_delivery_system) { }
830  // Name bits loc expected value
831  // descriptor_tag 8 0.0 0x43
832  // descriptor_length 8 1.0
833 
835  uint FrequencyRaw(void) const
836  {
837  return ((m_data[2]<<24) | (m_data[3]<<16) |
838  (m_data[4]<<8) | (m_data[5]));
839  }
840  uint64_t FrequencykHz(void) const
841  {
842  return byte4BCD2int(m_data[2], m_data[3], m_data[4], m_data[5]) * 10;
843  }
845  uint OrbitalPosition(void) const
846  { return byte2BCD2int(m_data[6], m_data[7]); }
847  QString OrbitalPositionString(void) const
848  {
849  uint num = OrbitalPosition();
850  return QString("%1.%2 %3").arg(num / 10).arg(num % 10)
851  .arg((IsEast()) ? "East" : "West");
852  }
853  double OrbitalPositionFloat() const
854  { return ((double) OrbitalPosition()) / 10.0; }
856  bool IsEast(void) const { return ( (m_data[8]&0x80) ) != 0; }
857  bool IsWest(void) const { return !IsEast(); }
858  // polarization 2 8.1
859  uint Polarization(void) const { return (m_data[8]>>5)&0x3; }
860  QString PolarizationString() const
861  {
862  static const std::array<const QString,4> ps { "h", "v", "l", "r" };
863  return ps[Polarization()];
864  }
865  bool IsCircularPolarization(void) const { return ((m_data[8]>>6)&0x1) != 0; }
866  bool IsLinearPolarization(void) const { return ((m_data[8]>>6)&0x1) == 0; }
867  bool IsHorizontalLeftPolarization(void) const { return ((m_data[8]>>5)&0x1) != 0; }
868  bool IsVerticalRightPolarization(void) const { return ((m_data[8]>>5)&0x1) == 0; }
869  // roll off 2 8.3
870  enum
871  {
876  };
877  uint RollOff(void) const { return (m_data[8]>>3)&0x3; }
878  QString RollOffString(void) const
879  {
880  static const std::array<const QString,4> ro { "0.35", "0.20", "0.25", "auto" };
881  return ro[RollOff()];
882  }
883  // modulation system 1 8.5
884  uint ModulationSystem(void) const { return (m_data[8]>>2)&0x1; }
885  QString ModulationSystemString(void) const
886  {
887  return ModulationSystem() ? "DVB-S2" : "DVB-S";
888  }
889  // modulation 2 8.6
890  enum
891  {
892  kModulationQPSK_NS = 0x0, // Non standard QPSK for Bell ExpressVu
893  // should be "auto" according to DVB SI standard
897  };
898  uint Modulation(void) const { return m_data[8]&0x03; }
899  QString ModulationString(void) const
900  {
901  static const std::array<const QString,4> ms { "qpsk", "qpsk", "8psk", "qam_16" };
902  return ms[Modulation()];
903  }
904  // symbol_rate 28 9.0
905  uint SymbolRate(void) const
906  {
907  return ((m_data[9]<<20) | (m_data[10]<<12) |
908  (m_data[11]<<4) | (m_data[12]>>4));
909  }
910  uint SymbolRateHz(void) const
911  {
912  return ((byte3BCD2int(m_data[9], m_data[10], m_data[11]) * 1000) +
913  (byteBCDH2int(m_data[12]) * 100));
914  }
915  // FEC_inner 4 12.4
916  enum
917  {
925  };
926  uint FECInner(void) const { return m_data[12] & 0xf; }
927  QString FECInnerString(void) const { return coderate_inner(FECInner()); }
928 
929  QString toString(void) const override; // MPEGDescriptor
930 };
931 
932 // DVB Bluebook A038 (Feb 2019) p 60
934 {
935  public:
937  const unsigned char *data, int len = 300) :
938  MPEGDescriptor(data, len, DescriptorID::terrestrial_delivery_system) { }
939  // Name bits loc expected value
940  // descriptor_tag 8 0.0 0x5a
941  // descriptor_length 8 1.0
942 
943  // centre_frequency 32 2.0
944  uint Frequency(void) const
945  {
946  return ((m_data[2]<<24) | (m_data[3]<<16) |
947  (m_data[4]<<8) | (m_data[5]));
948  }
949  uint64_t FrequencyHz(void) const { return uint64_t(Frequency()) * 10ULL; }
950 
951  // bandwidth 3 6.0
952  enum
953  {
958  };
959  uint Bandwidth(void) const { return m_data[6]>>5; }
960  uint BandwidthHz(void) const { return (8 - Bandwidth()) * 1000000; }
961  QString BandwidthString(void) const
962  {
963  static std::array<QString,4> bs { "8", "7", "6", "5" };
964  return (Bandwidth() <= kBandwidth5Mhz) ? bs[Bandwidth()] : "auto";
965  }
966  // priority 1 6.3
967  bool HighPriority(void) const { return ( m_data[6] & 0x10 ) != 0; }
968  // time_slicing_indicator 1 6.4
969  bool IsTimeSlicingIndicatorUsed(void) const { return (m_data[6] & 0x08) == 0; }
970  // MPE-FEC_indicator 1 6.5
971  bool IsMPE_FECUsed(void) const { return (m_data[6] & 0x04) == 0; }
972  // reserved_future_use 2 6.6
973  // constellation 2 7.0
974  enum
975  {
980  };
981  uint Constellation(void) const { return m_data[7]>>6; }
982  QString ConstellationString(void) const
983  {
984  static std::array<QString,4> cs { "qpsk", "qam_16", "qam_64", "qam_256" };
985  return (Constellation() <= kConstellationQAM256) ?
986  cs[Constellation()] : "auto";
987  }
988  // hierarchy_information 3 7.2
989  enum
990  {
999  };
1000  uint Hierarchy(void) const { return (m_data[7]>>3) & 0x7; }
1001 
1003  QString HierarchyString(void) const
1004  {
1005  static const std::array<const QString,8> hs { "n", "1", "2", "4", "a", "a", "a", "a" };
1006  return hs[Hierarchy()];
1007  }
1008  bool NativeInterleaver(void) const { return ( m_data[7] & 0x20 ) != 0; }
1009  uint Alpha(void) const
1010  {
1011  uint i = (m_data[7]>>3) & 0x3;
1012  return (0x2 == i) ? 4 : i;
1013  }
1014  // code_rate-HP_stream 3 7.5
1015  enum
1016  {
1022  };
1023  uint CodeRateHP(void) const { return m_data[7] & 0x7; }
1024  QString CodeRateHPString(void) const
1025  {
1026  static const std::array<const QString,8> cr {
1027  "1/2", "2/3", "3/4", "5/6", "7/8", "auto", "auto", "auto"
1028  };
1029  return cr[CodeRateHP()];
1030  }
1031  // code_rate-LP_stream 3 8.0
1032  uint CodeRateLP(void) const { return (m_data[8]>>5) & 0x7; }
1033  QString CodeRateLPString(void) const
1034  {
1035  static const std::array<const QString,8> cr {
1036  "1/2", "2/3", "3/4", "5/6", "7/8", "auto", "auto", "auto"
1037  };
1038  return cr[CodeRateLP()];
1039  }
1040  // guard_interval 2 8.3
1041  enum
1042  {
1047  };
1048  uint GuardInterval(void) const { return (m_data[8]>>3) & 0x3; }
1049  QString GuardIntervalString(void) const
1050  {
1051  static const std::array<const QString,4> gi { "1/32", "1/16", "1/8", "1/4" };
1052  return gi[GuardInterval()];
1053  }
1054  // transmission_mode 2 8.5
1055  enum
1056  {
1060  };
1061  uint TransmissionMode(void) const { return (m_data[8]>>1) & 0x3; }
1062  QString TransmissionModeString(void) const
1063  {
1064  static const std::array<const QString,4> tm { "2", "8", "4", "auto" };
1065  return tm[TransmissionMode()];
1066  }
1067  // other_frequency_flag 1 8.7
1068  bool OtherFrequencyInUse(void) const { return (m_data[8] & 0x1) != 0; }
1069  // reserved_future_use 32 9.0
1070 
1071  QString toString(void) const override; // MPEGDescriptor
1072 };
1073 
1074 // DVB Bluebook A038 (Feb 2019) p 110
1076 {
1077  public:
1079  const unsigned char *data, int len = 300) :
1080  MPEGDescriptor(data, len, DescriptorID::extension)
1081  {
1083  {
1084  m_data = nullptr;
1085  }
1086  }
1087  // Name bits loc expected value
1088  // descriptor_tag 8 0.0 0x7f extension
1089  // descriptor_length 8 1.0
1090  // descriptor_tag_extension 8 2.0 0x00 image_icon
1091 
1092  // descriptor_number 4 3.0
1094  {
1095  return m_data[3] >> 4;
1096  }
1097 
1098  // last_descriptor_number 4 3.4
1100  {
1101  return m_data[3] & 0xF;
1102  }
1103 
1104  // icon_id 3 4.5
1105  uint IconID(void) const
1106  {
1107  return m_data[4] & 0x7;
1108  }
1109 
1110  //
1111  // TBD
1112  //
1113 
1114  QString toString(void) const override; // MPEGDescriptor
1115 };
1116 
1117 // DVB Bluebook A038 (Feb 2019) p 104 0x7f 0x04
1119 {
1120  public:
1122  const unsigned char *data, int len = 300) :
1123  MPEGDescriptor(data, len, DescriptorID::extension)
1124  {
1125  if (IsValid())
1126  {
1128  m_data = nullptr;
1129  else
1130  Parse();
1131  }
1132  }
1133  // Name bits loc expected value
1134  // descriptor_tag 8 0.0 0x7f extension
1135  // descriptor_length 8 1.0
1136  // descriptor_tag_extension 8 2.0 0x04 t2_delivery_system
1137 
1138  // plp_id 8 3.0
1139  uint PlpID(void) const
1140  {
1141  return m_data[3];
1142  }
1143 
1144  // T2_system_id 16 4.0
1145  uint T2SystemID(void) const
1146  {
1147  return ((m_data[4]<<8) | (m_data[5]));
1148  }
1149 
1150  // SISO/MISO 2 6.0
1151  uint SisoMiso(void) const { return (m_data[6] >> 6) & 0x3; }
1152  QString SisoMisoString(void) const
1153  {
1154  static const std::array<const QString,4> sm
1155  { "SISO", "MISO", "reserved", "reserved" };
1156  return sm[SisoMiso()];
1157  }
1158 
1159  // bandwidth 4 6.2
1160  enum
1161  {
1168  };
1169  uint Bandwidth(void) const { return (m_data[6] >> 2) & 0xF; }
1170  uint BandwidthHz(void) const
1171  {
1172  static constexpr std::array<const uint,6> bw
1173  { 8000000, 7000000, 6000000, 5000000, 10000000, 1712000 };
1174  return (Bandwidth() <= kBandwidth1712kHz ? bw[Bandwidth()] : 0);
1175  }
1176  QString BandwidthString(void) const
1177  {
1178  static const std::array<const QString,6> bs
1179  { "8", "7", "6", "5", "10", "1.712" };
1180  return (Bandwidth() <= kBandwidth1712kHz) ? bs[Bandwidth()] : "0";
1181  }
1182 
1183  // guard_interval 3 7.0
1184  enum
1185  {
1193  };
1194  uint GuardInterval(void) const { return (m_data[7]>>5) & 0x7; }
1195  QString GuardIntervalString(void) const
1196  {
1197  static const std::array<const QString,8> gi
1198  { "1/32", "1/16", "1/8", "1/4", "1/128", "19/128", "19/256", "reserved" };
1199  return gi[GuardInterval()];
1200  }
1201 
1202  // transmission_mode 3 7.3
1203  enum
1204  {
1211  };
1212  uint TransmissionMode(void) const { return (m_data[7]>>2) & 0x7; }
1213  QString TransmissionModeString(void) const
1214  {
1215  static const std::array<const QString,8> tm
1216  { "2k", "8k", "4k", "1k", "16k", "32k", "reserved", "reserved" };
1217  return tm[TransmissionMode()];
1218  }
1219  uint OtherFrequencyFlag(void) const { return (m_data[7]>>1) & 0x1; }
1220  uint TFSFlag(void) const { return m_data[7] & 0x1; }
1221 
1222  public:
1223  uint NumCells(void) const { return m_cellPtrs.size(); }
1224  uint CellID(uint i) const { return (m_cellPtrs[i][0] << 8) | m_cellPtrs[i][1]; }
1225  uint FrequencyLoopLength(uint i) const { return m_cellPtrs[i][2]; }
1226 
1228  {
1229  return (m_cellPtrs[i][2] << 24) | (m_cellPtrs[i][3] << 16) | (m_cellPtrs[i][4] << 8) | m_cellPtrs[i][5];
1230  }
1231 
1232  uint CentreFrequency(int i, int j) const
1233  {
1234  return (m_cellPtrs[i][3+4*j] << 24) | (m_cellPtrs[i][4+4*j] << 16) | (m_cellPtrs[i][5+4*j] << 8) | m_cellPtrs[i][6+4*j];
1235  }
1236  uint SubcellInfoLoopLength(uint i) const { return m_subCellPtrs[i][0]; }
1237  uint CellIDExtension(uint i, uint j) const { return m_subCellPtrs[i][1+5*j]; }
1239  {
1240  return (m_subCellPtrs[i][1+5*j] << 24) | (m_subCellPtrs[i][2+5*j] << 16) | (m_subCellPtrs[i][3+5*j] << 8) | m_cellPtrs[i][4+5*j];
1241  }
1242 
1243  void Parse(void) const;
1244  QString toString(void) const override; // MPEGDescriptor
1245 
1246  private:
1247  mutable std::vector<const unsigned char*> m_cellPtrs; // used to parse
1248  mutable std::vector<const unsigned char*> m_subCellPtrs; // used to parse
1249 };
1250 
1251 // DVB Bluebook A038 (Feb 2019) p 100 0x7f 0x05
1253 {
1254  public:
1256  const unsigned char *data, int len = 300) :
1257  MPEGDescriptor(data, len, DescriptorID::extension)
1258  {
1260  {
1261  m_data = nullptr;
1262  }
1263  }
1264  // Name bits loc expected value
1265  // descriptor_tag 8 0.0 0x7f extension
1266  // descriptor_length 8 1.0
1267  // descriptor_tag_extension 8 2.0 0x05 sh_delivery_system
1268 
1269  //
1270  // TBD
1271  //
1272 
1273  QString toString(void) const override; // MPEGDescriptor
1274 };
1275 
1276 // DVB Bluebook A038 (Feb 2019) p 115 0x7F 0x06
1278 {
1279  public:
1281  const unsigned char *data, int len = 300) :
1282  MPEGDescriptor(data, len, DescriptorID::extension)
1283  {
1285  {
1286  m_data = nullptr;
1287  }
1288  }
1289  // Name bits loc expected value
1290  // descriptor_tag 8 0.0 0x7f extension
1291  // descriptor_length 8 1.0
1292  // descriptor_tag_extension 8 2.0 0x06 supplementary_audio_descriptor
1293 
1294  // mix_type 1 3.0
1295  uint MixType(void) const { return m_data[3] & 0x1; }
1296 
1297  // editorial_classification 5 3.1
1298  uint EditorialClassification(void) const { return (m_data[3] >> 1 ) & 0x1F; }
1299 
1300  // reserved_future_use 1 3.6
1301  uint ReservedFutureUse(void) const { return (m_data[3] >> 6 ) & 0x1; }
1302 
1303  // language_code_present 1 3.7
1304  uint LanguageCodePresent(void) const { return (m_data[3] >> 7 ) & 0x1; }
1305 
1306  // ISO_639_language_code 24 4.0
1307  int LanguageKey(void) const
1308  { return iso639_str3_to_key(&m_data[4]); }
1309  QString LanguageString(void) const
1310  { return iso639_key_to_str3(LanguageKey()); }
1311 
1312  QString toString(void) const override; // MPEGDescriptor
1313 };
1314 
1315 // DVB Bluebook A038 (Feb 2019) p 113 0x7F 0x07
1317 {
1318  public:
1320  const unsigned char *data, int len = 300) :
1321  MPEGDescriptor(data, len, DescriptorID::extension)
1322  {
1324  {
1325  m_data = nullptr;
1326  }
1327  }
1328  // Name bits loc expected value
1329  // descriptor_tag 8 0.0 0x7f extension
1330  // descriptor_length 8 1.0
1331  // descriptor_tag_extension 8 2.0 0x07 network_change_notify_descriptor
1332 
1333  QString toString(void) const override; // MPEGDescriptor
1334 };
1335 
1336 // DVB Bluebook A038 (Feb 2019) p 112 0x7F 0x08
1338 {
1339  public:
1341  const unsigned char *data, int len = 300) :
1342  MPEGDescriptor(data, len, DescriptorID::extension)
1343  {
1345  {
1346  m_data = nullptr;
1347  }
1348  }
1349  // Name bits loc expected value
1350  // descriptor_tag 8 0.0 0x7f extension
1351  // descriptor_length 8 1.0
1352  // descriptor_tag_extension 8 2.0 0x08 message_descriptor
1353 
1354  // message_id 8 3.0
1355  uint MessageID(void) const { return m_data[3]; }
1356 
1357  // ISO_639_language_code 24 4.0
1358  int LanguageKey(void) const
1359  { return iso639_str3_to_key(&m_data[4]); }
1360  QString LanguageString(void) const
1361  { return iso639_key_to_str3(LanguageKey()); }
1362 
1363  // text_char 8 7.0
1364  QString Message(void) const
1365  { return dvb_decode_text(m_data+7, DescriptorLength()-5); }
1366 
1367  QString toString(void) const override; // MPEGDescriptor
1368 };
1369 
1370 // DVB Bluebook A038 (Feb 2019) p 117
1372 {
1373  public:
1375  const unsigned char *data, int len = 300) :
1376  MPEGDescriptor(data, len, DescriptorID::extension)
1377  {
1379  {
1380  m_data = nullptr;
1381  }
1382  }
1383  // Name bits loc expected value
1384  // descriptor_tag 8 0.0 0x7f extension
1385  // descriptor_length 8 1.0 4 or more
1386  // descriptor_tag_extension 8 2.0 0x09 target_region
1387 
1388  // country_code 24 3.0 e.g. "GBR"
1389  uint CountryCode(void) const
1390  {
1391  return ((m_data[3] << 16) | (m_data[4] << 8) | m_data[5]);
1392  }
1393  QString CountryCodeString(void) const
1394  {
1395  std::array<QChar,3> code
1396  { QChar(m_data[3]), QChar(m_data[4]), QChar(m_data[5]) };
1397  return QString(code.data(), 3);
1398  }
1399  //
1400  // TBD
1401  //
1402  QString toString(void) const override; // MPEGDescriptor
1403 };
1404 
1405 // DVB Bluebook A038 (Feb 2019) p 118
1407 {
1408  public:
1410  const unsigned char *data, int len = 300) :
1411  MPEGDescriptor(data, len, DescriptorID::extension)
1412  {
1414  {
1415  m_data = nullptr;
1416  }
1417  }
1418  // Name bits loc expected value
1419  // descriptor_tag 8 0.0 0x7f extension
1420  // descriptor_length 8 1.0 7 or more
1421  // descriptor_tag_extension 8 2.0 0x0A target_region_name
1422 
1423  // country_code 24 3.0 e.g. "GBR"
1424  uint CountryCode(void) const
1425  {
1426  return ((m_data[3] << 16) | (m_data[4] << 8) | m_data[5]);
1427  }
1428  QString CountryCodeString(void) const
1429  {
1430  std::array<QChar,3> code
1431  { QChar(m_data[3]), QChar(m_data[4]), QChar(m_data[5]) };
1432  return QString(code.data(), 3);
1433  }
1434 
1435  // ISO_639_language_code 24 6.0
1436  int LanguageKey(void) const
1437  { return iso639_str3_to_key(&m_data[6]); }
1438  QString LanguageString(void) const
1439  { return iso639_key_to_str3(LanguageKey()); }
1440 
1441  //
1442  // TBD
1443  //
1444  QString toString(void) const override; // MPEGDescriptor
1445 };
1446 
1447 // DVB Bluebook A038 (Feb 2019) p 115 0x7F 0x0B
1449 {
1450  public:
1452  const unsigned char *data, int len = 300) :
1453  MPEGDescriptor(data, len, DescriptorID::extension)
1454  {
1456  {
1457  m_data = nullptr;
1458  }
1459  }
1460  // Name bits loc expected value
1461  // descriptor_tag 8 0.0 0x7f extension
1462  // descriptor_length 8 1.0 7
1463  // descriptor_tag_extension 8 2.0 0x0B service_relocated
1464 
1465  // old_original_network_id 16 3.0
1466  // old_transport_stream_id 16 5.0
1467  // old_service_id 16 7.0
1468  uint OldOriginalNetworkID(void) const { return (m_data[3] << 8) | m_data[4]; }
1469  uint OldTransportID(void) const { return (m_data[5] << 8) | m_data[6]; }
1470  uint OldServiceID(void) const { return (m_data[7] << 8) | m_data[8]; }
1471 
1472  QString toString(void) const override; // MPEGDescriptor
1473 };
1474 
1475 // DVB Bluebook A038 (Feb 2019) p 98
1477 {
1478  public:
1480  const unsigned char *data, int len = 300) :
1481  MPEGDescriptor(data, len, DescriptorID::extension)
1482  {
1484  {
1485  m_data = nullptr;
1486  }
1487  }
1488  // Name bits loc expected value
1489  // descriptor_tag 8 0.0 0x7f extension
1490  // descriptor_length 8 1.0 9
1491  // descriptor_tag_extension 8 2.0 0x0D c2_delivery_system
1492 
1493  // plp_id 8 3.0
1494  uint PlpID(void) const
1495  {
1496  return m_data[3];
1497  }
1498 
1499  // data_slice_id 8 4.0
1500  uint DataSliceID(void) const
1501  {
1502  return m_data[4];
1503  }
1504 
1505  // C2_System_tuning_frequency 32 5.0
1506  uint Frequency(void) const
1507  {
1508  return ((m_data[5]<<24) | (m_data[6]<<16) |
1509  (m_data[7]<<8) | (m_data[8]));
1510  }
1511 
1512  //
1513  // TBD
1514  //
1515 
1516  QString toString(void) const override; // MPEGDescriptor
1517 };
1518 
1519 // DVB Bluebook A038 (Feb 2019) p 108
1521 {
1522  public:
1524  const unsigned char *data, int len = 300) :
1525  MPEGDescriptor(data, len, DescriptorID::extension)
1526  {
1528  {
1529  m_data = nullptr;
1530  }
1531  }
1532  // Name bits loc expected value
1533  // descriptor_tag 8 0.0 0x7f extension
1534  // descriptor_length 8 1.0
1535  // descriptor_tag_extension 8 2.0 0x17 s2x_delivery_system
1536 
1537  //
1538  // TBD
1539  //
1540 
1541  QString toString(void) const override; // MPEGDescriptor
1542 };
1543 
1544 // DVB Bluebook A038 (Sept 2011) p 58
1546 {
1547  public:
1548  explicit DSNGDescriptor(const unsigned char *data, int len = 300) :
1549  MPEGDescriptor(data, len, DescriptorID::dsng) { }
1550  // Name bits loc expected value
1551  // descriptor_tag 8 0.0 0x68
1552  // descriptor_length 8 1.0
1553  // for (i=0;i<N;i++) { byte 8 }
1554 };
1555 
1556 // DVB Bluebook A038 (Sept 2011) p 58
1558 {
1559  public:
1560  explicit ExtendedEventDescriptor(const unsigned char *data, int len = 300) :
1561  MPEGDescriptor(data, len, DescriptorID::extended_event) { }
1562  // Name bits loc expected value
1563  // descriptor_tag 8 0.0 0x4e
1564  // descriptor_length 8 1.0
1565 
1566  // descriptor_number 4 2.0
1567  uint DescriptorNumber(void) const { return m_data[2] >> 4; }
1568  // last_number 4 2.4
1569  uint LastNumber(void) const { return m_data[2] & 0xf; }
1570  // ISO_639_language_code 24 3.0
1571  int LanguageKey(void) const
1572  { return iso639_str3_to_key(&m_data[3]); }
1573  QString LanguageString(void) const
1574  { return iso639_key_to_str3(LanguageKey()); }
1575  int CanonicalLanguageKey(void) const
1576  { return iso639_key_to_canonical_key(LanguageKey()); }
1577  QString CanonicalLanguageString(void) const
1578  { return iso639_key_to_str3(CanonicalLanguageKey()); }
1579  // length_of_items 8 6.0
1580  uint LengthOfItems(void) const { return m_data[6]; }
1581  // for ( i=0;i<N;i++)
1582  // {
1583  // item_description_len 8 0.0+p
1584  // for (j=0;j<N;j++) { item_desc_char 8 }
1585  // item_length 8 1.0+p2
1586  // for (j=0;j<N;j++) { item_char 8 }
1587  // }
1588  QMultiMap<QString,QString> Items(void) const;
1589  // text_length 8
1590  uint TextLength(void) const { return m_data[7 + LengthOfItems()]; }
1591  // for (i=0; i<N; i++) { text_char 8 }
1592  QString Text(void) const
1593  { return dvb_decode_text(&m_data[8 + LengthOfItems()], TextLength()); }
1594 
1595  // HACK beg -- Pro7Sat is missing encoding
1596  QString Text(const enc_override &encoding_override) const
1597  {
1598  return dvb_decode_text(&m_data[8 + LengthOfItems()], TextLength(),
1599  encoding_override);
1600  }
1601  // HACK end -- Pro7Sat is missing encoding
1602 };
1603 
1604 // DVB Bluebook A038 (Sept 2011) p 60
1606 {
1607  public:
1608  explicit FrequencyListDescriptor(const unsigned char *data, int len = 300) :
1609  MPEGDescriptor(data, len, DescriptorID::frequency_list) { }
1610  // Name bits loc expected value
1611  // descriptor_tag 8 0.0 0x62
1612  // descriptor_length 8 1.0
1613 
1614  // reserved_future_use 6 2.0
1615  // coding_type 2 2.6
1616  enum
1617  {
1622  };
1623  uint CodingType(void) const { return m_data[2] & 0x3; }
1624  // for (i=0;I<N;i++)
1625  // {
1626  // centre_frequency 32
1627  // }
1628  uint FrequencyCount() const { return DescriptorLength()>>2; }
1629  unsigned long long Frequency(uint i) const
1630  {
1632  {
1633  return (((unsigned long long)m_data[i*4+3]<<24) |
1634  (m_data[i*4+4]<<16) |
1635  (m_data[i*4+5]<<8) |
1636  (m_data[i*4+6]));
1637  }
1638  return byte4BCD2int(m_data[i*4+3], m_data[i*4+4],
1639  m_data[i*4+5], m_data[i*4+6]);
1640  }
1641  unsigned long long FrequencyHz(uint i) const
1642  {
1643  return Frequency(i) *
1644  ((kCodingTypeTerrestrial == CodingType()) ? 10 : 100);
1645  }
1646 
1647  QString toString(void) const override; // MPEGDescriptor
1648 };
1649 
1650 // DVB Bluebook A038 (Sept 2011) p 70
1651 // ETSI EN 300 468 p 58
1653 {
1654  public:
1655  explicit LocalTimeOffsetDescriptor(const unsigned char *data, int len = 300) :
1656  MPEGDescriptor(data, len, DescriptorID::local_time_offset) { }
1657  // Name bits loc expected value
1658  // descriptor_tag 8 0.0 0x58
1659  // descriptor_length 8 1.0
1660  uint Count(void) const { return DescriptorLength() / 13; }
1661  // for(i=0;i<N;i++)
1662  // {
1663  // country_code 24 0.0+p
1665  {
1666  int o = 2 + i*13;
1667  return ((m_data[o] << 16) | (m_data[o+1] << 8) | m_data[o+2]);
1668  }
1669  QString CountryCodeString(uint i) const
1670  {
1671  int o = 2 + i*13;
1672  std::array<QChar,3> code
1673  { QChar(m_data[o]), QChar(m_data[o+1]), QChar(m_data[o+2]) };
1674  return QString(code.data(), 3);
1675  }
1676  // country_region_id 6 3.0+p
1677  uint CountryRegionId(uint i) const { return m_data[2 + i*13 + 3] >> 2; }
1678  // reserved 1 3.6+p
1679  // local_time_off_polarity 1 3.7+p
1682  { return (m_data[2 + i*13 + 3] & 0x01) != 0; }
1683  // local_time_offset 16 4.0+p
1685  { return (m_data[2 + i*13 + 4] << 8) | m_data[2 + i*13 + 5]; }
1687  { return (LocalTimeOffsetPolarity(i) ? -1 : +1) * LocalTimeOffset(i); }
1688  // time_of_change 40 6.0+p
1689  // TODO decode this
1690  // next_time_offset 16 11.0+p
1692  { return (m_data[2 + i*13 + 11]<<8) | m_data[2 + i*13 + 12]; }
1693  // } 13.0
1694  QString toString(void) const override; // MPEGDescriptor
1695 };
1696 
1697 // DVB Bluebook A038 (Sept 2011) p 71
1699 {
1700  public:
1701  explicit MosaicDescriptor(const unsigned char *data, int len = 300) :
1702  MPEGDescriptor(data, len, DescriptorID::mosaic) { }
1703  // Name bits loc expected value
1704  // descriptor_tag 8 0.0 0x51
1705  // descriptor_length 8 1.0
1706 
1707  // mosaic_entry_point 1 2.0
1708  // num_horiz_elem_cells 3 2.1
1709  // reserved_future_use 1 2.4
1710  // num_vert_elem_cells 3 2.5
1711  // for (i=0;i<N; i++)
1712  // {
1713  // logical_cell_id 6 0.0+p
1714  // reserved_future_use 7 0.6+p
1715  // logical_cell_pres_info 3 1.5+p
1716  // elem_cell_field_len 8 2.0+p
1717  // for (i=0; j<elementary_cell_field_length; j++)
1718  // {
1719  // reserved_future_use 2
1720  // elementary_cell_id 6
1721  // }
1722  // cell_linkage_info 8
1723  // if (cell_linkage_info == 0x01)
1724  // {
1725  // bouquet_id 16
1726  // }
1727  // if (cell_linkage_info == 0x02)
1728  // {
1729  // original_network_id 16
1730  // transport_stream_id 16
1731  // service_id 16
1732  // }
1733  // if (cell_linkage_info == 0x03)
1734  // {
1735  // original_network_id 16
1736  // transport_stream_id 16
1737  // service_id 16
1738  // }
1739  // if (cell_linkage_info == 0x04)
1740  // {
1741  // original_network_id 16
1742  // transport_stream_id 16
1743  // service_id 16
1744  // event_id 16
1745  // }
1746  // }
1747 };
1748 
1749 // DVB Bluebook A038 (Sept 2011) p 74
1751 {
1752  public:
1754  const unsigned char *data, int len = 300) :
1755  MPEGDescriptor(data, len, DescriptorID::multilingual_bouquet_name) { }
1756  // Name bits loc expected value
1757  // descriptor_tag 8 0.0 0x5c
1758  // descriptor_length 8 1.0
1759 
1760  // for (i=0;i<N;i++)
1761  // {
1762  // ISO_639_language_code 24
1763  // bouquet_name_length 8
1764  // for (j=0;j<N;j++) { char 8 }
1765  // }
1766 };
1767 
1768 // DVB Bluebook A038 (Sept 2011) p 75
1770 {
1771  public:
1773  const unsigned char *data, int len = 300) :
1774  MPEGDescriptor(data, len, DescriptorID::multilingual_network_name) { }
1775  // Name bits loc expected value
1776  // descriptor_tag 8 0.0 0x5b
1777  // descriptor_length 8 1.0
1778 
1779  // for (i=0;i<N;i++)
1780  // {
1781  // ISO_639_language_code 24
1782  // network_name_length 8
1783  // for (j=0;j<N;j++) { char 8 }
1784  // }
1785 };
1786 
1787 // DVB Bluebook A038 (Sept 2011) p 76
1789 {
1790  public:
1792  const unsigned char *data, int len = 300) :
1793  MPEGDescriptor(data, len, DescriptorID::multilingual_service_name) { }
1794  // Name bits loc expected value
1795  // descriptor_tag 8 0.0 0x5d
1796  // descriptor_length 8 1.0
1797 
1798  // for (i=0;i<N;i++)
1799  // {
1800  // ISO_639_language_code 24
1801  // service_provider_name_length 8
1802  // for (j=0;j<N;j++) { char 8 }
1803  // service_name_length 8
1804  // for (j=0;j<N;j++) { char 8 }
1805  // }
1806 };
1807 
1808 // DVB Bluebook A038 (Sept 2011) p 76
1810 {
1811  public:
1812  explicit NVODReferenceDescriptor(const unsigned char *data, int len = 300) :
1813  MPEGDescriptor(data, len, DescriptorID::nvod_reference) { }
1814  // Name bits loc expected value
1815  // descriptor_tag 8 0.0 0x4b
1816  // descriptor_length 8 1.0
1817  uint Count(void) const { return DescriptorLength() / 6; }
1818 
1819  // for (i=0;i<N;i++)
1820  // {
1821  // transport_stream_id 16
1823  { return (m_data[i * 6 + 2] << 8) | m_data[i * 6 + 3]; }
1824  // original_network_id 16
1826  { return (m_data[i * 6 + 4] << 8) | m_data[i * 6 + 5]; }
1827  // service_id 16
1829  { return (m_data[i * 6 + 6] << 8) | m_data[i * 6 + 7]; }
1830  // }
1831  QString toString(void) const override; // MPEGDescriptor
1832 };
1833 
1834 // DVB Bluebook A038 (Sept 2011) p 78
1835 // ETSI EN 300 468
1837 {
1838  public:
1839  explicit ParentalRatingDescriptor(const unsigned char *data, int len = 300) :
1840  MPEGDescriptor(data, len, DescriptorID::parental_rating) { }
1841  explicit ParentalRatingDescriptor(const std::vector<uint8_t> &data) :
1842  MPEGDescriptor(data, DescriptorID::parental_rating) { }
1843  // Name bits loc expected value
1844  // descriptor_tag 8 0.0 0x55
1845  // descriptor_length 8 1.0
1846  uint Count(void) const { return DescriptorLength() / 4; }
1847 
1848  // for (i=0; i<N; i++)
1849  // {
1850  // country_code 24
1851  // rating 8
1852  // }
1853  QString CountryCodeString(uint i) const
1854  {
1855  int o = 2 + i*4;
1856  if (i >= Count())
1857  return {""};
1858  std::array<QChar,3> code
1859  { QChar(m_data[o]), QChar(m_data[o+1]), QChar(m_data[o+2]) };
1860  return QString(code.data(), 3);
1861  }
1862  int Rating(uint i) const
1863  {
1864  if (i >= Count())
1865  {
1866  return -1;
1867  }
1868 
1869  unsigned char rawRating = m_data[2 + 3 + i*4];
1870  if (rawRating == 0)
1871  {
1872  // 0x00 - undefined
1873  return -1;
1874  }
1875  if (rawRating <= 0x0F)
1876  {
1877  // 0x01 to 0x0F - minumum age = rating + 3 years
1878  return rawRating + 3;
1879  }
1880 
1881  // 0x10 to 0xFF - defined by the broadcaster
1882  return -1;
1883  }
1884 };
1885 
1886 // DVB Bluebook A038 (Sept 2011) p 78 (see also ETSI EN 300 231 PDC)
1888 {
1889  public:
1890  explicit PDCDescriptor(const unsigned char *data, int len = 300) :
1891  MPEGDescriptor(data, len, DescriptorID::pdc, 3) { }
1892  // Name bits loc expected value
1893  // descriptor_tag 8 0.0 0x69
1894  // descriptor_length 8 1.0
1895 
1896  // reserved_future_use 4 2.0
1897  // program_id_label 20 2.4
1898  uint ProgramIdLabel(void) const
1899  { return (m_data[2] & 0x0F) << 16 | m_data[3] << 8 | m_data[4]; }
1900  QString toString(void) const override // MPEGDescriptor
1901  {
1902  return QString("PDCDescriptor program_id_label(%1)")
1903  .arg(ProgramIdLabel());
1904  }
1905 };
1906 
1907 // DVB Bluebook A038 (Sept 2011) p 79 (see also ETSI TS 101 162)
1909 {
1910  public:
1911  explicit PrivateDataSpecifierDescriptor(const unsigned char *data, int len = 300) :
1912  MPEGDescriptor(data, len, DescriptorID::private_data_specifier) { }
1913  explicit PrivateDataSpecifierDescriptor(const std::vector<uint8_t> &data) :
1914  MPEGDescriptor(data, DescriptorID::private_data_specifier) { }
1915  // Name bits loc expected value
1916  // descriptor_tag 8 0.0 0x5f
1917  // descriptor_length 8 1.0
1918 
1919  // private_data_specifier 32 2.0
1920  uint32_t PrivateDataSpecifier (void) const
1921  {
1922  return (m_data[2] << 24 | m_data[3] << 16 | m_data[4] << 8 | m_data[5]);
1923  }
1924 };
1925 
1926 // DVB Bluebook A038 (Sept 2011) p 79
1928 {
1929  public:
1930  explicit ScramblingDescriptor(const unsigned char *data, int len = 300) :
1931  MPEGDescriptor(data, len, DescriptorID::scrambling, 1) { }
1932  // Name bits loc expected value
1933  // descriptor_tag 8 0.0 0x65
1934  // descriptor_length 8 1.0
1935 
1936  // scrambling_mode 8 2.0
1937  uint ScramblingMode(void) const { return m_data[2]; }
1938  QString toString(void) const override // MPEGDescriptor
1939  {
1940  return QString("ScramblingDescriptor scrambling_mode(%1)")
1941  .arg(ScramblingMode());
1942  }
1943 };
1944 
1945 // DVB Bluebook A038 (Feb 2019) p 83, Table 89: Service type coding
1947 {
1948  public:
1949  explicit ServiceDescriptorMapping(const uint service_type) { m_serviceType = service_type; }
1950  enum
1951  {
1960  // reserved for future use = 0x09,
1969  // reserved for future use = 0x12 to 0x15
1981  // reserved for future use = 0x21 to 0x7F
1982  // user defined = 0x80 to 0xFE
1983  // reserved for future use = 0xFF
1984  // User Defined descriptors for Dish network
1998 
1999  };
2000  uint ServiceType(void) const { return m_serviceType; }
2001  bool IsDTV(void) const
2002  {
2003  return ((ServiceType() == kServiceTypeDigitalTelevision) ||
2005  IsHDTV() ||
2006  IsUHDTV() ||
2020  }
2021  bool IsDigitalAudio(void) const
2022  {
2023  return
2026  }
2027  bool IsHDTV(void) const
2028  {
2029  return
2033  }
2034  bool IsUHDTV(void) const
2035  {
2036  return
2039  }
2040  bool IsTeletext(void) const
2041  {
2043  }
2044  QString toString(void) const;
2045 
2046  private:
2048 };
2049 
2050 // DVB Bluebook A038 (Feb 2019) p 82
2052 {
2053  public:
2054  explicit ServiceDescriptor(const unsigned char *data, int len = 300) :
2055  MPEGDescriptor(data, len, DescriptorID::service) { }
2056  // Name bits loc expected value
2057  // descriptor_tag 8 0.0 0x48
2058  // descriptor_length 8 1.0
2059 
2060  // service_type 8 2.0
2061  uint ServiceType(void) const { return m_data[2]; }
2062  // svc_provider_name_len 8 3.0
2063  uint ServiceProviderNameLength(void) const { return m_data[3]; }
2064  // for (i=0;i<N;I++) { char 8 }
2065  QString ServiceProviderName(void) const
2067  QString ServiceProviderShortName(void) const
2068  {
2070  }
2071  // service_name_length 8
2073  { return m_data[4 + ServiceProviderNameLength()]; }
2074  // for (i=0;i<N;I++) { char 8 }
2075  QString ServiceName(void) const
2076  {
2078  ServiceNameLength());
2079  }
2080  QString ServiceShortName(void) const
2081  {
2083  ServiceNameLength());
2084  }
2085  bool IsDTV(void) const
2086  { return ServiceDescriptorMapping(ServiceType()).IsDTV(); }
2087  bool IsDigitalAudio(void) const
2089  bool IsHDTV(void) const
2091  bool IsTeletext(void) const
2093 
2094  QString toString(void) const override // MPEGDescriptor
2095  {
2096  return QString("ServiceDescriptor: %1 %2(0x%3)")
2097  .arg(ServiceName(),
2099  .arg(ServiceType(),2,16,QChar('0'));
2100  }
2101 };
2102 
2103 // DVB Bluebook A038 (Feb 2019) p 84
2105 {
2106  public:
2107  explicit ServiceAvailabilityDescriptor(const unsigned char *data, int len = 300) :
2108  MPEGDescriptor(data, len, DescriptorID::service_availability) { }
2109  // Name bits loc expected value
2110  // descriptor_tag 8 0.0 0x72
2111  // descriptor_length 8 1.0
2112 
2113  // availability_flag 1 2.0
2114  // reserved 7 2.1
2115  // for (i=0;i<N;i++) { cell_id 16 }
2116 };
2117 
2118 // DVB Bluebook A038 (Feb 2019) p 84
2120 {
2121  public:
2122  explicit ServiceListDescriptor(const unsigned char *data, int len = 300) :
2123  MPEGDescriptor(data, len, DescriptorID::service_list) { }
2124  // Name bits loc expected value
2125  // descriptor_tag 8 0.0 0x41
2126  // descriptor_length 8 1.0
2127 
2128  // for (i=0;i<N;I++)
2129  // {
2130  // service_id 16 0.0+p
2131  // service_type 8 2.0+p
2132  // }
2133  uint ServiceCount(void) const { return DescriptorLength() / 3; }
2134 
2136  { return (m_data[2+i*3] << 8) | m_data[3+i*3]; }
2137 
2138  uint ServiceType(uint i) const { return m_data[4+i*3]; }
2139 
2140  QString toString(void) const override // MPEGDescriptor
2141  {
2142  QString str = QString("ServiceListDescriptor: %1 Services")
2143  .arg(ServiceCount());
2144  for (uint i=0; i<ServiceCount(); i++)
2145  {
2146  str.append("\n");
2147  str.append(QString(" Service (%1) Type%2 (0x%3)")
2148  .arg(ServiceID(i))
2150  .arg(ServiceType(i),2,16,QChar('0')));
2151  }
2152  return str;
2153  }
2154 };
2155 
2156 // DVB Bluebook A038 (Sept 2011) p 82
2158 {
2159  public:
2160  explicit ServiceMoveDescriptor(const unsigned char *data, int len = 300) :
2161  MPEGDescriptor(data, len, DescriptorID::service_move) { }
2162  // Name bits loc expected value
2163  // descriptor_tag 8 0.0 0x60
2164  // descriptor_length 8 1.0
2165 
2166  // new_original_network_id 16 2.0
2167  // new_transport_stream_id 16 4.0
2168  // new_service_id 16 6.0
2169 };
2170 
2171 // DVB Bluebook A038 (Sept 2011) p 83
2173 {
2174  public:
2175  explicit ShortEventDescriptor(const unsigned char *data, int len = 300) :
2176  MPEGDescriptor(data, len, DescriptorID::short_event) { }
2177  // Name bits loc expected value
2178  // descriptor_tag 8 0.0 0x4d
2179  // descriptor_length 8 1.0
2180 
2181  // ISO_639_language_code 24 2.0
2182  int LanguageKey(void) const
2183  { return iso639_str3_to_key(&m_data[2]); }
2184  QString LanguageString(void) const
2185  { return iso639_key_to_str3(LanguageKey()); }
2186  int CanonicalLanguageKey(void) const
2188  QString CanonicalLanguageString(void) const
2190  // event_name_length 8 5.0
2191  uint EventNameLength(void) const { return m_data[5]; }
2192  // for (i=0;i<event_name_length;i++) { event_name_char 8 }
2193  QString EventName(void) const
2194  { return dvb_decode_text(&m_data[6], m_data[5]); }
2195  QString EventShortName(void) const
2196  { return dvb_decode_short_name(&m_data[6], m_data[5]); }
2197  // text_length 8
2198  uint TextLength(void) const { return m_data[6 + m_data[5]]; }
2199  // for (i=0;i<text_length;i++) { text_char 8 }
2200  QString Text(void) const
2201  { return dvb_decode_text(&m_data[7 + m_data[5]], TextLength()); }
2202 
2203  // HACK beg -- Pro7Sat is missing encoding
2204  QString EventName(const enc_override& encoding_override) const
2205  {
2206  return dvb_decode_text(&m_data[6], m_data[5],
2207  encoding_override);
2208  }
2209 
2210  QString Text(const enc_override& encoding_override) const
2211  {
2212  return dvb_decode_text(&m_data[7 + m_data[5]], TextLength(),
2213  encoding_override);
2214  }
2215  // HACK end -- Pro7Sat is missing encoding
2216 
2217  QString toString(void) const override // MPEGDescriptor
2218  { return LanguageString() + " : " + EventName() + " : " + Text(); }
2219 };
2220 
2221 // DVB Bluebook A038 (Sept 2011) p 84
2223 {
2224  public:
2225  explicit ShortSmoothingBufferDescriptor(const unsigned char *data, int len = 300) :
2226  MPEGDescriptor(data, len, DescriptorID::short_smoothing_buffer) { }
2227  // Name bits loc expected value
2228  // descriptor_tag 8 0.0 0x61
2229  // descriptor_length 8 1.0
2230 
2231  // sb_size 2 2.0
2232  // sb_leak_rate 6 2.2
2233  // for (i=0; i<N; i++)
2234  // { DVB_reserved 8 }
2235 };
2236 
2237 // DVB Bluebook A038 (Sept 2011) p 85
2241 {
2242  public:
2243  explicit StreamIdentifierDescriptor(const unsigned char *data, int len = 300) :
2244  MPEGDescriptor(data, len, DescriptorID::stream_identifier, 1) { }
2245  // Name bits loc expected value
2246  // descriptor_tag 8 0.0 0x52
2247  // descriptor_length 8 1.0 0x01
2248 
2249  // component_tag 8 2.0
2250  uint ComponentTag(void) const { return m_data[2]; }
2251  QString toString(void) const override // MPEGDescriptor
2252  {
2253  return QString("Stream Identifier Descriptor (0x52): ComponentTag=0x%1")
2254  .arg(ComponentTag(),1,16);
2255  }
2256 };
2257 
2258 // DVB Bluebook A038 (Sept 2011) p 86
2260 {
2261  public:
2262  explicit StuffingDescriptor(const unsigned char *data, int len = 300) :
2263  MPEGDescriptor(data, len, DescriptorID::dvb_stuffing) { }
2264  // Name bits loc expected value
2265  // descriptor_tag 8 0.0 0x42
2266  // descriptor_length 8 1.0
2267  // stuffing_byte * 2.0
2268  QString toString(void) const override // MPEGDescriptor
2269  {
2270  return QString("Stuffing Descriptor (0x42) length(%1)")
2271  .arg(DescriptorLength());
2272  }
2273 };
2274 
2275 // DVB Bluebook A038 (Sept 2011) p 86
2277 {
2278  public:
2279  explicit SubtitlingDescriptor(const unsigned char *data, int len = 300) :
2280  MPEGDescriptor(data, len, DescriptorID::subtitling) { }
2281  // Name bits loc expected value
2282  // descriptor_tag 8 0.0 0x59
2283  // descriptor_length 8 1.0
2284 
2285  uint StreamCount(void) const { return DescriptorLength() >> 3; }
2286  // for (i= 0;i<N;I++)
2287  // {
2288  // ISO_639_language_code 24 0.0+(i*8)
2289  int LanguageKey(uint i) const
2290  { return iso639_str3_to_key(&m_data[2 + (i<<3)]); }
2291  QString LanguageString(uint i) const
2292  { return iso639_key_to_str3(LanguageKey(i)); }
2297 
2298  // subtitling_type 8 3.0+(i*8)
2300  { return m_data[5 + (i<<3)]; }
2301  // composition_page_id 16 4.0+(i*8)
2303  { return (m_data[6 + (i<<3)] << 8) | m_data[7 + (i<<3)]; }
2304  // ancillary_page_id 16 6.0+(i*8)
2306  { return (m_data[8 + (i<<3)] << 8) | m_data[9 + (i<<3)]; }
2307  // } 8.0
2308  QString toString(void) const override; // MPEGDescriptor
2309 };
2310 
2311 // DVB Bluebook A038 (Sept 2011) p 87
2313 {
2314  public:
2315  explicit TelephoneDescriptor(const unsigned char *data, int len = 300) :
2316  MPEGDescriptor(data, len, DescriptorID::telephone) { }
2317  // Name bits loc expected value
2318  // descriptor_tag 8 0.0 0x57
2319  // descriptor_length 8 1.0
2320 
2321  // reserved_future_use 2 2.0
2322  // foreign_availability 1 2.2
2323  // connection_type 5 2.3
2324  // reserved_future_use 1 3.0
2325  // country_prefix_length 2 3.1
2326  // i18n_area_code_len 3 3.4
2327  // operator_code_length 2 3.6
2328  // reserved_future_use 1 3.7
2329  // national_area_code_len 3 4.0
2330  // core_number_length 4 4.4
2331  //
2332  // for (i=0; i<N; i++)
2333  // { country_prefix_char 8 }
2334  // for (i=0; i<N; i++)
2335  // { international_area_code_char 8 }
2336  // for (i=0; i<N; i++)
2337  // { operator_code_char 8 }
2338  // for (i=0; i<N; i++)
2339  // { national_area_code_char 8 }
2340  // for (i=0; i<N; i++)
2341  // { core_number_char 8 }
2342 };
2343 
2344 // DVB Bluebook A038 (Sept 2011) p 88
2346 {
2347  public:
2348  explicit TeletextDescriptor(const unsigned char *data, int len = 300) :
2349  MPEGDescriptor(data, len, DescriptorID::teletext) { }
2350  // Name bits loc expected value
2351  // descriptor_tag 8 0.0 0x56
2352  // descriptor_length 8 1.0
2353 
2354  uint StreamCount(void) const { return DescriptorLength() / 5; }
2355 
2356  // for (i=0; i<N; i++)
2357  // {
2358  // ISO_639_language_code 24 0.0
2359  int LanguageKey(uint i) const
2360  { return iso639_str3_to_key(&m_data[2 + (i*5)]); }
2361  QString LanguageString(uint i) const
2362  { return iso639_key_to_str3(LanguageKey(i)); }
2367  // teletext_type 5 3.0
2369  { return m_data[5 + (i*5)] >> 3; }
2370  // teletext_magazine_num 3 3.5
2372  { return m_data[5 + (i*5)] & 0x7; }
2373  // teletext_page_num 8 4.0
2375  { return m_data[6 + (i*5)]; }
2376  // } 5.0
2377  QString toString(void) const override; // MPEGDescriptor
2378 };
2379 
2380 // DVB Bluebook A038 (Sept 2011) p 89
2382 {
2383  public:
2384  explicit TimeShiftedEventDescriptor(const unsigned char *data, int len = 300) :
2385  MPEGDescriptor(data, len, DescriptorID::time_shifted_event) { }
2386  // Name bits loc expected value
2387  // descriptor_tag 8 0.0 0x4f
2388  // descriptor_length 8 1.0
2389 
2390  // reference_service_id 16 2.0
2391  // reference_event_id 16 4.0
2392 };
2393 
2394 // DVB Bluebook A038 (Sept 2011) p 90
2396 {
2397  public:
2398  explicit TimeShiftedServiceDescriptor(const unsigned char *data, int len = 300) :
2399  MPEGDescriptor(data, len, DescriptorID::dvb_time_shifted_service) { }
2400  // Name bits loc expected value
2401  // descriptor_tag 8 0.0 0x4c
2402  // descriptor_length 8 1.0
2403 
2404  // reference_service_id 16 2.0
2405 };
2406 
2407 // DVB Bluebook A038 (Sept 2011) p 90
2409 {
2410  public:
2411  explicit TransportStreamDescriptor(const unsigned char *data, int len = 300) :
2412  MPEGDescriptor(data, len, DescriptorID::transport_stream) { }
2413  // Name bits loc expected value
2414  // descriptor_tag 8 0.0 0x67
2415  // descriptor_length 8 1.0
2416 
2417  // for (i=0; i<N; i++) { byte 8 }
2418  QString Data(void) const
2419  { return dvb_decode_text(&m_data[2], DescriptorLength()); }
2420  QString toString(void) const override // MPEGDescriptor
2421  { return QString("TransportStreamDescriptor data(%1)").arg(Data()); }
2422 };
2423 
2424 // DVB Bluebook A038 (Sept 2011) p 91
2426 {
2427  public:
2428  explicit VBIDataDescriptor(const unsigned char *data, int len = 300) :
2429  MPEGDescriptor(data, len, DescriptorID::vbi_data) { }
2430  // Name bits loc expected value
2431  // descriptor_tag 8 0.0 0x45
2432  // descriptor_length 8 1.0
2433 
2434  // for (i=0; i<N; i++)
2435  // {
2436  // data_service_id 8 0.0+p
2437  // data_service_length 8 1.0+p
2438  // if ((data_service_id&0x7) && data_service_id!=0x3))
2439  // {
2440  // for (i=0; i<N; i++)
2441  // {
2442  // reserved 2 2.0+p2
2443  // field_parity 1 2.2+p2
2444  // line_offset 5 2.3+p2
2445  // }
2446  // }
2447  // else
2448  // {
2449  // for (i=0; i<N; i++) { reserved 8 }
2450  // }
2451  // }
2452 };
2453 
2454 // DVB Bluebook A038 (Sept 2011) p 92
2456 {
2457  public:
2458  explicit VBITeletextDescriptor(const unsigned char *data, int len = 300) :
2459  MPEGDescriptor(data, len, DescriptorID::vbi_teletext) { }
2460  // Name bits loc expected value
2461  // descriptor_tag 8 0.0 0x46
2462  // descriptor_length 8 1.0
2463 
2464  // for (i=0;i<N;i++)
2465  // {
2466  // ISO_639_language_code 24 0.0+p
2467  // teletext_type 5 3.0+p
2468  // teletext_magazine_num 3 3.5+p
2469  // teletext_page_num 8 4.0+p
2470  // } 5.0
2471 };
2472 
2473 // DVB Bluebook A038 (Feb 2019) p 125
2475 {
2476  public:
2477  explicit PartialTransportStreamDescriptor(const unsigned char *data, int len = 300) :
2478  MPEGDescriptor(data, len, DescriptorID::partial_transport_stream) { }
2479  // Name bits loc expected value
2480  // descriptor_tag 8 0.0 0x63
2481  // descriptor_length 8 1.0
2482 
2483  // DVB_reserved_future_use 2 2.0
2484  // peak_rate 22 2.2
2485  uint PeakRate(void) const
2486  { return (m_data[2] & 0x3f) << 16 | m_data[3] << 8 | m_data[4]; }
2487  // DVB_reserved_future_use 2 5.0
2488  // minimum_overall_smoothing_rate 22 5.2
2489  uint SmoothRate(void) const
2490  { return (m_data[5] & 0x3f) << 16 | m_data[6] << 8 | m_data[7]; }
2491  // DVB_reserved_future_use 2 8.0
2492  // maximum_overall_smoothing_buffer 14 8.2
2493  uint SmoothBuf(void) const { return ((m_data[8] & 0x3f) << 8) | m_data[9]; }
2494  QString toString(void) const override; // MPEGDescriptor
2495 };
2496 
2497 
2498 // a_52a.pdf p125 Table A7 (for DVB)
2499 // DVB Bluebook A038 (Feb 2019) p 145
2501 {
2502  public:
2503  explicit AC3Descriptor(const unsigned char *data, int len = 300) :
2504  MPEGDescriptor(data, len, DescriptorID::ac3) { }
2505  // Name bits loc expected value
2506  // descriptor_tag 8 0.0 0x6A
2507  // descriptor_length 8 1.0
2508 
2509  // component_type_flag 1 2.0
2510  bool HasComponentType(void) const { return ( m_data[2] & 0x80 ) != 0; }
2511  // bsid_flag 1 2.1
2512  bool HasBSID(void) const { return ( m_data[2] & 0x40 ) != 0; }
2513  // mainid_flag 1 2.2
2514  bool HasMainID(void) const { return ( m_data[2] & 0x20 ) != 0; }
2515  // asvc_flag 1 2.3
2516  bool HasASVC(void) const { return ( m_data[2] & 0x10 ) != 0; }
2517  // reserved_flags 4 2.4
2518  // if (component_type_flag == 1)
2519  // { component_type 8 uimsbf }
2520  uint ComponentType(void) const { return m_data[3]; }
2521  // if (bsid_flag == 1)
2522  // { bsid 8 uimsbf }
2523  uint BSID(void) const
2524  { return (HasComponentType()) ? m_data[4] : m_data[3]; }
2525  // if (mainid_flag == 1)
2526  // { mainid 8 uimsbf }
2527  uint MainID(void) const
2528  {
2529  int offset = 3;
2530  offset += (HasComponentType()) ? 1 : 0;
2531  offset += (HasBSID()) ? 1 : 0;
2532  return m_data[offset];
2533  }
2534  // if (asvc_flag==1)
2535  // { asvc 8 uimsbf }
2536  uint ASVC(void) const
2537  {
2538  int offset = 3;
2539  offset += (HasComponentType()) ? 1 : 0;
2540  offset += (HasBSID()) ? 1 : 0;
2541  offset += (HasMainID()) ? 1 : 0;
2542  return m_data[offset];
2543  }
2544  // for (I=0;I<N;I++)
2545  // { additional_info[i] N*8 uimsbf }
2546  //};
2547  QString toString(void) const override; // MPEGDescriptor
2548 };
2549 
2550 static QString coderate_inner(uint coderate)
2551 {
2552  switch (coderate)
2553  {
2554  case 0x0: return "auto"; // not actually defined in spec
2555  case 0x1: return "1/2";
2556  case 0x2: return "2/3";
2557  case 0x3: return "3/4";
2558  case 0x4: return "5/6";
2559  case 0x5: return "7/8";
2560  case 0x8: return "8/9";
2561  case 0xf: return "none";
2562  default: return "auto"; // not actually defined in spec
2563  }
2564 }
2565 
2575 {
2576  public:
2577  explicit DVBLogicalChannelDescriptor(const unsigned char *data, int len = 300) :
2578  MPEGDescriptor(data, len, PrivateDescriptorID::dvb_logical_channel_descriptor) { }
2579  // Name bits loc expected value
2580  // descriptor_tag 8 0.0 0x83
2581  // descriptor_length 8 1.0
2582 
2583  uint ChannelCount(void) const { return DescriptorLength() >> 2; }
2584 
2586  { return (m_data[2 + (i<<2)] << 8) | m_data[3 + (i<<2)]; }
2587 
2589  { return ((m_data[4 + (i<<2)] << 8) | m_data[5 + (i<<2)]) & 0x3ff; }
2590 
2591  QString toString(void) const override; // MPEGDescriptor
2592 };
2593 
2603 {
2604  public:
2605  explicit DVBSimulcastChannelDescriptor(const unsigned char *data, int len = 300) :
2606  MPEGDescriptor(data, len, PrivateDescriptorID::dvb_simulcast_channel_descriptor) { }
2607  // Name bits loc expected value
2608  // descriptor_tag 8 0.0 0x88
2609  // descriptor_length 8 1.0
2610 
2611  uint ChannelCount(void) const { return DescriptorLength() >> 2; }
2612 
2614  { return (m_data[2 + (i<<2)] << 8) | m_data[3 + (i<<2)]; }
2615 
2617  { return ((m_data[4 + (i<<2)] << 8) | m_data[5 + (i<<2)]) & 0x3ff; }
2618 
2619  QString toString(void) const override; // MPEGDescriptor
2620 };
2621 
2633 {
2634  public:
2635  explicit FreesatLCNDescriptor(const unsigned char *data, int len = 300) :
2636  MPEGDescriptor(data, len, PrivateDescriptorID::freesat_lcn_table)
2637  {
2639 
2640  const unsigned char *payload = &data[2];
2641 
2642  uint offset = 0;
2643  while ((offset + 5 < DescriptorLength()) &&
2644  (offset + 5 + payload[offset+4] <= DescriptorLength()))
2645  {
2646  m_entries.push_back(&payload[offset]);
2647  offset += 5 + payload[offset+4];
2648  }
2649  }
2650  // Name bits loc expected value
2651  // descriptor_tag 8 0.0 0xd3
2652  // descriptor_length 8 1.0
2653  // for (i=0;i<N;i++) {
2654  // service_id 16 0.0+p
2655  // chan_id 15 2.1+p
2656  // length 8 4.0+p
2657  // for (j=0;j<N;j++) {
2658  // unknown 4 0.0+p2
2659  // logical_channel_number 12 0.4+p2
2660  // region_id 16 2.0+p2
2661  // }
2662  // }
2663 
2664  uint ServiceCount(void) const
2665  { return m_entries.size(); }
2666 
2667  uint ServiceID(int i) const
2668  { return *m_entries[i] << 8 | *(m_entries[i]+1); }
2669 
2670  uint ChanID(int i) const
2671  { return (*(m_entries[i] + 2) << 8 | *(m_entries[i] + 3)) & 0x7FFF; }
2672 
2673  uint LCNCount(int i) const
2674  { return *(m_entries[i] + 4) / 4; }
2675 
2676  uint LogicalChannelNumber(int i, int j) const
2677  { return (*(m_entries[i] + 5 + j*4) << 8 | *(m_entries[i] + 5 + j*4 + 1)) & 0xFFF; }
2678 
2679  uint RegionID(int i, int j) const
2680  { return *(m_entries[i] + 5 + j*4 + 2) << 8 | *(m_entries[i] + 5 + j*4 + 3); }
2681 
2682  QString toString(void) const override; // MPEGDescriptor
2683 
2684  private:
2686 };
2687 
2698 {
2699  public:
2700  explicit FreesatRegionDescriptor(const unsigned char *data, int len = 300) :
2701  MPEGDescriptor(data, len, PrivateDescriptorID::freesat_region_table)
2702  {
2704 
2705  const unsigned char *payload = &data[2];
2706 
2707  uint offset = 0;
2708  while ((offset + 6 < DescriptorLength()) &&
2709  (offset + 6 + payload[offset+5] <= DescriptorLength()))
2710  {
2711  m_entries.push_back(&payload[offset]);
2712  offset += 6 + payload[offset+5];
2713  }
2714  }
2715  // Name bits loc expected value
2716  // descriptor_tag 8 0.0 0xd4
2717  // descriptor_length 8 1.0
2718  // for (i=0;i<N;i++) {
2719  // region_id 16 0.0+p
2720  // language_code 24 2.0+p eng
2721  // text_length 8 5.0+p
2722  // for (j=0;j<N;j++) {
2723  // text_char 8
2724  // }
2725  // }
2726 
2727  uint RegionCount(void) const
2728  { return m_entries.size(); }
2729 
2730  int RegionID(uint i) const
2731  { return *m_entries[i] << 8 | *(m_entries[i]+1); }
2732 
2733  QString Language(uint i) const
2734  { return QString::fromLatin1((char *) m_entries[i] + 2, 3); }
2735 
2736  QString RegionName(uint i) const
2737  { return QString::fromLatin1((char *) m_entries[i] + 6, *(m_entries[i] + 5)); }
2738 
2739  QString toString(void) const override; // MPEGDescriptor
2740 
2741  private:
2743 };
2744 
2753 {
2754  public:
2755  explicit FreesatCallsignDescriptor(const unsigned char *data, int len = 300) :
2756  MPEGDescriptor(data, len, PrivateDescriptorID::freesat_callsign)
2757  {
2759  }
2760 
2761  // Name bits loc expected value
2762  // descriptor_tag 8 0.0 0xd8
2763  // descriptor_length 8 1.0
2764 
2765  // ISO_639_language_code 24 2.0
2766  // callsign_length 8 5.0
2767  // for (j=0;j<N;j++) {
2768  // callsign_char 8
2769 
2770  QString Language(void) const
2771  { return QString::fromLatin1((char *) m_data +2, 3); }
2772 
2773  QString Callsign(void) const
2774  { return dvb_decode_short_name(&m_data[6], m_data[5]); }
2775 
2776  QString toString(void) const override; // MPEGDescriptor
2777 };
2778 
2791 {
2792  public:
2793  explicit SkyLCNDescriptor(const unsigned char *data, int len = 300) :
2794  MPEGDescriptor(data, len, PrivateDescriptorID::sky_lcn_table)
2795  {
2797  }
2798  // Name bits loc expected value
2799  // descriptor_tag 8 0.0 0xd3
2800  // descriptor_length 8 1.0
2801  // region_id 16 2.0
2802  // for (i=0;i<N;i++) {
2803  // service_id 16 0.0+p
2804  // service_type 8 2.0+p
2805  // unknown 16 3.0+p
2806  // logical_channel_number 16 5.0+p2
2807  // unknown 16 7.0+p2
2808  // }
2809 
2810  uint RegionID(void) const
2811  { return (*(m_data + 3) != 0xFF) ? *(m_data + 3) : 0xFFFF;}
2812 
2813  uint RegionRaw(void) const
2814  { return *(m_data + 2) << 8 | *(m_data + 3);}
2815 
2816  uint ServiceCount(void) const
2817  { return (DescriptorLength() - 2) / 9; }
2818 
2819  uint ServiceID(int i) const
2820  { return *(m_data + 4 + i*9) << 8 | *(m_data + 5 + i*9); }
2821 
2822  uint ServiceType(int i) const
2823  { return *(m_data + 6 + i*9); }
2824 
2825  uint ChannelID(int i) const
2826  { return *(m_data + 7 + i*9) << 8 | *(m_data + 8 + i*9); }
2827 
2829  { return *(m_data + 9 + i*9) << 8 | *(m_data + 10 + i*9); }
2830 
2831  uint Flags(int i) const
2832  { return *(m_data + 11 + i*9) << 8 | *(m_data + 12 + i*9); }
2833 
2834  QString toString(void) const override; // MPEGDescriptor
2835 };
2836 
2837 // Descriptor layout similar to SkyLCNDescriptor
2839 {
2840  public:
2841  explicit OpenTVChannelListDescriptor(const unsigned char *data, int len = 300) :
2842  MPEGDescriptor(data, len, PrivateDescriptorID::opentv_channel_list) { }
2843  // Name bits loc expected value
2844  // descriptor_tag 8 0.0 0xB1
2845  // descriptor_length 8 1.0
2846 
2847  uint ChannelCount(void) const { return (DescriptorLength() - 2)/9; }
2848 
2849  uint RegionID() const
2850  { return (m_data[2] << 8) | m_data[3]; }
2851 
2853  { return (m_data[4 + 0 + (i*9)] << 8) | m_data[4 + 1 + (i*9)]; }
2854 
2856  { return m_data[4 + 2 + (i*9)]; }
2857 
2859  { return ((m_data[4 + 3 + (i*9)] << 8) | m_data[4 + 4 + (i*9)]); }
2860 
2862  { return ((m_data[4 + 5 + (i*9)] << 8) | m_data[4 + 6 + (i*9)]); }
2863 
2864  uint Flags(uint i) const
2865  { return ((m_data[4 + 7 + (i*9)] << 8) | m_data[4 + 8 + (i*9)]) & 0xf; }
2866 
2867  QString toString(void) const override; // MPEGDescriptor
2868 };
2869 
2870 // ETSI TS 102 323 (TV Anytime)
2872 {
2873  public:
2874  explicit DVBContentIdentifierDescriptor(const unsigned char *data, int len = 300) :
2875  MPEGDescriptor(data, len, DescriptorID::dvb_content_identifier)
2876  {
2877  size_t count = 0;
2878 
2879  m_crid.fill(nullptr);
2880 
2881  if (IsValid())
2882  {
2883  uint8_t position = 2;
2884  while (m_data[1] >= position)
2885  {
2886  size_t length = m_data[position+1];
2887  m_crid[count] = &m_data[position];
2888  count++;
2889  position+=length+2;
2890  }
2891  }
2892  m_cridCount = count;
2893  }
2894  // Name bits loc expected value
2895  // descriptor_tag 8 0.0 0x76
2896  // descriptor_length 8 1.0
2897 
2898  uint ContentType(size_t n=0) const { return m_crid[n][0] >> 2; }
2899 
2900  uint ContentEncoding(size_t n=0) const { return m_crid[n][0] & 0x03; }
2901 
2902  // A content identifier is a URI. It may contain UTF-8 encoded using %XX.
2903  QString ContentId(size_t n=0) const
2904  {
2905  // Access the array in two steps so cppcheck doesn't get confused.
2906  const uint8_t* cridN = m_crid[n];
2907  int length = cridN[1];
2908  int positionOfHash = length-1;
2909  while (positionOfHash >= 0) {
2910  if (cridN[2 + positionOfHash] == '#') {
2911  length = positionOfHash; /* remove the hash and the following IMI */
2912  break;
2913  }
2914  positionOfHash--;
2915  }
2916  return QString::fromLatin1((const char *)&m_crid[n][2], length);
2917  }
2918 
2919  size_t CRIDCount() const
2920  {
2921  return m_cridCount;
2922  }
2923 
2924  private:
2925  size_t m_cridCount;
2926  std::array<const uint8_t*,8> m_crid {};
2927 };
2928 
2929 // ETSI TS 102 323 (TV Anytime)
2931 {
2932  public:
2933  explicit DefaultAuthorityDescriptor(const unsigned char *data, int len = 300) :
2934  MPEGDescriptor(data, len, DescriptorID::default_authority) { }
2935  // Name bits loc expected value
2936  // descriptor_tag 8 0.0 0x73
2937  // descriptor_length 8 1.0
2938 
2939  QString DefaultAuthority(void) const
2940  {
2941  return QString::fromLatin1((const char *)m_data+2, m_data[1]);
2942  }
2943 
2944  QString toString(void) const override // MPEGDescriptor
2945  {
2946  return QString("DefaultAuthorityDescriptor: Authority(%1)")
2947  .arg(DefaultAuthority());
2948  }
2949 };
2950 
2951 // Draft ETSI EN 300 468 V1.16.1 (2019-05)
2952 // DVB Bluebook A038 (Feb 2019) p 59
2953 // Table 42: S2 satellite delivery system descriptor
2954 // 0x79
2956 {
2957  public:
2959  const unsigned char *data, int len = 300) :
2960  MPEGDescriptor(data, len, DescriptorID::s2_satellite_delivery_system) { }
2961  // Name bits loc expected value
2962  // descriptor_tag 8 0.0 0x79
2963  // descriptor_length 8 1.0
2964  // scrambling_sequence_selector 1 2.0
2966  { return (m_data[2] >> 7) & 0x01; }
2967 
2968  // multiple_input_stream_flag 1 2.1
2970  { return (m_data[2] >> 6) & 0x01; }
2971 
2972  // reserved_zero_future_use 1 2.2
2973  // not_timeslice_flag 1 2.3
2975  { return (m_data[2] >> 4) & 0x01; }
2976 
2977  // reserved_future_use 2 2.4
2978  // TS_GS_mode 2 2.6
2979  uint TSGSMode() const
2980  { return m_data[2] & 0x03; }
2981 
2982  // if (scrambling_sequence_selector == 1){
2983  // reserved_future_use 6 3.0
2984  // scrambling_sequence_index 18 3.6
2985  // }
2986  // if (multiple_input_stream_flag == 1){
2987  // input_stream_identifier 8 6.0
2988  // }
2989  // if (not_timeslice_flag == 0){
2990  // timeslice_number 8 7.0
2991  // }
2992 
2993  QString toString(void) const override; // MPEGDescriptor
2994 };
2995 
2996 /*
2997  * private UPC Cablecom (Austria) episode descriptor for Horizon middleware
2998  */
3000 {
3001  public:
3002  explicit PrivateUPCCablecomEpisodeTitleDescriptor(const unsigned char *data, int len = 300) :
3003  MPEGDescriptor(data, len, PrivateDescriptorID::upc_event_episode_title) { }
3004  explicit PrivateUPCCablecomEpisodeTitleDescriptor(const std::vector<uint8_t> &data) :
3005  MPEGDescriptor(data, PrivateDescriptorID::upc_event_episode_title) { }
3006  // Name bits loc expected value
3007  // descriptor_tag 8 0.0 0xa7
3008  // descriptor_length 8 1.0
3009 
3010  // ISO_639_language_code 24 2.0
3011  int LanguageKey(void) const
3012  {
3013  return iso639_str3_to_key(&m_data[2]);
3014  }
3015  QString LanguageString(void) const
3016  {
3017  return iso639_key_to_str3(LanguageKey());
3018  }
3019  int CanonicalLanguageKey(void) const
3020  {
3022  }
3023  QString CanonicalLanguageString(void) const
3024  {
3026  }
3027 
3028  uint TextLength(void) const
3029  {
3030  return m_data[1] - 3;
3031  }
3032 
3033  QString Text(void) const
3034  {
3035  return dvb_decode_text(&m_data[5], TextLength());
3036  }
3037 };
3038 
3039 #endif // DVB_DESCRIPTORS_H
AdaptationFieldDataDescriptor::AdaptationFieldDataID
uint AdaptationFieldDataID(void) const
Definition: dvbdescriptors.h:244
DescriptorID
Definition: mpegdescriptors.h:20
ServiceRelocatedDescriptor
Definition: dvbdescriptors.h:1448
ShortEventDescriptor::EventName
QString EventName(const enc_override &encoding_override) const
Definition: dvbdescriptors.h:2204
TeletextDescriptor::TeletextMagazineNum
uint TeletextMagazineNum(uint i) const
Definition: dvbdescriptors.h:2371
ServiceDescriptorMapping
Definition: dvbdescriptors.h:1946
T2DeliverySystemDescriptor::TransmissionMode
uint TransmissionMode(void) const
Definition: dvbdescriptors.h:1212
ServiceDescriptorMapping::kServiceTypeCommonInterface
@ kServiceTypeCommonInterface
Definition: dvbdescriptors.h:1964
CableDeliverySystemDescriptor::kModulationQAM256
@ kModulationQAM256
Definition: dvbdescriptors.h:786
byteBCDL2int
static constexpr uint8_t byteBCDL2int(uint8_t i)
Definition: dvbdescriptors.h:52
TerrestrialDeliverySystemDescriptor::kBandwidth8Mhz
@ kBandwidth8Mhz
Definition: dvbdescriptors.h:954
SatelliteDeliverySystemDescriptor::OrbitalPositionString
QString OrbitalPositionString(void) const
Definition: dvbdescriptors.h:847
CableDeliverySystemDescriptor::kOuterFEC_RS204_RS188
@ kOuterFEC_RS204_RS188
Definition: dvbdescriptors.h:771
OpenTVChannelListDescriptor::ChannelID
uint ChannelID(uint i) const
Definition: dvbdescriptors.h:2858
DSNGDescriptor::DSNGDescriptor
DSNGDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:1548
ParentalRatingDescriptor
Definition: dvbdescriptors.h:1836
TerrestrialDeliverySystemDescriptor::CodeRateLP
uint CodeRateLP(void) const
Definition: dvbdescriptors.h:1032
T2DeliverySystemDescriptor::TransmissionModeString
QString TransmissionModeString(void) const
Definition: dvbdescriptors.h:1213
PrivateDescriptorID::freesat_region_table
@ freesat_region_table
Definition: mpegdescriptors.h:233
LinkageDescriptor::kIP_MACNotificationService
@ kIP_MACNotificationService
Definition: dvbdescriptors.h:147
bool
bool
Definition: pxsup2dast.c:30
iso639_key_to_canonical_key
int iso639_key_to_canonical_key(int iso639_2)
Definition: iso639.cpp:118
TeletextDescriptor::TeletextDescriptor
TeletextDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2348
S2SatelliteDeliverySystemDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:670
TerrestrialDeliverySystemDescriptor::kConstellationQAM64
@ kConstellationQAM64
Definition: dvbdescriptors.h:978
LinkageDescriptor::kOriginNIT
@ kOriginNIT
Definition: dvbdescriptors.h:169
TargetRegionNameDescriptor::CountryCodeString
QString CountryCodeString(void) const
Definition: dvbdescriptors.h:1428
TeletextDescriptor::CanonicalLanguageString
QString CanonicalLanguageString(uint i) const
Definition: dvbdescriptors.h:2365
BouquetNameDescriptor::BouquetNameDescriptor
BouquetNameDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:301
T2DeliverySystemDescriptor::kGuardInterval_19_128
@ kGuardInterval_19_128
Definition: dvbdescriptors.h:1191
CableDeliverySystemDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:617
T2DeliverySystemDescriptor::kBandwidth10Mhz
@ kBandwidth10Mhz
Definition: dvbdescriptors.h:1166
MosaicDescriptor::MosaicDescriptor
MosaicDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:1701
TerrestrialDeliverySystemDescriptor::HierarchyString
QString HierarchyString(void) const
Definition: dvbdescriptors.h:1003
ComponentDescriptor::AudioProperties
uint AudioProperties(void) const
Definition: dvbdescriptors.h:499
ContentDescriptor::GetMythCategory
ProgramInfo::CategoryType GetMythCategory(uint i) const
Definition: dvbdescriptors.cpp:274
TerrestrialDeliverySystemDescriptor::GuardInterval
uint GuardInterval(void) const
Definition: dvbdescriptors.h:1048
T2DeliverySystemDescriptor::GuardIntervalString
QString GuardIntervalString(void) const
Definition: dvbdescriptors.h:1195
LocalTimeOffsetDescriptor::LocalTimeOffsetPolarity
bool LocalTimeOffsetPolarity(uint i) const
-1 if true, +1 if false (behind utc, ahead of utc, resp).
Definition: dvbdescriptors.h:1681
T2DeliverySystemDescriptor::CellIDExtension
uint CellIDExtension(uint i, uint j) const
Definition: dvbdescriptors.h:1237
TransportStreamDescriptor::Data
QString Data(void) const
Definition: dvbdescriptors.h:2418
MPEGDescriptor::DescriptorTag
uint DescriptorTag(void) const
Definition: mpegdescriptors.h:345
ServiceDescriptorMapping::kServiceTypeH264AVCHDNVODTimeShifted
@ kServiceTypeH264AVCHDNVODTimeShifted
Definition: dvbdescriptors.h:1974
TerrestrialDeliverySystemDescriptor::GuardIntervalString
QString GuardIntervalString(void) const
Definition: dvbdescriptors.h:1049
MPEGDescriptor::DescriptorLength
uint DescriptorLength(void) const
Definition: mpegdescriptors.h:346
ServiceDescriptorMapping::kServiceTypeNVODTimeShifted
@ kServiceTypeNVODTimeShifted
Definition: dvbdescriptors.h:1956
T2DeliverySystemDescriptor::OtherFrequencyFlag
uint OtherFrequencyFlag(void) const
Definition: dvbdescriptors.h:1219
ServiceDescriptorMapping::kServiceTypeH264AVCSDNVODReference
@ kServiceTypeH264AVCSDNVODReference
Definition: dvbdescriptors.h:1972
SkyLCNDescriptor::Flags
uint Flags(int i) const
Definition: dvbdescriptors.h:2831
ShortSmoothingBufferDescriptor::ShortSmoothingBufferDescriptor
ShortSmoothingBufferDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2225
ContentDescriptor::Nibble1
uint Nibble1(uint i) const
Definition: dvbdescriptors.h:624
ShortEventDescriptor::ShortEventDescriptor
ShortEventDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2175
CountryAvailabilityDescriptor
Definition: dvbdescriptors.h:651
SatelliteDeliverySystemDescriptor::OrbitalPositionFloat
double OrbitalPositionFloat() const
Definition: dvbdescriptors.h:853
ContentDescriptor::GetDescription
QString GetDescription(uint i) const
Definition: dvbdescriptors.cpp:322
TerrestrialDeliverySystemDescriptor::kCodeRate_3_4
@ kCodeRate_3_4
Definition: dvbdescriptors.h:1019
ParentalRatingDescriptor::Count
uint Count(void) const
Definition: dvbdescriptors.h:1846
TerrestrialDeliverySystemDescriptor::kGuardInterval_1_8
@ kGuardInterval_1_8
Definition: dvbdescriptors.h:1045
ComponentDescriptor::VideoProperties
uint VideoProperties(void) const
Definition: dvbdescriptors.h:436
SatelliteDeliverySystemDescriptor::IsLinearPolarization
bool IsLinearPolarization(void) const
Definition: dvbdescriptors.h:866
TerrestrialDeliverySystemDescriptor::CodeRateHP
uint CodeRateHP(void) const
Definition: dvbdescriptors.h:1023
ServiceDescriptorMapping::kServiceTypeHEVCDigitalTelevision
@ kServiceTypeHEVCDigitalTelevision
Definition: dvbdescriptors.h:1979
MultilingualNetworkNameDescriptor
Definition: dvbdescriptors.h:1769
CableDeliverySystemDescriptor::Modulation
uint Modulation(void) const
Definition: dvbdescriptors.h:788
TerrestrialDeliverySystemDescriptor::OtherFrequencyInUse
bool OtherFrequencyInUse(void) const
Definition: dvbdescriptors.h:1068
ServiceDescriptorMapping::kServiceTypeFMRadio
@ kServiceTypeFMRadio
Definition: dvbdescriptors.h:1958
CableDeliverySystemDescriptor::kInnerFEC_1_2_ConvolutionCodeRate
@ kInnerFEC_1_2_ConvolutionCodeRate
Definition: dvbdescriptors.h:810
ServiceDescriptorMapping::kServiceTypeAdvancedCodecDigitalRadioSound
@ kServiceTypeAdvancedCodecDigitalRadioSound
Definition: dvbdescriptors.h:1961
ImageIconDescriptor::IconID
uint IconID(void) const
Definition: dvbdescriptors.h:1105
mpegdescriptors.h
CableDeliverySystemDescriptor::kModulationQAM64
@ kModulationQAM64
Definition: dvbdescriptors.h:784
ComponentDescriptor::LanguageKey
int LanguageKey(void) const
Definition: dvbdescriptors.h:404
ServiceMoveDescriptor::ServiceMoveDescriptor
ServiceMoveDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2160
ServiceDescriptor::ServiceProviderName
QString ServiceProviderName(void) const
Definition: dvbdescriptors.h:2065
FrequencyListDescriptor
Definition: dvbdescriptors.h:1605
CableDeliverySystemDescriptor::kInnerFEC_7_8_ConvolutionCodeRate
@ kInnerFEC_7_8_ConvolutionCodeRate
Definition: dvbdescriptors.h:814
FreesatLCNDescriptor
Freesat Logical Channel Number descriptor.
Definition: dvbdescriptors.h:2632
FreesatLCNDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:960
ImageIconDescriptor::DescriptorNumber
uint DescriptorNumber(void) const
Definition: dvbdescriptors.h:1093
AC3Descriptor::ASVC
uint ASVC(void) const
Definition: dvbdescriptors.h:2536
TerrestrialDeliverySystemDescriptor::Bandwidth
uint Bandwidth(void) const
Definition: dvbdescriptors.h:959
LocalTimeOffsetDescriptor::NextTimeOffset
uint NextTimeOffset(uint i) const
Definition: dvbdescriptors.h:1691
LinkageDescriptor::kMobileHandOver
@ kMobileHandOver
Definition: dvbdescriptors.h:144
CountryAvailabilityDescriptor::IsAvailable
bool IsAvailable(void) const
Definition: dvbdescriptors.h:663
CableDeliverySystemDescriptor::kInnerFEC_5_6_ConvolutionCodeRate
@ kInnerFEC_5_6_ConvolutionCodeRate
Definition: dvbdescriptors.h:813
ShortEventDescriptor::Text
QString Text(const enc_override &encoding_override) const
Definition: dvbdescriptors.h:2210
LinkageDescriptor::MobileOriginTypeString
QString MobileOriginTypeString(void) const
TerrestrialDeliverySystemDescriptor::kHierarchyInfoAlpha1NativeInterleaver
@ kHierarchyInfoAlpha1NativeInterleaver
Definition: dvbdescriptors.h:992
CableDeliverySystemDescriptor::kModulationQAM128
@ kModulationQAM128
Definition: dvbdescriptors.h:785
ExtendedEventDescriptor::CanonicalLanguageKey
int CanonicalLanguageKey(void) const
Definition: dvbdescriptors.h:1575
CableDeliverySystemDescriptor::FECInner
uint FECInner(void) const
Definition: dvbdescriptors.h:818
OpenTVChannelListDescriptor::Flags
uint Flags(uint i) const
Definition: dvbdescriptors.h:2864
CellListDescriptor
Definition: dvbdescriptors.h:360
ComponentDescriptor::MP2Properties
uint MP2Properties(void) const
Definition: dvbdescriptors.h:514
TimeShiftedServiceDescriptor
Definition: dvbdescriptors.h:2395
SupplementaryAudioDescriptor::ReservedFutureUse
uint ReservedFutureUse(void) const
Definition: dvbdescriptors.h:1301
LinkageDescriptor::kCAReplacementService
@ kCAReplacementService
Definition: dvbdescriptors.h:139
LocalTimeOffsetDescriptor::LocalTimeOffsetWithPolarity
int LocalTimeOffsetWithPolarity(uint i) const
Definition: dvbdescriptors.h:1686
x2
static int x2
Definition: mythsocket.cpp:51
ExtendedEventDescriptor::LanguageString
QString LanguageString(void) const
Definition: dvbdescriptors.h:1573
LinkageDescriptor::HasMobileNetworkID
bool HasMobileNetworkID(void) const
Definition: dvbdescriptors.h:177
ShortEventDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.h:2217
T2DeliverySystemDescriptor::kTransmissionMode8k
@ kTransmissionMode8k
Definition: dvbdescriptors.h:1206
MessageDescriptor::MessageDescriptor
MessageDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:1340
ServiceDescriptorMapping::kServiceTypeDigitalRadioSound
@ kServiceTypeDigitalRadioSound
Definition: dvbdescriptors.h:1953
TerrestrialDeliverySystemDescriptor::kCodeRate_5_6
@ kCodeRate_5_6
Definition: dvbdescriptors.h:1020
TerrestrialDeliverySystemDescriptor::kBandwidth6Mhz
@ kBandwidth6Mhz
Definition: dvbdescriptors.h:956
SatelliteDeliverySystemDescriptor::kModulation8PSK
@ kModulation8PSK
Definition: dvbdescriptors.h:895
DVBContentIdentifierDescriptor::CRIDCount
size_t CRIDCount() const
Definition: dvbdescriptors.h:2919
mythtvexp.h
SatelliteDeliverySystemDescriptor::kInnerFEC_None
@ kInnerFEC_None
Definition: dvbdescriptors.h:924
build_compdb.content
content
Definition: build_compdb.py:38
CellFrequencyLinkDescriptor
Definition: dvbdescriptors.h:338
ServiceDescriptorMapping::kServiceTypeMPEG2HDDigitalTelevision
@ kServiceTypeMPEG2HDDigitalTelevision
Definition: dvbdescriptors.h:1968
ApplicationSignallingDescriptor::ApplicationType
uint ApplicationType(uint i) const
Definition: dvbdescriptors.h:227
DescriptorID::s2x_satellite_delivery_system
@ s2x_satellite_delivery_system
Definition: mpegdescriptors.h:157
ExtendedEventDescriptor::LanguageKey
int LanguageKey(void) const
Definition: dvbdescriptors.h:1571
ServiceListDescriptor::ServiceListDescriptor
ServiceListDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2122
DescriptorID::target_region
@ target_region
Definition: mpegdescriptors.h:149
CellFrequencyLinkDescriptor::CellFrequencyLinkDescriptor
CellFrequencyLinkDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:341
ComponentDescriptor::StreamContent
uint StreamContent(void) const
Definition: dvbdescriptors.h:398
ServiceMoveDescriptor
Definition: dvbdescriptors.h:2157
DataBroadcastDescriptor::LanguageKey
int LanguageKey(void) const
Definition: dvbdescriptors.h:709
dvb_decode_text
MTV_PUBLIC QString dvb_decode_text(const unsigned char *src, uint length, const enc_override &encoding_override)
Definition: dvbdescriptors.cpp:122
MessageDescriptor::LanguageString
QString LanguageString(void) const
Definition: dvbdescriptors.h:1360
NVODReferenceDescriptor::Count
uint Count(void) const
Definition: dvbdescriptors.h:1817
MessageDescriptor::MessageID
uint MessageID(void) const
Definition: dvbdescriptors.h:1355
T2DeliverySystemDescriptor::Bandwidth
uint Bandwidth(void) const
Definition: dvbdescriptors.h:1169
LinkageDescriptor::kServiceReplacementService
@ kServiceReplacementService
Definition: dvbdescriptors.h:141
ComponentDescriptor::IsAudio
bool IsAudio(void) const
Definition: dvbdescriptors.h:421
DescriptorID::network_change_notify
@ network_change_notify
Definition: mpegdescriptors.h:147
FrequencyListDescriptor::CodingType
uint CodingType(void) const
Definition: dvbdescriptors.h:1623
ServiceDescriptor::IsDTV
bool IsDTV(void) const
Definition: dvbdescriptors.h:2085
MessageDescriptor::Message
QString Message(void) const
Definition: dvbdescriptors.h:1364
ServiceDescriptorMapping::kServiceTypeEchoStarTV3
@ kServiceTypeEchoStarTV3
Definition: dvbdescriptors.h:1987
SubtitlingDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:579
CableDeliverySystemDescriptor
Definition: dvbdescriptors.h:745
ServiceDescriptorMapping::kServiceTypeMosaic
@ kServiceTypeMosaic
Definition: dvbdescriptors.h:1957
FreesatCallsignDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:995
SHDeliverySystemDescriptor
Definition: dvbdescriptors.h:1252
S2SatelliteDeliverySystemDescriptor::NotTimesliceFlag
uint NotTimesliceFlag() const
Definition: dvbdescriptors.h:2974
T2DeliverySystemDescriptor::kGuardInterval_1_128
@ kGuardInterval_1_128
Definition: dvbdescriptors.h:1190
DVBSimulcastChannelDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:928
T2DeliverySystemDescriptor::NumCells
uint NumCells(void) const
Definition: dvbdescriptors.h:1223
LinkageDescriptor::m_offset
uint m_offset
Definition: dvbdescriptors.h:208
FrequencyListDescriptor::kCodingTypeSatellite
@ kCodingTypeSatellite
Definition: dvbdescriptors.h:1619
CableDeliverySystemDescriptor::FECOuterString
QString FECOuterString(void) const
Definition: dvbdescriptors.h:774
x3
static int x3
Definition: mythsocket.cpp:52
NVODReferenceDescriptor
Definition: dvbdescriptors.h:1809
MultilingualBouquetNameDescriptor
Definition: dvbdescriptors.h:1750
ScramblingDescriptor
Definition: dvbdescriptors.h:1927
PartialTransportStreamDescriptor::PartialTransportStreamDescriptor
PartialTransportStreamDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2477
TargetRegionDescriptor::CountryCode
uint CountryCode(void) const
Definition: dvbdescriptors.h:1389
TerrestrialDeliverySystemDescriptor::Hierarchy
uint Hierarchy(void) const
Definition: dvbdescriptors.h:1000
CAIdentifierDescriptor
Definition: dvbdescriptors.h:320
SatelliteDeliverySystemDescriptor::Modulation
uint Modulation(void) const
Definition: dvbdescriptors.h:898
LinkageDescriptor::kHandOverIdentical
@ kHandOverIdentical
Definition: dvbdescriptors.h:159
FreesatCallsignDescriptor::FreesatCallsignDescriptor
FreesatCallsignDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2755
DescriptorID::sh_delivery_system
@ sh_delivery_system
Definition: mpegdescriptors.h:145
SHDeliverySystemDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:769
DVBLogicalChannelDescriptor
DVB Logical Channel Descriptor.
Definition: dvbdescriptors.h:2574
PartialTransportStreamDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:1092
ComponentDescriptor::AC3Properties
uint AC3Properties(void) const
Definition: dvbdescriptors.h:533
VBIDataDescriptor
Definition: dvbdescriptors.h:2425
FrequencyListDescriptor::FrequencyListDescriptor
FrequencyListDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:1608
TerrestrialDeliverySystemDescriptor::NativeInterleaver
bool NativeInterleaver(void) const
Definition: dvbdescriptors.h:1008
SubtitlingDescriptor::LanguageKey
int LanguageKey(uint i) const
Definition: dvbdescriptors.h:2289
T2DeliverySystemDescriptor::kGuardInterval_1_8
@ kGuardInterval_1_8
Definition: dvbdescriptors.h:1188
OpenTVChannelListDescriptor::RegionID
uint RegionID() const
Definition: dvbdescriptors.h:2849
ServiceDescriptorMapping::IsUHDTV
bool IsUHDTV(void) const
Definition: dvbdescriptors.h:2034
ShortEventDescriptor::CanonicalLanguageKey
int CanonicalLanguageKey(void) const
Definition: dvbdescriptors.h:2186
SatelliteDeliverySystemDescriptor::FrequencyRaw
uint FrequencyRaw(void) const
frequency 32 2.0
Definition: dvbdescriptors.h:835
CableDeliverySystemDescriptor::FrequencyHz
unsigned long long FrequencyHz(void) const
Definition: dvbdescriptors.h:760
NVODReferenceDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:1078
T2DeliverySystemDescriptor::SubcellInfoLoopLength
uint SubcellInfoLoopLength(uint i) const
Definition: dvbdescriptors.h:1236
ExtendedEventDescriptor::DescriptorNumber
uint DescriptorNumber(void) const
Definition: dvbdescriptors.h:1567
TeletextDescriptor::LanguageKey
int LanguageKey(uint i) const
Definition: dvbdescriptors.h:2359
PrivateUPCCablecomEpisodeTitleDescriptor::Text
QString Text(void) const
Definition: dvbdescriptors.h:3033
ServiceDescriptorMapping::kServiceTypeH264AVCFrameCompatiblePlanoStereoscopicHDNVODTimeShifted
@ kServiceTypeH264AVCFrameCompatiblePlanoStereoscopicHDNVODTimeShifted
Definition: dvbdescriptors.h:1977
enc_override
std::vector< uint8_t > enc_override
Definition: dvbdescriptors.h:40
SatelliteDeliverySystemDescriptor::kInnerFEC_2_3_ConvolutionCodeRate
@ kInnerFEC_2_3_ConvolutionCodeRate
Definition: dvbdescriptors.h:919
DefaultAuthorityDescriptor::DefaultAuthorityDescriptor
DefaultAuthorityDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2933
LocalTimeOffsetDescriptor::CountryRegionId
uint CountryRegionId(uint i) const
Definition: dvbdescriptors.h:1677
CellListDescriptor::CellListDescriptor
CellListDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:363
ShortEventDescriptor::Text
QString Text(void) const
Definition: dvbdescriptors.h:2200
DescriptorID::target_region_name
@ target_region_name
Definition: mpegdescriptors.h:150
CableDeliverySystemDescriptor::FECInnerString
QString FECInnerString(void) const
Definition: dvbdescriptors.h:819
DataBroadcastDescriptor::LanguageString
QString LanguageString(void) const
Definition: dvbdescriptors.h:711
LinkageDescriptor::kOriginSDT
@ kOriginSDT
Definition: dvbdescriptors.h:170
NetworkNameDescriptor::NetworkNameDescriptor
NetworkNameDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:77
NetworkNameDescriptor::Name
QString Name(void) const
Definition: dvbdescriptors.h:83
CAIdentifierDescriptor::CASystemCount
uint CASystemCount(void) const
Definition: dvbdescriptors.h:329
CountryAvailabilityDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.h:680
T2DeliverySystemDescriptor::TFSFlag
uint TFSFlag(void) const
Definition: dvbdescriptors.h:1220
DataBroadcastDescriptor::DataBroadcastId
uint DataBroadcastId(void) const
Definition: dvbdescriptors.h:698
ParentalRatingDescriptor::ParentalRatingDescriptor
ParentalRatingDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:1839
T2DeliverySystemDescriptor::CentreFrequency
uint CentreFrequency(int i, int j) const
Definition: dvbdescriptors.h:1232
dvb_decode_short_name
QString dvb_decode_short_name(const unsigned char *src, uint raw_length)
Definition: dvbdescriptors.cpp:219
PrivateUPCCablecomEpisodeTitleDescriptor::LanguageKey
int LanguageKey(void) const
Definition: dvbdescriptors.h:3011
DVBContentIdentifierDescriptor::ContentType
uint ContentType(size_t n=0) const
Definition: dvbdescriptors.h:2898
BouquetNameDescriptor
Definition: dvbdescriptors.h:298
CableDeliverySystemDescriptor::kModulationQAM32
@ kModulationQAM32
Definition: dvbdescriptors.h:783
DVBSimulcastChannelDescriptor::ChannelNumber
uint ChannelNumber(uint i) const
Definition: dvbdescriptors.h:2616
FrequencyListDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:546
FreesatLCNDescriptor::LCNCount
uint LCNCount(int i) const
Definition: dvbdescriptors.h:2673
T2DeliverySystemDescriptor::kBandwidth8Mhz
@ kBandwidth8Mhz
Definition: dvbdescriptors.h:1162
ContentDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:343
TerrestrialDeliverySystemDescriptor
Definition: dvbdescriptors.h:933
MultilingualBouquetNameDescriptor::MultilingualBouquetNameDescriptor
MultilingualBouquetNameDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:1753
LocalTimeOffsetDescriptor
Definition: dvbdescriptors.h:1652
LinkageDescriptor::PrivateData
const unsigned char * PrivateData(void) const
Definition: dvbdescriptors.h:202
TerrestrialDeliverySystemDescriptor::Alpha
uint Alpha(void) const
Definition: dvbdescriptors.h:1009
ServiceDescriptorMapping::kServiceTypeH264AVCFrameCompatiblePlanoStereoscopicHDNVODReference
@ kServiceTypeH264AVCFrameCompatiblePlanoStereoscopicHDNVODReference
Definition: dvbdescriptors.h:1978
DescriptorID::t2_delivery_system
@ t2_delivery_system
Definition: mpegdescriptors.h:144
ServiceListDescriptor::ServiceType
uint ServiceType(uint i) const
Definition: dvbdescriptors.h:2138
LinkageDescriptor::kTSContainingCompleteNetworkBouquetSI
@ kTSContainingCompleteNetworkBouquetSI
Definition: dvbdescriptors.h:140
T2DeliverySystemDescriptor::kTransmissionMode16k
@ kTransmissionMode16k
Definition: dvbdescriptors.h:1209
ShortEventDescriptor
Definition: dvbdescriptors.h:2172
DataBroadcastDescriptor
Definition: dvbdescriptors.h:688
DataBroadcastDescriptor::DataBroadcastDescriptor
DataBroadcastDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:691
T2DeliverySystemDescriptor::BandwidthString
QString BandwidthString(void) const
Definition: dvbdescriptors.h:1176
CableDeliverySystemDescriptor::kInnerFEC_3_4_ConvolutionCodeRate
@ kInnerFEC_3_4_ConvolutionCodeRate
Definition: dvbdescriptors.h:812
AncillaryDataDescriptor::AncillaryDataDescriptor
AncillaryDataDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:257
AnnouncementSupportDescriptor::AnnouncementSupportDescriptor
AnnouncementSupportDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:276
ServiceDescriptorMapping::m_serviceType
uint m_serviceType
Definition: dvbdescriptors.h:2047
AnnouncementSupportDescriptor
Definition: dvbdescriptors.h:273
ServiceDescriptorMapping::kServiceTypeEchoStarTV1
@ kServiceTypeEchoStarTV1
Definition: dvbdescriptors.h:1985
T2DeliverySystemDescriptor::CentreFrequency
uint CentreFrequency(uint i) const
Definition: dvbdescriptors.h:1227
OpenTVChannelListDescriptor
Definition: dvbdescriptors.h:2838
DVBContentIdentifierDescriptor::ContentEncoding
uint ContentEncoding(size_t n=0) const
Definition: dvbdescriptors.h:2900
ServiceDescriptorMapping::kServiceTypeRCS_Map
@ kServiceTypeRCS_Map
Definition: dvbdescriptors.h:1965
PDCDescriptor::PDCDescriptor
PDCDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:1890
ApplicationSignallingDescriptor::ApplicationSignallingDescriptor
ApplicationSignallingDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:215
MPEGDescriptor::IsValid
bool IsValid(void) const
Definition: mpegdescriptors.h:342
ServiceDescriptor::ServiceDescriptor
ServiceDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2054
LinkageDescriptor::kRCSMap
@ kRCSMap
Definition: dvbdescriptors.h:143
OpenTVChannelListDescriptor::ChannelCount
uint ChannelCount(void) const
Definition: dvbdescriptors.h:2847
AdaptationFieldDataDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.h:245
SubtitlingDescriptor::AncillaryPageID
uint AncillaryPageID(uint i) const
Definition: dvbdescriptors.h:2305
MessageDescriptor::LanguageKey
int LanguageKey(void) const
Definition: dvbdescriptors.h:1358
FrequencyListDescriptor::kCodingTypeTerrestrial
@ kCodingTypeTerrestrial
Definition: dvbdescriptors.h:1621
FreesatRegionDescriptor::RegionCount
uint RegionCount(void) const
Definition: dvbdescriptors.h:2727
LinkageDescriptor::ServiceID
uint ServiceID(void) const
Definition: dvbdescriptors.h:133
ServiceDescriptorMapping::ServiceType
uint ServiceType(void) const
Definition: dvbdescriptors.h:2000
T2DeliverySystemDescriptor::kGuardInterval_1_16
@ kGuardInterval_1_16
Definition: dvbdescriptors.h:1187
NVODReferenceDescriptor::ServiceId
uint ServiceId(uint i) const
Definition: dvbdescriptors.h:1828
ComponentDescriptor::HEVCProperties
uint HEVCProperties(void) const
Definition: dvbdescriptors.h:484
FreesatRegionDescriptor::FreesatRegionDescriptor
FreesatRegionDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2700
ParentalRatingDescriptor::CountryCodeString
QString CountryCodeString(uint i) const
Definition: dvbdescriptors.h:1853
ServiceDescriptor::ServiceName
QString ServiceName(void) const
Definition: dvbdescriptors.h:2075
ContentDescriptor::Count
uint Count(void) const
Definition: dvbdescriptors.h:620
PrivateUPCCablecomEpisodeTitleDescriptor
Definition: dvbdescriptors.h:2999
ServiceDescriptorMapping::kServiceTypeNimiqTV1
@ kServiceTypeNimiqTV1
Definition: dvbdescriptors.h:1989
ContentDescriptor::UserNibble
uint UserNibble(uint i) const
Definition: dvbdescriptors.h:634
PrivateUPCCablecomEpisodeTitleDescriptor::TextLength
uint TextLength(void) const
Definition: dvbdescriptors.h:3028
programinfo.h
ShortEventDescriptor::EventNameLength
uint EventNameLength(void) const
Definition: dvbdescriptors.h:2191
TerrestrialDeliverySystemDescriptor::BandwidthString
QString BandwidthString(void) const
Definition: dvbdescriptors.h:961
LinkageDescriptor::PrivateDataLength
uint PrivateDataLength(void) const
Definition: dvbdescriptors.h:204
ContentDescriptor::s_categoryDesc
static QMap< uint, QString > s_categoryDesc
Definition: dvbdescriptors.h:646
PartialTransportStreamDescriptor::SmoothRate
uint SmoothRate(void) const
Definition: dvbdescriptors.h:2489
LinkageDescriptor::TSID
uint TSID(void) const
Definition: dvbdescriptors.h:129
ServiceDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.h:2094
DataBroadcastIdDescriptor::DataBroadCastId
uint DataBroadCastId(void) const
Definition: dvbdescriptors.h:739
ContentDescriptor::UserNibble2
uint UserNibble2(uint i) const
Definition: dvbdescriptors.h:633
PrivateUPCCablecomEpisodeTitleDescriptor::PrivateUPCCablecomEpisodeTitleDescriptor
PrivateUPCCablecomEpisodeTitleDescriptor(const std::vector< uint8_t > &data)
Definition: dvbdescriptors.h:3004
SubtitlingDescriptor::CanonicalLanguageKey
int CanonicalLanguageKey(uint i) const
Definition: dvbdescriptors.h:2293
SubtitlingDescriptor::CanonicalLanguageString
QString CanonicalLanguageString(uint i) const
Definition: dvbdescriptors.h:2295
PrivateDataSpecifierDescriptor::PrivateDataSpecifierDescriptor
PrivateDataSpecifierDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:1911
S2XSatelliteDeliverySystemDescriptor
Definition: dvbdescriptors.h:1520
AC3Descriptor::HasASVC
bool HasASVC(void) const
Definition: dvbdescriptors.h:2516
AncillaryDataDescriptor
Definition: dvbdescriptors.h:254
C2DeliverySystemDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:888
SatelliteDeliverySystemDescriptor::IsWest
bool IsWest(void) const
Definition: dvbdescriptors.h:857
DVBLogicalChannelDescriptor::ChannelCount
uint ChannelCount(void) const
Definition: dvbdescriptors.h:2583
TerrestrialDeliverySystemDescriptor::Constellation
uint Constellation(void) const
Definition: dvbdescriptors.h:981
S2SatelliteDeliverySystemDescriptor::TSGSMode
uint TSGSMode() const
Definition: dvbdescriptors.h:2979
ShortEventDescriptor::EventShortName
QString EventShortName(void) const
Definition: dvbdescriptors.h:2195
ComponentDescriptor::IsVideo
bool IsVideo(void) const
Definition: dvbdescriptors.h:415
TerrestrialDeliverySystemDescriptor::kConstellationQAM256
@ kConstellationQAM256
Definition: dvbdescriptors.h:979
ServiceDescriptorMapping::IsTeletext
bool IsTeletext(void) const
Definition: dvbdescriptors.h:2040
ServiceDescriptorMapping::kServiceTypeRCS_FLS
@ kServiceTypeRCS_FLS
Definition: dvbdescriptors.h:1966
T2DeliverySystemDescriptor::kBandwidth5Mhz
@ kBandwidth5Mhz
Definition: dvbdescriptors.h:1165
CableDeliverySystemDescriptor::kModulationQAM16
@ kModulationQAM16
Definition: dvbdescriptors.h:782
FreesatLCNDescriptor::m_entries
desc_list_t m_entries
Definition: dvbdescriptors.h:2685
T2DeliverySystemDescriptor::FrequencyLoopLength
uint FrequencyLoopLength(uint i) const
Definition: dvbdescriptors.h:1225
S2SatelliteDeliverySystemDescriptor::MultipleInputStreamFlag
uint MultipleInputStreamFlag() const
Definition: dvbdescriptors.h:2969
SatelliteDeliverySystemDescriptor::kRollOff_35
@ kRollOff_35
Definition: dvbdescriptors.h:872
TerrestrialDeliverySystemDescriptor::kConstellationQAM16
@ kConstellationQAM16
Definition: dvbdescriptors.h:977
PDCDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.h:1900
ImageIconDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:689
CountryAvailabilityDescriptor::CountryAvailabilityDescriptor
CountryAvailabilityDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:654
MPEGDescriptor
Definition: mpegdescriptors.h:302
SupplementaryAudioDescriptor::SupplementaryAudioDescriptor
SupplementaryAudioDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:1280
ServiceDescriptor::IsTeletext
bool IsTeletext(void) const
Definition: dvbdescriptors.h:2091
AC3Descriptor::HasMainID
bool HasMainID(void) const
Definition: dvbdescriptors.h:2514
SatelliteDeliverySystemDescriptor::RollOffString
QString RollOffString(void) const
Definition: dvbdescriptors.h:878
TerrestrialDeliverySystemDescriptor::kHierarchyInfoAlpha2InDepthInterleaver
@ kHierarchyInfoAlpha2InDepthInterleaver
Definition: dvbdescriptors.h:997
TerrestrialDeliverySystemDescriptor::kHierarchyInfoNonHierarchicalInDepthInterleaver
@ kHierarchyInfoNonHierarchicalInDepthInterleaver
Definition: dvbdescriptors.h:995
ShortEventDescriptor::TextLength
uint TextLength(void) const
Definition: dvbdescriptors.h:2198
CableDeliverySystemDescriptor::FrequencyRaw
uint FrequencyRaw(void) const
Definition: dvbdescriptors.h:755
SubtitlingDescriptor::StreamCount
uint StreamCount(void) const
Definition: dvbdescriptors.h:2285
TeletextDescriptor::StreamCount
uint StreamCount(void) const
Definition: dvbdescriptors.h:2354
AdaptationFieldDataDescriptor::AdaptationFieldDataDescriptor
AdaptationFieldDataDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:238
ComponentDescriptor::CanonicalLanguageKey
int CanonicalLanguageKey(void) const
Definition: dvbdescriptors.h:408
DVBSimulcastChannelDescriptor::DVBSimulcastChannelDescriptor
DVBSimulcastChannelDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2605
CAIdentifierDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:1029
ParentalRatingDescriptor::Rating
int Rating(uint i) const
Definition: dvbdescriptors.h:1862
TargetRegionDescriptor
Definition: dvbdescriptors.h:1371
T2DeliverySystemDescriptor::kGuardInterval_1_32
@ kGuardInterval_1_32
Definition: dvbdescriptors.h:1186
DVBLogicalChannelDescriptor::DVBLogicalChannelDescriptor
DVBLogicalChannelDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2577
ServiceRelocatedDescriptor::OldServiceID
uint OldServiceID(void) const
Definition: dvbdescriptors.h:1470
ServiceDescriptor::ServiceNameLength
uint ServiceNameLength(void) const
Definition: dvbdescriptors.h:2072
ParentalRatingDescriptor::ParentalRatingDescriptor
ParentalRatingDescriptor(const std::vector< uint8_t > &data)
Definition: dvbdescriptors.h:1841
ServiceDescriptorMapping::kServiceTypeNimiqTV4
@ kServiceTypeNimiqTV4
Definition: dvbdescriptors.h:1992
CableDeliverySystemDescriptor::CableDeliverySystemDescriptor
CableDeliverySystemDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:748
x1
static int x1
Definition: mythsocket.cpp:50
MPEGDescriptor::m_data
const unsigned char * m_data
Definition: mpegdescriptors.h:370
SatelliteDeliverySystemDescriptor::ModulationSystem
uint ModulationSystem(void) const
Definition: dvbdescriptors.h:884
DVBLogicalChannelDescriptor::ChannelNumber
uint ChannelNumber(uint i) const
Definition: dvbdescriptors.h:2588
ServiceDescriptorMapping::kServiceTypeNimiqTV3
@ kServiceTypeNimiqTV3
Definition: dvbdescriptors.h:1991
SatelliteDeliverySystemDescriptor::kInnerFEC_1_2_ConvolutionCodeRate
@ kInnerFEC_1_2_ConvolutionCodeRate
Definition: dvbdescriptors.h:918
ServiceDescriptorMapping::kServiceTypeH264AVCMosaic
@ kServiceTypeH264AVCMosaic
Definition: dvbdescriptors.h:1962
desc_list_t
std::vector< const unsigned char * > desc_list_t
Definition: mpegdescriptors.h:18
ScramblingDescriptor::ScramblingMode
uint ScramblingMode(void) const
Definition: dvbdescriptors.h:1937
SatelliteDeliverySystemDescriptor::kModulationQAM16
@ kModulationQAM16
Definition: dvbdescriptors.h:896
MessageDescriptor
Definition: dvbdescriptors.h:1337
ServiceRelocatedDescriptor::ServiceRelocatedDescriptor
ServiceRelocatedDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:1451
TerrestrialDeliverySystemDescriptor::TerrestrialDeliverySystemDescriptor
TerrestrialDeliverySystemDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:936
byteBCD2int
static constexpr uint8_t byteBCD2int(uint8_t i)
Definition: dvbdescriptors.h:53
LinkageDescriptor
Definition: dvbdescriptors.h:92
ExtendedEventDescriptor
Definition: dvbdescriptors.h:1557
ServiceDescriptorMapping::kServiceTypeHEVCUHDDigitalTelevision
@ kServiceTypeHEVCUHDDigitalTelevision
Definition: dvbdescriptors.h:1980
ComponentDescriptor::HEAACProperties
uint HEAACProperties(void) const
Definition: dvbdescriptors.h:562
TerrestrialDeliverySystemDescriptor::ConstellationString
QString ConstellationString(void) const
Definition: dvbdescriptors.h:982
T2DeliverySystemDescriptor::SisoMiso
uint SisoMiso(void) const
Definition: dvbdescriptors.h:1151
ServiceDescriptorMapping::kServiceTypeNimiqTV6
@ kServiceTypeNimiqTV6
Definition: dvbdescriptors.h:1994
ShortEventDescriptor::CanonicalLanguageString
QString CanonicalLanguageString(void) const
Definition: dvbdescriptors.h:2188
ServiceListDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.h:2140
T2DeliverySystemDescriptor
Definition: dvbdescriptors.h:1118
ExtendedEventDescriptor::ExtendedEventDescriptor
ExtendedEventDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:1560
ExtendedEventDescriptor::TextLength
uint TextLength(void) const
Definition: dvbdescriptors.h:1590
SkyLCNDescriptor
Sky Logical Channel Number descriptor.
Definition: dvbdescriptors.h:2790
LinkageDescriptor::kHandOverAssociatedService
@ kHandOverAssociatedService
Definition: dvbdescriptors.h:161
MultilingualServiceNameDescriptor
Definition: dvbdescriptors.h:1788
SatelliteDeliverySystemDescriptor::FECInnerString
QString FECInnerString(void) const
Definition: dvbdescriptors.h:927
ServiceDescriptor::ServiceProviderShortName
QString ServiceProviderShortName(void) const
Definition: dvbdescriptors.h:2067
LinkageDescriptor::TargetEventID
uint TargetEventID(void) const
Definition: dvbdescriptors.h:193
ServiceDescriptorMapping::kServiceTypeNVODReference
@ kServiceTypeNVODReference
Definition: dvbdescriptors.h:1955
PDCDescriptor
Definition: dvbdescriptors.h:1887
ImageIconDescriptor::ImageIconDescriptor
ImageIconDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:1078
NVODReferenceDescriptor::OriginalNetworkId
uint OriginalNetworkId(uint i) const
Definition: dvbdescriptors.h:1825
NetworkNameDescriptor::ShortName
QString ShortName(void) const
Definition: dvbdescriptors.h:85
TerrestrialDeliverySystemDescriptor::Frequency
uint Frequency(void) const
Definition: dvbdescriptors.h:944
TargetRegionNameDescriptor::CountryCode
uint CountryCode(void) const
Definition: dvbdescriptors.h:1424
ComponentDescriptor::LanguageString
QString LanguageString(void) const
Definition: dvbdescriptors.h:406
PrivateDataSpecifierDescriptor::PrivateDataSpecifier
uint32_t PrivateDataSpecifier(void) const
Definition: dvbdescriptors.h:1920
DVBSimulcastChannelDescriptor
DVB HD Simulcast Logical Channel Descriptor.
Definition: dvbdescriptors.h:2602
SubtitlingDescriptor::LanguageString
QString LanguageString(uint i) const
Definition: dvbdescriptors.h:2291
StreamIdentifierDescriptor::ComponentTag
uint ComponentTag(void) const
Definition: dvbdescriptors.h:2250
ServiceDescriptorMapping::kServiceTypeDigitalTelevision
@ kServiceTypeDigitalTelevision
Definition: dvbdescriptors.h:1952
FreesatLCNDescriptor::ServiceID
uint ServiceID(int i) const
Definition: dvbdescriptors.h:2667
CountryAvailabilityDescriptor::CountryCount
uint CountryCount(void) const
Definition: dvbdescriptors.h:660
ComponentDescriptor::IsSubtitle
bool IsSubtitle(void) const
Definition: dvbdescriptors.h:434
T2DeliverySystemDescriptor::m_subCellPtrs
std::vector< const unsigned char * > m_subCellPtrs
Definition: dvbdescriptors.h:1248
BouquetNameDescriptor::BouquetShortName
QString BouquetShortName(void) const
Definition: dvbdescriptors.h:309
LinkageDescriptor::kHandOverLocalVariation
@ kHandOverLocalVariation
Definition: dvbdescriptors.h:160
VBIDataDescriptor::VBIDataDescriptor
VBIDataDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2428
LinkageDescriptor::kEventLinkage
@ kEventLinkage
Definition: dvbdescriptors.h:149
MPEGDescriptor::DescriptorTagExtension
uint DescriptorTagExtension(void) const
Definition: mpegdescriptors.h:347
ApplicationSignallingDescriptor::AITVersionNumber
uint AITVersionNumber(uint i) const
Definition: dvbdescriptors.h:229
C2DeliverySystemDescriptor::Frequency
uint Frequency(void) const
Definition: dvbdescriptors.h:1506
DSNGDescriptor
Definition: dvbdescriptors.h:1545
ServiceDescriptorMapping::kServiceTypeTeletext
@ kServiceTypeTeletext
Definition: dvbdescriptors.h:1954
SupplementaryAudioDescriptor
Definition: dvbdescriptors.h:1277
TargetRegionNameDescriptor::TargetRegionNameDescriptor
TargetRegionNameDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:1409
CableDeliverySystemDescriptor::FECOuter
uint FECOuter(void) const
Definition: dvbdescriptors.h:773
ShortSmoothingBufferDescriptor
Definition: dvbdescriptors.h:2222
ContentDescriptor::ContentDescriptor
ContentDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:614
iso639_key_to_str3
static QString iso639_key_to_str3(int code)
Definition: iso639.h:44
uint
unsigned int uint
Definition: compat.h:79
SkyLCNDescriptor::ServiceType
uint ServiceType(int i) const
Definition: dvbdescriptors.h:2822
FrequencyListDescriptor::kCodingTypeNotDefined
@ kCodingTypeNotDefined
Definition: dvbdescriptors.h:1618
ExtendedEventDescriptor::Text
QString Text(const enc_override &encoding_override) const
Definition: dvbdescriptors.h:1596
TransportStreamDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.h:2420
SupplementaryAudioDescriptor::LanguageCodePresent
uint LanguageCodePresent(void) const
Definition: dvbdescriptors.h:1304
DVBContentIdentifierDescriptor::m_crid
std::array< const uint8_t *, 8 > m_crid
Definition: dvbdescriptors.h:2926
PartialTransportStreamDescriptor::PeakRate
uint PeakRate(void) const
Definition: dvbdescriptors.h:2485
TerrestrialDeliverySystemDescriptor::kTransmissionMode2k
@ kTransmissionMode2k
Definition: dvbdescriptors.h:1057
x5
static int x5
Definition: mythsocket.cpp:54
SkyLCNDescriptor::ChannelID
uint ChannelID(int i) const
Definition: dvbdescriptors.h:2825
PrivateDescriptorID::freesat_lcn_table
@ freesat_lcn_table
Definition: mpegdescriptors.h:232
T2DeliverySystemDescriptor::GuardInterval
uint GuardInterval(void) const
Definition: dvbdescriptors.h:1194
TerrestrialDeliverySystemDescriptor::kHierarchyInfoAlpha4InDepthInterleaver
@ kHierarchyInfoAlpha4InDepthInterleaver
Definition: dvbdescriptors.h:998
CableDeliverySystemDescriptor::kInnerFEC_2_3_ConvolutionCodeRate
@ kInnerFEC_2_3_ConvolutionCodeRate
Definition: dvbdescriptors.h:811
ComponentDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.h:602
TerrestrialDeliverySystemDescriptor::TransmissionMode
uint TransmissionMode(void) const
Definition: dvbdescriptors.h:1061
TerrestrialDeliverySystemDescriptor::kConstellationQPSK
@ kConstellationQPSK
Definition: dvbdescriptors.h:976
ProgramInfo::CategoryType
CategoryType
Definition: programinfo.h:76
ServiceDescriptor::ServiceType
uint ServiceType(void) const
Definition: dvbdescriptors.h:2061
ContentDescriptor::s_categoryDescExists
static volatile bool s_categoryDescExists
Definition: dvbdescriptors.h:647
S2XSatelliteDeliverySystemDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:903
FreesatCallsignDescriptor
Freesat Channel Callsign descriptor.
Definition: dvbdescriptors.h:2752
ServiceRelocatedDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:871
T2DeliverySystemDescriptor::SisoMisoString
QString SisoMisoString(void) const
Definition: dvbdescriptors.h:1152
DataBroadcastDescriptor::CanonicalLanguageString
QString CanonicalLanguageString(void) const
Definition: dvbdescriptors.h:715
StuffingDescriptor::StuffingDescriptor
StuffingDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2262
TerrestrialDeliverySystemDescriptor::kGuardInterval_1_16
@ kGuardInterval_1_16
Definition: dvbdescriptors.h:1044
CAIdentifierDescriptor::CAIdentifierDescriptor
CAIdentifierDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:323
PDCDescriptor::ProgramIdLabel
uint ProgramIdLabel(void) const
Definition: dvbdescriptors.h:1898
TerrestrialDeliverySystemDescriptor::kBandwidth7Mhz
@ kBandwidth7Mhz
Definition: dvbdescriptors.h:955
PrivateDescriptorID::sky_lcn_table
@ sky_lcn_table
Definition: mpegdescriptors.h:229
PrivateDataSpecifierDescriptor
Definition: dvbdescriptors.h:1908
TargetRegionNameDescriptor::LanguageString
QString LanguageString(void) const
Definition: dvbdescriptors.h:1438
ContentDescriptor::s_categoryLock
static QMutex s_categoryLock
Definition: dvbdescriptors.h:645
TransportStreamDescriptor::TransportStreamDescriptor
TransportStreamDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2411
ServiceListDescriptor::ServiceCount
uint ServiceCount(void) const
Definition: dvbdescriptors.h:2133
ServiceDescriptorMapping::kServiceTypeEchoStarTV4
@ kServiceTypeEchoStarTV4
Definition: dvbdescriptors.h:1988
SubtitlingDescriptor::SubtitlingDescriptor
SubtitlingDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2279
LinkageDescriptor::MobileInitialServiceID
uint MobileInitialServiceID(void) const
Definition: dvbdescriptors.h:184
TerrestrialDeliverySystemDescriptor::kBandwidth5Mhz
@ kBandwidth5Mhz
Definition: dvbdescriptors.h:957
SkyLCNDescriptor::ServiceID
uint ServiceID(int i) const
Definition: dvbdescriptors.h:2819
T2DeliverySystemDescriptor::kBandwidth1712kHz
@ kBandwidth1712kHz
Definition: dvbdescriptors.h:1167
TerrestrialDeliverySystemDescriptor::kHierarchyInfoAlpha2NativeInterleaver
@ kHierarchyInfoAlpha2NativeInterleaver
Definition: dvbdescriptors.h:993
NVODReferenceDescriptor::TransportStreamId
uint TransportStreamId(uint i) const
Definition: dvbdescriptors.h:1822
ServiceListDescriptor::ServiceID
uint ServiceID(uint i) const
Definition: dvbdescriptors.h:2135
SatelliteDeliverySystemDescriptor::kInnerFEC_7_8_ConvolutionCodeRate
@ kInnerFEC_7_8_ConvolutionCodeRate
Definition: dvbdescriptors.h:922
DataBroadcastDescriptor::Selector
const unsigned char * Selector(void) const
Definition: dvbdescriptors.h:706
MTV_PUBLIC
#define MTV_PUBLIC
Definition: mythtvexp.h:15
LinkageDescriptor::IsEventSimulcast
bool IsEventSimulcast(void) const
Definition: dvbdescriptors.h:197
AC3Descriptor::HasBSID
bool HasBSID(void) const
Definition: dvbdescriptors.h:2512
S2SatelliteDeliverySystemDescriptor
Definition: dvbdescriptors.h:2955
T2DeliverySystemDescriptor::kTransmissionMode2k
@ kTransmissionMode2k
Definition: dvbdescriptors.h:1205
ServiceDescriptorMapping::kServiceTypeNimiqTV2
@ kServiceTypeNimiqTV2
Definition: dvbdescriptors.h:1990
AC3Descriptor::ComponentType
uint ComponentType(void) const
Definition: dvbdescriptors.h:2520
FreesatLCNDescriptor::RegionID
uint RegionID(int i, int j) const
Definition: dvbdescriptors.h:2679
TelephoneDescriptor
Definition: dvbdescriptors.h:2312
FreesatRegionDescriptor::Language
QString Language(uint i) const
Definition: dvbdescriptors.h:2733
ExtendedEventDescriptor::LengthOfItems
uint LengthOfItems(void) const
Definition: dvbdescriptors.h:1580
LocalTimeOffsetDescriptor::LocalTimeOffsetDescriptor
LocalTimeOffsetDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:1655
AC3Descriptor::AC3Descriptor
AC3Descriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2503
TerrestrialDeliverySystemDescriptor::kHierarchyInfoAlpha1InDepthInterleaver
@ kHierarchyInfoAlpha1InDepthInterleaver
Definition: dvbdescriptors.h:996
ApplicationSignallingDescriptor::Count
uint Count() const
Definition: dvbdescriptors.h:226
DataBroadcastIdDescriptor
Definition: dvbdescriptors.h:729
DescriptorID::c2_delivery_system
@ c2_delivery_system
Definition: mpegdescriptors.h:153
TimeShiftedEventDescriptor::TimeShiftedEventDescriptor
TimeShiftedEventDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2384
SupplementaryAudioDescriptor::LanguageString
QString LanguageString(void) const
Definition: dvbdescriptors.h:1309
T2DeliverySystemDescriptor::CellID
uint CellID(uint i) const
Definition: dvbdescriptors.h:1224
SatelliteDeliverySystemDescriptor::Polarization
uint Polarization(void) const
Definition: dvbdescriptors.h:859
LinkageDescriptor::MobileNetworkID
uint MobileNetworkID(void) const
Definition: dvbdescriptors.h:179
T2DeliverySystemDescriptor::BandwidthHz
uint BandwidthHz(void) const
Definition: dvbdescriptors.h:1170
LinkageDescriptor::kEPGService
@ kEPGService
Definition: dvbdescriptors.h:138
DataBroadcastIdDescriptor::DataBroadcastIdDescriptor
DataBroadcastIdDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:732
coderate_inner
static QString coderate_inner(uint coderate)
Definition: dvbdescriptors.h:2550
TerrestrialDeliverySystemDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:651
SatelliteDeliverySystemDescriptor::SymbolRate
uint SymbolRate(void) const
Definition: dvbdescriptors.h:905
ContentDescriptor::UserNibble1
uint UserNibble1(uint i) const
Definition: dvbdescriptors.h:631
TerrestrialDeliverySystemDescriptor::CodeRateLPString
QString CodeRateLPString(void) const
Definition: dvbdescriptors.h:1033
DataBroadcastDescriptor::CanonicalLanguageKey
int CanonicalLanguageKey(void) const
Definition: dvbdescriptors.h:713
LocalTimeOffsetDescriptor::LocalTimeOffset
uint LocalTimeOffset(uint i) const
Definition: dvbdescriptors.h:1684
C2DeliverySystemDescriptor::DataSliceID
uint DataSliceID(void) const
Definition: dvbdescriptors.h:1500
FrequencyListDescriptor::kCodingTypeCable
@ kCodingTypeCable
Definition: dvbdescriptors.h:1620
StreamIdentifierDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.h:2251
T2DeliverySystemDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:720
ServiceDescriptorMapping::kServiceTypeDVB_SRM
@ kServiceTypeDVB_SRM
Definition: dvbdescriptors.h:1959
T2DeliverySystemDescriptor::m_cellPtrs
std::vector< const unsigned char * > m_cellPtrs
Definition: dvbdescriptors.h:1247
OpenTVChannelListDescriptor::ChannelType
uint ChannelType(uint i) const
Definition: dvbdescriptors.h:2855
ServiceDescriptorMapping::kServiceTypeEchoStarTV2
@ kServiceTypeEchoStarTV2
Definition: dvbdescriptors.h:1986
ServiceDescriptor::ServiceProviderNameLength
uint ServiceProviderNameLength(void) const
Definition: dvbdescriptors.h:2063
TargetRegionDescriptor::CountryCodeString
QString CountryCodeString(void) const
Definition: dvbdescriptors.h:1393
SkyLCNDescriptor::LogicalChannelNumber
uint LogicalChannelNumber(int i) const
Definition: dvbdescriptors.h:2828
FreesatCallsignDescriptor::Callsign
QString Callsign(void) const
Definition: dvbdescriptors.h:2773
ServiceDescriptor::IsHDTV
bool IsHDTV(void) const
Definition: dvbdescriptors.h:2089
ServiceDescriptorMapping::kServiceTypeH264AVCHDNVODReference
@ kServiceTypeH264AVCHDNVODReference
Definition: dvbdescriptors.h:1975
LocalTimeOffsetDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:1061
assert
#define assert(x)
Definition: audiooutputalsa.cpp:16
OpenTVChannelListDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:1004
ServiceDescriptorMapping::kServiceTypeDataBroadcast
@ kServiceTypeDataBroadcast
Definition: dvbdescriptors.h:1963
CAIdentifierDescriptor::CASystemId
int CASystemId(uint i) const
Definition: dvbdescriptors.h:332
ComponentDescriptor::ComponentTag
uint ComponentTag(void) const
Definition: dvbdescriptors.h:402
DescriptorID::image_icon
@ image_icon
Definition: mpegdescriptors.h:143
DataBroadcastDescriptor::SelectorLength
uint SelectorLength(void) const
Definition: dvbdescriptors.h:702
DataBroadcastDescriptor::TextLength
uint TextLength(void) const
Definition: dvbdescriptors.h:718
FreesatRegionDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:978
ImageIconDescriptor::LastDescriptorNumber
uint LastDescriptorNumber(void) const
Definition: dvbdescriptors.h:1099
PrivateUPCCablecomEpisodeTitleDescriptor::CanonicalLanguageString
QString CanonicalLanguageString(void) const
Definition: dvbdescriptors.h:3023
FrequencyListDescriptor::Frequency
unsigned long long Frequency(uint i) const
Definition: dvbdescriptors.h:1629
ContentDescriptor
Definition: dvbdescriptors.h:611
ServiceDescriptorMapping::kServiceTypeDVB_MHP
@ kServiceTypeDVB_MHP
Definition: dvbdescriptors.h:1967
SatelliteDeliverySystemDescriptor::IsEast
bool IsEast(void) const
west_east_flag 1 8.0
Definition: dvbdescriptors.h:856
TeletextDescriptor::CanonicalLanguageKey
int CanonicalLanguageKey(uint i) const
Definition: dvbdescriptors.h:2363
LinkageDescriptor::kInformationService
@ kInformationService
Definition: dvbdescriptors.h:137
ComponentDescriptor::CanonicalLanguageString
QString CanonicalLanguageString(void) const
Definition: dvbdescriptors.h:410
ServiceDescriptorMapping::IsHDTV
bool IsHDTV(void) const
Definition: dvbdescriptors.h:2027
TerrestrialDeliverySystemDescriptor::kGuardInterval_1_4
@ kGuardInterval_1_4
Definition: dvbdescriptors.h:1046
AC3Descriptor::MainID
uint MainID(void) const
Definition: dvbdescriptors.h:2527
LocalTimeOffsetDescriptor::CountryCodeString
QString CountryCodeString(uint i) const
Definition: dvbdescriptors.h:1669
ServiceAvailabilityDescriptor
Definition: dvbdescriptors.h:2104
DVBContentIdentifierDescriptor::DVBContentIdentifierDescriptor
DVBContentIdentifierDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2874
ServiceDescriptor::ServiceShortName
QString ServiceShortName(void) const
Definition: dvbdescriptors.h:2080
SHDeliverySystemDescriptor::SHDeliverySystemDescriptor
SHDeliverySystemDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:1255
NetworkChangeNotifyDescriptor
Definition: dvbdescriptors.h:1316
PrivateDescriptorID::freesat_callsign
@ freesat_callsign
Definition: mpegdescriptors.h:238
DVBLogicalChannelDescriptor::ServiceID
uint ServiceID(uint i) const
Definition: dvbdescriptors.h:2585
C2DeliverySystemDescriptor::PlpID
uint PlpID(void) const
Definition: dvbdescriptors.h:1494
SubtitlingDescriptor
Definition: dvbdescriptors.h:2276
PartialTransportStreamDescriptor
Definition: dvbdescriptors.h:2474
ServiceDescriptorMapping::ServiceDescriptorMapping
ServiceDescriptorMapping(const uint service_type)
Definition: dvbdescriptors.h:1949
ShortEventDescriptor::LanguageString
QString LanguageString(void) const
Definition: dvbdescriptors.h:2184
SatelliteDeliverySystemDescriptor::OrbitalPosition
uint OrbitalPosition(void) const
orbital_position 16 6.0
Definition: dvbdescriptors.h:845
ShortEventDescriptor::EventName
QString EventName(void) const
Definition: dvbdescriptors.h:2193
ServiceRelocatedDescriptor::OldTransportID
uint OldTransportID(void) const
Definition: dvbdescriptors.h:1469
SupplementaryAudioDescriptor::MixType
uint MixType(void) const
Definition: dvbdescriptors.h:1295
SatelliteDeliverySystemDescriptor::ModulationSystemString
QString ModulationSystemString(void) const
Definition: dvbdescriptors.h:885
LinkageDescriptor::LinkageTypeString
QString LinkageTypeString(void) const
Definition: dvbdescriptors.cpp:302
DefaultAuthorityDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.h:2944
LinkageDescriptor::kDataBroadcastService
@ kDataBroadcastService
Definition: dvbdescriptors.h:142
StreamIdentifierDescriptor
This is used to label streams so the can be treated differently, for instance each stream may get it'...
Definition: dvbdescriptors.h:2240
PrivateUPCCablecomEpisodeTitleDescriptor::CanonicalLanguageKey
int CanonicalLanguageKey(void) const
Definition: dvbdescriptors.h:3019
CableDeliverySystemDescriptor::ModulationString
QString ModulationString(void) const
Definition: dvbdescriptors.h:789
SatelliteDeliverySystemDescriptor::SymbolRateHz
uint SymbolRateHz(void) const
Definition: dvbdescriptors.h:910
ServiceDescriptorMapping::IsDigitalAudio
bool IsDigitalAudio(void) const
Definition: dvbdescriptors.h:2021
MultilingualServiceNameDescriptor::MultilingualServiceNameDescriptor
MultilingualServiceNameDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:1791
AC3Descriptor
Definition: dvbdescriptors.h:2500
TerrestrialDeliverySystemDescriptor::kHierarchyInfoAlpha4NativeInterleaver
@ kHierarchyInfoAlpha4NativeInterleaver
Definition: dvbdescriptors.h:994
CableDeliverySystemDescriptor::kInnerFEC_8_9_ConvolutionCodeRate
@ kInnerFEC_8_9_ConvolutionCodeRate
Definition: dvbdescriptors.h:815
TerrestrialDeliverySystemDescriptor::kCodeRate_1_2
@ kCodeRate_1_2
Definition: dvbdescriptors.h:1017
ScramblingDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.h:1938
TeletextDescriptor::TeletextPageNum
uint TeletextPageNum(uint i) const
Definition: dvbdescriptors.h:2374
ImageIconDescriptor
Definition: dvbdescriptors.h:1075
ServiceDescriptor
Definition: dvbdescriptors.h:2051
ComponentDescriptor
Definition: dvbdescriptors.h:388
ApplicationSignallingDescriptor
Definition: dvbdescriptors.h:212
ServiceAvailabilityDescriptor::ServiceAvailabilityDescriptor
ServiceAvailabilityDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2107
StuffingDescriptor
Definition: dvbdescriptors.h:2259
SatelliteDeliverySystemDescriptor::IsVerticalRightPolarization
bool IsVerticalRightPolarization(void) const
Definition: dvbdescriptors.h:868
OpenTVChannelListDescriptor::ServiceID
uint ServiceID(uint i) const
Definition: dvbdescriptors.h:2852
ServiceDescriptorMapping::kServiceTypeNimiqTV9
@ kServiceTypeNimiqTV9
Definition: dvbdescriptors.h:1997
DataBroadcastDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:1040
SatelliteDeliverySystemDescriptor::kInnerFEC_3_4_ConvolutionCodeRate
@ kInnerFEC_3_4_ConvolutionCodeRate
Definition: dvbdescriptors.h:920
DVBContentIdentifierDescriptor::m_cridCount
size_t m_cridCount
Definition: dvbdescriptors.h:2925
TerrestrialDeliverySystemDescriptor::FrequencyHz
uint64_t FrequencyHz(void) const
Definition: dvbdescriptors.h:949
MosaicDescriptor
Definition: dvbdescriptors.h:1698
T2DeliverySystemDescriptor::kBandwidth7Mhz
@ kBandwidth7Mhz
Definition: dvbdescriptors.h:1163
DVBSimulcastChannelDescriptor::ChannelCount
uint ChannelCount(void) const
Definition: dvbdescriptors.h:2611
SatelliteDeliverySystemDescriptor::kModulationQPSK_NS
@ kModulationQPSK_NS
Definition: dvbdescriptors.h:892
ServiceDescriptorMapping::kServiceTypeNimiqTV5
@ kServiceTypeNimiqTV5
Definition: dvbdescriptors.h:1993
SatelliteDeliverySystemDescriptor::kInnerFEC_5_6_ConvolutionCodeRate
@ kInnerFEC_5_6_ConvolutionCodeRate
Definition: dvbdescriptors.h:921
SatelliteDeliverySystemDescriptor::kRollOff_Auto
@ kRollOff_Auto
Definition: dvbdescriptors.h:875
TerrestrialDeliverySystemDescriptor::IsMPE_FECUsed
bool IsMPE_FECUsed(void) const
Definition: dvbdescriptors.h:971
BouquetNameDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.h:312
PrivateUPCCablecomEpisodeTitleDescriptor::PrivateUPCCablecomEpisodeTitleDescriptor
PrivateUPCCablecomEpisodeTitleDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:3002
StuffingDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.h:2268
FreesatCallsignDescriptor::Language
QString Language(void) const
Definition: dvbdescriptors.h:2770
CableDeliverySystemDescriptor::SymbolRateRaw
uint SymbolRateRaw(void) const
Definition: dvbdescriptors.h:797
SatelliteDeliverySystemDescriptor::kModulationQPSK
@ kModulationQPSK
Definition: dvbdescriptors.h:894
LinkageDescriptor::MobileHandOverTypeString
QString MobileHandOverTypeString(void) const
Definition: dvbdescriptors.cpp:311
TerrestrialDeliverySystemDescriptor::TransmissionModeString
QString TransmissionModeString(void) const
Definition: dvbdescriptors.h:1062
LocalTimeOffsetDescriptor::CountryCode
uint CountryCode(uint i) const
Definition: dvbdescriptors.h:1664
T2DeliverySystemDescriptor::kTransmissionMode32k
@ kTransmissionMode32k
Definition: dvbdescriptors.h:1210
SatelliteDeliverySystemDescriptor::kRollOff_20
@ kRollOff_20
Definition: dvbdescriptors.h:873
CableDeliverySystemDescriptor::kOuterFEC_None
@ kOuterFEC_None
Definition: dvbdescriptors.h:770
ExtendedEventDescriptor::LastNumber
uint LastNumber(void) const
Definition: dvbdescriptors.h:1569
byte3BCD2int
static constexpr uint32_t byte3BCD2int(uint8_t i, uint8_t j, uint8_t k)
Definition: dvbdescriptors.h:58
FreesatRegionDescriptor::RegionID
int RegionID(uint i) const
Definition: dvbdescriptors.h:2730
NetworkNameDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.h:87
SatelliteDeliverySystemDescriptor::PolarizationString
QString PolarizationString() const
Definition: dvbdescriptors.h:860
TerrestrialDeliverySystemDescriptor::kTransmissionMode4k
@ kTransmissionMode4k
Definition: dvbdescriptors.h:1059
SkyLCNDescriptor::ServiceCount
uint ServiceCount(void) const
Definition: dvbdescriptors.h:2816
ServiceDescriptorMapping::kServiceTypeH264AVCSDDigitalTelevision
@ kServiceTypeH264AVCSDDigitalTelevision
Definition: dvbdescriptors.h:1970
PrivateUPCCablecomEpisodeTitleDescriptor::LanguageString
QString LanguageString(void) const
Definition: dvbdescriptors.h:3015
TerrestrialDeliverySystemDescriptor::IsTimeSlicingIndicatorUsed
bool IsTimeSlicingIndicatorUsed(void) const
Definition: dvbdescriptors.h:969
T2DeliverySystemDescriptor::kTransmissionMode4k
@ kTransmissionMode4k
Definition: dvbdescriptors.h:1207
SatelliteDeliverySystemDescriptor
Definition: dvbdescriptors.h:824
SatelliteDeliverySystemDescriptor::kRollOff_25
@ kRollOff_25
Definition: dvbdescriptors.h:874
SubtitlingDescriptor::SubtitleType
uint SubtitleType(uint i) const
Definition: dvbdescriptors.h:2299
AncillaryDataDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.h:264
TelephoneDescriptor::TelephoneDescriptor
TelephoneDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2315
ExtendedEventDescriptor::Text
QString Text(void) const
Definition: dvbdescriptors.h:1592
TerrestrialDeliverySystemDescriptor::BandwidthHz
uint BandwidthHz(void) const
Definition: dvbdescriptors.h:960
DVBContentIdentifierDescriptor::ContentId
QString ContentId(size_t n=0) const
Definition: dvbdescriptors.h:2903
FreesatRegionDescriptor
Freesat Region descriptor.
Definition: dvbdescriptors.h:2697
SkyLCNDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:939
LocalTimeOffsetDescriptor::Count
uint Count(void) const
Definition: dvbdescriptors.h:1660
TerrestrialDeliverySystemDescriptor::CodeRateHPString
QString CodeRateHPString(void) const
Definition: dvbdescriptors.h:1024
CableDeliverySystemDescriptor::SymbolRateHz
uint SymbolRateHz(void) const
Definition: dvbdescriptors.h:802
ServiceDescriptorMapping::kServiceTypeH264AVCHDDigitalTelevision
@ kServiceTypeH264AVCHDDigitalTelevision
Definition: dvbdescriptors.h:1973
DataBroadcastDescriptor::DataComponentTag
uint DataComponentTag(void) const
Definition: dvbdescriptors.h:700
ApplicationSignallingDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:1015
FreesatRegionDescriptor::m_entries
desc_list_t m_entries
Definition: dvbdescriptors.h:2742
TargetRegionNameDescriptor::LanguageKey
int LanguageKey(void) const
Definition: dvbdescriptors.h:1436
TargetRegionNameDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:853
OpenTVChannelListDescriptor::ChannelNumber
uint ChannelNumber(uint i) const
Definition: dvbdescriptors.h:2861
TargetRegionNameDescriptor
Definition: dvbdescriptors.h:1406
TerrestrialDeliverySystemDescriptor::HighPriority
bool HighPriority(void) const
Definition: dvbdescriptors.h:967
uint16_t
unsigned short uint16_t
Definition: iso6937tables.h:3
ComponentDescriptor::SubtitleType
uint SubtitleType(void) const
Definition: dvbdescriptors.h:584
SatelliteDeliverySystemDescriptor::RollOff
uint RollOff(void) const
Definition: dvbdescriptors.h:877
FrequencyListDescriptor::FrequencyHz
unsigned long long FrequencyHz(uint i) const
Definition: dvbdescriptors.h:1641
TerrestrialDeliverySystemDescriptor::kCodeRate_2_3
@ kCodeRate_2_3
Definition: dvbdescriptors.h:1018
ComponentDescriptor::AVCProperties
uint AVCProperties(void) const
Definition: dvbdescriptors.h:466
ScramblingDescriptor::ScramblingDescriptor
ScramblingDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:1930
LinkageDescriptor::LinkageType
uint LinkageType(void) const
Definition: dvbdescriptors.h:151
MultilingualNetworkNameDescriptor::MultilingualNetworkNameDescriptor
MultilingualNetworkNameDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:1772
T2DeliverySystemDescriptor::kGuardInterval_1_4
@ kGuardInterval_1_4
Definition: dvbdescriptors.h:1189
ServiceDescriptorMapping::IsDTV
bool IsDTV(void) const
Definition: dvbdescriptors.h:2001
CableDeliverySystemDescriptor::kInnerFEC_None
@ kInnerFEC_None
Definition: dvbdescriptors.h:816
DataBroadcastDescriptor::Text
QString Text(void) const
Definition: dvbdescriptors.h:720
T2DeliverySystemDescriptor::kGuardInterval_19_256
@ kGuardInterval_19_256
Definition: dvbdescriptors.h:1192
DefaultAuthorityDescriptor
Definition: dvbdescriptors.h:2930
ServiceDescriptorMapping::toString
QString toString(void) const
Definition: dvbdescriptors.cpp:559
LinkageDescriptor::MobileHandOverType
uint MobileHandOverType(void) const
Definition: dvbdescriptors.h:163
StreamIdentifierDescriptor::StreamIdentifierDescriptor
StreamIdentifierDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2243
byteBCDH2int
static constexpr uint8_t byteBCDH2int(uint8_t i)
Definition: dvbdescriptors.h:51
TerrestrialDeliverySystemDescriptor::kTransmissionMode8k
@ kTransmissionMode8k
Definition: dvbdescriptors.h:1058
NetworkChangeNotifyDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:806
SatelliteDeliverySystemDescriptor::IsHorizontalLeftPolarization
bool IsHorizontalLeftPolarization(void) const
Definition: dvbdescriptors.h:867
AdaptationFieldDataDescriptor
Definition: dvbdescriptors.h:235
SatelliteDeliverySystemDescriptor::FECInner
uint FECInner(void) const
Definition: dvbdescriptors.h:926
ComponentDescriptor::MPEG2Properties
uint MPEG2Properties(void) const
Definition: dvbdescriptors.h:448
ServiceDescriptorMapping::kServiceTypeH264AVCFrameCompatiblePlanoStereoscopicHDDigitalTelevision
@ kServiceTypeH264AVCFrameCompatiblePlanoStereoscopicHDDigitalTelevision
Definition: dvbdescriptors.h:1976
LinkageDescriptor::MobileOriginType
uint MobileOriginType(void) const
Definition: dvbdescriptors.h:172
LinkageDescriptor::HasMobileInitialServiceID
bool HasMobileInitialServiceID(void) const
Definition: dvbdescriptors.h:182
TeletextDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:598
ServiceDescriptorMapping::kServiceTypeH264AVCSDNVODTimeShifted
@ kServiceTypeH264AVCSDNVODTimeShifted
Definition: dvbdescriptors.h:1971
byte4BCD2int
static constexpr uint32_t byte4BCD2int(uint8_t i, uint8_t j, uint8_t k, uint8_t l)
Definition: dvbdescriptors.h:62
SupplementaryAudioDescriptor::LanguageKey
int LanguageKey(void) const
Definition: dvbdescriptors.h:1307
SkyLCNDescriptor::RegionID
uint RegionID(void) const
Definition: dvbdescriptors.h:2810
DVBContentIdentifierDescriptor
Definition: dvbdescriptors.h:2871
ServiceDescriptorMapping::kServiceTypeNimiqTV8
@ kServiceTypeNimiqTV8
Definition: dvbdescriptors.h:1996
T2DeliverySystemDescriptor::TransposerFrequency
uint TransposerFrequency(uint i, uint j) const
Definition: dvbdescriptors.h:1238
FrequencyListDescriptor::FrequencyCount
uint FrequencyCount() const
Definition: dvbdescriptors.h:1628
LinkageDescriptor::OriginalNetworkID
uint OriginalNetworkID() const
Definition: dvbdescriptors.h:131
FreesatLCNDescriptor::ChanID
uint ChanID(int i) const
Definition: dvbdescriptors.h:2670
iso639_str3_to_key
static int iso639_str3_to_key(const unsigned char *iso639_2)
Definition: iso639.h:59
T2DeliverySystemDescriptor::T2DeliverySystemDescriptor
T2DeliverySystemDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:1121
LinkageDescriptor::kTSContaining_INT_BAT_NIT
@ kTSContaining_INT_BAT_NIT
Definition: dvbdescriptors.h:148
T2DeliverySystemDescriptor::PlpID
uint PlpID(void) const
Definition: dvbdescriptors.h:1139
TeletextDescriptor::LanguageString
QString LanguageString(uint i) const
Definition: dvbdescriptors.h:2361
S2XSatelliteDeliverySystemDescriptor::S2XSatelliteDeliverySystemDescriptor
S2XSatelliteDeliverySystemDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:1523
MessageDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:818
SatelliteDeliverySystemDescriptor::IsCircularPolarization
bool IsCircularPolarization(void) const
Definition: dvbdescriptors.h:865
NVODReferenceDescriptor::NVODReferenceDescriptor
NVODReferenceDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:1812
AC3Descriptor::BSID
uint BSID(void) const
Definition: dvbdescriptors.h:2523
TimeShiftedEventDescriptor
Definition: dvbdescriptors.h:2381
TerrestrialDeliverySystemDescriptor::kHierarchyInfoNonHierarchicalNativeInterleaver
@ kHierarchyInfoNonHierarchicalNativeInterleaver
Definition: dvbdescriptors.h:991
S2SatelliteDeliverySystemDescriptor::S2SatelliteDeliverySystemDescriptor
S2SatelliteDeliverySystemDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2958
VBITeletextDescriptor::VBITeletextDescriptor
VBITeletextDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2458
SkyLCNDescriptor::RegionRaw
uint RegionRaw(void) const
Definition: dvbdescriptors.h:2813
ExtendedEventDescriptor::CanonicalLanguageString
QString CanonicalLanguageString(void) const
Definition: dvbdescriptors.h:1577
SatelliteDeliverySystemDescriptor::FrequencykHz
uint64_t FrequencykHz(void) const
Definition: dvbdescriptors.h:840
VBITeletextDescriptor
Definition: dvbdescriptors.h:2455
TeletextDescriptor::TeletextType
uint TeletextType(uint i) const
Definition: dvbdescriptors.h:2368
TargetRegionDescriptor::TargetRegionDescriptor
TargetRegionDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:1374
ServiceListDescriptor
Definition: dvbdescriptors.h:2119
FreesatLCNDescriptor::FreesatLCNDescriptor
FreesatLCNDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2635
ComponentDescriptor::ComponentType
uint ComponentType(void) const
Definition: dvbdescriptors.h:400
ServiceDescriptorMapping::kServiceTypeNimiqTV7
@ kServiceTypeNimiqTV7
Definition: dvbdescriptors.h:1995
OpenTVChannelListDescriptor::OpenTVChannelListDescriptor
OpenTVChannelListDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2841
PartialTransportStreamDescriptor::SmoothBuf
uint SmoothBuf(void) const
Definition: dvbdescriptors.h:2493
T2DeliverySystemDescriptor::kTransmissionMode1k
@ kTransmissionMode1k
Definition: dvbdescriptors.h:1208
AncillaryDataDescriptor::AncillaryDataID
uint AncillaryDataID(void) const
Definition: dvbdescriptors.h:263
T2DeliverySystemDescriptor::Parse
void Parse(void) const
Definition: dvbdescriptors.cpp:705
ContentDescriptor::Nibble
uint Nibble(uint i) const
Definition: dvbdescriptors.h:628
TerrestrialDeliverySystemDescriptor::kCodeRate_7_8
@ kCodeRate_7_8
Definition: dvbdescriptors.h:1021
DVBLogicalChannelDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:917
TeletextDescriptor
Definition: dvbdescriptors.h:2345
NetworkChangeNotifyDescriptor::NetworkChangeNotifyDescriptor
NetworkChangeNotifyDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:1319
T2DeliverySystemDescriptor::T2SystemID
uint T2SystemID(void) const
Definition: dvbdescriptors.h:1145
DescriptorID::service_relocated
@ service_relocated
Definition: mpegdescriptors.h:151
byte2BCD2int
static constexpr uint16_t byte2BCD2int(uint8_t i, uint8_t j)
Definition: dvbdescriptors.h:55
SatelliteDeliverySystemDescriptor::SatelliteDeliverySystemDescriptor
SatelliteDeliverySystemDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:827
FreesatLCNDescriptor::LogicalChannelNumber
uint LogicalChannelNumber(int i, int j) const
Definition: dvbdescriptors.h:2676
AC3Descriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:1099
SupplementaryAudioDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:784
SubtitlingDescriptor::CompositionPageID
uint CompositionPageID(uint i) const
Definition: dvbdescriptors.h:2302
ServiceDescriptor::IsDigitalAudio
bool IsDigitalAudio(void) const
Definition: dvbdescriptors.h:2087
ContentDescriptor::Init
static void Init(void)
Definition: dvbdescriptors.cpp:351
SatelliteDeliverySystemDescriptor::kInnerFEC_8_9_ConvolutionCodeRate
@ kInnerFEC_8_9_ConvolutionCodeRate
Definition: dvbdescriptors.h:923
LinkageDescriptor::kSystemSoftwareUpdateService
@ kSystemSoftwareUpdateService
Definition: dvbdescriptors.h:145
TimeShiftedServiceDescriptor::TimeShiftedServiceDescriptor
TimeShiftedServiceDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2398
DescriptorID::supplementary_audio
@ supplementary_audio
Definition: mpegdescriptors.h:146
C2DeliverySystemDescriptor
Definition: dvbdescriptors.h:1476
LinkageDescriptor::IsTargetListed
bool IsTargetListed(void) const
Definition: dvbdescriptors.h:195
TerrestrialDeliverySystemDescriptor::kGuardInterval_1_32
@ kGuardInterval_1_32
Definition: dvbdescriptors.h:1043
SatelliteDeliverySystemDescriptor::ModulationString
QString ModulationString(void) const
Definition: dvbdescriptors.h:899
SupplementaryAudioDescriptor::EditorialClassification
uint EditorialClassification(void) const
Definition: dvbdescriptors.h:1298
SkyLCNDescriptor::SkyLCNDescriptor
SkyLCNDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2793
TransportStreamDescriptor
Definition: dvbdescriptors.h:2408
LinkageDescriptor::kTSContaining_SSU_BAT_NIT
@ kTSContaining_SSU_BAT_NIT
Definition: dvbdescriptors.h:146
FreesatRegionDescriptor::RegionName
QString RegionName(uint i) const
Definition: dvbdescriptors.h:2736
AC3Descriptor::HasComponentType
bool HasComponentType(void) const
Definition: dvbdescriptors.h:2510
PrivateDataSpecifierDescriptor::PrivateDataSpecifierDescriptor
PrivateDataSpecifierDescriptor(const std::vector< uint8_t > &data)
Definition: dvbdescriptors.h:1913
DVBSimulcastChannelDescriptor::ServiceID
uint ServiceID(uint i) const
Definition: dvbdescriptors.h:2613
T2DeliverySystemDescriptor::kBandwidth6Mhz
@ kBandwidth6Mhz
Definition: dvbdescriptors.h:1164
FreesatLCNDescriptor::ServiceCount
uint ServiceCount(void) const
Definition: dvbdescriptors.h:2664
SatelliteDeliverySystemDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:633
TargetRegionDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:836
S2SatelliteDeliverySystemDescriptor::ScramblingSequenceSelector
uint ScramblingSequenceSelector() const
Definition: dvbdescriptors.h:2965
LinkageDescriptor::LinkageDescriptor
LinkageDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:95
DefaultAuthorityDescriptor::DefaultAuthority
QString DefaultAuthority(void) const
Definition: dvbdescriptors.h:2939
PrivateDescriptorID
Definition: mpegdescriptors.h:197
BouquetNameDescriptor::BouquetName
QString BouquetName(void) const
Definition: dvbdescriptors.h:307
ComponentDescriptor::ComponentDescriptor
ComponentDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:391
NetworkNameDescriptor
Definition: dvbdescriptors.h:74
ServiceRelocatedDescriptor::OldOriginalNetworkID
uint OldOriginalNetworkID(void) const
Definition: dvbdescriptors.h:1468
CountryAvailabilityDescriptor::CountryNames
QString CountryNames(void) const
Definition: dvbdescriptors.h:668
ShortEventDescriptor::LanguageKey
int LanguageKey(void) const
Definition: dvbdescriptors.h:2182
ContentDescriptor::Nibble2
uint Nibble2(uint i) const
Definition: dvbdescriptors.h:626
C2DeliverySystemDescriptor::C2DeliverySystemDescriptor
C2DeliverySystemDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:1479