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 : std::uint8_t
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 : std::uint8_t
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 : std::uint8_t
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 : std::uint8_t
775  {
778  };
779  uint FECOuter(void) const { return m_data[7] & 0xf; }
780  QString FECOuterString(void) const
781  {
782  if (FECOuter() == kOuterFEC_None)
783  return "None";
785  return "RS(204/188)";
786  return "unknown";
787  }
788  // modulation 8 8.0
789  enum : std::uint8_t
790  {
796  };
797  uint Modulation(void) const { return m_data[8]; }
798  QString ModulationString(void) const
799  {
800  static std::array<QString,6> ms
801  { "auto", "qam_16", "qam_32", "qam_64", "qam_128", "qam_256" };
802  return (Modulation() <= kModulationQAM256) ?
803  ms[Modulation()] : QString("auto");
804  }
805  // symbol_rate 28 9.0
806  uint SymbolRateRaw(void) const
807  {
808  return ((m_data[9]<<20) | (m_data[10]<<12) |
809  (m_data[11]<<4) | (m_data[12]>>4));
810  }
811  uint SymbolRateHz(void) const
812  {
813  return ((byte3BCD2int(m_data[9], m_data[10], m_data[11]) * 1000) +
814  (byteBCDH2int(m_data[12]) * 100));
815  }
816  // FEC_inner 4 12.4
817  enum : std::uint8_t
818  {
826  };
827  uint FECInner(void) const { return m_data[12] & 0xf; }
828  QString FECInnerString(void) const { return coderate_inner(FECInner()); }
829  QString toString(void) const override; // MPEGDescriptor
830 };
831 
832 // DVB Bluebook A038 (Feb 2019) p 58
834 {
835  public:
837  const unsigned char *data, int len = 300) :
838  MPEGDescriptor(data, len, DescriptorID::satellite_delivery_system) { }
839  // Name bits loc expected value
840  // descriptor_tag 8 0.0 0x43
841  // descriptor_length 8 1.0
842 
844  uint FrequencyRaw(void) const
845  {
846  return ((m_data[2]<<24) | (m_data[3]<<16) |
847  (m_data[4]<<8) | (m_data[5]));
848  }
849  uint64_t FrequencykHz(void) const
850  {
851  return byte4BCD2int64(m_data[2], m_data[3], m_data[4], m_data[5]) * 10;
852  }
854  uint OrbitalPosition(void) const
855  { return byte2BCD2int(m_data[6], m_data[7]); }
856  QString OrbitalPositionString(void) const
857  {
858  uint num = OrbitalPosition();
859  return QString("%1.%2 %3").arg(num / 10).arg(num % 10)
860  .arg((IsEast()) ? "East" : "West");
861  }
862  double OrbitalPositionFloat() const
863  { return ((double) OrbitalPosition()) / 10.0; }
865  bool IsEast(void) const { return ( (m_data[8]&0x80) ) != 0; }
866  bool IsWest(void) const { return !IsEast(); }
867  // polarization 2 8.1
868  uint Polarization(void) const { return (m_data[8]>>5)&0x3; }
869  QString PolarizationString() const
870  {
871  static const std::array<const QString,4> ps { "h", "v", "l", "r" };
872  return ps[Polarization()];
873  }
874  bool IsCircularPolarization(void) const { return ((m_data[8]>>6)&0x1) != 0; }
875  bool IsLinearPolarization(void) const { return ((m_data[8]>>6)&0x1) == 0; }
876  bool IsHorizontalLeftPolarization(void) const { return ((m_data[8]>>5)&0x1) != 0; }
877  bool IsVerticalRightPolarization(void) const { return ((m_data[8]>>5)&0x1) == 0; }
878  // roll off 2 8.3
879  enum : std::uint8_t
880  {
885  };
886  uint RollOff(void) const { return (m_data[8]>>3)&0x3; }
887  QString RollOffString(void) const
888  {
889  static const std::array<const QString,4> ro { "0.35", "0.20", "0.25", "auto" };
890  return ro[RollOff()];
891  }
892  // modulation system 1 8.5
893  uint ModulationSystem(void) const { return (m_data[8]>>2)&0x1; }
894  QString ModulationSystemString(void) const
895  {
896  return ModulationSystem() ? "DVB-S2" : "DVB-S";
897  }
898  // modulation 2 8.6
899  enum : std::uint8_t
900  {
901  kModulationQPSK_NS = 0x0, // Non standard QPSK for Bell ExpressVu
902  // should be "auto" according to DVB SI standard
906  };
907  uint Modulation(void) const { return m_data[8]&0x03; }
908  QString ModulationString(void) const
909  {
910  static const std::array<const QString,4> ms { "qpsk", "qpsk", "8psk", "qam_16" };
911  return ms[Modulation()];
912  }
913  // symbol_rate 28 9.0
914  uint SymbolRate(void) const
915  {
916  return ((m_data[9]<<20) | (m_data[10]<<12) |
917  (m_data[11]<<4) | (m_data[12]>>4));
918  }
919  uint SymbolRateHz(void) const
920  {
921  return ((byte3BCD2int(m_data[9], m_data[10], m_data[11]) * 1000) +
922  (byteBCDH2int(m_data[12]) * 100));
923  }
924  // FEC_inner 4 12.4
925  enum : std::uint8_t
926  {
934  };
935  uint FECInner(void) const { return m_data[12] & 0xf; }
936  QString FECInnerString(void) const { return coderate_inner(FECInner()); }
937 
938  QString toString(void) const override; // MPEGDescriptor
939 };
940 
941 // DVB Bluebook A038 (Feb 2019) p 60
943 {
944  public:
946  const unsigned char *data, int len = 300) :
947  MPEGDescriptor(data, len, DescriptorID::terrestrial_delivery_system) { }
948  // Name bits loc expected value
949  // descriptor_tag 8 0.0 0x5a
950  // descriptor_length 8 1.0
951 
952  // centre_frequency 32 2.0
953  uint Frequency(void) const
954  {
955  return ((m_data[2]<<24) | (m_data[3]<<16) |
956  (m_data[4]<<8) | (m_data[5]));
957  }
958  uint64_t FrequencyHz(void) const { return uint64_t(Frequency()) * 10ULL; }
959 
960  // bandwidth 3 6.0
961  enum : std::uint8_t
962  {
967  };
968  uint Bandwidth(void) const { return m_data[6]>>5; }
969  uint BandwidthHz(void) const { return (8 - Bandwidth()) * 1000000; }
970  QString BandwidthString(void) const
971  {
972  static std::array<QString,4> bs { "8", "7", "6", "5" };
973  return (Bandwidth() <= kBandwidth5Mhz) ? bs[Bandwidth()] : "auto";
974  }
975  // priority 1 6.3
976  bool HighPriority(void) const { return ( m_data[6] & 0x10 ) != 0; }
977  // time_slicing_indicator 1 6.4
978  bool IsTimeSlicingIndicatorUsed(void) const { return (m_data[6] & 0x08) == 0; }
979  // MPE-FEC_indicator 1 6.5
980  bool IsMPE_FECUsed(void) const { return (m_data[6] & 0x04) == 0; }
981  // reserved_future_use 2 6.6
982  // constellation 2 7.0
983  enum : std::uint8_t
984  {
989  };
990  uint Constellation(void) const { return m_data[7]>>6; }
991  QString ConstellationString(void) const
992  {
993  static std::array<QString,4> cs { "qpsk", "qam_16", "qam_64", "qam_256" };
994  return (Constellation() <= kConstellationQAM256) ?
995  cs[Constellation()] : "auto";
996  }
997  // hierarchy_information 3 7.2
998  enum : std::uint8_t
999  {
1008  };
1009  uint Hierarchy(void) const { return (m_data[7]>>3) & 0x7; }
1010 
1012  QString HierarchyString(void) const
1013  {
1014  static const std::array<const QString,8> hs { "n", "1", "2", "4", "a", "a", "a", "a" };
1015  return hs[Hierarchy()];
1016  }
1017  bool NativeInterleaver(void) const { return ( m_data[7] & 0x20 ) != 0; }
1018  uint Alpha(void) const
1019  {
1020  uint i = (m_data[7]>>3) & 0x3;
1021  return (0x2 == i) ? 4 : i;
1022  }
1023  // code_rate-HP_stream 3 7.5
1024  enum : std::uint8_t
1025  {
1031  };
1032  uint CodeRateHP(void) const { return m_data[7] & 0x7; }
1033  QString CodeRateHPString(void) const
1034  {
1035  static const std::array<const QString,8> cr {
1036  "1/2", "2/3", "3/4", "5/6", "7/8", "auto", "auto", "auto"
1037  };
1038  return cr[CodeRateHP()];
1039  }
1040  // code_rate-LP_stream 3 8.0
1041  uint CodeRateLP(void) const { return (m_data[8]>>5) & 0x7; }
1042  QString CodeRateLPString(void) const
1043  {
1044  static const std::array<const QString,8> cr {
1045  "1/2", "2/3", "3/4", "5/6", "7/8", "auto", "auto", "auto"
1046  };
1047  return cr[CodeRateLP()];
1048  }
1049  // guard_interval 2 8.3
1050  enum : std::uint8_t
1051  {
1056  };
1057  uint GuardInterval(void) const { return (m_data[8]>>3) & 0x3; }
1058  QString GuardIntervalString(void) const
1059  {
1060  static const std::array<const QString,4> gi { "1/32", "1/16", "1/8", "1/4" };
1061  return gi[GuardInterval()];
1062  }
1063  // transmission_mode 2 8.5
1064  enum : std::uint8_t
1065  {
1069  };
1070  uint TransmissionMode(void) const { return (m_data[8]>>1) & 0x3; }
1071  QString TransmissionModeString(void) const
1072  {
1073  static const std::array<const QString,4> tm { "2", "8", "4", "auto" };
1074  return tm[TransmissionMode()];
1075  }
1076  // other_frequency_flag 1 8.7
1077  bool OtherFrequencyInUse(void) const { return (m_data[8] & 0x1) != 0; }
1078  // reserved_future_use 32 9.0
1079 
1080  QString toString(void) const override; // MPEGDescriptor
1081 };
1082 
1083 // DVB Bluebook A038 (Feb 2019) p 110
1085 {
1086  public:
1088  const unsigned char *data, int len = 300) :
1089  MPEGDescriptor(data, len, DescriptorID::extension)
1090  {
1092  {
1093  m_data = nullptr;
1094  }
1095  }
1096  // Name bits loc expected value
1097  // descriptor_tag 8 0.0 0x7f extension
1098  // descriptor_length 8 1.0
1099  // descriptor_tag_extension 8 2.0 0x00 image_icon
1100 
1101  // descriptor_number 4 3.0
1103  {
1104  return m_data[3] >> 4;
1105  }
1106 
1107  // last_descriptor_number 4 3.4
1109  {
1110  return m_data[3] & 0xF;
1111  }
1112 
1113  // icon_id 3 4.5
1114  uint IconID(void) const
1115  {
1116  return m_data[4] & 0x7;
1117  }
1118 
1119  //
1120  // TBD
1121  //
1122 
1123  QString toString(void) const override; // MPEGDescriptor
1124 };
1125 
1126 // DVB Bluebook A038 (Feb 2019) p 104 0x7f 0x04
1128 {
1129  public:
1131  const unsigned char *data, int len = 300) :
1132  MPEGDescriptor(data, len, DescriptorID::extension)
1133  {
1134  if (IsValid())
1135  {
1137  m_data = nullptr;
1138  else
1139  Parse();
1140  }
1141  }
1142  // Name bits loc expected value
1143  // descriptor_tag 8 0.0 0x7f extension
1144  // descriptor_length 8 1.0
1145  // descriptor_tag_extension 8 2.0 0x04 t2_delivery_system
1146 
1147  // plp_id 8 3.0
1148  uint PlpID(void) const
1149  {
1150  return m_data[3];
1151  }
1152 
1153  // T2_system_id 16 4.0
1154  uint T2SystemID(void) const
1155  {
1156  return ((m_data[4]<<8) | (m_data[5]));
1157  }
1158 
1159  // SISO/MISO 2 6.0
1160  uint SisoMiso(void) const { return (m_data[6] >> 6) & 0x3; }
1161  QString SisoMisoString(void) const
1162  {
1163  static const std::array<const QString,4> sm
1164  { "SISO", "MISO", "reserved", "reserved" };
1165  return sm[SisoMiso()];
1166  }
1167 
1168  // bandwidth 4 6.2
1169  enum : std::uint8_t
1170  {
1177  };
1178  uint Bandwidth(void) const { return (m_data[6] >> 2) & 0xF; }
1179  uint BandwidthHz(void) const
1180  {
1181  static constexpr std::array<const uint,6> bw
1182  { 8000000, 7000000, 6000000, 5000000, 10000000, 1712000 };
1183  return (Bandwidth() <= kBandwidth1712kHz ? bw[Bandwidth()] : 0);
1184  }
1185  QString BandwidthString(void) const
1186  {
1187  static const std::array<const QString,6> bs
1188  { "8", "7", "6", "5", "10", "1.712" };
1189  return (Bandwidth() <= kBandwidth1712kHz) ? bs[Bandwidth()] : "0";
1190  }
1191 
1192  // guard_interval 3 7.0
1193  enum : std::uint8_t
1194  {
1202  };
1203  uint GuardInterval(void) const { return (m_data[7]>>5) & 0x7; }
1204  QString GuardIntervalString(void) const
1205  {
1206  static const std::array<const QString,8> gi
1207  { "1/32", "1/16", "1/8", "1/4", "1/128", "19/128", "19/256", "reserved" };
1208  return gi[GuardInterval()];
1209  }
1210 
1211  // transmission_mode 3 7.3
1212  enum : std::uint8_t
1213  {
1220  };
1221  uint TransmissionMode(void) const { return (m_data[7]>>2) & 0x7; }
1222  QString TransmissionModeString(void) const
1223  {
1224  static const std::array<const QString,8> tm
1225  { "2k", "8k", "4k", "1k", "16k", "32k", "reserved", "reserved" };
1226  return tm[TransmissionMode()];
1227  }
1228  uint OtherFrequencyFlag(void) const { return (m_data[7]>>1) & 0x1; }
1229  uint TFSFlag(void) const { return m_data[7] & 0x1; }
1230 
1231  public:
1232  uint NumCells(void) const { return m_cellPtrs.size(); }
1233  uint CellID(uint i) const { return (m_cellPtrs[i][0] << 8) | m_cellPtrs[i][1]; }
1234  uint FrequencyLoopLength(uint i) const { return m_cellPtrs[i][2]; }
1235 
1237  {
1238  return (m_cellPtrs[i][2] << 24) | (m_cellPtrs[i][3] << 16) | (m_cellPtrs[i][4] << 8) | m_cellPtrs[i][5];
1239  }
1240 
1241  uint CentreFrequency(int i, int j) const
1242  {
1243  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)];
1244  }
1245  uint SubcellInfoLoopLength(uint i) const { return m_subCellPtrs[i][0]; }
1246  uint CellIDExtension(uint i, uint j) const { return m_subCellPtrs[i][1+(5*j)]; }
1248  {
1249  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)];
1250  }
1251 
1252  void Parse(void) const;
1253  QString toString(void) const override; // MPEGDescriptor
1254 
1255  private:
1256  mutable std::vector<const unsigned char*> m_cellPtrs; // used to parse
1257  mutable std::vector<const unsigned char*> m_subCellPtrs; // used to parse
1258 };
1259 
1260 // DVB Bluebook A038 (Feb 2019) p 100 0x7f 0x05
1262 {
1263  public:
1265  const unsigned char *data, int len = 300) :
1266  MPEGDescriptor(data, len, DescriptorID::extension)
1267  {
1269  {
1270  m_data = nullptr;
1271  }
1272  }
1273  // Name bits loc expected value
1274  // descriptor_tag 8 0.0 0x7f extension
1275  // descriptor_length 8 1.0
1276  // descriptor_tag_extension 8 2.0 0x05 sh_delivery_system
1277 
1278  //
1279  // TBD
1280  //
1281 
1282  QString toString(void) const override; // MPEGDescriptor
1283 };
1284 
1285 // DVB Bluebook A038 (Feb 2019) p 115 0x7F 0x06
1287 {
1288  public:
1290  const unsigned char *data, int len = 300) :
1291  MPEGDescriptor(data, len, DescriptorID::extension)
1292  {
1294  {
1295  m_data = nullptr;
1296  }
1297  }
1298  // Name bits loc expected value
1299  // descriptor_tag 8 0.0 0x7f extension
1300  // descriptor_length 8 1.0
1301  // descriptor_tag_extension 8 2.0 0x06 supplementary_audio_descriptor
1302 
1303  // mix_type 1 3.0
1304  uint MixType(void) const { return m_data[3] & 0x1; }
1305 
1306  // editorial_classification 5 3.1
1307  uint EditorialClassification(void) const { return (m_data[3] >> 1 ) & 0x1F; }
1308 
1309  // reserved_future_use 1 3.6
1310  uint ReservedFutureUse(void) const { return (m_data[3] >> 6 ) & 0x1; }
1311 
1312  // language_code_present 1 3.7
1313  uint LanguageCodePresent(void) const { return (m_data[3] >> 7 ) & 0x1; }
1314 
1315  // ISO_639_language_code 24 4.0
1316  int LanguageKey(void) const
1317  { return iso639_str3_to_key(&m_data[4]); }
1318  QString LanguageString(void) const
1319  { return iso639_key_to_str3(LanguageKey()); }
1320 
1321  QString toString(void) const override; // MPEGDescriptor
1322 };
1323 
1324 // DVB Bluebook A038 (Feb 2019) p 113 0x7F 0x07
1326 {
1327  public:
1329  const unsigned char *data, int len = 300) :
1330  MPEGDescriptor(data, len, DescriptorID::extension)
1331  {
1333  {
1334  m_data = nullptr;
1335  }
1336  }
1337  // Name bits loc expected value
1338  // descriptor_tag 8 0.0 0x7f extension
1339  // descriptor_length 8 1.0
1340  // descriptor_tag_extension 8 2.0 0x07 network_change_notify_descriptor
1341 
1342  QString toString(void) const override; // MPEGDescriptor
1343 };
1344 
1345 // DVB Bluebook A038 (Feb 2019) p 112 0x7F 0x08
1347 {
1348  public:
1350  const unsigned char *data, int len = 300) :
1351  MPEGDescriptor(data, len, DescriptorID::extension)
1352  {
1354  {
1355  m_data = nullptr;
1356  }
1357  }
1358  // Name bits loc expected value
1359  // descriptor_tag 8 0.0 0x7f extension
1360  // descriptor_length 8 1.0
1361  // descriptor_tag_extension 8 2.0 0x08 message_descriptor
1362 
1363  // message_id 8 3.0
1364  uint MessageID(void) const { return m_data[3]; }
1365 
1366  // ISO_639_language_code 24 4.0
1367  int LanguageKey(void) const
1368  { return iso639_str3_to_key(&m_data[4]); }
1369  QString LanguageString(void) const
1370  { return iso639_key_to_str3(LanguageKey()); }
1371 
1372  // text_char 8 7.0
1373  QString Message(void) const
1374  { return dvb_decode_text(m_data+7, DescriptorLength()-5); }
1375 
1376  QString toString(void) const override; // MPEGDescriptor
1377 };
1378 
1379 // DVB Bluebook A038 (Feb 2019) p 117
1381 {
1382  public:
1384  const unsigned char *data, int len = 300) :
1385  MPEGDescriptor(data, len, DescriptorID::extension)
1386  {
1388  {
1389  m_data = nullptr;
1390  }
1391  }
1392  // Name bits loc expected value
1393  // descriptor_tag 8 0.0 0x7f extension
1394  // descriptor_length 8 1.0 4 or more
1395  // descriptor_tag_extension 8 2.0 0x09 target_region
1396 
1397  // country_code 24 3.0 e.g. "GBR"
1398  uint CountryCode(void) const
1399  {
1400  return ((m_data[3] << 16) | (m_data[4] << 8) | m_data[5]);
1401  }
1402  QString CountryCodeString(void) const
1403  {
1404  std::array<QChar,3> code
1405  { QChar(m_data[3]), QChar(m_data[4]), QChar(m_data[5]) };
1406  return QString(code.data(), 3);
1407  }
1408  //
1409  // TBD
1410  //
1411  QString toString(void) const override; // MPEGDescriptor
1412 };
1413 
1414 // DVB Bluebook A038 (Feb 2019) p 118
1416 {
1417  public:
1419  const unsigned char *data, int len = 300) :
1420  MPEGDescriptor(data, len, DescriptorID::extension)
1421  {
1423  {
1424  m_data = nullptr;
1425  }
1426  }
1427  // Name bits loc expected value
1428  // descriptor_tag 8 0.0 0x7f extension
1429  // descriptor_length 8 1.0 7 or more
1430  // descriptor_tag_extension 8 2.0 0x0A target_region_name
1431 
1432  // country_code 24 3.0 e.g. "GBR"
1433  uint CountryCode(void) const
1434  {
1435  return ((m_data[3] << 16) | (m_data[4] << 8) | m_data[5]);
1436  }
1437  QString CountryCodeString(void) const
1438  {
1439  std::array<QChar,3> code
1440  { QChar(m_data[3]), QChar(m_data[4]), QChar(m_data[5]) };
1441  return QString(code.data(), 3);
1442  }
1443 
1444  // ISO_639_language_code 24 6.0
1445  int LanguageKey(void) const
1446  { return iso639_str3_to_key(&m_data[6]); }
1447  QString LanguageString(void) const
1448  { return iso639_key_to_str3(LanguageKey()); }
1449 
1450  //
1451  // TBD
1452  //
1453  QString toString(void) const override; // MPEGDescriptor
1454 };
1455 
1456 // DVB Bluebook A038 (Feb 2019) p 115 0x7F 0x0B
1458 {
1459  public:
1461  const unsigned char *data, int len = 300) :
1462  MPEGDescriptor(data, len, DescriptorID::extension)
1463  {
1465  {
1466  m_data = nullptr;
1467  }
1468  }
1469  // Name bits loc expected value
1470  // descriptor_tag 8 0.0 0x7f extension
1471  // descriptor_length 8 1.0 7
1472  // descriptor_tag_extension 8 2.0 0x0B service_relocated
1473 
1474  // old_original_network_id 16 3.0
1475  // old_transport_stream_id 16 5.0
1476  // old_service_id 16 7.0
1477  uint OldOriginalNetworkID(void) const { return (m_data[3] << 8) | m_data[4]; }
1478  uint OldTransportID(void) const { return (m_data[5] << 8) | m_data[6]; }
1479  uint OldServiceID(void) const { return (m_data[7] << 8) | m_data[8]; }
1480 
1481  QString toString(void) const override; // MPEGDescriptor
1482 };
1483 
1484 // DVB Bluebook A038 (Feb 2019) p 98
1486 {
1487  public:
1489  const unsigned char *data, int len = 300) :
1490  MPEGDescriptor(data, len, DescriptorID::extension)
1491  {
1493  {
1494  m_data = nullptr;
1495  }
1496  }
1497  // Name bits loc expected value
1498  // descriptor_tag 8 0.0 0x7f extension
1499  // descriptor_length 8 1.0 9
1500  // descriptor_tag_extension 8 2.0 0x0D c2_delivery_system
1501 
1502  // plp_id 8 3.0
1503  uint PlpID(void) const
1504  {
1505  return m_data[3];
1506  }
1507 
1508  // data_slice_id 8 4.0
1509  uint DataSliceID(void) const
1510  {
1511  return m_data[4];
1512  }
1513 
1514  // C2_System_tuning_frequency 32 5.0
1515  uint Frequency(void) const
1516  {
1517  return ((m_data[5]<<24) | (m_data[6]<<16) |
1518  (m_data[7]<<8) | (m_data[8]));
1519  }
1520 
1521  //
1522  // TBD
1523  //
1524 
1525  QString toString(void) const override; // MPEGDescriptor
1526 };
1527 
1528 // DVB Bluebook A038 (Feb 2019) p 108
1530 {
1531  public:
1533  const unsigned char *data, int len = 300) :
1534  MPEGDescriptor(data, len, DescriptorID::extension)
1535  {
1537  {
1538  m_data = nullptr;
1539  }
1540  }
1541  // Name bits loc expected value
1542  // descriptor_tag 8 0.0 0x7f extension
1543  // descriptor_length 8 1.0
1544  // descriptor_tag_extension 8 2.0 0x17 s2x_delivery_system
1545 
1546  //
1547  // TBD
1548  //
1549 
1550  QString toString(void) const override; // MPEGDescriptor
1551 };
1552 
1553 // DVB Bluebook A038 (Sept 2011) p 58
1555 {
1556  public:
1557  explicit DSNGDescriptor(const unsigned char *data, int len = 300) :
1558  MPEGDescriptor(data, len, DescriptorID::dsng) { }
1559  // Name bits loc expected value
1560  // descriptor_tag 8 0.0 0x68
1561  // descriptor_length 8 1.0
1562  // for (i=0;i<N;i++) { byte 8 }
1563 };
1564 
1565 // DVB Bluebook A038 (Sept 2011) p 58
1567 {
1568  public:
1569  explicit ExtendedEventDescriptor(const unsigned char *data, int len = 300) :
1570  MPEGDescriptor(data, len, DescriptorID::extended_event) { }
1571  // Name bits loc expected value
1572  // descriptor_tag 8 0.0 0x4e
1573  // descriptor_length 8 1.0
1574 
1575  // descriptor_number 4 2.0
1576  uint DescriptorNumber(void) const { return m_data[2] >> 4; }
1577  // last_number 4 2.4
1578  uint LastNumber(void) const { return m_data[2] & 0xf; }
1579  // ISO_639_language_code 24 3.0
1580  int LanguageKey(void) const
1581  { return iso639_str3_to_key(&m_data[3]); }
1582  QString LanguageString(void) const
1583  { return iso639_key_to_str3(LanguageKey()); }
1584  int CanonicalLanguageKey(void) const
1585  { return iso639_key_to_canonical_key(LanguageKey()); }
1586  QString CanonicalLanguageString(void) const
1587  { return iso639_key_to_str3(CanonicalLanguageKey()); }
1588  // length_of_items 8 6.0
1589  uint LengthOfItems(void) const { return m_data[6]; }
1590  // for ( i=0;i<N;i++)
1591  // {
1592  // item_description_len 8 0.0+p
1593  // for (j=0;j<N;j++) { item_desc_char 8 }
1594  // item_length 8 1.0+p2
1595  // for (j=0;j<N;j++) { item_char 8 }
1596  // }
1597  QMultiMap<QString,QString> Items(void) const;
1598  // text_length 8
1599  uint TextLength(void) const { return m_data[7 + LengthOfItems()]; }
1600  // for (i=0; i<N; i++) { text_char 8 }
1601  QString Text(void) const
1602  { return dvb_decode_text(&m_data[8 + LengthOfItems()], TextLength()); }
1603 
1604  // HACK beg -- Pro7Sat is missing encoding
1605  QString Text(const enc_override &encoding_override) const
1606  {
1607  return dvb_decode_text(&m_data[8 + LengthOfItems()], TextLength(),
1608  encoding_override);
1609  }
1610  // HACK end -- Pro7Sat is missing encoding
1611 };
1612 
1613 // DVB Bluebook A038 (Sept 2011) p 60
1615 {
1616  public:
1617  explicit FrequencyListDescriptor(const unsigned char *data, int len = 300) :
1618  MPEGDescriptor(data, len, DescriptorID::frequency_list) { }
1619  // Name bits loc expected value
1620  // descriptor_tag 8 0.0 0x62
1621  // descriptor_length 8 1.0
1622 
1623  // reserved_future_use 6 2.0
1624  // coding_type 2 2.6
1625  enum : std::uint8_t
1626  {
1631  };
1632  uint CodingType(void) const { return m_data[2] & 0x3; }
1633  // for (i=0;I<N;i++)
1634  // {
1635  // centre_frequency 32
1636  // }
1637  uint FrequencyCount() const { return DescriptorLength()>>2; }
1638  unsigned long long Frequency(uint i) const
1639  {
1641  {
1642  return (((unsigned long long)m_data[(i*4)+3]<<24) |
1643  (m_data[(i*4)+4]<<16) |
1644  (m_data[(i*4)+5]<<8) |
1645  (m_data[(i*4)+6]));
1646  }
1647  return byte4BCD2int(m_data[(i*4)+3], m_data[(i*4)+4],
1648  m_data[(i*4)+5], m_data[(i*4)+6]);
1649  }
1650  unsigned long long FrequencyHz(uint i) const
1651  {
1652  return Frequency(i) *
1653  ((kCodingTypeTerrestrial == CodingType()) ? 10 : 100);
1654  }
1655 
1656  QString toString(void) const override; // MPEGDescriptor
1657 };
1658 
1659 // DVB Bluebook A038 (Sept 2011) p 70
1660 // ETSI EN 300 468 p 58
1662 {
1663  public:
1664  explicit LocalTimeOffsetDescriptor(const unsigned char *data, int len = 300) :
1665  MPEGDescriptor(data, len, DescriptorID::local_time_offset) { }
1666  // Name bits loc expected value
1667  // descriptor_tag 8 0.0 0x58
1668  // descriptor_length 8 1.0
1669  uint Count(void) const { return DescriptorLength() / 13; }
1670  // for(i=0;i<N;i++)
1671  // {
1672  // country_code 24 0.0+p
1674  {
1675  int o = 2 + (i*13);
1676  return ((m_data[o] << 16) | (m_data[o+1] << 8) | m_data[o+2]);
1677  }
1678  QString CountryCodeString(uint i) const
1679  {
1680  int o = 2 + (i*13);
1681  std::array<QChar,3> code
1682  { QChar(m_data[o]), QChar(m_data[o+1]), QChar(m_data[o+2]) };
1683  return QString(code.data(), 3);
1684  }
1685  // country_region_id 6 3.0+p
1686  uint CountryRegionId(uint i) const { return m_data[2 + (i*13) + 3] >> 2; }
1687  // reserved 1 3.6+p
1688  // local_time_off_polarity 1 3.7+p
1691  { return (m_data[2 + (i*13) + 3] & 0x01) != 0; }
1692  // local_time_offset 16 4.0+p
1694  { return (byteBCD2int(m_data[2 + (i*13) + 4]) * 60) +
1695  byteBCD2int(m_data[2 + (i*13) + 5]); }
1697  { return (LocalTimeOffsetPolarity(i) ? -1 : +1) * LocalTimeOffset(i); }
1698  // time_of_change 40 6.0+p
1699  const unsigned char *TimeOfChangeData(uint i) const
1700  { return &m_data[2 + (i*13) + 6]; }
1701  QDateTime TimeOfChange(uint i) const
1702  { return dvbdate2qt(TimeOfChangeData(i)); }
1703  time_t TimeOfChangeUnix(uint i) const
1704  { return dvbdate2unix(TimeOfChangeData(i)); }
1705  // next_time_offset 16 11.0+p
1707  { return (byteBCD2int(m_data[2 + (i*13) + 11]) * 60) +
1708  byteBCD2int(m_data[2 + (i*13) + 12]); }
1709  // } 13.0
1710  QString toString(void) const override; // MPEGDescriptor
1711 };
1712 
1713 // DVB Bluebook A038 (Sept 2011) p 71
1715 {
1716  public:
1717  explicit MosaicDescriptor(const unsigned char *data, int len = 300) :
1718  MPEGDescriptor(data, len, DescriptorID::mosaic) { }
1719  // Name bits loc expected value
1720  // descriptor_tag 8 0.0 0x51
1721  // descriptor_length 8 1.0
1722 
1723  // mosaic_entry_point 1 2.0
1724  // num_horiz_elem_cells 3 2.1
1725  // reserved_future_use 1 2.4
1726  // num_vert_elem_cells 3 2.5
1727  // for (i=0;i<N; i++)
1728  // {
1729  // logical_cell_id 6 0.0+p
1730  // reserved_future_use 7 0.6+p
1731  // logical_cell_pres_info 3 1.5+p
1732  // elem_cell_field_len 8 2.0+p
1733  // for (i=0; j<elementary_cell_field_length; j++)
1734  // {
1735  // reserved_future_use 2
1736  // elementary_cell_id 6
1737  // }
1738  // cell_linkage_info 8
1739  // if (cell_linkage_info == 0x01)
1740  // {
1741  // bouquet_id 16
1742  // }
1743  // if (cell_linkage_info == 0x02)
1744  // {
1745  // original_network_id 16
1746  // transport_stream_id 16
1747  // service_id 16
1748  // }
1749  // if (cell_linkage_info == 0x03)
1750  // {
1751  // original_network_id 16
1752  // transport_stream_id 16
1753  // service_id 16
1754  // }
1755  // if (cell_linkage_info == 0x04)
1756  // {
1757  // original_network_id 16
1758  // transport_stream_id 16
1759  // service_id 16
1760  // event_id 16
1761  // }
1762  // }
1763 };
1764 
1765 // DVB Bluebook A038 (Sept 2011) p 74
1767 {
1768  public:
1770  const unsigned char *data, int len = 300) :
1771  MPEGDescriptor(data, len, DescriptorID::multilingual_bouquet_name) { }
1772  // Name bits loc expected value
1773  // descriptor_tag 8 0.0 0x5c
1774  // descriptor_length 8 1.0
1775 
1776  // for (i=0;i<N;i++)
1777  // {
1778  // ISO_639_language_code 24
1779  // bouquet_name_length 8
1780  // for (j=0;j<N;j++) { char 8 }
1781  // }
1782 };
1783 
1784 // DVB Bluebook A038 (Sept 2011) p 75
1786 {
1787  public:
1789  const unsigned char *data, int len = 300) :
1790  MPEGDescriptor(data, len, DescriptorID::multilingual_network_name) { }
1791  // Name bits loc expected value
1792  // descriptor_tag 8 0.0 0x5b
1793  // descriptor_length 8 1.0
1794 
1795  // for (i=0;i<N;i++)
1796  // {
1797  // ISO_639_language_code 24
1798  // network_name_length 8
1799  // for (j=0;j<N;j++) { char 8 }
1800  // }
1801 };
1802 
1803 // DVB Bluebook A038 (Sept 2011) p 76
1805 {
1806  public:
1808  const unsigned char *data, int len = 300) :
1809  MPEGDescriptor(data, len, DescriptorID::multilingual_service_name) { }
1810  // Name bits loc expected value
1811  // descriptor_tag 8 0.0 0x5d
1812  // descriptor_length 8 1.0
1813 
1814  // for (i=0;i<N;i++)
1815  // {
1816  // ISO_639_language_code 24
1817  // service_provider_name_length 8
1818  // for (j=0;j<N;j++) { char 8 }
1819  // service_name_length 8
1820  // for (j=0;j<N;j++) { char 8 }
1821  // }
1822 };
1823 
1824 // DVB Bluebook A038 (Sept 2011) p 76
1826 {
1827  public:
1828  explicit NVODReferenceDescriptor(const unsigned char *data, int len = 300) :
1829  MPEGDescriptor(data, len, DescriptorID::nvod_reference) { }
1830  // Name bits loc expected value
1831  // descriptor_tag 8 0.0 0x4b
1832  // descriptor_length 8 1.0
1833  uint Count(void) const { return DescriptorLength() / 6; }
1834 
1835  // for (i=0;i<N;i++)
1836  // {
1837  // transport_stream_id 16
1839  { return (m_data[(i * 6) + 2] << 8) | m_data[(i * 6) + 3]; }
1840  // original_network_id 16
1842  { return (m_data[(i * 6) + 4] << 8) | m_data[(i * 6) + 5]; }
1843  // service_id 16
1845  { return (m_data[(i * 6) + 6] << 8) | m_data[(i * 6) + 7]; }
1846  // }
1847  QString toString(void) const override; // MPEGDescriptor
1848 };
1849 
1850 // DVB Bluebook A038 (Sept 2011) p 78
1851 // ETSI EN 300 468
1853 {
1854  public:
1855  explicit ParentalRatingDescriptor(const unsigned char *data, int len = 300) :
1856  MPEGDescriptor(data, len, DescriptorID::parental_rating) { }
1857  explicit ParentalRatingDescriptor(const std::vector<uint8_t> &data) :
1858  MPEGDescriptor(data, DescriptorID::parental_rating) { }
1859  // Name bits loc expected value
1860  // descriptor_tag 8 0.0 0x55
1861  // descriptor_length 8 1.0
1862  uint Count(void) const { return DescriptorLength() / 4; }
1863 
1864  // for (i=0; i<N; i++)
1865  // {
1866  // country_code 24
1867  // rating 8
1868  // }
1869  QString CountryCodeString(uint i) const
1870  {
1871  int o = 2 + (i*4);
1872  if (i >= Count())
1873  return {""};
1874  std::array<QChar,3> code
1875  { QChar(m_data[o]), QChar(m_data[o+1]), QChar(m_data[o+2]) };
1876  return QString(code.data(), 3);
1877  }
1878  int Rating(uint i) const
1879  {
1880  if (i >= Count())
1881  {
1882  return -1;
1883  }
1884 
1885  unsigned char rawRating = m_data[2 + 3 + (i*4)];
1886  if (rawRating == 0)
1887  {
1888  // 0x00 - undefined
1889  return -1;
1890  }
1891  if (rawRating <= 0x0F)
1892  {
1893  // 0x01 to 0x0F - minumum age = rating + 3 years
1894  return rawRating + 3;
1895  }
1896 
1897  // 0x10 to 0xFF - defined by the broadcaster
1898  return -1;
1899  }
1900 };
1901 
1902 // DVB Bluebook A038 (Sept 2011) p 78 (see also ETSI EN 300 231 PDC)
1904 {
1905  public:
1906  explicit PDCDescriptor(const unsigned char *data, int len = 300) :
1907  MPEGDescriptor(data, len, DescriptorID::pdc, 3) { }
1908  // Name bits loc expected value
1909  // descriptor_tag 8 0.0 0x69
1910  // descriptor_length 8 1.0
1911 
1912  // reserved_future_use 4 2.0
1913  // program_id_label 20 2.4
1914  uint ProgramIdLabel(void) const
1915  { return (m_data[2] & 0x0F) << 16 | m_data[3] << 8 | m_data[4]; }
1916  QString toString(void) const override // MPEGDescriptor
1917  {
1918  return QString("PDCDescriptor program_id_label(%1)")
1919  .arg(ProgramIdLabel());
1920  }
1921 };
1922 
1923 // DVB Bluebook A038 (Sept 2011) p 79 (see also ETSI TS 101 162)
1925 {
1926  public:
1927  explicit PrivateDataSpecifierDescriptor(const unsigned char *data, int len = 300) :
1928  MPEGDescriptor(data, len, DescriptorID::private_data_specifier) { }
1929  explicit PrivateDataSpecifierDescriptor(const std::vector<uint8_t> &data) :
1930  MPEGDescriptor(data, DescriptorID::private_data_specifier) { }
1931  // Name bits loc expected value
1932  // descriptor_tag 8 0.0 0x5f
1933  // descriptor_length 8 1.0
1934 
1935  // private_data_specifier 32 2.0
1936  uint32_t PrivateDataSpecifier (void) const
1937  {
1938  return (m_data[2] << 24 | m_data[3] << 16 | m_data[4] << 8 | m_data[5]);
1939  }
1940 };
1941 
1942 // DVB Bluebook A038 (Sept 2011) p 79
1944 {
1945  public:
1946  explicit ScramblingDescriptor(const unsigned char *data, int len = 300) :
1947  MPEGDescriptor(data, len, DescriptorID::scrambling, 1) { }
1948  // Name bits loc expected value
1949  // descriptor_tag 8 0.0 0x65
1950  // descriptor_length 8 1.0
1951 
1952  // scrambling_mode 8 2.0
1953  uint ScramblingMode(void) const { return m_data[2]; }
1954  QString toString(void) const override // MPEGDescriptor
1955  {
1956  return QString("ScramblingDescriptor scrambling_mode(%1)")
1957  .arg(ScramblingMode());
1958  }
1959 };
1960 
1961 // DVB Bluebook A038 (Feb 2019) p 83, Table 89: Service type coding
1963 {
1964  public:
1965  explicit ServiceDescriptorMapping(const uint service_type) : m_serviceType(service_type) {}
1966  enum : std::uint8_t
1967  {
1976  // reserved for future use = 0x09,
1985  // reserved for future use = 0x12 to 0x15
1997  // reserved for future use = 0x21 to 0x7F
1998  // user defined = 0x80 to 0xFE
1999  // reserved for future use = 0xFF
2000  // User Defined descriptors for Dish network
2014 
2015  };
2016  uint ServiceType(void) const { return m_serviceType; }
2017  bool IsDTV(void) const
2018  {
2019  return ((ServiceType() == kServiceTypeDigitalTelevision) ||
2021  IsHDTV() ||
2022  IsUHDTV() ||
2036  }
2037  bool IsDigitalAudio(void) const
2038  {
2039  return
2042  }
2043  bool IsHDTV(void) const
2044  {
2045  return
2049  }
2050  bool IsUHDTV(void) const
2051  {
2052  return
2055  }
2056  bool IsTeletext(void) const
2057  {
2059  }
2060  QString toString(void) const;
2061 
2062  private:
2064 };
2065 
2066 // DVB Bluebook A038 (Feb 2019) p 82
2068 {
2069  public:
2070  explicit ServiceDescriptor(const unsigned char *data, int len = 300) :
2071  MPEGDescriptor(data, len, DescriptorID::service) { }
2072  // Name bits loc expected value
2073  // descriptor_tag 8 0.0 0x48
2074  // descriptor_length 8 1.0
2075 
2076  // service_type 8 2.0
2077  uint ServiceType(void) const { return m_data[2]; }
2078  // svc_provider_name_len 8 3.0
2079  uint ServiceProviderNameLength(void) const { return m_data[3]; }
2080  // for (i=0;i<N;I++) { char 8 }
2081  QString ServiceProviderName(void) const
2083  QString ServiceProviderShortName(void) const
2084  {
2086  }
2087  // service_name_length 8
2089  { return m_data[4 + ServiceProviderNameLength()]; }
2090  // for (i=0;i<N;I++) { char 8 }
2091  QString ServiceName(void) const
2092  {
2094  ServiceNameLength());
2095  }
2096  QString ServiceShortName(void) const
2097  {
2099  ServiceNameLength());
2100  }
2101  bool IsDTV(void) const
2102  { return ServiceDescriptorMapping(ServiceType()).IsDTV(); }
2103  bool IsDigitalAudio(void) const
2105  bool IsHDTV(void) const
2107  bool IsTeletext(void) const
2109 
2110  QString toString(void) const override // MPEGDescriptor
2111  {
2112  return QString("ServiceDescriptor: %1 %2(0x%3)")
2113  .arg(ServiceName(),
2115  .arg(ServiceType(),2,16,QChar('0'));
2116  }
2117 };
2118 
2119 // DVB Bluebook A038 (Feb 2019) p 84
2121 {
2122  public:
2123  explicit ServiceAvailabilityDescriptor(const unsigned char *data, int len = 300) :
2124  MPEGDescriptor(data, len, DescriptorID::service_availability) { }
2125  // Name bits loc expected value
2126  // descriptor_tag 8 0.0 0x72
2127  // descriptor_length 8 1.0
2128 
2129  // availability_flag 1 2.0
2130  // reserved 7 2.1
2131  // for (i=0;i<N;i++) { cell_id 16 }
2132 };
2133 
2134 // DVB Bluebook A038 (Feb 2019) p 84
2136 {
2137  public:
2138  explicit ServiceListDescriptor(const unsigned char *data, int len = 300) :
2139  MPEGDescriptor(data, len, DescriptorID::service_list) { }
2140  // Name bits loc expected value
2141  // descriptor_tag 8 0.0 0x41
2142  // descriptor_length 8 1.0
2143 
2144  // for (i=0;i<N;I++)
2145  // {
2146  // service_id 16 0.0+p
2147  // service_type 8 2.0+p
2148  // }
2149  uint ServiceCount(void) const { return DescriptorLength() / 3; }
2150 
2152  { return (m_data[2+(i*3)] << 8) | m_data[3+(i*3)]; }
2153 
2154  uint ServiceType(uint i) const { return m_data[4+(i*3)]; }
2155 
2156  QString toString(void) const override // MPEGDescriptor
2157  {
2158  QString str = QString("ServiceListDescriptor: %1 Services")
2159  .arg(ServiceCount());
2160  for (uint i=0; i<ServiceCount(); i++)
2161  {
2162  str.append("\n");
2163  str.append(QString(" Service (%1) Type%2 (0x%3)")
2164  .arg(ServiceID(i))
2166  .arg(ServiceType(i),2,16,QChar('0')));
2167  }
2168  return str;
2169  }
2170 };
2171 
2172 // DVB Bluebook A038 (Sept 2011) p 82
2174 {
2175  public:
2176  explicit ServiceMoveDescriptor(const unsigned char *data, int len = 300) :
2177  MPEGDescriptor(data, len, DescriptorID::service_move) { }
2178  // Name bits loc expected value
2179  // descriptor_tag 8 0.0 0x60
2180  // descriptor_length 8 1.0
2181 
2182  // new_original_network_id 16 2.0
2183  // new_transport_stream_id 16 4.0
2184  // new_service_id 16 6.0
2185 };
2186 
2187 // DVB Bluebook A038 (Sept 2011) p 83
2189 {
2190  public:
2191  explicit ShortEventDescriptor(const unsigned char *data, int len = 300) :
2192  MPEGDescriptor(data, len, DescriptorID::short_event) { }
2193  // Name bits loc expected value
2194  // descriptor_tag 8 0.0 0x4d
2195  // descriptor_length 8 1.0
2196 
2197  // ISO_639_language_code 24 2.0
2198  int LanguageKey(void) const
2199  { return iso639_str3_to_key(&m_data[2]); }
2200  QString LanguageString(void) const
2201  { return iso639_key_to_str3(LanguageKey()); }
2202  int CanonicalLanguageKey(void) const
2204  QString CanonicalLanguageString(void) const
2206  // event_name_length 8 5.0
2207  uint EventNameLength(void) const { return m_data[5]; }
2208  // for (i=0;i<event_name_length;i++) { event_name_char 8 }
2209  QString EventName(void) const
2210  { return dvb_decode_text(&m_data[6], m_data[5]); }
2211  QString EventShortName(void) const
2212  { return dvb_decode_short_name(&m_data[6], m_data[5]); }
2213  // text_length 8
2214  uint TextLength(void) const { return m_data[6 + m_data[5]]; }
2215  // for (i=0;i<text_length;i++) { text_char 8 }
2216  QString Text(void) const
2217  { return dvb_decode_text(&m_data[7 + m_data[5]], TextLength()); }
2218 
2219  // HACK beg -- Pro7Sat is missing encoding
2220  QString EventName(const enc_override& encoding_override) const
2221  {
2222  return dvb_decode_text(&m_data[6], m_data[5],
2223  encoding_override);
2224  }
2225 
2226  QString Text(const enc_override& encoding_override) const
2227  {
2228  return dvb_decode_text(&m_data[7 + m_data[5]], TextLength(),
2229  encoding_override);
2230  }
2231  // HACK end -- Pro7Sat is missing encoding
2232 
2233  QString toString(void) const override // MPEGDescriptor
2234  { return LanguageString() + " : " + EventName() + " : " + Text(); }
2235 };
2236 
2237 // DVB Bluebook A038 (Sept 2011) p 84
2239 {
2240  public:
2241  explicit ShortSmoothingBufferDescriptor(const unsigned char *data, int len = 300) :
2242  MPEGDescriptor(data, len, DescriptorID::short_smoothing_buffer) { }
2243  // Name bits loc expected value
2244  // descriptor_tag 8 0.0 0x61
2245  // descriptor_length 8 1.0
2246 
2247  // sb_size 2 2.0
2248  // sb_leak_rate 6 2.2
2249  // for (i=0; i<N; i++)
2250  // { DVB_reserved 8 }
2251 };
2252 
2253 // DVB Bluebook A038 (Sept 2011) p 85
2257 {
2258  public:
2259  explicit StreamIdentifierDescriptor(const unsigned char *data, int len = 300) :
2260  MPEGDescriptor(data, len, DescriptorID::stream_identifier, 1) { }
2261  // Name bits loc expected value
2262  // descriptor_tag 8 0.0 0x52
2263  // descriptor_length 8 1.0 0x01
2264 
2265  // component_tag 8 2.0
2266  uint ComponentTag(void) const { return m_data[2]; }
2267  QString toString(void) const override // MPEGDescriptor
2268  {
2269  return QString("Stream Identifier Descriptor (0x52): ComponentTag=0x%1")
2270  .arg(ComponentTag(),1,16);
2271  }
2272 };
2273 
2274 // DVB Bluebook A038 (Sept 2011) p 86
2276 {
2277  public:
2278  explicit StuffingDescriptor(const unsigned char *data, int len = 300) :
2279  MPEGDescriptor(data, len, DescriptorID::dvb_stuffing) { }
2280  // Name bits loc expected value
2281  // descriptor_tag 8 0.0 0x42
2282  // descriptor_length 8 1.0
2283  // stuffing_byte * 2.0
2284  QString toString(void) const override // MPEGDescriptor
2285  {
2286  return QString("Stuffing Descriptor (0x42) length(%1)")
2287  .arg(DescriptorLength());
2288  }
2289 };
2290 
2291 // DVB Bluebook A038 (Sept 2011) p 86
2293 {
2294  public:
2295  explicit SubtitlingDescriptor(const unsigned char *data, int len = 300) :
2296  MPEGDescriptor(data, len, DescriptorID::subtitling) { }
2297  // Name bits loc expected value
2298  // descriptor_tag 8 0.0 0x59
2299  // descriptor_length 8 1.0
2300 
2301  uint StreamCount(void) const { return DescriptorLength() >> 3; }
2302  // for (i= 0;i<N;I++)
2303  // {
2304  // ISO_639_language_code 24 0.0+(i*8)
2305  int LanguageKey(uint i) const
2306  { return iso639_str3_to_key(&m_data[2 + (i<<3)]); }
2307  QString LanguageString(uint i) const
2308  { return iso639_key_to_str3(LanguageKey(i)); }
2313 
2314  // subtitling_type 8 3.0+(i*8)
2316  { return m_data[5 + (i<<3)]; }
2317  // composition_page_id 16 4.0+(i*8)
2319  { return (m_data[6 + (i<<3)] << 8) | m_data[7 + (i<<3)]; }
2320  // ancillary_page_id 16 6.0+(i*8)
2322  { return (m_data[8 + (i<<3)] << 8) | m_data[9 + (i<<3)]; }
2323  // } 8.0
2324  QString toString(void) const override; // MPEGDescriptor
2325 };
2326 
2327 // DVB Bluebook A038 (Sept 2011) p 87
2329 {
2330  public:
2331  explicit TelephoneDescriptor(const unsigned char *data, int len = 300) :
2332  MPEGDescriptor(data, len, DescriptorID::telephone) { }
2333  // Name bits loc expected value
2334  // descriptor_tag 8 0.0 0x57
2335  // descriptor_length 8 1.0
2336 
2337  // reserved_future_use 2 2.0
2338  // foreign_availability 1 2.2
2339  // connection_type 5 2.3
2340  // reserved_future_use 1 3.0
2341  // country_prefix_length 2 3.1
2342  // i18n_area_code_len 3 3.4
2343  // operator_code_length 2 3.6
2344  // reserved_future_use 1 3.7
2345  // national_area_code_len 3 4.0
2346  // core_number_length 4 4.4
2347  //
2348  // for (i=0; i<N; i++)
2349  // { country_prefix_char 8 }
2350  // for (i=0; i<N; i++)
2351  // { international_area_code_char 8 }
2352  // for (i=0; i<N; i++)
2353  // { operator_code_char 8 }
2354  // for (i=0; i<N; i++)
2355  // { national_area_code_char 8 }
2356  // for (i=0; i<N; i++)
2357  // { core_number_char 8 }
2358 };
2359 
2360 // DVB Bluebook A038 (Sept 2011) p 88
2362 {
2363  public:
2364  explicit TeletextDescriptor(const unsigned char *data, int len = 300) :
2365  MPEGDescriptor(data, len, DescriptorID::teletext) { }
2366  // Name bits loc expected value
2367  // descriptor_tag 8 0.0 0x56
2368  // descriptor_length 8 1.0
2369 
2370  uint StreamCount(void) const { return DescriptorLength() / 5; }
2371 
2372  // for (i=0; i<N; i++)
2373  // {
2374  // ISO_639_language_code 24 0.0
2375  int LanguageKey(uint i) const
2376  { return iso639_str3_to_key(&m_data[2 + (i*5)]); }
2377  QString LanguageString(uint i) const
2378  { return iso639_key_to_str3(LanguageKey(i)); }
2383  // teletext_type 5 3.0
2385  { return m_data[5 + (i*5)] >> 3; }
2386  // teletext_magazine_num 3 3.5
2388  { return m_data[5 + (i*5)] & 0x7; }
2389  // teletext_page_num 8 4.0
2391  { return m_data[6 + (i*5)]; }
2392  // } 5.0
2393  QString toString(void) const override; // MPEGDescriptor
2394 };
2395 
2396 // DVB Bluebook A038 (Sept 2011) p 89
2398 {
2399  public:
2400  explicit TimeShiftedEventDescriptor(const unsigned char *data, int len = 300) :
2401  MPEGDescriptor(data, len, DescriptorID::time_shifted_event) { }
2402  // Name bits loc expected value
2403  // descriptor_tag 8 0.0 0x4f
2404  // descriptor_length 8 1.0
2405 
2406  // reference_service_id 16 2.0
2407  // reference_event_id 16 4.0
2408 };
2409 
2410 // DVB Bluebook A038 (Sept 2011) p 90
2412 {
2413  public:
2414  explicit TimeShiftedServiceDescriptor(const unsigned char *data, int len = 300) :
2415  MPEGDescriptor(data, len, DescriptorID::dvb_time_shifted_service) { }
2416  // Name bits loc expected value
2417  // descriptor_tag 8 0.0 0x4c
2418  // descriptor_length 8 1.0
2419 
2420  // reference_service_id 16 2.0
2421 };
2422 
2423 // DVB Bluebook A038 (Sept 2011) p 90
2425 {
2426  public:
2427  explicit TransportStreamDescriptor(const unsigned char *data, int len = 300) :
2428  MPEGDescriptor(data, len, DescriptorID::transport_stream) { }
2429  // Name bits loc expected value
2430  // descriptor_tag 8 0.0 0x67
2431  // descriptor_length 8 1.0
2432 
2433  // for (i=0; i<N; i++) { byte 8 }
2434  QString Data(void) const
2435  { return dvb_decode_text(&m_data[2], DescriptorLength()); }
2436  QString toString(void) const override // MPEGDescriptor
2437  { return QString("TransportStreamDescriptor data(%1)").arg(Data()); }
2438 };
2439 
2440 // DVB Bluebook A038 (Sept 2011) p 91
2442 {
2443  public:
2444  explicit VBIDataDescriptor(const unsigned char *data, int len = 300) :
2445  MPEGDescriptor(data, len, DescriptorID::vbi_data) { }
2446  // Name bits loc expected value
2447  // descriptor_tag 8 0.0 0x45
2448  // descriptor_length 8 1.0
2449 
2450  // for (i=0; i<N; i++)
2451  // {
2452  // data_service_id 8 0.0+p
2453  // data_service_length 8 1.0+p
2454  // if ((data_service_id&0x7) && data_service_id!=0x3))
2455  // {
2456  // for (i=0; i<N; i++)
2457  // {
2458  // reserved 2 2.0+p2
2459  // field_parity 1 2.2+p2
2460  // line_offset 5 2.3+p2
2461  // }
2462  // }
2463  // else
2464  // {
2465  // for (i=0; i<N; i++) { reserved 8 }
2466  // }
2467  // }
2468 };
2469 
2470 // DVB Bluebook A038 (Sept 2011) p 92
2472 {
2473  public:
2474  explicit VBITeletextDescriptor(const unsigned char *data, int len = 300) :
2475  MPEGDescriptor(data, len, DescriptorID::vbi_teletext) { }
2476  // Name bits loc expected value
2477  // descriptor_tag 8 0.0 0x46
2478  // descriptor_length 8 1.0
2479 
2480  // for (i=0;i<N;i++)
2481  // {
2482  // ISO_639_language_code 24 0.0+p
2483  // teletext_type 5 3.0+p
2484  // teletext_magazine_num 3 3.5+p
2485  // teletext_page_num 8 4.0+p
2486  // } 5.0
2487 };
2488 
2489 // DVB Bluebook A038 (Feb 2019) p 125
2491 {
2492  public:
2493  explicit PartialTransportStreamDescriptor(const unsigned char *data, int len = 300) :
2494  MPEGDescriptor(data, len, DescriptorID::partial_transport_stream) { }
2495  // Name bits loc expected value
2496  // descriptor_tag 8 0.0 0x63
2497  // descriptor_length 8 1.0
2498 
2499  // DVB_reserved_future_use 2 2.0
2500  // peak_rate 22 2.2
2501  uint PeakRate(void) const
2502  { return (m_data[2] & 0x3f) << 16 | m_data[3] << 8 | m_data[4]; }
2503  // DVB_reserved_future_use 2 5.0
2504  // minimum_overall_smoothing_rate 22 5.2
2505  uint SmoothRate(void) const
2506  { return (m_data[5] & 0x3f) << 16 | m_data[6] << 8 | m_data[7]; }
2507  // DVB_reserved_future_use 2 8.0
2508  // maximum_overall_smoothing_buffer 14 8.2
2509  uint SmoothBuf(void) const { return ((m_data[8] & 0x3f) << 8) | m_data[9]; }
2510  QString toString(void) const override; // MPEGDescriptor
2511 };
2512 
2513 
2514 // a_52a.pdf p125 Table A7 (for DVB)
2515 // DVB Bluebook A038 (Feb 2019) p 145
2517 {
2518  public:
2519  explicit AC3Descriptor(const unsigned char *data, int len = 300) :
2520  MPEGDescriptor(data, len, DescriptorID::ac3) { }
2521  // Name bits loc expected value
2522  // descriptor_tag 8 0.0 0x6A
2523  // descriptor_length 8 1.0
2524 
2525  // component_type_flag 1 2.0
2526  bool HasComponentType(void) const { return ( m_data[2] & 0x80 ) != 0; }
2527  // bsid_flag 1 2.1
2528  bool HasBSID(void) const { return ( m_data[2] & 0x40 ) != 0; }
2529  // mainid_flag 1 2.2
2530  bool HasMainID(void) const { return ( m_data[2] & 0x20 ) != 0; }
2531  // asvc_flag 1 2.3
2532  bool HasASVC(void) const { return ( m_data[2] & 0x10 ) != 0; }
2533  // reserved_flags 4 2.4
2534  // if (component_type_flag == 1)
2535  // { component_type 8 uimsbf }
2536  uint ComponentType(void) const { return m_data[3]; }
2537  // if (bsid_flag == 1)
2538  // { bsid 8 uimsbf }
2539  uint BSID(void) const
2540  { return (HasComponentType()) ? m_data[4] : m_data[3]; }
2541  // if (mainid_flag == 1)
2542  // { mainid 8 uimsbf }
2543  uint MainID(void) const
2544  {
2545  int offset = 3;
2546  offset += (HasComponentType()) ? 1 : 0;
2547  offset += (HasBSID()) ? 1 : 0;
2548  return m_data[offset];
2549  }
2550  // if (asvc_flag==1)
2551  // { asvc 8 uimsbf }
2552  uint ASVC(void) const
2553  {
2554  int offset = 3;
2555  offset += (HasComponentType()) ? 1 : 0;
2556  offset += (HasBSID()) ? 1 : 0;
2557  offset += (HasMainID()) ? 1 : 0;
2558  return m_data[offset];
2559  }
2560  // for (I=0;I<N;I++)
2561  // { additional_info[i] N*8 uimsbf }
2562  //};
2563  QString toString(void) const override; // MPEGDescriptor
2564 };
2565 
2566 static QString coderate_inner(uint coderate)
2567 {
2568  switch (coderate)
2569  {
2570  case 0x0: return "auto"; // not actually defined in spec
2571  case 0x1: return "1/2";
2572  case 0x2: return "2/3";
2573  case 0x3: return "3/4";
2574  case 0x4: return "5/6";
2575  case 0x5: return "7/8";
2576  case 0x8: return "8/9";
2577  case 0xf: return "none";
2578  default: return "auto"; // not actually defined in spec
2579  }
2580 }
2581 
2591 {
2592  public:
2593  explicit DVBLogicalChannelDescriptor(const unsigned char *data, int len = 300) :
2594  MPEGDescriptor(data, len, PrivateDescriptorID::dvb_logical_channel_descriptor) { }
2595  // Name bits loc expected value
2596  // descriptor_tag 8 0.0 0x83
2597  // descriptor_length 8 1.0
2598 
2599  uint ChannelCount(void) const { return DescriptorLength() >> 2; }
2600 
2602  { return (m_data[2 + (i<<2)] << 8) | m_data[3 + (i<<2)]; }
2603 
2605  { return ((m_data[4 + (i<<2)] << 8) | m_data[5 + (i<<2)]) & 0x3ff; }
2606 
2607  QString toString(void) const override; // MPEGDescriptor
2608 };
2609 
2619 {
2620  public:
2621  explicit DVBSimulcastChannelDescriptor(const unsigned char *data, int len = 300) :
2622  MPEGDescriptor(data, len, PrivateDescriptorID::dvb_simulcast_channel_descriptor) { }
2623  // Name bits loc expected value
2624  // descriptor_tag 8 0.0 0x88
2625  // descriptor_length 8 1.0
2626 
2627  uint ChannelCount(void) const { return DescriptorLength() >> 2; }
2628 
2630  { return (m_data[2 + (i<<2)] << 8) | m_data[3 + (i<<2)]; }
2631 
2633  { return ((m_data[4 + (i<<2)] << 8) | m_data[5 + (i<<2)]) & 0x3ff; }
2634 
2635  QString toString(void) const override; // MPEGDescriptor
2636 };
2637 
2649 {
2650  public:
2651  explicit FreesatLCNDescriptor(const unsigned char *data, int len = 300) :
2652  MPEGDescriptor(data, len, PrivateDescriptorID::freesat_lcn_table)
2653  {
2655 
2656  const unsigned char *payload = &data[2];
2657 
2658  size_t offset = 0;
2659  while ((offset + 5 < DescriptorLength()) &&
2660  (offset + 5 + payload[offset+4] <= DescriptorLength()))
2661  {
2662  m_entries.push_back(&payload[offset]);
2663  offset += 5 + payload[offset+4];
2664  }
2665  }
2666  // Name bits loc expected value
2667  // descriptor_tag 8 0.0 0xd3
2668  // descriptor_length 8 1.0
2669  // for (i=0;i<N;i++) {
2670  // service_id 16 0.0+p
2671  // chan_id 15 2.1+p
2672  // length 8 4.0+p
2673  // for (j=0;j<N;j++) {
2674  // unknown 4 0.0+p2
2675  // logical_channel_number 12 0.4+p2
2676  // region_id 16 2.0+p2
2677  // }
2678  // }
2679 
2680  uint ServiceCount(void) const
2681  { return m_entries.size(); }
2682 
2683  uint ServiceID(size_t i) const
2684  { return *m_entries[i] << 8 | *(m_entries[i]+1); }
2685 
2686  uint ChanID(size_t i) const
2687  { return (*(m_entries[i] + 2) << 8 | *(m_entries[i] + 3)) & 0x7FFF; }
2688 
2689  uint LCNCount(size_t i) const
2690  { return *(m_entries[i] + 4) / 4; }
2691 
2692  uint LogicalChannelNumber(size_t i, size_t j) const
2693  { return (*(m_entries[i] + 5 + (j*4)) << 8 | *(m_entries[i] + 5 + (j*4) + 1)) & 0xFFF; }
2694 
2695  uint RegionID(size_t i, size_t j) const
2696  { return *(m_entries[i] + 5 + (j*4) + 2) << 8 | *(m_entries[i] + 5 + (j*4) + 3); }
2697 
2698  QString toString(void) const override; // MPEGDescriptor
2699 
2700  private:
2702 };
2703 
2714 {
2715  public:
2716  explicit FreesatRegionDescriptor(const unsigned char *data, int len = 300) :
2717  MPEGDescriptor(data, len, PrivateDescriptorID::freesat_region_table)
2718  {
2720 
2721  const unsigned char *payload = &data[2];
2722 
2723  uint offset = 0;
2724  while ((offset + 6 < DescriptorLength()) &&
2725  (offset + 6 + payload[offset+5] <= DescriptorLength()))
2726  {
2727  m_entries.push_back(&payload[offset]);
2728  offset += 6 + payload[offset+5];
2729  }
2730  }
2731  // Name bits loc expected value
2732  // descriptor_tag 8 0.0 0xd4
2733  // descriptor_length 8 1.0
2734  // for (i=0;i<N;i++) {
2735  // region_id 16 0.0+p
2736  // language_code 24 2.0+p eng
2737  // text_length 8 5.0+p
2738  // for (j=0;j<N;j++) {
2739  // text_char 8
2740  // }
2741  // }
2742 
2743  uint RegionCount(void) const
2744  { return m_entries.size(); }
2745 
2746  int RegionID(uint i) const
2747  { return *m_entries[i] << 8 | *(m_entries[i]+1); }
2748 
2749  QString Language(uint i) const
2750  { return QString::fromLatin1((char *) m_entries[i] + 2, 3); }
2751 
2752  QString RegionName(uint i) const
2753  { return QString::fromLatin1((char *) m_entries[i] + 6, *(m_entries[i] + 5)); }
2754 
2755  QString toString(void) const override; // MPEGDescriptor
2756 
2757  private:
2759 };
2760 
2769 {
2770  public:
2771  explicit FreesatCallsignDescriptor(const unsigned char *data, int len = 300) :
2772  MPEGDescriptor(data, len, PrivateDescriptorID::freesat_callsign)
2773  {
2775  }
2776 
2777  // Name bits loc expected value
2778  // descriptor_tag 8 0.0 0xd8
2779  // descriptor_length 8 1.0
2780 
2781  // ISO_639_language_code 24 2.0
2782  // callsign_length 8 5.0
2783  // for (j=0;j<N;j++) {
2784  // callsign_char 8
2785 
2786  QString Language(void) const
2787  { return QString::fromLatin1((char *) m_data +2, 3); }
2788 
2789  QString Callsign(void) const
2790  { return dvb_decode_short_name(&m_data[6], m_data[5]); }
2791 
2792  QString toString(void) const override; // MPEGDescriptor
2793 };
2794 
2807 {
2808  public:
2809  explicit SkyLCNDescriptor(const unsigned char *data, int len = 300) :
2810  MPEGDescriptor(data, len, PrivateDescriptorID::sky_lcn_table)
2811  {
2813  }
2814  // Name bits loc expected value
2815  // descriptor_tag 8 0.0 0xd3
2816  // descriptor_length 8 1.0
2817  // region_id 16 2.0
2818  // for (i=0;i<N;i++) {
2819  // service_id 16 0.0+p
2820  // service_type 8 2.0+p
2821  // unknown 16 3.0+p
2822  // logical_channel_number 16 5.0+p2
2823  // unknown 16 7.0+p2
2824  // }
2825 
2826  uint RegionID(void) const
2827  { return (*(m_data + 3) != 0xFF) ? *(m_data + 3) : 0xFFFF;}
2828 
2829  uint RegionRaw(void) const
2830  { return *(m_data + 2) << 8 | *(m_data + 3);}
2831 
2832  uint ServiceCount(void) const
2833  { return (DescriptorLength() - 2) / 9; }
2834 
2835  uint ServiceID(size_t i) const
2836  { return *(m_data + 4 + (i*9)) << 8 | *(m_data + 5 + (i*9)); }
2837 
2838  uint ServiceType(size_t i) const
2839  { return *(m_data + 6 + (i*9)); }
2840 
2841  uint ChannelID(size_t i) const
2842  { return *(m_data + 7 + (i*9)) << 8 | *(m_data + 8 + (i*9)); }
2843 
2844  uint LogicalChannelNumber(size_t i) const
2845  { return *(m_data + 9 + (i*9)) << 8 | *(m_data + 10 + (i*9)); }
2846 
2847  uint Flags(size_t i) const
2848  { return *(m_data + 11 + (i*9)) << 8 | *(m_data + 12 + (i*9)); }
2849 
2850  QString toString(void) const override; // MPEGDescriptor
2851 };
2852 
2853 // Descriptor layout similar to SkyLCNDescriptor
2855 {
2856  public:
2857  explicit OpenTVChannelListDescriptor(const unsigned char *data, int len = 300) :
2858  MPEGDescriptor(data, len, PrivateDescriptorID::opentv_channel_list) { }
2859  // Name bits loc expected value
2860  // descriptor_tag 8 0.0 0xB1
2861  // descriptor_length 8 1.0
2862 
2863  uint ChannelCount(void) const { return (DescriptorLength() - 2)/9; }
2864 
2865  uint RegionID() const
2866  { return (m_data[2] << 8) | m_data[3]; }
2867 
2869  { return (m_data[4 + 0 + (i*9)] << 8) | m_data[4 + 1 + (i*9)]; }
2870 
2872  { return m_data[4 + 2 + (i*9)]; }
2873 
2875  { return ((m_data[4 + 3 + (i*9)] << 8) | m_data[4 + 4 + (i*9)]); }
2876 
2878  { return ((m_data[4 + 5 + (i*9)] << 8) | m_data[4 + 6 + (i*9)]); }
2879 
2880  uint Flags(uint i) const
2881  { return ((m_data[4 + 7 + (i*9)] << 8) | m_data[4 + 8 + (i*9)]) & 0xf; }
2882 
2883  QString toString(void) const override; // MPEGDescriptor
2884 };
2885 
2886 // ETSI TS 102 323 (TV Anytime)
2888 {
2889  public:
2890  explicit DVBContentIdentifierDescriptor(const unsigned char *data, int len = 300) :
2891  MPEGDescriptor(data, len, DescriptorID::dvb_content_identifier)
2892  {
2893  size_t count = 0;
2894 
2895  m_crid.fill(nullptr);
2896 
2897  if (IsValid())
2898  {
2899  uint8_t position = 2;
2900  while (m_data[1] >= position)
2901  {
2902  size_t length = m_data[position+1];
2903  m_crid[count] = &m_data[position];
2904  count++;
2905  position+=length+2;
2906  }
2907  }
2908  m_cridCount = count;
2909  }
2910  // Name bits loc expected value
2911  // descriptor_tag 8 0.0 0x76
2912  // descriptor_length 8 1.0
2913 
2914  uint ContentType(size_t n=0) const { return m_crid[n][0] >> 2; }
2915 
2916  uint ContentEncoding(size_t n=0) const { return m_crid[n][0] & 0x03; }
2917 
2918  // A content identifier is a URI. It may contain UTF-8 encoded using %XX.
2919  QString ContentId(size_t n=0) const
2920  {
2921  // Access the array in two steps so cppcheck doesn't get confused.
2922  const uint8_t* cridN = m_crid[n];
2923  int length = cridN[1];
2924  int positionOfHash = length-1;
2925  while (positionOfHash >= 0) {
2926  if (cridN[2 + positionOfHash] == '#') {
2927  length = positionOfHash; /* remove the hash and the following IMI */
2928  break;
2929  }
2930  positionOfHash--;
2931  }
2932  return QString::fromLatin1((const char *)&m_crid[n][2], length);
2933  }
2934 
2935  size_t CRIDCount() const
2936  {
2937  return m_cridCount;
2938  }
2939 
2940  private:
2941  size_t m_cridCount;
2942  std::array<const uint8_t*,8> m_crid {};
2943 };
2944 
2945 // ETSI TS 102 323 (TV Anytime)
2947 {
2948  public:
2949  explicit DefaultAuthorityDescriptor(const unsigned char *data, int len = 300) :
2950  MPEGDescriptor(data, len, DescriptorID::default_authority) { }
2951  // Name bits loc expected value
2952  // descriptor_tag 8 0.0 0x73
2953  // descriptor_length 8 1.0
2954 
2955  QString DefaultAuthority(void) const
2956  {
2957  return QString::fromLatin1((const char *)m_data+2, m_data[1]);
2958  }
2959 
2960  QString toString(void) const override // MPEGDescriptor
2961  {
2962  return QString("DefaultAuthorityDescriptor: Authority(%1)")
2963  .arg(DefaultAuthority());
2964  }
2965 };
2966 
2967 // Draft ETSI EN 300 468 V1.16.1 (2019-05)
2968 // DVB Bluebook A038 (Feb 2019) p 59
2969 // Table 42: S2 satellite delivery system descriptor
2970 // 0x79
2972 {
2973  public:
2975  const unsigned char *data, int len = 300) :
2976  MPEGDescriptor(data, len, DescriptorID::s2_satellite_delivery_system) { }
2977  // Name bits loc expected value
2978  // descriptor_tag 8 0.0 0x79
2979  // descriptor_length 8 1.0
2980  // scrambling_sequence_selector 1 2.0
2982  { return (m_data[2] >> 7) & 0x01; }
2983 
2984  // multiple_input_stream_flag 1 2.1
2986  { return (m_data[2] >> 6) & 0x01; }
2987 
2988  // reserved_zero_future_use 1 2.2
2989  // not_timeslice_flag 1 2.3
2991  { return (m_data[2] >> 4) & 0x01; }
2992 
2993  // reserved_future_use 2 2.4
2994  // TS_GS_mode 2 2.6
2995  uint TSGSMode() const
2996  { return m_data[2] & 0x03; }
2997 
2998  // if (scrambling_sequence_selector == 1){
2999  // reserved_future_use 6 3.0
3000  // scrambling_sequence_index 18 3.6
3001  // }
3002  // if (multiple_input_stream_flag == 1){
3003  // input_stream_identifier 8 6.0
3004  // }
3005  // if (not_timeslice_flag == 0){
3006  // timeslice_number 8 7.0
3007  // }
3008 
3009  QString toString(void) const override; // MPEGDescriptor
3010 };
3011 
3012 /*
3013  * private UPC Cablecom (Austria) episode descriptor for Horizon middleware
3014  */
3016 {
3017  public:
3018  explicit PrivateUPCCablecomEpisodeTitleDescriptor(const unsigned char *data, int len = 300) :
3019  MPEGDescriptor(data, len, PrivateDescriptorID::upc_event_episode_title) { }
3020  explicit PrivateUPCCablecomEpisodeTitleDescriptor(const std::vector<uint8_t> &data) :
3021  MPEGDescriptor(data, PrivateDescriptorID::upc_event_episode_title) { }
3022  // Name bits loc expected value
3023  // descriptor_tag 8 0.0 0xa7
3024  // descriptor_length 8 1.0
3025 
3026  // ISO_639_language_code 24 2.0
3027  int LanguageKey(void) const
3028  {
3029  return iso639_str3_to_key(&m_data[2]);
3030  }
3031  QString LanguageString(void) const
3032  {
3033  return iso639_key_to_str3(LanguageKey());
3034  }
3035  int CanonicalLanguageKey(void) const
3036  {
3038  }
3039  QString CanonicalLanguageString(void) const
3040  {
3042  }
3043 
3044  uint TextLength(void) const
3045  {
3046  return m_data[1] - 3;
3047  }
3048 
3049  QString Text(void) const
3050  {
3051  return dvb_decode_text(&m_data[5], TextLength());
3052  }
3053 };
3054 
3055 #endif // DVB_DESCRIPTORS_H
AdaptationFieldDataDescriptor::AdaptationFieldDataID
uint AdaptationFieldDataID(void) const
Definition: dvbdescriptors.h:250
DescriptorID
Definition: mpegdescriptors.h:20
ServiceRelocatedDescriptor
Definition: dvbdescriptors.h:1457
MPEGDescriptor::toString
virtual QString toString(void) const
Definition: mpegdescriptors.cpp:410
ShortEventDescriptor::EventName
QString EventName(const enc_override &encoding_override) const
Definition: dvbdescriptors.h:2220
TeletextDescriptor::TeletextMagazineNum
uint TeletextMagazineNum(uint i) const
Definition: dvbdescriptors.h:2387
ServiceDescriptorMapping
Definition: dvbdescriptors.h:1962
T2DeliverySystemDescriptor::TransmissionMode
uint TransmissionMode(void) const
Definition: dvbdescriptors.h:1221
byteBCDL2int
static constexpr uint8_t byteBCDL2int(uint8_t i)
Definition: dvbdescriptors.h:55
SatelliteDeliverySystemDescriptor::OrbitalPositionString
QString OrbitalPositionString(void) const
Definition: dvbdescriptors.h:856
OpenTVChannelListDescriptor::ChannelID
uint ChannelID(uint i) const
Definition: dvbdescriptors.h:2874
DSNGDescriptor::DSNGDescriptor
DSNGDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:1557
ParentalRatingDescriptor
Definition: dvbdescriptors.h:1852
TerrestrialDeliverySystemDescriptor::CodeRateLP
uint CodeRateLP(void) const
Definition: dvbdescriptors.h:1041
LinkageDescriptor::kDataBroadcastService
@ kDataBroadcastService
Definition: dvbdescriptors.h:148
T2DeliverySystemDescriptor::TransmissionModeString
QString TransmissionModeString(void) const
Definition: dvbdescriptors.h:1222
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:2364
S2SatelliteDeliverySystemDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:690
TargetRegionNameDescriptor::CountryCodeString
QString CountryCodeString(void) const
Definition: dvbdescriptors.h:1437
TeletextDescriptor::CanonicalLanguageString
QString CanonicalLanguageString(uint i) const
Definition: dvbdescriptors.h:2381
BouquetNameDescriptor::BouquetNameDescriptor
BouquetNameDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:307
CableDeliverySystemDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:637
MosaicDescriptor::MosaicDescriptor
MosaicDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:1717
TerrestrialDeliverySystemDescriptor::HierarchyString
QString HierarchyString(void) const
Definition: dvbdescriptors.h:1012
ComponentDescriptor::AudioProperties
uint AudioProperties(void) const
Definition: dvbdescriptors.h:505
ContentDescriptor::GetMythCategory
ProgramInfo::CategoryType GetMythCategory(uint i) const
Definition: dvbdescriptors.cpp:288
TerrestrialDeliverySystemDescriptor::kTransmissionMode4k
@ kTransmissionMode4k
Definition: dvbdescriptors.h:1068
TerrestrialDeliverySystemDescriptor::GuardInterval
uint GuardInterval(void) const
Definition: dvbdescriptors.h:1057
T2DeliverySystemDescriptor::GuardIntervalString
QString GuardIntervalString(void) const
Definition: dvbdescriptors.h:1204
LocalTimeOffsetDescriptor::LocalTimeOffsetPolarity
bool LocalTimeOffsetPolarity(uint i) const
-1 if true, +1 if false (behind utc, ahead of utc, resp).
Definition: dvbdescriptors.h:1690
T2DeliverySystemDescriptor::CellIDExtension
uint CellIDExtension(uint i, uint j) const
Definition: dvbdescriptors.h:1246
TransportStreamDescriptor::Data
QString Data(void) const
Definition: dvbdescriptors.h:2434
MPEGDescriptor::DescriptorTag
uint DescriptorTag(void) const
Definition: mpegdescriptors.h:345
TerrestrialDeliverySystemDescriptor::GuardIntervalString
QString GuardIntervalString(void) const
Definition: dvbdescriptors.h:1058
MPEGDescriptor::DescriptorLength
uint DescriptorLength(void) const
Definition: mpegdescriptors.h:346
T2DeliverySystemDescriptor::OtherFrequencyFlag
uint OtherFrequencyFlag(void) const
Definition: dvbdescriptors.h:1228
ShortSmoothingBufferDescriptor::ShortSmoothingBufferDescriptor
ShortSmoothingBufferDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2241
ContentDescriptor::Nibble1
uint Nibble1(uint i) const
Definition: dvbdescriptors.h:630
ShortEventDescriptor::ShortEventDescriptor
ShortEventDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2191
CountryAvailabilityDescriptor
Definition: dvbdescriptors.h:657
SatelliteDeliverySystemDescriptor::OrbitalPositionFloat
double OrbitalPositionFloat() const
Definition: dvbdescriptors.h:862
ContentDescriptor::GetDescription
QString GetDescription(uint i) const
Definition: dvbdescriptors.cpp:336
ParentalRatingDescriptor::Count
uint Count(void) const
Definition: dvbdescriptors.h:1862
ComponentDescriptor::VideoProperties
uint VideoProperties(void) const
Definition: dvbdescriptors.h:442
SatelliteDeliverySystemDescriptor::IsLinearPolarization
bool IsLinearPolarization(void) const
Definition: dvbdescriptors.h:875
TerrestrialDeliverySystemDescriptor::CodeRateHP
uint CodeRateHP(void) const
Definition: dvbdescriptors.h:1032
MultilingualNetworkNameDescriptor
Definition: dvbdescriptors.h:1785
CableDeliverySystemDescriptor::Modulation
uint Modulation(void) const
Definition: dvbdescriptors.h:797
TerrestrialDeliverySystemDescriptor::kGuardInterval_1_32
@ kGuardInterval_1_32
Definition: dvbdescriptors.h:1052
TerrestrialDeliverySystemDescriptor::OtherFrequencyInUse
bool OtherFrequencyInUse(void) const
Definition: dvbdescriptors.h:1077
ImageIconDescriptor::IconID
uint IconID(void) const
Definition: dvbdescriptors.h:1114
mpegdescriptors.h
ComponentDescriptor::LanguageKey
int LanguageKey(void) const
Definition: dvbdescriptors.h:410
ServiceMoveDescriptor::ServiceMoveDescriptor
ServiceMoveDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2176
ServiceDescriptor::ServiceProviderName
QString ServiceProviderName(void) const
Definition: dvbdescriptors.h:2081
FrequencyListDescriptor
Definition: dvbdescriptors.h:1614
FreesatLCNDescriptor
Freesat Logical Channel Number descriptor.
Definition: dvbdescriptors.h:2648
FreesatLCNDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:992
CableDeliverySystemDescriptor::kInnerFEC_8_9_ConvolutionCodeRate
@ kInnerFEC_8_9_ConvolutionCodeRate
Definition: dvbdescriptors.h:824
ImageIconDescriptor::DescriptorNumber
uint DescriptorNumber(void) const
Definition: dvbdescriptors.h:1102
SatelliteDeliverySystemDescriptor::kRollOff_20
@ kRollOff_20
Definition: dvbdescriptors.h:882
AC3Descriptor::ASVC
uint ASVC(void) const
Definition: dvbdescriptors.h:2552
TerrestrialDeliverySystemDescriptor::Bandwidth
uint Bandwidth(void) const
Definition: dvbdescriptors.h:968
LocalTimeOffsetDescriptor::NextTimeOffset
uint NextTimeOffset(uint i) const
Definition: dvbdescriptors.h:1706
ServiceDescriptorMapping::kServiceTypeH264AVCSDDigitalTelevision
@ kServiceTypeH264AVCSDDigitalTelevision
Definition: dvbdescriptors.h:1986
ServiceDescriptorMapping::kServiceTypeAdvancedCodecDigitalRadioSound
@ kServiceTypeAdvancedCodecDigitalRadioSound
Definition: dvbdescriptors.h:1977
LocalTimeOffsetDescriptor::TimeOfChangeData
const unsigned char * TimeOfChangeData(uint i) const
Definition: dvbdescriptors.h:1699
CountryAvailabilityDescriptor::IsAvailable
bool IsAvailable(void) const
Definition: dvbdescriptors.h:669
ShortEventDescriptor::Text
QString Text(const enc_override &encoding_override) const
Definition: dvbdescriptors.h:2226
LinkageDescriptor::MobileOriginTypeString
QString MobileOriginTypeString(void) const
DescriptorID::service_relocated
@ service_relocated
Definition: mpegdescriptors.h:151
DescriptorID::network_change_notify
@ network_change_notify
Definition: mpegdescriptors.h:147
ExtendedEventDescriptor::CanonicalLanguageKey
int CanonicalLanguageKey(void) const
Definition: dvbdescriptors.h:1584
CableDeliverySystemDescriptor::FECInner
uint FECInner(void) const
Definition: dvbdescriptors.h:827
OpenTVChannelListDescriptor::Flags
uint Flags(uint i) const
Definition: dvbdescriptors.h:2880
CellListDescriptor
Definition: dvbdescriptors.h:366
ComponentDescriptor::MP2Properties
uint MP2Properties(void) const
Definition: dvbdescriptors.h:520
TerrestrialDeliverySystemDescriptor::kCodeRate_5_6
@ kCodeRate_5_6
Definition: dvbdescriptors.h:1029
SatelliteDeliverySystemDescriptor::kInnerFEC_None
@ kInnerFEC_None
Definition: dvbdescriptors.h:933
TerrestrialDeliverySystemDescriptor::kCodeRate_1_2
@ kCodeRate_1_2
Definition: dvbdescriptors.h:1026
TimeShiftedServiceDescriptor
Definition: dvbdescriptors.h:2411
SupplementaryAudioDescriptor::ReservedFutureUse
uint ReservedFutureUse(void) const
Definition: dvbdescriptors.h:1310
LocalTimeOffsetDescriptor::LocalTimeOffsetWithPolarity
int LocalTimeOffsetWithPolarity(uint i) const
Definition: dvbdescriptors.h:1696
x2
static int x2
Definition: mythsocket.cpp:51
ExtendedEventDescriptor::LanguageString
QString LanguageString(void) const
Definition: dvbdescriptors.h:1582
LinkageDescriptor::HasMobileNetworkID
bool HasMobileNetworkID(void) const
Definition: dvbdescriptors.h:183
ShortEventDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.h:2233
MessageDescriptor::MessageDescriptor
MessageDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:1349
DVBContentIdentifierDescriptor::CRIDCount
size_t CRIDCount() const
Definition: dvbdescriptors.h:2935
mythtvexp.h
ServiceDescriptorMapping::kServiceTypeTeletext
@ kServiceTypeTeletext
Definition: dvbdescriptors.h:1970
ServiceDescriptorMapping::kServiceTypeNVODTimeShifted
@ kServiceTypeNVODTimeShifted
Definition: dvbdescriptors.h:1972
build_compdb.content
content
Definition: build_compdb.py:38
CellFrequencyLinkDescriptor
Definition: dvbdescriptors.h:344
TerrestrialDeliverySystemDescriptor::kCodeRate_3_4
@ kCodeRate_3_4
Definition: dvbdescriptors.h:1028
ApplicationSignallingDescriptor::ApplicationType
uint ApplicationType(uint i) const
Definition: dvbdescriptors.h:233
ExtendedEventDescriptor::LanguageKey
int LanguageKey(void) const
Definition: dvbdescriptors.h:1580
ServiceListDescriptor::ServiceListDescriptor
ServiceListDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2138
ProgramInfo::CategoryType
CategoryType
Definition: programinfo.h:76
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:2173
ServiceDescriptorMapping::kServiceTypeMosaic
@ kServiceTypeMosaic
Definition: dvbdescriptors.h:1973
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:1369
NVODReferenceDescriptor::Count
uint Count(void) const
Definition: dvbdescriptors.h:1833
T2DeliverySystemDescriptor::kGuardInterval_1_4
@ kGuardInterval_1_4
Definition: dvbdescriptors.h:1198
MessageDescriptor::MessageID
uint MessageID(void) const
Definition: dvbdescriptors.h:1364
T2DeliverySystemDescriptor::Bandwidth
uint Bandwidth(void) const
Definition: dvbdescriptors.h:1178
TerrestrialDeliverySystemDescriptor::kTransmissionMode2k
@ kTransmissionMode2k
Definition: dvbdescriptors.h:1066
ComponentDescriptor::IsAudio
bool IsAudio(void) const
Definition: dvbdescriptors.h:427
FrequencyListDescriptor::CodingType
uint CodingType(void) const
Definition: dvbdescriptors.h:1632
TerrestrialDeliverySystemDescriptor::kHierarchyInfoAlpha1InDepthInterleaver
@ kHierarchyInfoAlpha1InDepthInterleaver
Definition: dvbdescriptors.h:1005
ServiceDescriptor::IsDTV
bool IsDTV(void) const
Definition: dvbdescriptors.h:2101
MessageDescriptor::Message
QString Message(void) const
Definition: dvbdescriptors.h:1373
LinkageDescriptor::kHandOverLocalVariation
@ kHandOverLocalVariation
Definition: dvbdescriptors.h:166
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:599
CableDeliverySystemDescriptor
Definition: dvbdescriptors.h:751
SkyLCNDescriptor::Flags
uint Flags(size_t i) const
Definition: dvbdescriptors.h:2847
SatelliteDeliverySystemDescriptor::kInnerFEC_5_6_ConvolutionCodeRate
@ kInnerFEC_5_6_ConvolutionCodeRate
Definition: dvbdescriptors.h:930
FreesatCallsignDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:1027
SHDeliverySystemDescriptor
Definition: dvbdescriptors.h:1261
FreesatLCNDescriptor::LogicalChannelNumber
uint LogicalChannelNumber(size_t i, size_t j) const
Definition: dvbdescriptors.h:2692
TerrestrialDeliverySystemDescriptor::kHierarchyInfoAlpha2NativeInterleaver
@ kHierarchyInfoAlpha2NativeInterleaver
Definition: dvbdescriptors.h:1002
S2SatelliteDeliverySystemDescriptor::NotTimesliceFlag
uint NotTimesliceFlag() const
Definition: dvbdescriptors.h:2990
DVBSimulcastChannelDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:954
T2DeliverySystemDescriptor::NumCells
uint NumCells(void) const
Definition: dvbdescriptors.h:1232
LinkageDescriptor::m_offset
uint m_offset
Definition: dvbdescriptors.h:214
CableDeliverySystemDescriptor::FECOuterString
QString FECOuterString(void) const
Definition: dvbdescriptors.h:780
x3
static int x3
Definition: mythsocket.cpp:52
T2DeliverySystemDescriptor::kTransmissionMode1k
@ kTransmissionMode1k
Definition: dvbdescriptors.h:1217
NVODReferenceDescriptor
Definition: dvbdescriptors.h:1825
MultilingualBouquetNameDescriptor
Definition: dvbdescriptors.h:1766
ServiceDescriptorMapping::kServiceTypeDataBroadcast
@ kServiceTypeDataBroadcast
Definition: dvbdescriptors.h:1979
ScramblingDescriptor
Definition: dvbdescriptors.h:1943
PartialTransportStreamDescriptor::PartialTransportStreamDescriptor
PartialTransportStreamDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2493
TargetRegionDescriptor::CountryCode
uint CountryCode(void) const
Definition: dvbdescriptors.h:1398
ServiceDescriptorMapping::kServiceTypeNimiqTV8
@ kServiceTypeNimiqTV8
Definition: dvbdescriptors.h:2012
TerrestrialDeliverySystemDescriptor::Hierarchy
uint Hierarchy(void) const
Definition: dvbdescriptors.h:1009
SatelliteDeliverySystemDescriptor::kRollOff_35
@ kRollOff_35
Definition: dvbdescriptors.h:881
CAIdentifierDescriptor
Definition: dvbdescriptors.h:326
SatelliteDeliverySystemDescriptor::Modulation
uint Modulation(void) const
Definition: dvbdescriptors.h:907
FreesatCallsignDescriptor::FreesatCallsignDescriptor
FreesatCallsignDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2771
dvbdate2unix
MTV_PUBLIC time_t dvbdate2unix(const unsigned char *buf)
Definition: dvbtables.cpp:345
LinkageDescriptor::kSystemSoftwareUpdateService
@ kSystemSoftwareUpdateService
Definition: dvbdescriptors.h:151
SHDeliverySystemDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:789
ServiceDescriptorMapping::kServiceTypeNimiqTV3
@ kServiceTypeNimiqTV3
Definition: dvbdescriptors.h:2007
SatelliteDeliverySystemDescriptor::kModulationQPSK
@ kModulationQPSK
Definition: dvbdescriptors.h:903
DVBLogicalChannelDescriptor
DVB Logical Channel Descriptor.
Definition: dvbdescriptors.h:2590
PartialTransportStreamDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:1124
ComponentDescriptor::AC3Properties
uint AC3Properties(void) const
Definition: dvbdescriptors.h:539
VBIDataDescriptor
Definition: dvbdescriptors.h:2441
DescriptorID::supplementary_audio
@ supplementary_audio
Definition: mpegdescriptors.h:146
FrequencyListDescriptor::FrequencyListDescriptor
FrequencyListDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:1617
TerrestrialDeliverySystemDescriptor::NativeInterleaver
bool NativeInterleaver(void) const
Definition: dvbdescriptors.h:1017
SubtitlingDescriptor::LanguageKey
int LanguageKey(uint i) const
Definition: dvbdescriptors.h:2305
OpenTVChannelListDescriptor::RegionID
uint RegionID() const
Definition: dvbdescriptors.h:2865
ServiceDescriptorMapping::kServiceTypeDVB_SRM
@ kServiceTypeDVB_SRM
Definition: dvbdescriptors.h:1975
ServiceDescriptorMapping::IsUHDTV
bool IsUHDTV(void) const
Definition: dvbdescriptors.h:2050
ShortEventDescriptor::CanonicalLanguageKey
int CanonicalLanguageKey(void) const
Definition: dvbdescriptors.h:2202
SatelliteDeliverySystemDescriptor::FrequencyRaw
uint FrequencyRaw(void) const
frequency 32 2.0
Definition: dvbdescriptors.h:844
CableDeliverySystemDescriptor::FrequencyHz
unsigned long long FrequencyHz(void) const
Definition: dvbdescriptors.h:766
NVODReferenceDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:1110
T2DeliverySystemDescriptor::SubcellInfoLoopLength
uint SubcellInfoLoopLength(uint i) const
Definition: dvbdescriptors.h:1245
PrivateDescriptorID::freesat_lcn_table
@ freesat_lcn_table
Definition: mpegdescriptors.h:232
ExtendedEventDescriptor::DescriptorNumber
uint DescriptorNumber(void) const
Definition: dvbdescriptors.h:1576
TeletextDescriptor::LanguageKey
int LanguageKey(uint i) const
Definition: dvbdescriptors.h:2375
PrivateUPCCablecomEpisodeTitleDescriptor::Text
QString Text(void) const
Definition: dvbdescriptors.h:3049
LinkageDescriptor::kOriginSDT
@ kOriginSDT
Definition: dvbdescriptors.h:176
TerrestrialDeliverySystemDescriptor::kTransmissionMode8k
@ kTransmissionMode8k
Definition: dvbdescriptors.h:1067
enc_override
std::vector< uint8_t > enc_override
Definition: dvbdescriptors.h:43
CableDeliverySystemDescriptor::kInnerFEC_7_8_ConvolutionCodeRate
@ kInnerFEC_7_8_ConvolutionCodeRate
Definition: dvbdescriptors.h:823
DefaultAuthorityDescriptor::DefaultAuthorityDescriptor
DefaultAuthorityDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2949
LocalTimeOffsetDescriptor::CountryRegionId
uint CountryRegionId(uint i) const
Definition: dvbdescriptors.h:1686
CellListDescriptor::CellListDescriptor
CellListDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:369
ShortEventDescriptor::Text
QString Text(void) const
Definition: dvbdescriptors.h:2216
CableDeliverySystemDescriptor::FECInnerString
QString FECInnerString(void) const
Definition: dvbdescriptors.h:828
DataBroadcastDescriptor::LanguageString
QString LanguageString(void) const
Definition: dvbdescriptors.h:717
CableDeliverySystemDescriptor::kModulationQAM32
@ kModulationQAM32
Definition: dvbdescriptors.h:792
TerrestrialDeliverySystemDescriptor::kHierarchyInfoAlpha1NativeInterleaver
@ kHierarchyInfoAlpha1NativeInterleaver
Definition: dvbdescriptors.h:1001
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
T2DeliverySystemDescriptor::kGuardInterval_19_256
@ kGuardInterval_19_256
Definition: dvbdescriptors.h:1201
CountryAvailabilityDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.h:686
T2DeliverySystemDescriptor::TFSFlag
uint TFSFlag(void) const
Definition: dvbdescriptors.h:1229
DataBroadcastDescriptor::DataBroadcastId
uint DataBroadcastId(void) const
Definition: dvbdescriptors.h:704
ParentalRatingDescriptor::ParentalRatingDescriptor
ParentalRatingDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:1855
T2DeliverySystemDescriptor::CentreFrequency
uint CentreFrequency(int i, int j) const
Definition: dvbdescriptors.h:1241
PrivateUPCCablecomEpisodeTitleDescriptor::LanguageKey
int LanguageKey(void) const
Definition: dvbdescriptors.h:3027
DVBContentIdentifierDescriptor::ContentType
uint ContentType(size_t n=0) const
Definition: dvbdescriptors.h:2914
BouquetNameDescriptor
Definition: dvbdescriptors.h:304
DVBSimulcastChannelDescriptor::ChannelNumber
uint ChannelNumber(uint i) const
Definition: dvbdescriptors.h:2632
FrequencyListDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:560
CableDeliverySystemDescriptor::kModulationQAM256
@ kModulationQAM256
Definition: dvbdescriptors.h:795
ContentDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:357
TerrestrialDeliverySystemDescriptor
Definition: dvbdescriptors.h:942
MultilingualBouquetNameDescriptor::MultilingualBouquetNameDescriptor
MultilingualBouquetNameDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:1769
LocalTimeOffsetDescriptor
Definition: dvbdescriptors.h:1661
LinkageDescriptor::PrivateData
const unsigned char * PrivateData(void) const
Definition: dvbdescriptors.h:208
TerrestrialDeliverySystemDescriptor::Alpha
uint Alpha(void) const
Definition: dvbdescriptors.h:1018
ServiceListDescriptor::ServiceType
uint ServiceType(uint i) const
Definition: dvbdescriptors.h:2154
ShortEventDescriptor
Definition: dvbdescriptors.h:2188
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:1185
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:2695
SatelliteDeliverySystemDescriptor::kInnerFEC_2_3_ConvolutionCodeRate
@ kInnerFEC_2_3_ConvolutionCodeRate
Definition: dvbdescriptors.h:928
AnnouncementSupportDescriptor::AnnouncementSupportDescriptor
AnnouncementSupportDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:282
PrivateDescriptorID::freesat_callsign
@ freesat_callsign
Definition: mpegdescriptors.h:238
ServiceDescriptorMapping::m_serviceType
uint m_serviceType
Definition: dvbdescriptors.h:2063
AnnouncementSupportDescriptor
Definition: dvbdescriptors.h:279
T2DeliverySystemDescriptor::CentreFrequency
uint CentreFrequency(uint i) const
Definition: dvbdescriptors.h:1236
OpenTVChannelListDescriptor
Definition: dvbdescriptors.h:2854
T2DeliverySystemDescriptor::kTransmissionMode2k
@ kTransmissionMode2k
Definition: dvbdescriptors.h:1214
DVBContentIdentifierDescriptor::ContentEncoding
uint ContentEncoding(size_t n=0) const
Definition: dvbdescriptors.h:2916
LinkageDescriptor::kIP_MACNotificationService
@ kIP_MACNotificationService
Definition: dvbdescriptors.h:153
PDCDescriptor::PDCDescriptor
PDCDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:1906
T2DeliverySystemDescriptor::kTransmissionMode16k
@ kTransmissionMode16k
Definition: dvbdescriptors.h:1218
TerrestrialDeliverySystemDescriptor::kConstellationQPSK
@ kConstellationQPSK
Definition: dvbdescriptors.h:985
ApplicationSignallingDescriptor::ApplicationSignallingDescriptor
ApplicationSignallingDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:221
MPEGDescriptor::IsValid
bool IsValid(void) const
Definition: mpegdescriptors.h:342
TerrestrialDeliverySystemDescriptor::kHierarchyInfoAlpha4NativeInterleaver
@ kHierarchyInfoAlpha4NativeInterleaver
Definition: dvbdescriptors.h:1003
ServiceDescriptor::ServiceDescriptor
ServiceDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2070
FrequencyListDescriptor::kCodingTypeNotDefined
@ kCodingTypeNotDefined
Definition: dvbdescriptors.h:1627
OpenTVChannelListDescriptor::ChannelCount
uint ChannelCount(void) const
Definition: dvbdescriptors.h:2863
AdaptationFieldDataDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.h:251
SubtitlingDescriptor::AncillaryPageID
uint AncillaryPageID(uint i) const
Definition: dvbdescriptors.h:2321
MessageDescriptor::LanguageKey
int LanguageKey(void) const
Definition: dvbdescriptors.h:1367
FreesatRegionDescriptor::RegionCount
uint RegionCount(void) const
Definition: dvbdescriptors.h:2743
ServiceDescriptorMapping::kServiceTypeHEVCDigitalTelevision
@ kServiceTypeHEVCDigitalTelevision
Definition: dvbdescriptors.h:1995
T2DeliverySystemDescriptor::kBandwidth6Mhz
@ kBandwidth6Mhz
Definition: dvbdescriptors.h:1173
LinkageDescriptor::ServiceID
uint ServiceID(void) const
Definition: dvbdescriptors.h:139
ServiceDescriptorMapping::ServiceType
uint ServiceType(void) const
Definition: dvbdescriptors.h:2016
ServiceDescriptorMapping::kServiceTypeNimiqTV5
@ kServiceTypeNimiqTV5
Definition: dvbdescriptors.h:2009
ServiceDescriptorMapping::kServiceTypeH264AVCHDDigitalTelevision
@ kServiceTypeH264AVCHDDigitalTelevision
Definition: dvbdescriptors.h:1989
NVODReferenceDescriptor::ServiceId
uint ServiceId(uint i) const
Definition: dvbdescriptors.h:1844
ComponentDescriptor::HEVCProperties
uint HEVCProperties(void) const
Definition: dvbdescriptors.h:490
FreesatRegionDescriptor::FreesatRegionDescriptor
FreesatRegionDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2716
ParentalRatingDescriptor::CountryCodeString
QString CountryCodeString(uint i) const
Definition: dvbdescriptors.h:1869
ServiceDescriptor::ServiceName
QString ServiceName(void) const
Definition: dvbdescriptors.h:2091
ContentDescriptor::Count
uint Count(void) const
Definition: dvbdescriptors.h:626
PrivateUPCCablecomEpisodeTitleDescriptor
Definition: dvbdescriptors.h:3015
DescriptorID::s2x_satellite_delivery_system
@ s2x_satellite_delivery_system
Definition: mpegdescriptors.h:157
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:3044
programinfo.h
ShortEventDescriptor::EventNameLength
uint EventNameLength(void) const
Definition: dvbdescriptors.h:2207
TerrestrialDeliverySystemDescriptor::BandwidthString
QString BandwidthString(void) const
Definition: dvbdescriptors.h:970
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:2505
LinkageDescriptor::TSID
uint TSID(void) const
Definition: dvbdescriptors.h:135
ServiceDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.h:2110
DescriptorID::t2_delivery_system
@ t2_delivery_system
Definition: mpegdescriptors.h:144
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:3020
SubtitlingDescriptor::CanonicalLanguageKey
int CanonicalLanguageKey(uint i) const
Definition: dvbdescriptors.h:2309
SubtitlingDescriptor::CanonicalLanguageString
QString CanonicalLanguageString(uint i) const
Definition: dvbdescriptors.h:2311
PrivateDataSpecifierDescriptor::PrivateDataSpecifierDescriptor
PrivateDataSpecifierDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:1927
S2XSatelliteDeliverySystemDescriptor
Definition: dvbdescriptors.h:1529
AC3Descriptor::HasASVC
bool HasASVC(void) const
Definition: dvbdescriptors.h:2532
ServiceDescriptorMapping::kServiceTypeH264AVCSDNVODTimeShifted
@ kServiceTypeH264AVCSDNVODTimeShifted
Definition: dvbdescriptors.h:1987
AncillaryDataDescriptor
Definition: dvbdescriptors.h:260
C2DeliverySystemDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:908
SatelliteDeliverySystemDescriptor::IsWest
bool IsWest(void) const
Definition: dvbdescriptors.h:866
TerrestrialDeliverySystemDescriptor::kHierarchyInfoNonHierarchicalInDepthInterleaver
@ kHierarchyInfoNonHierarchicalInDepthInterleaver
Definition: dvbdescriptors.h:1004
DVBLogicalChannelDescriptor::ChannelCount
uint ChannelCount(void) const
Definition: dvbdescriptors.h:2599
TerrestrialDeliverySystemDescriptor::Constellation
uint Constellation(void) const
Definition: dvbdescriptors.h:990
S2SatelliteDeliverySystemDescriptor::TSGSMode
uint TSGSMode() const
Definition: dvbdescriptors.h:2995
ShortEventDescriptor::EventShortName
QString EventShortName(void) const
Definition: dvbdescriptors.h:2211
ComponentDescriptor::IsVideo
bool IsVideo(void) const
Definition: dvbdescriptors.h:421
SatelliteDeliverySystemDescriptor::kInnerFEC_7_8_ConvolutionCodeRate
@ kInnerFEC_7_8_ConvolutionCodeRate
Definition: dvbdescriptors.h:931
LinkageDescriptor::kHandOverIdentical
@ kHandOverIdentical
Definition: dvbdescriptors.h:165
ServiceDescriptorMapping::IsTeletext
bool IsTeletext(void) const
Definition: dvbdescriptors.h:2056
FreesatLCNDescriptor::m_entries
desc_list_t m_entries
Definition: dvbdescriptors.h:2701
T2DeliverySystemDescriptor::FrequencyLoopLength
uint FrequencyLoopLength(uint i) const
Definition: dvbdescriptors.h:1234
PrivateDescriptorID::freesat_region_table
@ freesat_region_table
Definition: mpegdescriptors.h:233
S2SatelliteDeliverySystemDescriptor::MultipleInputStreamFlag
uint MultipleInputStreamFlag() const
Definition: dvbdescriptors.h:2985
PDCDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.h:1916
ImageIconDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:709
TerrestrialDeliverySystemDescriptor::kGuardInterval_1_16
@ kGuardInterval_1_16
Definition: dvbdescriptors.h:1053
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:1289
T2DeliverySystemDescriptor::kBandwidth1712kHz
@ kBandwidth1712kHz
Definition: dvbdescriptors.h:1176
CableDeliverySystemDescriptor::kInnerFEC_5_6_ConvolutionCodeRate
@ kInnerFEC_5_6_ConvolutionCodeRate
Definition: dvbdescriptors.h:822
FrequencyListDescriptor::kCodingTypeTerrestrial
@ kCodingTypeTerrestrial
Definition: dvbdescriptors.h:1630
LinkageDescriptor::kInformationService
@ kInformationService
Definition: dvbdescriptors.h:143
T2DeliverySystemDescriptor::kGuardInterval_1_8
@ kGuardInterval_1_8
Definition: dvbdescriptors.h:1197
ServiceDescriptor::IsTeletext
bool IsTeletext(void) const
Definition: dvbdescriptors.h:2107
AC3Descriptor::HasMainID
bool HasMainID(void) const
Definition: dvbdescriptors.h:2530
SatelliteDeliverySystemDescriptor::RollOffString
QString RollOffString(void) const
Definition: dvbdescriptors.h:887
T2DeliverySystemDescriptor::kTransmissionMode8k
@ kTransmissionMode8k
Definition: dvbdescriptors.h:1215
ShortEventDescriptor::TextLength
uint TextLength(void) const
Definition: dvbdescriptors.h:2214
FrequencyListDescriptor::kCodingTypeCable
@ kCodingTypeCable
Definition: dvbdescriptors.h:1629
CableDeliverySystemDescriptor::FrequencyRaw
uint FrequencyRaw(void) const
Definition: dvbdescriptors.h:761
SubtitlingDescriptor::StreamCount
uint StreamCount(void) const
Definition: dvbdescriptors.h:2301
ServiceDescriptorMapping::kServiceTypeNimiqTV7
@ kServiceTypeNimiqTV7
Definition: dvbdescriptors.h:2011
TeletextDescriptor::StreamCount
uint StreamCount(void) const
Definition: dvbdescriptors.h:2370
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:2621
TerrestrialDeliverySystemDescriptor::kGuardInterval_1_4
@ kGuardInterval_1_4
Definition: dvbdescriptors.h:1055
CableDeliverySystemDescriptor::kInnerFEC_1_2_ConvolutionCodeRate
@ kInnerFEC_1_2_ConvolutionCodeRate
Definition: dvbdescriptors.h:819
CAIdentifierDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:1061
ParentalRatingDescriptor::Rating
int Rating(uint i) const
Definition: dvbdescriptors.h:1878
TargetRegionDescriptor
Definition: dvbdescriptors.h:1380
DVBLogicalChannelDescriptor::DVBLogicalChannelDescriptor
DVBLogicalChannelDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2593
ServiceRelocatedDescriptor::OldServiceID
uint OldServiceID(void) const
Definition: dvbdescriptors.h:1479
ServiceDescriptor::ServiceNameLength
uint ServiceNameLength(void) const
Definition: dvbdescriptors.h:2088
ParentalRatingDescriptor::ParentalRatingDescriptor
ParentalRatingDescriptor(const std::vector< uint8_t > &data)
Definition: dvbdescriptors.h:1857
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:893
SatelliteDeliverySystemDescriptor::kModulation8PSK
@ kModulation8PSK
Definition: dvbdescriptors.h:904
DVBLogicalChannelDescriptor::ChannelNumber
uint ChannelNumber(uint i) const
Definition: dvbdescriptors.h:2604
DescriptorID::image_icon
@ image_icon
Definition: mpegdescriptors.h:143
desc_list_t
std::vector< const unsigned char * > desc_list_t
Definition: mpegdescriptors.h:18
ScramblingDescriptor::ScramblingMode
uint ScramblingMode(void) const
Definition: dvbdescriptors.h:1953
MessageDescriptor
Definition: dvbdescriptors.h:1346
ServiceRelocatedDescriptor::ServiceRelocatedDescriptor
ServiceRelocatedDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:1460
LinkageDescriptor::kTSContainingCompleteNetworkBouquetSI
@ kTSContainingCompleteNetworkBouquetSI
Definition: dvbdescriptors.h:146
TerrestrialDeliverySystemDescriptor::TerrestrialDeliverySystemDescriptor
TerrestrialDeliverySystemDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:945
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:2686
ExtendedEventDescriptor
Definition: dvbdescriptors.h:1566
ServiceDescriptorMapping::kServiceTypeEchoStarTV1
@ kServiceTypeEchoStarTV1
Definition: dvbdescriptors.h:2001
ComponentDescriptor::HEAACProperties
uint HEAACProperties(void) const
Definition: dvbdescriptors.h:568
TerrestrialDeliverySystemDescriptor::ConstellationString
QString ConstellationString(void) const
Definition: dvbdescriptors.h:991
TerrestrialDeliverySystemDescriptor::kGuardInterval_1_8
@ kGuardInterval_1_8
Definition: dvbdescriptors.h:1054
ServiceDescriptorMapping::kServiceTypeRCS_FLS
@ kServiceTypeRCS_FLS
Definition: dvbdescriptors.h:1982
TerrestrialDeliverySystemDescriptor::kCodeRate_2_3
@ kCodeRate_2_3
Definition: dvbdescriptors.h:1027
T2DeliverySystemDescriptor::SisoMiso
uint SisoMiso(void) const
Definition: dvbdescriptors.h:1160
ServiceDescriptorMapping::kServiceTypeEchoStarTV2
@ kServiceTypeEchoStarTV2
Definition: dvbdescriptors.h:2002
LinkageDescriptor::kMobileHandOver
@ kMobileHandOver
Definition: dvbdescriptors.h:150
ShortEventDescriptor::CanonicalLanguageString
QString CanonicalLanguageString(void) const
Definition: dvbdescriptors.h:2204
ServiceListDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.h:2156
T2DeliverySystemDescriptor
Definition: dvbdescriptors.h:1127
ExtendedEventDescriptor::ExtendedEventDescriptor
ExtendedEventDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:1569
ExtendedEventDescriptor::TextLength
uint TextLength(void) const
Definition: dvbdescriptors.h:1599
SkyLCNDescriptor
Sky Logical Channel Number descriptor.
Definition: dvbdescriptors.h:2806
MultilingualServiceNameDescriptor
Definition: dvbdescriptors.h:1804
T2DeliverySystemDescriptor::kBandwidth8Mhz
@ kBandwidth8Mhz
Definition: dvbdescriptors.h:1171
SatelliteDeliverySystemDescriptor::FECInnerString
QString FECInnerString(void) const
Definition: dvbdescriptors.h:936
ServiceDescriptor::ServiceProviderShortName
QString ServiceProviderShortName(void) const
Definition: dvbdescriptors.h:2083
LinkageDescriptor::TargetEventID
uint TargetEventID(void) const
Definition: dvbdescriptors.h:199
CableDeliverySystemDescriptor::kModulationQAM128
@ kModulationQAM128
Definition: dvbdescriptors.h:794
PDCDescriptor
Definition: dvbdescriptors.h:1903
ImageIconDescriptor::ImageIconDescriptor
ImageIconDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:1087
NVODReferenceDescriptor::OriginalNetworkId
uint OriginalNetworkId(uint i) const
Definition: dvbdescriptors.h:1841
NetworkNameDescriptor::ShortName
QString ShortName(void) const
Definition: dvbdescriptors.h:91
ServiceDescriptorMapping::kServiceTypeNVODReference
@ kServiceTypeNVODReference
Definition: dvbdescriptors.h:1971
TerrestrialDeliverySystemDescriptor::Frequency
uint Frequency(void) const
Definition: dvbdescriptors.h:953
TargetRegionNameDescriptor::CountryCode
uint CountryCode(void) const
Definition: dvbdescriptors.h:1433
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:1936
DVBSimulcastChannelDescriptor
DVB HD Simulcast Logical Channel Descriptor.
Definition: dvbdescriptors.h:2618
ServiceDescriptorMapping::kServiceTypeNimiqTV1
@ kServiceTypeNimiqTV1
Definition: dvbdescriptors.h:2005
SubtitlingDescriptor::LanguageString
QString LanguageString(uint i) const
Definition: dvbdescriptors.h:2307
StreamIdentifierDescriptor::ComponentTag
uint ComponentTag(void) const
Definition: dvbdescriptors.h:2266
CountryAvailabilityDescriptor::CountryCount
uint CountryCount(void) const
Definition: dvbdescriptors.h:666
ComponentDescriptor::IsSubtitle
bool IsSubtitle(void) const
Definition: dvbdescriptors.h:440
ServiceDescriptorMapping::kServiceTypeNimiqTV9
@ kServiceTypeNimiqTV9
Definition: dvbdescriptors.h:2013
T2DeliverySystemDescriptor::m_subCellPtrs
std::vector< const unsigned char * > m_subCellPtrs
Definition: dvbdescriptors.h:1257
BouquetNameDescriptor::BouquetShortName
QString BouquetShortName(void) const
Definition: dvbdescriptors.h:315
VBIDataDescriptor::VBIDataDescriptor
VBIDataDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2444
ServiceDescriptorMapping::kServiceTypeDVB_MHP
@ kServiceTypeDVB_MHP
Definition: dvbdescriptors.h:1983
ServiceDescriptorMapping::kServiceTypeRCS_Map
@ kServiceTypeRCS_Map
Definition: dvbdescriptors.h:1981
LinkageDescriptor::kOriginNIT
@ kOriginNIT
Definition: dvbdescriptors.h:175
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:1515
DSNGDescriptor
Definition: dvbdescriptors.h:1554
T2DeliverySystemDescriptor::kBandwidth7Mhz
@ kBandwidth7Mhz
Definition: dvbdescriptors.h:1172
CableDeliverySystemDescriptor::kOuterFEC_RS204_RS188
@ kOuterFEC_RS204_RS188
Definition: dvbdescriptors.h:777
SupplementaryAudioDescriptor
Definition: dvbdescriptors.h:1286
TargetRegionNameDescriptor::TargetRegionNameDescriptor
TargetRegionNameDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:1418
CableDeliverySystemDescriptor::FECOuter
uint FECOuter(void) const
Definition: dvbdescriptors.h:779
ServiceDescriptorMapping::kServiceTypeH264AVCFrameCompatiblePlanoStereoscopicHDDigitalTelevision
@ kServiceTypeH264AVCFrameCompatiblePlanoStereoscopicHDDigitalTelevision
Definition: dvbdescriptors.h:1992
ShortSmoothingBufferDescriptor
Definition: dvbdescriptors.h:2238
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
ServiceDescriptorMapping::kServiceTypeHEVCUHDDigitalTelevision
@ kServiceTypeHEVCUHDDigitalTelevision
Definition: dvbdescriptors.h:1996
uint
unsigned int uint
Definition: compat.h:81
ExtendedEventDescriptor::Text
QString Text(const enc_override &encoding_override) const
Definition: dvbdescriptors.h:1605
TransportStreamDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.h:2436
SupplementaryAudioDescriptor::LanguageCodePresent
uint LanguageCodePresent(void) const
Definition: dvbdescriptors.h:1313
DVBContentIdentifierDescriptor::m_crid
std::array< const uint8_t *, 8 > m_crid
Definition: dvbdescriptors.h:2942
PartialTransportStreamDescriptor::PeakRate
uint PeakRate(void) const
Definition: dvbdescriptors.h:2501
CableDeliverySystemDescriptor::kModulationQAM16
@ kModulationQAM16
Definition: dvbdescriptors.h:791
ServiceDescriptorMapping::kServiceTypeDigitalTelevision
@ kServiceTypeDigitalTelevision
Definition: dvbdescriptors.h:1968
TerrestrialDeliverySystemDescriptor::kHierarchyInfoNonHierarchicalNativeInterleaver
@ kHierarchyInfoNonHierarchicalNativeInterleaver
Definition: dvbdescriptors.h:1000
x5
static int x5
Definition: mythsocket.cpp:54
T2DeliverySystemDescriptor::GuardInterval
uint GuardInterval(void) const
Definition: dvbdescriptors.h:1203
ComponentDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.h:608
TerrestrialDeliverySystemDescriptor::TransmissionMode
uint TransmissionMode(void) const
Definition: dvbdescriptors.h:1070
ServiceDescriptor::ServiceType
uint ServiceType(void) const
Definition: dvbdescriptors.h:2077
ContentDescriptor::s_categoryDescExists
static volatile bool s_categoryDescExists
Definition: dvbdescriptors.h:653
S2XSatelliteDeliverySystemDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:923
FreesatCallsignDescriptor
Freesat Channel Callsign descriptor.
Definition: dvbdescriptors.h:2768
LinkageDescriptor::kServiceReplacementService
@ kServiceReplacementService
Definition: dvbdescriptors.h:147
ServiceRelocatedDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:891
T2DeliverySystemDescriptor::SisoMisoString
QString SisoMisoString(void) const
Definition: dvbdescriptors.h:1161
DataBroadcastDescriptor::CanonicalLanguageString
QString CanonicalLanguageString(void) const
Definition: dvbdescriptors.h:721
StuffingDescriptor::StuffingDescriptor
StuffingDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2278
CAIdentifierDescriptor::CAIdentifierDescriptor
CAIdentifierDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:329
PDCDescriptor::ProgramIdLabel
uint ProgramIdLabel(void) const
Definition: dvbdescriptors.h:1914
DescriptorID::target_region_name
@ target_region_name
Definition: mpegdescriptors.h:150
PrivateDataSpecifierDescriptor
Definition: dvbdescriptors.h:1924
TargetRegionNameDescriptor::LanguageString
QString LanguageString(void) const
Definition: dvbdescriptors.h:1447
ContentDescriptor::s_categoryLock
static QMutex s_categoryLock
Definition: dvbdescriptors.h:651
TransportStreamDescriptor::TransportStreamDescriptor
TransportStreamDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2427
ServiceListDescriptor::ServiceCount
uint ServiceCount(void) const
Definition: dvbdescriptors.h:2149
T2DeliverySystemDescriptor::kGuardInterval_19_128
@ kGuardInterval_19_128
Definition: dvbdescriptors.h:1200
SubtitlingDescriptor::SubtitlingDescriptor
SubtitlingDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2295
LinkageDescriptor::MobileInitialServiceID
uint MobileInitialServiceID(void) const
Definition: dvbdescriptors.h:190
NVODReferenceDescriptor::TransportStreamId
uint TransportStreamId(uint i) const
Definition: dvbdescriptors.h:1838
ServiceListDescriptor::ServiceID
uint ServiceID(uint i) const
Definition: dvbdescriptors.h:2151
TerrestrialDeliverySystemDescriptor::kConstellationQAM64
@ kConstellationQAM64
Definition: dvbdescriptors.h:987
DataBroadcastDescriptor::Selector
const unsigned char * Selector(void) const
Definition: dvbdescriptors.h:712
MTV_PUBLIC
#define MTV_PUBLIC
Definition: mythtvexp.h:15
CableDeliverySystemDescriptor::kInnerFEC_2_3_ConvolutionCodeRate
@ kInnerFEC_2_3_ConvolutionCodeRate
Definition: dvbdescriptors.h:820
LinkageDescriptor::IsEventSimulcast
bool IsEventSimulcast(void) const
Definition: dvbdescriptors.h:203
AC3Descriptor::HasBSID
bool HasBSID(void) const
Definition: dvbdescriptors.h:2528
S2SatelliteDeliverySystemDescriptor
Definition: dvbdescriptors.h:2971
AC3Descriptor::ComponentType
uint ComponentType(void) const
Definition: dvbdescriptors.h:2536
TelephoneDescriptor
Definition: dvbdescriptors.h:2328
FreesatRegionDescriptor::Language
QString Language(uint i) const
Definition: dvbdescriptors.h:2749
LinkageDescriptor::kHandOverAssociatedService
@ kHandOverAssociatedService
Definition: dvbdescriptors.h:167
ExtendedEventDescriptor::LengthOfItems
uint LengthOfItems(void) const
Definition: dvbdescriptors.h:1589
LocalTimeOffsetDescriptor::LocalTimeOffsetDescriptor
LocalTimeOffsetDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:1664
AC3Descriptor::AC3Descriptor
AC3Descriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2519
PrivateDescriptorID::sky_lcn_table
@ sky_lcn_table
Definition: mpegdescriptors.h:229
ApplicationSignallingDescriptor::Count
uint Count() const
Definition: dvbdescriptors.h:232
DataBroadcastIdDescriptor
Definition: dvbdescriptors.h:735
TimeShiftedEventDescriptor::TimeShiftedEventDescriptor
TimeShiftedEventDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2400
SupplementaryAudioDescriptor::LanguageString
QString LanguageString(void) const
Definition: dvbdescriptors.h:1318
T2DeliverySystemDescriptor::CellID
uint CellID(uint i) const
Definition: dvbdescriptors.h:1233
SatelliteDeliverySystemDescriptor::Polarization
uint Polarization(void) const
Definition: dvbdescriptors.h:868
LinkageDescriptor::MobileNetworkID
uint MobileNetworkID(void) const
Definition: dvbdescriptors.h:185
ServiceDescriptorMapping::kServiceTypeNimiqTV4
@ kServiceTypeNimiqTV4
Definition: dvbdescriptors.h:2008
T2DeliverySystemDescriptor::BandwidthHz
uint BandwidthHz(void) const
Definition: dvbdescriptors.h:1179
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:2566
TerrestrialDeliverySystemDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:671
SatelliteDeliverySystemDescriptor::SymbolRate
uint SymbolRate(void) const
Definition: dvbdescriptors.h:914
ContentDescriptor::UserNibble1
uint UserNibble1(uint i) const
Definition: dvbdescriptors.h:637
TerrestrialDeliverySystemDescriptor::CodeRateLPString
QString CodeRateLPString(void) const
Definition: dvbdescriptors.h:1042
DataBroadcastDescriptor::CanonicalLanguageKey
int CanonicalLanguageKey(void) const
Definition: dvbdescriptors.h:719
LocalTimeOffsetDescriptor::LocalTimeOffset
uint LocalTimeOffset(uint i) const
Definition: dvbdescriptors.h:1693
C2DeliverySystemDescriptor::DataSliceID
uint DataSliceID(void) const
Definition: dvbdescriptors.h:1509
StreamIdentifierDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.h:2267
T2DeliverySystemDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:740
TerrestrialDeliverySystemDescriptor::kConstellationQAM16
@ kConstellationQAM16
Definition: dvbdescriptors.h:986
T2DeliverySystemDescriptor::m_cellPtrs
std::vector< const unsigned char * > m_cellPtrs
Definition: dvbdescriptors.h:1256
OpenTVChannelListDescriptor::ChannelType
uint ChannelType(uint i) const
Definition: dvbdescriptors.h:2871
TerrestrialDeliverySystemDescriptor::kCodeRate_7_8
@ kCodeRate_7_8
Definition: dvbdescriptors.h:1030
ServiceDescriptor::ServiceProviderNameLength
uint ServiceProviderNameLength(void) const
Definition: dvbdescriptors.h:2079
TargetRegionDescriptor::CountryCodeString
QString CountryCodeString(void) const
Definition: dvbdescriptors.h:1402
FreesatCallsignDescriptor::Callsign
QString Callsign(void) const
Definition: dvbdescriptors.h:2789
ServiceDescriptor::IsHDTV
bool IsHDTV(void) const
Definition: dvbdescriptors.h:2105
ServiceDescriptorMapping::kServiceTypeH264AVCMosaic
@ kServiceTypeH264AVCMosaic
Definition: dvbdescriptors.h:1978
assert
#define assert(x)
Definition: audiooutputalsa.cpp:16
SatelliteDeliverySystemDescriptor::kInnerFEC_1_2_ConvolutionCodeRate
@ kInnerFEC_1_2_ConvolutionCodeRate
Definition: dvbdescriptors.h:927
OpenTVChannelListDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:1036
CAIdentifierDescriptor::CASystemId
int CASystemId(uint i) const
Definition: dvbdescriptors.h:338
ComponentDescriptor::ComponentTag
uint ComponentTag(void) const
Definition: dvbdescriptors.h:408
DataBroadcastDescriptor::SelectorLength
uint SelectorLength(void) const
Definition: dvbdescriptors.h:708
DataBroadcastDescriptor::TextLength
uint TextLength(void) const
Definition: dvbdescriptors.h:724
ServiceDescriptorMapping::kServiceTypeNimiqTV6
@ kServiceTypeNimiqTV6
Definition: dvbdescriptors.h:2010
FreesatRegionDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:1010
ImageIconDescriptor::LastDescriptorNumber
uint LastDescriptorNumber(void) const
Definition: dvbdescriptors.h:1108
PrivateUPCCablecomEpisodeTitleDescriptor::CanonicalLanguageString
QString CanonicalLanguageString(void) const
Definition: dvbdescriptors.h:3039
FrequencyListDescriptor::Frequency
unsigned long long Frequency(uint i) const
Definition: dvbdescriptors.h:1638
ServiceDescriptorMapping::kServiceTypeCommonInterface
@ kServiceTypeCommonInterface
Definition: dvbdescriptors.h:1980
ContentDescriptor
Definition: dvbdescriptors.h:617
SatelliteDeliverySystemDescriptor::IsEast
bool IsEast(void) const
west_east_flag 1 8.0
Definition: dvbdescriptors.h:865
TeletextDescriptor::CanonicalLanguageKey
int CanonicalLanguageKey(uint i) const
Definition: dvbdescriptors.h:2379
ComponentDescriptor::CanonicalLanguageString
QString CanonicalLanguageString(void) const
Definition: dvbdescriptors.h:416
ServiceDescriptorMapping::IsHDTV
bool IsHDTV(void) const
Definition: dvbdescriptors.h:2043
AC3Descriptor::MainID
uint MainID(void) const
Definition: dvbdescriptors.h:2543
LocalTimeOffsetDescriptor::CountryCodeString
QString CountryCodeString(uint i) const
Definition: dvbdescriptors.h:1678
ServiceAvailabilityDescriptor
Definition: dvbdescriptors.h:2120
SatelliteDeliverySystemDescriptor::kInnerFEC_8_9_ConvolutionCodeRate
@ kInnerFEC_8_9_ConvolutionCodeRate
Definition: dvbdescriptors.h:932
DVBContentIdentifierDescriptor::DVBContentIdentifierDescriptor
DVBContentIdentifierDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2890
ServiceDescriptor::ServiceShortName
QString ServiceShortName(void) const
Definition: dvbdescriptors.h:2096
SHDeliverySystemDescriptor::SHDeliverySystemDescriptor
SHDeliverySystemDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:1264
NetworkChangeNotifyDescriptor
Definition: dvbdescriptors.h:1325
DVBLogicalChannelDescriptor::ServiceID
uint ServiceID(uint i) const
Definition: dvbdescriptors.h:2601
C2DeliverySystemDescriptor::PlpID
uint PlpID(void) const
Definition: dvbdescriptors.h:1503
SubtitlingDescriptor
Definition: dvbdescriptors.h:2292
CableDeliverySystemDescriptor::kInnerFEC_3_4_ConvolutionCodeRate
@ kInnerFEC_3_4_ConvolutionCodeRate
Definition: dvbdescriptors.h:821
PartialTransportStreamDescriptor
Definition: dvbdescriptors.h:2490
ServiceDescriptorMapping::ServiceDescriptorMapping
ServiceDescriptorMapping(const uint service_type)
Definition: dvbdescriptors.h:1965
ShortEventDescriptor::LanguageString
QString LanguageString(void) const
Definition: dvbdescriptors.h:2200
SatelliteDeliverySystemDescriptor::OrbitalPosition
uint OrbitalPosition(void) const
orbital_position 16 6.0
Definition: dvbdescriptors.h:854
ShortEventDescriptor::EventName
QString EventName(void) const
Definition: dvbdescriptors.h:2209
ServiceRelocatedDescriptor::OldTransportID
uint OldTransportID(void) const
Definition: dvbdescriptors.h:1478
SupplementaryAudioDescriptor::MixType
uint MixType(void) const
Definition: dvbdescriptors.h:1304
SkyLCNDescriptor::LogicalChannelNumber
uint LogicalChannelNumber(size_t i) const
Definition: dvbdescriptors.h:2844
SatelliteDeliverySystemDescriptor::ModulationSystemString
QString ModulationSystemString(void) const
Definition: dvbdescriptors.h:894
CableDeliverySystemDescriptor::kOuterFEC_None
@ kOuterFEC_None
Definition: dvbdescriptors.h:776
TerrestrialDeliverySystemDescriptor::kBandwidth7Mhz
@ kBandwidth7Mhz
Definition: dvbdescriptors.h:964
LinkageDescriptor::LinkageTypeString
QString LinkageTypeString(void) const
Definition: dvbdescriptors.cpp:316
DefaultAuthorityDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.h:2960
StreamIdentifierDescriptor
This is used to label streams so the can be treated differently, for instance each stream may get it'...
Definition: dvbdescriptors.h:2256
PrivateUPCCablecomEpisodeTitleDescriptor::CanonicalLanguageKey
int CanonicalLanguageKey(void) const
Definition: dvbdescriptors.h:3035
CableDeliverySystemDescriptor::ModulationString
QString ModulationString(void) const
Definition: dvbdescriptors.h:798
SatelliteDeliverySystemDescriptor::SymbolRateHz
uint SymbolRateHz(void) const
Definition: dvbdescriptors.h:919
ServiceDescriptorMapping::IsDigitalAudio
bool IsDigitalAudio(void) const
Definition: dvbdescriptors.h:2037
MultilingualServiceNameDescriptor::MultilingualServiceNameDescriptor
MultilingualServiceNameDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:1807
AC3Descriptor
Definition: dvbdescriptors.h:2516
ScramblingDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.h:1954
T2DeliverySystemDescriptor::kBandwidth10Mhz
@ kBandwidth10Mhz
Definition: dvbdescriptors.h:1175
TeletextDescriptor::TeletextPageNum
uint TeletextPageNum(uint i) const
Definition: dvbdescriptors.h:2390
ImageIconDescriptor
Definition: dvbdescriptors.h:1084
ServiceDescriptor
Definition: dvbdescriptors.h:2067
ServiceDescriptorMapping::kServiceTypeFMRadio
@ kServiceTypeFMRadio
Definition: dvbdescriptors.h:1974
LinkageDescriptor::kCAReplacementService
@ kCAReplacementService
Definition: dvbdescriptors.h:145
ComponentDescriptor
Definition: dvbdescriptors.h:394
ApplicationSignallingDescriptor
Definition: dvbdescriptors.h:218
ServiceAvailabilityDescriptor::ServiceAvailabilityDescriptor
ServiceAvailabilityDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2123
ServiceDescriptorMapping::kServiceTypeH264AVCFrameCompatiblePlanoStereoscopicHDNVODReference
@ kServiceTypeH264AVCFrameCompatiblePlanoStereoscopicHDNVODReference
Definition: dvbdescriptors.h:1994
StuffingDescriptor
Definition: dvbdescriptors.h:2275
SatelliteDeliverySystemDescriptor::IsVerticalRightPolarization
bool IsVerticalRightPolarization(void) const
Definition: dvbdescriptors.h:877
OpenTVChannelListDescriptor::ServiceID
uint ServiceID(uint i) const
Definition: dvbdescriptors.h:2868
DataBroadcastDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:1072
DVBContentIdentifierDescriptor::m_cridCount
size_t m_cridCount
Definition: dvbdescriptors.h:2941
TerrestrialDeliverySystemDescriptor::FrequencyHz
uint64_t FrequencyHz(void) const
Definition: dvbdescriptors.h:958
MosaicDescriptor
Definition: dvbdescriptors.h:1714
DescriptorID::sh_delivery_system
@ sh_delivery_system
Definition: mpegdescriptors.h:145
LocalTimeOffsetDescriptor::TimeOfChange
QDateTime TimeOfChange(uint i) const
Definition: dvbdescriptors.h:1701
DVBSimulcastChannelDescriptor::ChannelCount
uint ChannelCount(void) const
Definition: dvbdescriptors.h:2627
TerrestrialDeliverySystemDescriptor::IsMPE_FECUsed
bool IsMPE_FECUsed(void) const
Definition: dvbdescriptors.h:980
BouquetNameDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.h:318
PrivateUPCCablecomEpisodeTitleDescriptor::PrivateUPCCablecomEpisodeTitleDescriptor
PrivateUPCCablecomEpisodeTitleDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:3018
StuffingDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.h:2284
FreesatCallsignDescriptor::Language
QString Language(void) const
Definition: dvbdescriptors.h:2786
CableDeliverySystemDescriptor::SymbolRateRaw
uint SymbolRateRaw(void) const
Definition: dvbdescriptors.h:806
LinkageDescriptor::kEPGService
@ kEPGService
Definition: dvbdescriptors.h:144
LinkageDescriptor::MobileHandOverTypeString
QString MobileHandOverTypeString(void) const
Definition: dvbdescriptors.cpp:325
TerrestrialDeliverySystemDescriptor::TransmissionModeString
QString TransmissionModeString(void) const
Definition: dvbdescriptors.h:1071
LocalTimeOffsetDescriptor::CountryCode
uint CountryCode(uint i) const
Definition: dvbdescriptors.h:1673
ExtendedEventDescriptor::LastNumber
uint LastNumber(void) const
Definition: dvbdescriptors.h:1578
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:2746
NetworkNameDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.h:93
SatelliteDeliverySystemDescriptor::PolarizationString
QString PolarizationString() const
Definition: dvbdescriptors.h:869
SkyLCNDescriptor::ServiceCount
uint ServiceCount(void) const
Definition: dvbdescriptors.h:2832
TerrestrialDeliverySystemDescriptor::kBandwidth8Mhz
@ kBandwidth8Mhz
Definition: dvbdescriptors.h:963
PrivateUPCCablecomEpisodeTitleDescriptor::LanguageString
QString LanguageString(void) const
Definition: dvbdescriptors.h:3031
TerrestrialDeliverySystemDescriptor::IsTimeSlicingIndicatorUsed
bool IsTimeSlicingIndicatorUsed(void) const
Definition: dvbdescriptors.h:978
SatelliteDeliverySystemDescriptor
Definition: dvbdescriptors.h:833
SubtitlingDescriptor::SubtitleType
uint SubtitleType(uint i) const
Definition: dvbdescriptors.h:2315
AncillaryDataDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.h:270
TelephoneDescriptor::TelephoneDescriptor
TelephoneDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2331
ExtendedEventDescriptor::Text
QString Text(void) const
Definition: dvbdescriptors.h:1601
TerrestrialDeliverySystemDescriptor::BandwidthHz
uint BandwidthHz(void) const
Definition: dvbdescriptors.h:969
FreesatLCNDescriptor::LCNCount
uint LCNCount(size_t i) const
Definition: dvbdescriptors.h:2689
DVBContentIdentifierDescriptor::ContentId
QString ContentId(size_t n=0) const
Definition: dvbdescriptors.h:2919
FreesatRegionDescriptor
Freesat Region descriptor.
Definition: dvbdescriptors.h:2713
ServiceDescriptorMapping::kServiceTypeH264AVCSDNVODReference
@ kServiceTypeH264AVCSDNVODReference
Definition: dvbdescriptors.h:1988
SkyLCNDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:971
LocalTimeOffsetDescriptor::Count
uint Count(void) const
Definition: dvbdescriptors.h:1669
TerrestrialDeliverySystemDescriptor::CodeRateHPString
QString CodeRateHPString(void) const
Definition: dvbdescriptors.h:1033
CableDeliverySystemDescriptor::SymbolRateHz
uint SymbolRateHz(void) const
Definition: dvbdescriptors.h:811
ServiceDescriptorMapping::kServiceTypeDigitalRadioSound
@ kServiceTypeDigitalRadioSound
Definition: dvbdescriptors.h:1969
DataBroadcastDescriptor::DataComponentTag
uint DataComponentTag(void) const
Definition: dvbdescriptors.h:706
SatelliteDeliverySystemDescriptor::kModulationQPSK_NS
@ kModulationQPSK_NS
Definition: dvbdescriptors.h:901
ApplicationSignallingDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:1047
SatelliteDeliverySystemDescriptor::kRollOff_Auto
@ kRollOff_Auto
Definition: dvbdescriptors.h:884
FreesatRegionDescriptor::m_entries
desc_list_t m_entries
Definition: dvbdescriptors.h:2758
TargetRegionNameDescriptor::LanguageKey
int LanguageKey(void) const
Definition: dvbdescriptors.h:1445
TargetRegionNameDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:873
OpenTVChannelListDescriptor::ChannelNumber
uint ChannelNumber(uint i) const
Definition: dvbdescriptors.h:2877
LinkageDescriptor::kRCSMap
@ kRCSMap
Definition: dvbdescriptors.h:149
TargetRegionNameDescriptor
Definition: dvbdescriptors.h:1415
TerrestrialDeliverySystemDescriptor::HighPriority
bool HighPriority(void) const
Definition: dvbdescriptors.h:976
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:886
LocalTimeOffsetDescriptor::TimeOfChangeUnix
time_t TimeOfChangeUnix(uint i) const
Definition: dvbdescriptors.h:1703
FrequencyListDescriptor::FrequencyHz
unsigned long long FrequencyHz(uint i) const
Definition: dvbdescriptors.h:1650
ComponentDescriptor::AVCProperties
uint AVCProperties(void) const
Definition: dvbdescriptors.h:472
ScramblingDescriptor::ScramblingDescriptor
ScramblingDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:1946
LinkageDescriptor::LinkageType
uint LinkageType(void) const
Definition: dvbdescriptors.h:157
SkyLCNDescriptor::ChannelID
uint ChannelID(size_t i) const
Definition: dvbdescriptors.h:2841
MultilingualNetworkNameDescriptor::MultilingualNetworkNameDescriptor
MultilingualNetworkNameDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:1788
ServiceDescriptorMapping::kServiceTypeH264AVCHDNVODReference
@ kServiceTypeH264AVCHDNVODReference
Definition: dvbdescriptors.h:1991
ServiceDescriptorMapping::IsDTV
bool IsDTV(void) const
Definition: dvbdescriptors.h:2017
SkyLCNDescriptor::ServiceID
uint ServiceID(size_t i) const
Definition: dvbdescriptors.h:2835
TerrestrialDeliverySystemDescriptor::kConstellationQAM256
@ kConstellationQAM256
Definition: dvbdescriptors.h:988
DataBroadcastDescriptor::Text
QString Text(void) const
Definition: dvbdescriptors.h:726
DefaultAuthorityDescriptor
Definition: dvbdescriptors.h:2946
ServiceDescriptorMapping::toString
QString toString(void) const
Definition: dvbdescriptors.cpp:579
LinkageDescriptor::MobileHandOverType
uint MobileHandOverType(void) const
Definition: dvbdescriptors.h:169
StreamIdentifierDescriptor::StreamIdentifierDescriptor
StreamIdentifierDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2259
byteBCDH2int
static constexpr uint8_t byteBCDH2int(uint8_t i)
Definition: dvbdescriptors.h:54
ServiceDescriptorMapping::kServiceTypeMPEG2HDDigitalTelevision
@ kServiceTypeMPEG2HDDigitalTelevision
Definition: dvbdescriptors.h:1984
NetworkChangeNotifyDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:826
SatelliteDeliverySystemDescriptor::IsHorizontalLeftPolarization
bool IsHorizontalLeftPolarization(void) const
Definition: dvbdescriptors.h:876
AdaptationFieldDataDescriptor
Definition: dvbdescriptors.h:241
SatelliteDeliverySystemDescriptor::FECInner
uint FECInner(void) const
Definition: dvbdescriptors.h:935
ComponentDescriptor::MPEG2Properties
uint MPEG2Properties(void) const
Definition: dvbdescriptors.h:454
SatelliteDeliverySystemDescriptor::kModulationQAM16
@ kModulationQAM16
Definition: dvbdescriptors.h:905
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:618
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:1316
LinkageDescriptor::kEventLinkage
@ kEventLinkage
Definition: dvbdescriptors.h:155
SkyLCNDescriptor::RegionID
uint RegionID(void) const
Definition: dvbdescriptors.h:2826
DVBContentIdentifierDescriptor
Definition: dvbdescriptors.h:2887
T2DeliverySystemDescriptor::kGuardInterval_1_32
@ kGuardInterval_1_32
Definition: dvbdescriptors.h:1195
FreesatLCNDescriptor::ServiceID
uint ServiceID(size_t i) const
Definition: dvbdescriptors.h:2683
T2DeliverySystemDescriptor::TransposerFrequency
uint TransposerFrequency(uint i, uint j) const
Definition: dvbdescriptors.h:1247
CableDeliverySystemDescriptor::kInnerFEC_None
@ kInnerFEC_None
Definition: dvbdescriptors.h:825
LinkageDescriptor::kTSContaining_SSU_BAT_NIT
@ kTSContaining_SSU_BAT_NIT
Definition: dvbdescriptors.h:152
FrequencyListDescriptor::FrequencyCount
uint FrequencyCount() const
Definition: dvbdescriptors.h:1637
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:1130
FrequencyListDescriptor::kCodingTypeSatellite
@ kCodingTypeSatellite
Definition: dvbdescriptors.h:1628
T2DeliverySystemDescriptor::PlpID
uint PlpID(void) const
Definition: dvbdescriptors.h:1148
TeletextDescriptor::LanguageString
QString LanguageString(uint i) const
Definition: dvbdescriptors.h:2377
S2XSatelliteDeliverySystemDescriptor::S2XSatelliteDeliverySystemDescriptor
S2XSatelliteDeliverySystemDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:1532
MessageDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:838
SatelliteDeliverySystemDescriptor::IsCircularPolarization
bool IsCircularPolarization(void) const
Definition: dvbdescriptors.h:874
NVODReferenceDescriptor::NVODReferenceDescriptor
NVODReferenceDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:1828
T2DeliverySystemDescriptor::kBandwidth5Mhz
@ kBandwidth5Mhz
Definition: dvbdescriptors.h:1174
SatelliteDeliverySystemDescriptor::kRollOff_25
@ kRollOff_25
Definition: dvbdescriptors.h:883
T2DeliverySystemDescriptor::kTransmissionMode4k
@ kTransmissionMode4k
Definition: dvbdescriptors.h:1216
AC3Descriptor::BSID
uint BSID(void) const
Definition: dvbdescriptors.h:2539
DescriptorID::c2_delivery_system
@ c2_delivery_system
Definition: mpegdescriptors.h:153
TerrestrialDeliverySystemDescriptor::kBandwidth5Mhz
@ kBandwidth5Mhz
Definition: dvbdescriptors.h:966
TimeShiftedEventDescriptor
Definition: dvbdescriptors.h:2397
S2SatelliteDeliverySystemDescriptor::S2SatelliteDeliverySystemDescriptor
S2SatelliteDeliverySystemDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2974
VBITeletextDescriptor::VBITeletextDescriptor
VBITeletextDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2474
SkyLCNDescriptor::RegionRaw
uint RegionRaw(void) const
Definition: dvbdescriptors.h:2829
ExtendedEventDescriptor::CanonicalLanguageString
QString CanonicalLanguageString(void) const
Definition: dvbdescriptors.h:1586
SatelliteDeliverySystemDescriptor::FrequencykHz
uint64_t FrequencykHz(void) const
Definition: dvbdescriptors.h:849
VBITeletextDescriptor
Definition: dvbdescriptors.h:2471
TeletextDescriptor::TeletextType
uint TeletextType(uint i) const
Definition: dvbdescriptors.h:2384
TargetRegionDescriptor::TargetRegionDescriptor
TargetRegionDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:1383
ServiceListDescriptor
Definition: dvbdescriptors.h:2135
FreesatLCNDescriptor::FreesatLCNDescriptor
FreesatLCNDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2651
ComponentDescriptor::ComponentType
uint ComponentType(void) const
Definition: dvbdescriptors.h:406
ServiceDescriptorMapping::kServiceTypeEchoStarTV3
@ kServiceTypeEchoStarTV3
Definition: dvbdescriptors.h:2003
OpenTVChannelListDescriptor::OpenTVChannelListDescriptor
OpenTVChannelListDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2857
T2DeliverySystemDescriptor::kTransmissionMode32k
@ kTransmissionMode32k
Definition: dvbdescriptors.h:1219
PartialTransportStreamDescriptor::SmoothBuf
uint SmoothBuf(void) const
Definition: dvbdescriptors.h:2509
AncillaryDataDescriptor::AncillaryDataID
uint AncillaryDataID(void) const
Definition: dvbdescriptors.h:269
T2DeliverySystemDescriptor::Parse
void Parse(void) const
Definition: dvbdescriptors.cpp:725
ContentDescriptor::Nibble
uint Nibble(uint i) const
Definition: dvbdescriptors.h:634
DVBLogicalChannelDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:937
TeletextDescriptor
Definition: dvbdescriptors.h:2361
T2DeliverySystemDescriptor::kGuardInterval_1_128
@ kGuardInterval_1_128
Definition: dvbdescriptors.h:1199
NetworkChangeNotifyDescriptor::NetworkChangeNotifyDescriptor
NetworkChangeNotifyDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:1328
T2DeliverySystemDescriptor::T2SystemID
uint T2SystemID(void) const
Definition: dvbdescriptors.h:1154
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:836
AC3Descriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:1131
SatelliteDeliverySystemDescriptor::kInnerFEC_3_4_ConvolutionCodeRate
@ kInnerFEC_3_4_ConvolutionCodeRate
Definition: dvbdescriptors.h:929
SupplementaryAudioDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:804
SubtitlingDescriptor::CompositionPageID
uint CompositionPageID(uint i) const
Definition: dvbdescriptors.h:2318
ServiceDescriptor::IsDigitalAudio
bool IsDigitalAudio(void) const
Definition: dvbdescriptors.h:2103
ContentDescriptor::Init
static void Init(void)
Definition: dvbdescriptors.cpp:365
TimeShiftedServiceDescriptor::TimeShiftedServiceDescriptor
TimeShiftedServiceDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2414
DescriptorID::target_region
@ target_region
Definition: mpegdescriptors.h:149
C2DeliverySystemDescriptor
Definition: dvbdescriptors.h:1485
ServiceDescriptorMapping::kServiceTypeH264AVCFrameCompatiblePlanoStereoscopicHDNVODTimeShifted
@ kServiceTypeH264AVCFrameCompatiblePlanoStereoscopicHDNVODTimeShifted
Definition: dvbdescriptors.h:1993
TerrestrialDeliverySystemDescriptor::kHierarchyInfoAlpha2InDepthInterleaver
@ kHierarchyInfoAlpha2InDepthInterleaver
Definition: dvbdescriptors.h:1006
LinkageDescriptor::IsTargetListed
bool IsTargetListed(void) const
Definition: dvbdescriptors.h:201
SatelliteDeliverySystemDescriptor::ModulationString
QString ModulationString(void) const
Definition: dvbdescriptors.h:908
SupplementaryAudioDescriptor::EditorialClassification
uint EditorialClassification(void) const
Definition: dvbdescriptors.h:1307
CableDeliverySystemDescriptor::kModulationQAM64
@ kModulationQAM64
Definition: dvbdescriptors.h:793
SkyLCNDescriptor::SkyLCNDescriptor
SkyLCNDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:2809
TransportStreamDescriptor
Definition: dvbdescriptors.h:2424
TerrestrialDeliverySystemDescriptor::kHierarchyInfoAlpha4InDepthInterleaver
@ kHierarchyInfoAlpha4InDepthInterleaver
Definition: dvbdescriptors.h:1007
ServiceDescriptorMapping::kServiceTypeEchoStarTV4
@ kServiceTypeEchoStarTV4
Definition: dvbdescriptors.h:2004
T2DeliverySystemDescriptor::kGuardInterval_1_16
@ kGuardInterval_1_16
Definition: dvbdescriptors.h:1196
SkyLCNDescriptor::ServiceType
uint ServiceType(size_t i) const
Definition: dvbdescriptors.h:2838
FreesatRegionDescriptor::RegionName
QString RegionName(uint i) const
Definition: dvbdescriptors.h:2752
ServiceDescriptorMapping::kServiceTypeNimiqTV2
@ kServiceTypeNimiqTV2
Definition: dvbdescriptors.h:2006
AC3Descriptor::HasComponentType
bool HasComponentType(void) const
Definition: dvbdescriptors.h:2526
PrivateDataSpecifierDescriptor::PrivateDataSpecifierDescriptor
PrivateDataSpecifierDescriptor(const std::vector< uint8_t > &data)
Definition: dvbdescriptors.h:1929
DVBSimulcastChannelDescriptor::ServiceID
uint ServiceID(uint i) const
Definition: dvbdescriptors.h:2629
FreesatLCNDescriptor::ServiceCount
uint ServiceCount(void) const
Definition: dvbdescriptors.h:2680
SatelliteDeliverySystemDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:653
TargetRegionDescriptor::toString
QString toString(void) const override
Definition: dvbdescriptors.cpp:856
LinkageDescriptor::kTSContaining_INT_BAT_NIT
@ kTSContaining_INT_BAT_NIT
Definition: dvbdescriptors.h:154
S2SatelliteDeliverySystemDescriptor::ScramblingSequenceSelector
uint ScramblingSequenceSelector() const
Definition: dvbdescriptors.h:2981
LinkageDescriptor::LinkageDescriptor
LinkageDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:101
DefaultAuthorityDescriptor::DefaultAuthority
QString DefaultAuthority(void) const
Definition: dvbdescriptors.h:2955
ServiceDescriptorMapping::kServiceTypeH264AVCHDNVODTimeShifted
@ kServiceTypeH264AVCHDNVODTimeShifted
Definition: dvbdescriptors.h:1990
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:1477
CountryAvailabilityDescriptor::CountryNames
QString CountryNames(void) const
Definition: dvbdescriptors.h:674
ShortEventDescriptor::LanguageKey
int LanguageKey(void) const
Definition: dvbdescriptors.h:2198
ContentDescriptor::Nibble2
uint Nibble2(uint i) const
Definition: dvbdescriptors.h:632
TerrestrialDeliverySystemDescriptor::kBandwidth6Mhz
@ kBandwidth6Mhz
Definition: dvbdescriptors.h:965
C2DeliverySystemDescriptor::C2DeliverySystemDescriptor
C2DeliverySystemDescriptor(const unsigned char *data, int len=300)
Definition: dvbdescriptors.h:1488