MythTV  master
mpegdescriptors.h
Go to the documentation of this file.
1 // -*- Mode: c++ -*-
2 // Copyright (c) 2003-2004, Daniel Thor Kristjansson
3 #ifndef MPEG_DESCRIPTORS_H
4 #define MPEG_DESCRIPTORS_H
5 
6 // C++ headers
7 #include <vector>
8 using namespace std;
9 
10 // Qt headers
11 #include <QMutex>
12 #include <QString>
13 
14 // MythTV
15 #include "iso639.h"
16 #include "mythtvexp.h"
17 
18 using desc_list_t = vector<const unsigned char *>;
19 
21 {
22  public:
23  enum
24  {
25  // MPEG
26  video = 0x02,
27  audio = 0x03,
28  hierarchy = 0x04,
29  registration = 0x05, /* implemented */
30  data_stream_alignment = 0x06,
31  target_background_grid = 0x07,
32  video_window = 0x08,
33  conditional_access = 0x09, /* implemented */
34  iso_639_language = 0x0A, /* implemented */
35  system_clock = 0x0B,
36  multiplex_buffer_utilization= 0x0C,
37  copyright = 0x0D,
38  maximum_bitrate = 0x0E,
39  private_data_indicator = 0x0F,
40  smoothing_buffer = 0x10,
41  std = 0x11,
42  ibp = 0x12,
43  carousel_identifier = 0x13,
44  association_tag = 0x14,
45  deferred_association_tag = 0x15,
46  /* RESERVED = 0x16, */
47  npt_reference = 0x17,
48  npt_endpoint = 0x18,
49  stream_mode = 0x19,
50  stream_event = 0x1A,
51  mpeg4_video = 0x1B,
52  mpeg4_audio = 0x1C,
53  iod = 0x1D,
54  sl = 0x1E,
55  fmc = 0x1F,
56  external_es_id = 0x20,
57  mux_code = 0x21,
58  fmx_buffer_size = 0x22,
59  multiplex_buffer = 0x23,
60  content_labeling = 0x24,
61  metadata_pointer = 0x25,
62  metadata = 0x26,
63  metadata_std = 0x27,
64  avc_video = 0x28, /* implemented */
65  ipmp = 0x29,
66  avc_timing_and_hrd = 0x2A, /* partial */
67  mpeg2_aac_audio = 0x2B,
68  flex_mux_timing = 0x2C,
69  hevc_video = 0x38,
70 
71  // DVB Bluebook A038 (Feb 2019) p 36-38, Table 12
72  network_name = 0x40, /* implemented */
73  service_list = 0x41, /* implemented */
74  dvb_stuffing = 0x42, /* implemented */
75  satellite_delivery_system = 0x43, /* implemented */
76  cable_delivery_system = 0x44, /* implemented */
77  vbi_data = 0x45, /* partial */
78  vbi_teletext = 0x46, /* partial */
79  bouquet_name = 0x47, /* implemented */
80  service = 0x48, /* implemented, toString lacking */
81  country_availability = 0x49, /* implemented */
82  linkage = 0x4A, /* partial */
83  nvod_reference = 0x4B, /* partial */
84  dvb_time_shifted_service = 0x4C, /* partial */
85  short_event = 0x4D, /* implemented */
86  extended_event = 0x4E, /* implemented */
87  time_shifted_event = 0x4F, /* partial */
88 
89  component = 0x50, /* implemented, toString lacking */
90  mosaic = 0x51, /* partial */
91  stream_identifier = 0x52, /* implemented */
92  ca_identifier = 0x53, /* partial */
93  content = 0x54, /* implemented */
94  parental_rating = 0x55, /* partial */
95  teletext = 0x56, /* partial */
96  telephone = 0x57, /* partial */
97  local_time_offset = 0x58,
98  subtitling = 0x59, /* partial */
99  terrestrial_delivery_system = 0x5A, /* implemented */
100  multilingual_network_name = 0x5B, /* partial */
101  multilingual_bouquet_name = 0x5C, /* partial */
102  multilingual_service_name = 0x5D, /* partial */
103  multilingual_component = 0x5E,
104  private_data_specifier = 0x5F, /* partial */
105 
106  service_move = 0x60, /* partial */
107  short_smoothing_buffer = 0x61, /* partial */
108  frequency_list = 0x62, /* implemented */
109  partial_transport_stream = 0x63, /* partial */
110  data_broadcast = 0x64, /* partial */
111  scrambling = 0x65, /* partial */
112  data_broadcast_id = 0x66, /* partial */
113  transport_stream = 0x67, /* partial */
114  dsng = 0x68, /* partial */
115  pdc = 0x69, /* partial */
116  ac3 = 0x6A, /* partial */
117  ancillary_data = 0x6B, /* partial */
118  cell_list = 0x6C, /* partial */
119  cell_frequency_link = 0x6D, /* partial */
120  announcement_support = 0x6E, /* partial */
121  application_signalling = 0x6F,
122 
123  adaptation_field_data = 0x70, /* partial */
124  service_identifier = 0x71,
125  service_availability = 0x72, /* partial */
126  default_authority = 0x73, /* implemented */
127  related_content = 0x74,
128  tva_id = 0x75,
129  dvb_content_identifier = 0x76, /* partial */
130  time_slice_fec_identifier = 0x77,
131  ecm_repetition_rate = 0x78,
132  s2_satellite_delivery_system = 0x79,
133  eac3 = 0x7A,
134  dts = 0x7B,
135  aac = 0x7C,
136  xait_location = 0x7D,
137  fta_content_management = 0x7E,
138  extension = 0x7F,
139 
140  // DVB Bluebook A038 (Feb 2019) p 94, Table 109
141  //
142  // Extension descriptors
143  image_icon = 0x00,
144  t2_delivery_system = 0x04,
145  sh_delivery_system = 0x05,
146  supplementary_audio = 0x06,
147  network_change_notify = 0x07,
148  message = 0x08,
149  target_region = 0x09,
150  target_region_name = 0x0A,
151  service_relocated = 0x0B,
152  xait_pid = 0x0C,
153  c2_delivery_system = 0x0D,
154  uri_linkage = 0x13,
155  ci_ancillary_data = 0x14,
156  c2_bundle_delivery_system = 0x16,
157  s2x_satellite_delivery_system = 0x17,
158 
159  // ATSC
160  atsc_stuffing = 0x80,
161  ac3_audio_stream = 0x81, /* partial */
162  atsc_program_identifier = 0x85,
163  caption_service = 0x86, /* implemented */
164  content_advisory = 0x87,
165  atsc_ca_descriptor = 0x88,
166  atsc_descriptor_tag = 0x89,
167 
168  // SCTE
169  scte_frame_rate = 0x82, /* implemented, also ATSC */
170  scte_extended_video = 0x83, /* implemented, also ATSC */
171  scte_component_name = 0x84, /* implemented, also ATSC */
172  scte_cue_identifier = 0x8A, /* implemented */
173  scte_frequency_spec = 0x90, /* implemented */
174  scte_modulation_params = 0x91, /* implemented */
175  scte_transport_stream_id = 0x92, /* implemented */
176  scte_revision_detection = 0x93, /* implemented */
177 
178  // ATSC
179  extended_channel_name = 0xA0, /* implemented */
180  service_location = 0xA1,
181  atsc_time_shifted_service = 0xA2,
182  component_name = 0xA3, /* implemented */
183  atsc_data_service = 0xA4,
184  atsc_pid_count = 0xA5,
185  atsc_download = 0xA6,
186  multiprotocol_encapsulation = 0xA7,
187  dcc_departing_request = 0xA8,
188  dcc_arriving_request = 0xA9,
189  drm_control = 0xAA,
190  atsc_genre = 0xAB,
191  atsc_private_information = 0xAD,
192 
193  atsc_content_identifier = 0xB6, /* partial */
194  };
195 };
196 
198 {
199  public:
200  enum
201  {
202  // These can conflict and should only be used
203  // on these specific networks.
204 
205  // Private -- UK and NL
206  dvb_logical_channel_descriptor = 0x83, /* implemented */
207  dvb_simulcast_channel_descriptor = 0x88, /* implemented */
208 
209  // Private -- NL Casema
210  casema_video_on_demand = 0x87,
211 
212  // Private -- Dish Network
213  dish_event_rights = 0x87,
214  dish_event_mpaa = 0x89, /* implemented */
215  dish_event_name = 0x91, /* implemented */
216  dish_event_description = 0x92, /* implemented */
217  dish_event_properties = 0x94, /* implemented */
218  dish_event_vchip = 0x95, /* implemented */
219  dish_event_tags = 0x96, /* implemented */
220 
221  // Private -- SES
222  nordig_content_protection = 0xA0,
223 
224  // Private -- CH UPC Cablecom
225  upc_event_episode_title = 0xA7,
226 
227  // Private -- Sky Astra-2 28.2E and other Sky satellites
228  sky_lcn_table = 0xb1, /* implemented */
229 
230  // Private -- FreeSat Astra-2 28.2E
231  freesat_lcn_table = 0xd3, /* implemented */
232  freesat_region_table = 0xd4, /* implemented */
233  freesat_chan_cat_mapping = 0xd5, /* todo */
234  freesat_d6_table = 0xd6, /* unknown */
235  freesat_d7_table = 0xd7, /* unknown */
236  freesat_category_table = 0xd8, /* todo */
237  freesat_callsign = 0xd9, /* partial */
238 
239  // Private -- premiere.de
240  premiere_content_order = 0xF0,
241  premiere_parental_information = 0xF1,
242  premiere_content_transmission = 0xF2,
243 
244  // Private -- OpenTV
245  opentv_titles_1 = 0xA0,
246  opentv_titles_2 = 0xA1,
247  opentv_titles_3 = 0xA2,
248  opentv_titles_4 = 0xA3,
249  opentv_summaries_1 = 0xA8,
250  opentv_summaries_2 = 0xA9,
251  opentv_summaries_3 = 0xAA,
252  opentv_summaries_4 = 0xAB,
253  opentv_channel_list = 0xB1, /* sky_lcn_table */
254  };
255 };
256 
257 /*
258  * Private_Data_Specifier_ID from http://www.dvbservices.com/identifiers/private_data_spec_id
259  */
261 {
262  public:
263  enum
264  {
265  SES = 0x00000001, // Société Européenne des Satellites
266  BSB1 = 0x00000002, // UK Sky (Astra 28.2E), Sky New Zealand (Optus D1 160E0)
267  CASEMA = 0x00000016, // NL Casema
268  EACEM = 0x00000028, // NL Ziggo
269  NORDIG = 0x00000029, // EU Nordig
270  ORS = 0x000001B0, // ORS comm GmbH & Co KG
271  UPC1 = 0x00000600, // UPC Cablecom
272  ITC = 0x0000233A, // Independent Television Commission
273  IRDETO = 0x00362275, // Irdeto
274  FSAT = 0x46534154, // UK BBC FreeSat on Astra 28.2E
275  OTV = 0x4f545600, // OpenTV
276  };
277 };
278 
279 /*
280  * Original_Network_ID from http://www.dvbservices.com/identifiers/original_network_id
281  */
283 {
284  public:
285  enum
286  {
287  SES2 = 0x0002, // Société Européenne des Satellites
288  BBC = 0x003B, // BBC / Freesat
289  TELENOR = 0x0046, // Telenor Norway
290  SKYNZ = 0x00A9, // Sky New Zealand / Sky Network Television Ltd (NDS)
291  NOZEMA = 0x2210, // Netherlands Digital Terrestrial Television
292  };
293 };
294 
296 {
297  public:
298  operator const unsigned char*() const { return m_data; }
299 
300  explicit MPEGDescriptor(const unsigned char *data, int len = 300) : m_data(data)
301  {
302  if ((len < 2) || (int(DescriptorLength()) + 2) > len)
303  m_data = nullptr;
304  }
305  MPEGDescriptor(const unsigned char *data,
306  int len, uint tag) : m_data(data)
307  {
308  if ((len < 2) || ((int(DescriptorLength()) + 2) > len)
309  || (DescriptorTag() != tag))
310  m_data = nullptr;
311  }
312  MPEGDescriptor(const unsigned char *data,
313  int len, uint tag, uint req_desc_len) : m_data(data)
314  {
315  if ((len < 2) || ((int(DescriptorLength()) + 2) > len)
316  || (DescriptorTag() != tag)
317  || (DescriptorLength() != req_desc_len))
318  m_data = nullptr;
319  }
320  virtual ~MPEGDescriptor() = default;
321 
322  bool IsValid(void) const { return m_data; }
323  uint size(void) const { return DescriptorLength() + 2; }
324 
325  uint DescriptorTag(void) const { return m_data[0]; }
326  uint DescriptorLength(void) const { return m_data[1]; }
327  uint DescriptorTagExtension(void) const { return m_data[2]; }
328  QString DescriptorTagString(void) const;
329 
330  virtual QString toString(void) const;
331  virtual QString toStringPD(uint priv_dsid) const;
332  virtual QString toStringXML(uint indent_level) const;
333 
334  static desc_list_t Parse(const unsigned char *data, uint len);
335  static desc_list_t ParseAndExclude(const unsigned char *data, uint len,
336  int excluded_descid);
337  static desc_list_t ParseOnlyInclude(const unsigned char *data, uint len,
338  int excluded_descid);
339 
340  static const unsigned char *Find(const desc_list_t &parsed, uint desc_tag);
341  static const unsigned char *FindExtension(const desc_list_t &parsed, uint desc_tag);
342  static desc_list_t FindAll(const desc_list_t &parsed, uint desc_tag);
343 
344  static const unsigned char *FindBestMatch(
345  const desc_list_t &parsed, uint desc_tag, QMap<uint,uint> &langPref);
346  static desc_list_t FindBestMatches(
347  const desc_list_t &parsed, uint desc_tag, QMap<uint,uint> &langPref);
348 
349  protected:
350  const unsigned char *m_data;
351 
352  public:
353  QString hexdump(void) const;
354  QString descrDump(const QString &name) const;
355 };
356 
357 // a_52a.pdf p119, Table A1
359 {
360  public:
361  explicit RegistrationDescriptor(const unsigned char *data, int len = 300) :
362  MPEGDescriptor(data, len, DescriptorID::registration)
363  {
364  // The HD-PVR outputs a registration descriptor with a length
365  // of 8 rather than 4, so we accept any length >= 4, not just 4.
366  if (IsValid() && DescriptorLength() < 4)
367  m_data = nullptr;
368  }
369 
370  uint FormatIdentifier(void) const
371  { return (m_data[2]<<24) | (m_data[3]<<16) | (m_data[4]<<8) | m_data[5]; }
372  QString FormatIdentifierString(void) const
373  {
374  return QString("") + QChar(m_data[2]) + QChar(m_data[3]) +
375  QChar(m_data[4]) + QChar(m_data[5]);
376  }
377  QString toString() const override; // MPEGDescriptor
378 
379  private:
380  static void InitializeDescriptionMap(void);
381  static QString GetDescription(const QString &fmt);
382 
383  private:
384  static QMutex description_map_lock;
386  static QMap<QString,QString> description_map;
387 };
388 
390 {
391  public:
392  explicit ConditionalAccessDescriptor(const unsigned char *data, int len = 300) :
393  MPEGDescriptor(data, len, DescriptorID::conditional_access) { }
394 
395  uint SystemID(void) const { return m_data[2] << 8 | m_data[3]; }
396  uint PID(void) const { return (m_data[4] & 0x1F) << 8 | m_data[5]; }
397  uint DataSize(void) const { return DescriptorLength() - 4; }
398  const unsigned char *Data(void) const { return &m_data[6]; }
399  QString toString() const override; // MPEGDescriptor
400 };
401 
403 {
404  public:
405  explicit ISO639LanguageDescriptor(const unsigned char *data, int len = 300) :
406  MPEGDescriptor(data, len, DescriptorID::iso_639_language) { }
407 
408  const unsigned char* CodeRaw() const { return &m_data[2]; }
409  uint AudioType() const { return m_data[5]; }
410 
411  int LanguageKey(void) const
412  { return iso639_str3_to_key(&m_data[2]); }
413  QString LanguageString(void) const
414  { return iso639_key_to_str3(LanguageKey()); }
415  int CanonicalLanguageKey(void) const
416  { return iso639_key_to_canonical_key(LanguageKey()); }
417  QString CanonicalLanguageString(void) const
418  { return iso639_key_to_str3(CanonicalLanguageKey()); }
419 
420  QString toString() const override; // MPEGDescriptor
421 };
422 
425 {
426  public:
427  explicit AVCVideoDescriptor(const unsigned char *data, int len = 300) :
428  MPEGDescriptor(data, len, DescriptorID::avc_video) { }
429  // Name bits loc expected value
430  // descriptor_tag 8 0.0 0x
431  // descriptor_length 8 1.0
432  // profile_idc 8 2.0
433  uint ProfileIDC(void) const { return m_data[2]; }
434  // constraint_set0_flag 1 3.0
435  bool ConstaintSet0(void) const { return ( m_data[3]&0x80 ) != 0; }
436  // constraint_set1_flag 1 3.1
437  bool ConstaintSet1(void) const { return ( m_data[3]&0x40 ) != 0; }
438  // constraint_set2_flag 1 3.2
439  bool ConstaintSet2(void) const { return ( m_data[3]&0x20 ) != 0; }
440  // AVC_compatible_flags 5 3.3
441  uint AVCCompatible(void) const { return m_data[3]&0x1f; }
442  // level_idc 8 4.0
443  uint LevelIDC(void) const { return m_data[4]; }
444  // AVC_still_present 1 5.0
445  bool AVCStill(void) const { return ( m_data[5]&0x80 ) != 0; }
446  // AVC_24_hour_picture_flag 1 5.1
447  bool AVC24HourPicture(void) const { return ( m_data[5]&0x40 ) != 0; }
449  const { return ( m_data[5]&0x20 ) != 0; }
450  // reserved 6 bslbf
451  QString toString() const override; // MPEGDescriptor
452 };
453 
456 {
457  public:
458  explicit AVCTimingAndHRDDescriptor(const unsigned char *data, int len = 300) :
459  MPEGDescriptor(data, len, DescriptorID::avc_timing_and_hrd) { }
460  // Name bits loc expected value
461  // descriptor_tag 8 0.0 0x
462  // descriptor_length 8 1.0
463  // hrd_management_valid 1 2.0
464  bool HRDManagementValid(void) const { return ( m_data[2]&0x80 ) != 0; }
465  // reserved 6 2.1
466  // picture_and_timing_info_present 1 2.7
467  bool HasPictureAndTimingInfo(void) const { return (m_data[2]&0x01) != 0;}
468  // if (picture_and_timing_info_present) {
469  // 90kHz_flag 1 3.0
470  // reserved 7 3.1
471  // if (90kHz_flag == '0') {
472  // N 32 4.0 uimsbf
473  // K 32 8.0 uimsbf
474  // }
475  // num_units_in_tick 32 (90khz)?4.0:12.0 uimsbf
476  // }
477  // fixed_frame_rate_flag 1 (pict_info)?((90khz)?8.0:16.0):3.0
478  // temporal_poc_flag 1 (pict_info)?((90khz)?8.1:16.1):3.1
479  // picture_to_display_conversion_flag 1 (pict_info)?((90khz)?8.2:16.2):3.2
480  // reserved 5 bslbf
481 };
482 
485 {
486  public:
487  explicit HEVCVideoDescriptor(const unsigned char *data, int len = 300) :
488  MPEGDescriptor(data, len, DescriptorID::avc_video) { }
489  // Name bits loc expected value
490  // descriptor_tag 8 0.0 0x38
491  // descriptor_length 8 1.0
492 
493  // the encoding of the following is specified in Rec. ITU-T H.265 | ISO/IEC 23008-2
494  // profile_space 2 2.0
495  uint ProfileSpace(void) const { return m_data[2]&0xC0 >> 6; }
496  // tier_flag 1 2.2
497  bool Tier(void) const { return ( m_data[2]&0x20 ) != 0; }
498  // profile_idc 5 2.3
499  uint ProfileIDC(void) const { return m_data[2] >> 3; }
500  // profile_compatibility_indication 32 3.0
501  // progressive_source_flag 1 7.0
502  // interlaced_source_flag 1 7.1
503  // non_packed_constraint_flag 1 7.2
504  // frame_only_constraint_flag 1 7.3
505  // reserved_zero_44bits 44 7.4
506  // level_idc 8 13.0
507 
508  // temporal_layer_subset_flag 1 14.0
509  // HEVC_still_present_flag 1 14.1
510  // HEVC_24hr_picture_present_flag 1 14.2
511  // reserved 5 14.3
512 
513  // if temporal_layer_subset_flag == true and
514  // descriptor_length == 17 instead of 15 then
515  // reserved 5 15.0
516  // temporal_id_min 3 15.5
517  // reserved 5 16.0
518  // temporal_id_max 3 16.5
519 
520  QString toString() const override; // MPEGDescriptor
521 };
522 
523 #endif // MPEG_DESCRIPTORS_H
DescriptorID
Definition: mpegdescriptors.h:21
iso639_key_to_canonical_key
int iso639_key_to_canonical_key(int iso639_2)
Definition: iso639.cpp:121
ISO639LanguageDescriptor::CanonicalLanguageString
QString CanonicalLanguageString(void) const
Definition: mpegdescriptors.h:417
HEVCVideoDescriptor::ProfileSpace
uint ProfileSpace(void) const
Definition: mpegdescriptors.h:495
MPEGDescriptor::DescriptorTag
uint DescriptorTag(void) const
Definition: mpegdescriptors.h:325
MPEGDescriptor::DescriptorLength
uint DescriptorLength(void) const
Definition: mpegdescriptors.h:326
ISO639LanguageDescriptor::AudioType
uint AudioType() const
Definition: mpegdescriptors.h:409
AVCVideoDescriptor::ProfileIDC
uint ProfileIDC(void) const
Definition: mpegdescriptors.h:433
mythtvexp.h
build_compdb.content
content
Definition: build_compdb.py:38
ISO639LanguageDescriptor
Definition: mpegdescriptors.h:403
AVCVideoDescriptor::FramePackingSEINotPresentFlag
bool FramePackingSEINotPresentFlag(void) const
Definition: mpegdescriptors.h:448
desc_list_t
vector< const unsigned char * > desc_list_t
Definition: mpegdescriptors.h:18
AVCTimingAndHRDDescriptor::HRDManagementValid
bool HRDManagementValid(void) const
Definition: mpegdescriptors.h:464
RegistrationDescriptor
Definition: mpegdescriptors.h:359
AVCVideoDescriptor::ConstaintSet1
bool ConstaintSet1(void) const
Definition: mpegdescriptors.h:437
ConditionalAccessDescriptor::DataSize
uint DataSize(void) const
Definition: mpegdescriptors.h:397
RegistrationDescriptor::FormatIdentifierString
QString FormatIdentifierString(void) const
Definition: mpegdescriptors.h:372
video
QDomElement video
Definition: mythplugins/mytharchive/mytharchivehelper/main.cpp:658
AVCTimingAndHRDDescriptor::HasPictureAndTimingInfo
bool HasPictureAndTimingInfo(void) const
Definition: mpegdescriptors.h:467
MPEGDescriptor::MPEGDescriptor
MPEGDescriptor(const unsigned char *data, int len, uint tag)
Definition: mpegdescriptors.h:305
Parse
Definition: rssparse.h:189
MPEGDescriptor::IsValid
bool IsValid(void) const
Definition: mpegdescriptors.h:322
MPEGDescriptor::~MPEGDescriptor
virtual ~MPEGDescriptor()=default
toString
QString toString(MarkTypes type)
Definition: programtypes.cpp:26
ISO639LanguageDescriptor::CodeRaw
const unsigned char * CodeRaw() const
Definition: mpegdescriptors.h:408
ConditionalAccessDescriptor::Data
const unsigned char * Data(void) const
Definition: mpegdescriptors.h:398
HEVCVideoDescriptor::Tier
bool Tier(void) const
Definition: mpegdescriptors.h:497
ConditionalAccessDescriptor::SystemID
uint SystemID(void) const
Definition: mpegdescriptors.h:395
MPEGDescriptor
Definition: mpegdescriptors.h:296
AVCVideoDescriptor::AVCVideoDescriptor
AVCVideoDescriptor(const unsigned char *data, int len=300)
Definition: mpegdescriptors.h:427
MPEGDescriptor::m_data
const unsigned char * m_data
Definition: mpegdescriptors.h:350
RegistrationDescriptor::RegistrationDescriptor
RegistrationDescriptor(const unsigned char *data, int len=300)
Definition: mpegdescriptors.h:361
ConditionalAccessDescriptor
Definition: mpegdescriptors.h:390
AVCTimingAndHRDDescriptor
ISO 13818-1:2000/Amd.3:2004 page 12.
Definition: mpegdescriptors.h:456
AVCVideoDescriptor::AVC24HourPicture
bool AVC24HourPicture(void) const
Definition: mpegdescriptors.h:447
AVCTimingAndHRDDescriptor::AVCTimingAndHRDDescriptor
AVCTimingAndHRDDescriptor(const unsigned char *data, int len=300)
Definition: mpegdescriptors.h:458
ISO639LanguageDescriptor::ISO639LanguageDescriptor
ISO639LanguageDescriptor(const unsigned char *data, int len=300)
Definition: mpegdescriptors.h:405
MPEGDescriptor::DescriptorTagExtension
uint DescriptorTagExtension(void) const
Definition: mpegdescriptors.h:327
HEVCVideoDescriptor::HEVCVideoDescriptor
HEVCVideoDescriptor(const unsigned char *data, int len=300)
Definition: mpegdescriptors.h:487
iso639_key_to_str3
static QString iso639_key_to_str3(int code)
Definition: iso639.h:46
uint
unsigned int uint
Definition: compat.h:140
RegistrationDescriptor::FormatIdentifier
uint FormatIdentifier(void) const
Definition: mpegdescriptors.h:370
HEVCVideoDescriptor
ISO 13818-1:2013/FDAM 3 (E) page 7.
Definition: mpegdescriptors.h:485
ISO639LanguageDescriptor::LanguageKey
int LanguageKey(void) const
Definition: mpegdescriptors.h:411
AVCVideoDescriptor::ConstaintSet0
bool ConstaintSet0(void) const
Definition: mpegdescriptors.h:435
ISO639LanguageDescriptor::LanguageString
QString LanguageString(void) const
Definition: mpegdescriptors.h:413
AVCVideoDescriptor::AVCStill
bool AVCStill(void) const
Definition: mpegdescriptors.h:445
MTV_PUBLIC
#define MTV_PUBLIC
Definition: mythtvexp.h:15
AVCVideoDescriptor::ConstaintSet2
bool ConstaintSet2(void) const
Definition: mpegdescriptors.h:439
MPEGDescriptor::size
uint size(void) const
Definition: mpegdescriptors.h:323
ISO639LanguageDescriptor::CanonicalLanguageKey
int CanonicalLanguageKey(void) const
Definition: mpegdescriptors.h:415
MPEGDescriptor::MPEGDescriptor
MPEGDescriptor(const unsigned char *data, int len, uint tag, uint req_desc_len)
Definition: mpegdescriptors.h:312
AVCVideoDescriptor
ISO 13818-1:2000/Amd.3:2004 page 11.
Definition: mpegdescriptors.h:425
iso639.h
ISO 639-1 and ISO 639-2 support functions.
AVCVideoDescriptor::AVCCompatible
uint AVCCompatible(void) const
Definition: mpegdescriptors.h:441
RegistrationDescriptor::description_map_initialized
static bool description_map_initialized
Definition: mpegdescriptors.h:385
OriginalNetworkID
Definition: mpegdescriptors.h:283
PrivateDataSpecifierID
Definition: mpegdescriptors.h:261
ConditionalAccessDescriptor::ConditionalAccessDescriptor
ConditionalAccessDescriptor(const unsigned char *data, int len=300)
Definition: mpegdescriptors.h:392
HEVCVideoDescriptor::ProfileIDC
uint ProfileIDC(void) const
Definition: mpegdescriptors.h:499
RegistrationDescriptor::description_map_lock
static QMutex description_map_lock
Definition: mpegdescriptors.h:384
iso639_str3_to_key
static int iso639_str3_to_key(const unsigned char *iso639_2)
Definition: iso639.h:63
MPEGDescriptor::MPEGDescriptor
MPEGDescriptor(const unsigned char *data, int len=300)
Definition: mpegdescriptors.h:300
RegistrationDescriptor::description_map
static QMap< QString, QString > description_map
Definition: mpegdescriptors.h:386
AVCVideoDescriptor::LevelIDC
uint LevelIDC(void) const
Definition: mpegdescriptors.h:443
ConditionalAccessDescriptor::PID
uint PID(void) const
Definition: mpegdescriptors.h:396
PrivateDescriptorID
Definition: mpegdescriptors.h:198