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