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