vdr  2.4.1
descriptor.h
Go to the documentation of this file.
1 /***************************************************************************
2  * Copyright (c) 2003 by Marcel Wiesweg *
3  * *
4  * This program is free software; you can redistribute it and/or modify *
5  * it under the terms of the GNU General Public License as published by *
6  * the Free Software Foundation; either version 2 of the License, or *
7  * (at your option) any later version. *
8  * *
9  * $Id: descriptor.h 4.0.1.1 2019/03/15 22:38:36 kls Exp $
10  * *
11  ***************************************************************************/
12 
13 #ifndef LIBSI_DESCRIPTOR_H
14 #define LIBSI_DESCRIPTOR_H
15 
16 #include "si.h"
17 #include "headers.h"
18 
19 namespace SI {
20 
22 public:
23  char languageCode[4];
24  String name; //name of the event
25  String text; //short description
26 protected:
27  virtual void Parse();
28 };
29 
31 public:
32  class Item : public LoopElement {
33  public:
37  protected:
38  virtual void Parse();
39  };
40  char languageCode[4];
41  int getDescriptorNumber();
45 protected:
46  virtual void Parse();
47 private:
49 };
50 
52 public:
53  int getMaximumTextLength(const char *separation1="\t", const char *separation2="\n");
54  //Returns a concatenated version of first the non-itemized and then the itemized text
55  //same semantics as with SI::String
56  char *getText(const char *separation1="\t", const char *separation2="\n");
57  //buffer must at least be getTextLength(), getMaximumTextLength() is a good choice
58  char *getText(char *buffer, int size, const char *separation1="\t", const char *separation2="\n");
59 
60  //these only return the non-itemized text fields in concatenated form
62  char *getTextPlain();
63  char *getTextPlain(char *buffer, int size);
64 
65  //these only return the itemized text fields in concatenated form.
66  //Between the description and the text the separation1 character is used,
67  //separation2 used between two pairs. Example:
68  //Director\tSteven Spielberg\nActor\tMichael Mendl\n
69  int getMaximumTextItemizedLength(const char *separation1="\t", const char *separation2="\n");
70  char *getTextItemized(const char *separation1="\t", const char *separation2="\n");
71  char *getTextItemized(char *buffer, int size, const char *separation1="\t", const char *separation2="\n");
72  //returns the itemized text pair by pair. Maximum length for buffers is 256.
73  //Return value is false if and only if the end of the list is reached.
74  //The argument valid indicates whether the buffers contain valid content.
75  bool getTextItemized(Loop::Iterator &it, bool &valid, char *itemDescription, char *itemText, int sizeItemDescription, int sizeItemText);
76 };
77 
79 public:
80  int getReferenceServiceId() const;
81  int getReferenceEventId() const;
82 protected:
83  virtual void Parse();
84 private:
86 };
87 
88 class ContentDescriptor : public Descriptor {
89 public:
90  class Nibble : public LoopElement {
91  public:
92  virtual int getLength() { return sizeof(nibble_content); }
93  int getContentNibbleLevel1() const;
94  int getContentNibbleLevel2() const;
95  int getUserNibble1() const;
96  int getUserNibble2() const;
97  protected:
98  virtual void Parse();
99  private:
101  };
103 protected:
104  virtual void Parse();
105 };
106 
108 public:
109  class Rating : public LoopElement {
110  public:
111  char languageCode[4];
112  int getRating() const;
113  virtual int getLength() { return sizeof(parental_rating); }
114  protected:
115  virtual void Parse();
116  private:
118  };
120 protected:
121  virtual void Parse();
122 };
123 
125 public:
126  class Teletext : public LoopElement {
127  public:
128  char languageCode[4];
129  int getTeletextType() const;
130  int getTeletextMagazineNumber() const;
131  int getTeletextPageNumber() const;
132  virtual int getLength() { return sizeof(item_teletext); }
133  protected:
134  virtual void Parse();
135  private:
136  const item_teletext *s;
137  };
139 protected:
140  virtual void Parse();
141 };
142 
143 class CaDescriptor : public Descriptor {
144 public:
145  int getCaType() const;
146  int getCaPid() const;
148 protected:
149  virtual void Parse();
150 private:
151  const descr_ca *s;
152 };
153 
155 public:
156  int getComponentTag() const;
157 protected:
158  virtual void Parse();
159 private:
161 };
162 
164 public:
166 protected:
167  virtual void Parse();
168 };
169 
171 public:
173 protected:
174  virtual void Parse();
175 };
176 
178 public:
179  int getCarouselId() const;
180  int getFormatId() const;
181 protected:
182  virtual void Parse();
183 private:
185 };
186 
188 };
189 
191 public:
192  class Service : public LoopElement {
193  public:
194  int getServiceId() const;
195  int getServiceType() const;
196  virtual int getLength() { return sizeof(descr_service_list_loop); }
197  protected:
198  virtual void Parse();
199  private:
201  };
203 protected:
204  virtual void Parse();
205 };
206 
208 public:
209  int getFrequency() const;
210  int getOrbitalPosition() const;
211  int getWestEastFlag() const;
212  int getPolarization() const;
213  int getModulationSystem() const;
214  int getModulationType() const;
215  int getRollOff() const;
216  int getSymbolRate() const;
217  int getFecInner() const;
218 protected:
219  virtual void Parse();
220 private:
222 };
223 
225 public:
226  int getFrequency() const;
227  int getFecOuter() const;
228  int getModulation() const;
229  int getSymbolRate() const;
230  int getFecInner() const;
231 protected:
232  virtual void Parse();
233 private:
235 };
236 
238 public:
239  int getFrequency() const;
240  int getBandwidth() const;
241  int getPriority() const;
242  int getTimeSlicingIndicator() const;
243  int getMpeFecIndicator() const;
244  int getConstellation() const;
245  int getHierarchy() const;
246  int getCodeRateHP() const;
247  int getCodeRateLP() const;
248  int getGuardInterval() const;
249  int getTransmissionMode() const;
250  bool getOtherFrequency() const;
251 protected:
252  virtual void Parse();
253 private:
255 };
256 
258 public:
259  int getServiceType() const;
262 protected:
263  virtual void Parse();
264 private:
265  const descr_service *s;
266 };
267 
269 public:
270  class Service : public LoopElement {
271  public:
272  int getTransportStream() const;
273  int getOriginalNetworkId() const;
274  int getServiceId() const;
275  virtual int getLength() { return sizeof(item_nvod_reference); }
276  protected:
277  virtual void Parse();
278  private:
280  };
282 protected:
283  virtual void Parse();
284 };
285 
287 public:
288  int getReferenceServiceId() const;
289 protected:
290  virtual void Parse();
291 private:
293 };
294 
296 public:
297  int getStreamContent() const;
298  int getComponentType() const;
299  int getComponentTag() const;
300  char languageCode[4];
302 protected:
303  virtual void Parse();
304 private:
306 };
307 
309 public:
310  int getPrivateDataSpecifier() const;
311 protected:
312  virtual void Parse();
313 private:
315 };
316 
318 public:
319  class Subtitling : public LoopElement {
320  public:
321  char languageCode[4];
322  int getSubtitlingType() const;
323  int getCompositionPageId() const;
324  int getAncillaryPageId() const;
325  virtual int getLength() { return sizeof(item_subtitling); }
326  protected:
327  virtual void Parse();
328  private:
330  };
332 protected:
333  virtual void Parse();
334 };
335 
337 public:
338  int getNewOriginalNetworkId() const;
339  int getNewTransportStreamId() const;
340  int getNewServiceId() const;
341 protected:
342  virtual void Parse();
343 private:
345 };
346 
348 public:
349  int getCodingType() const;
351 protected:
352  virtual void Parse();
353 private:
355 };
356 
358 public:
360 protected:
361  virtual void Parse();
362 };
363 
365 public:
366  class Identifier : public LoopElement {
367  public:
369  int getCridType() const;
370  int getCridLocation() const;
371  virtual int getLength() { return sizeof(content_identifier_entry)+identifier.getLength(); }
372  protected:
373  virtual void Parse();
374  private:
376  };
378 protected:
379  virtual void Parse();
380 };
381 
383 public:
385 protected:
386  virtual void Parse();
387 };
388 
389 //abstract base class
391 public:
392  class Name : public LoopElement {
393  public:
394  char languageCode[4];
396  virtual int getLength() { return sizeof(entry_multilingual_name)+name.getLength(); }
397  protected:
398  virtual void Parse();
399  };
401 protected:
402  virtual void Parse();
403 };
404 
406  //inherits nameLoop from MultilingualNameDescriptor
407 };
408 
410  //inherits nameLoop from MultilingualNameDescriptor
411 };
412 
414 public:
415  int getComponentTag() const;
416  //inherits nameLoop from MultilingualNameDescriptor
417 protected:
418  virtual void Parse();
419 private:
421 };
422 
424 public:
426  public:
429  //inherits name, meaning: service name;
430  protected:
431  virtual void Parse();
432  };
434 protected:
435  virtual void Parse();
436 };
437 
439 public:
440  class LocalTimeOffset : public LoopElement {
441  public:
442  char countryCode[4];
443  virtual int getLength() { return sizeof(local_time_offset_entry); }
444  int getCountryId() const;
445  int getLocalTimeOffsetPolarity() const;
446  int getLocalTimeOffset() const;
447  time_t getTimeOfChange() const;
448  int getNextTimeOffset() const;
449  protected:
450  virtual void Parse();
451  private:
453  };
455 protected:
456  virtual void Parse();
457 };
458 
460 public:
461  int getTransportStreamId() const;
462  int getOriginalNetworkId() const;
463  int getServiceId() const;
464  LinkageType getLinkageType() const;
465  int getHandOverType() const;
466  int getOriginType() const;
467  int getId() const;
469 protected:
470  virtual void Parse();
471 private:
472  const descr_linkage *s;
474 };
475 
477 public:
478  char languageCode[4]; //for backwards compatibility
479  class Language : public LoopElement {
480  public:
481  virtual int getLength() { return sizeof(descr_iso_639_language_loop); }
482  char languageCode[4];
484  protected:
485  virtual void Parse();
486  private:
488  };
490 protected:
491  virtual void Parse();
492 };
493 
494 class PDCDescriptor : public Descriptor {
495 public:
496  int getDay() const;
497  int getMonth() const;
498  int getHour() const;
499  int getMinute() const;
500 protected:
501  virtual void Parse();
502 private:
503  const descr_pdc *s;
504 };
505 
507 public:
508  int getAncillaryDataIdentifier() const;
509 protected:
510  virtual void Parse();
511 private:
513 };
514 
516 public:
517  int getScramblingSequenceSelector() const;
518  int getMultipleInputStreamFlag() const;
520  int getScramblingSequenceIndex() const;
522 protected:
523  virtual void Parse();
524 private:
528 };
529 
531 public:
532  int getExtendedDataFlag() const;
533  int getExtensionDescriptorTag() const;
534 protected:
535  virtual void Parse();
536 private:
539 };
540 
542 public:
543  int getExtendedDataFlag() const;
544  int getExtensionDescriptorTag() const;
545  int getPlpId() const;
546  int getT2SystemId() const;
547  int getSisoMiso() const;
548  int getBandwidth() const;
549  int getGuardInterval() const;
550  int getTransmissionMode() const;
551  int getOtherFrequencyFlag() const;
552  int getTfsFlag() const;
553 protected:
554  virtual void Parse();
555 private:
558 };
559 
561 public:
562  class LogicalChannel : public LoopElement {
563  public:
564  int getServiceId() const;
565  int getVisibleServiceFlag() const;
566  int getLogicalChannelNumber() const;
567  virtual int getLength() { return sizeof(item_logical_channel); }
568  protected:
569  virtual void Parse();
570  private:
572  };
574 protected:
575  virtual void Parse();
576 };
577 
579 public:
581  public:
582  int getServiceId() const;
583  int getVisibleServiceFlag() const;
584  int getLogicalChannelNumber() const;
585  virtual int getLength() { return sizeof(item_hd_simulcast_logical_channel); }
586  protected:
587  virtual void Parse();
588  private:
590  };
592 protected:
593  virtual void Parse();
594 };
595 
596 // Private DVB Descriptor Premiere.de
597 // 0xF2 Content Transmission Descriptor
598 // http://dvbsnoop.sourceforge.net/examples/example-private-section.html
599 
601 public:
602  class StartDayEntry : public LoopElement {
603  public:
604  class StartTimeEntry : public LoopElement {
605  public:
606  virtual int getLength() { return sizeof(item_premiere_content_transmission_time); }
607  time_t getStartTime(int mjd) const; //UTC
608  protected:
609  virtual void Parse();
610  private:
612  };
614  virtual int getLength();
615  int getMJD() const;
616  int getLoopLength() const;
617  protected:
618  virtual void Parse();
619  private:
621  };
623  int getOriginalNetworkId() const;
624  int getTransportStreamId() const;
625  int getServiceId() const;
626 protected:
627  virtual void Parse();
628 private:
630 };
631 
632 //a descriptor currently unimplemented in this library
634 protected:
635  virtual void Parse() {}
636 };
637 
639 public:
641  public:
642  virtual int getLength() { return sizeof(application_signalling_entry); }
643  int getApplicationType() const;
644  int getAITVersionNumber() const;
645  protected:
646  virtual void Parse();
647  private:
649  };
651 protected:
652  virtual void Parse();
653 };
654 
656 public:
657  class Profile : public LoopElement {
658  public:
659  virtual int getLength() { return sizeof(application_profile_entry); }
660  int getApplicationProfile() const;
661  int getVersionMajor() const;
662  int getVersionMinor() const;
663  int getVersionMicro() const;
664  private:
666  protected:
667  virtual void Parse();
668  };
670  bool isServiceBound() const;
671  int getVisibility() const;
672  int getApplicationPriority() const;
674 private:
676 protected:
677  virtual void Parse();
678 };
679 
681 public:
682  class NameEntry : public LoopElement {
683  public:
684  virtual int getLength() { return sizeof(descr_application_name_entry)+name.getLength(); }
685  char languageCode[4];
687  protected:
688  virtual void Parse();
689  };
691 protected:
692  virtual void Parse();
693 };
694 
696 public:
698  public:
699  virtual int getLength() { return sizeof(descr_url_extension_entry)+UrlExtension.getLength(); }
701  protected:
702  virtual void Parse();
703  };
704 
706  int getProtocolId() const;
707  int getProtocolLabel() const;
708  bool isRemote() const;
709  int getComponentTag() const;
710  char *getUrlBase(char *buffer, int size);
712 
713 protected:
714  virtual void Parse();
715 private:
717  bool remote;
720 };
721 
723 public:
724  class ApplicationEntry : public LoopElement {
725  public:
726  virtual int getLength() { return sizeof(descr_dvbj_application_entry)+parameter.getLength(); }
728  protected:
729  virtual void Parse();
730  };
732 protected:
733  virtual void Parse();
734 };
735 
737 public:
741 protected:
742  virtual void Parse();
743 };
744 
746 public:
748  int getIconFlags() const;
749 protected:
750  virtual void Parse();
751 private:
753 };
754 
756 public:
757  char *getLocation(char *buffer, int size);
758 protected:
759  virtual void Parse();
760 private:
762 };
763 
765 public:
766  int getFormatIdentifier() const;
768 protected:
769  virtual void Parse();
770 private:
772 };
773 
774 class AVCDescriptor : public Descriptor {
775 public:
776  int getProfileIdc() const;
777  int getConstraintSet0Flag() const;
778  int getConstraintSet1Flag() const;
779  int getConstraintSet2Flag() const;
780  int getConstraintSet3Flag() const;
781  int getConstraintSet4Flag() const;
782  int getConstraintSet5Flag() const;
783  int getAVCCompatibleFlags() const;
784  int getLevelIdc() const;
785  int getAVCStillPresent() const;
786  int getAVC24HourPictureFlag() const;
789 protected:
790  virtual void Parse();
791 private:
792  const descr_avc *s;
793 };
794 
795 } //end of namespace
796 
797 #endif //LIBSI_TABLE_H
int getAVC24HourPictureFlag() const
Definition: descriptor.c:1235
const item_subtitling * s
Definition: descriptor.h:329
TypeLoop< SixteenBit > identifiers
Definition: descriptor.h:172
virtual void Parse()
Definition: descriptor.c:870
const descr_avc * s
Definition: descriptor.h:792
const descr_linkage * s
Definition: descriptor.h:472
int getNewOriginalNetworkId() const
Definition: descriptor.c:616
const descr_pdc * s
Definition: descriptor.h:503
StructureLoop< Name > nameLoop
Definition: descriptor.h:400
char * getLocation(char *buffer, int size)
Definition: descriptor.c:1173
StructureLoop< Service > serviceLoop
Definition: descriptor.h:281
StructureLoop< Nibble > nibbleLoop
Definition: descriptor.h:102
const descr_ca * s
Definition: descriptor.h:151
StructureLoop< Rating > ratingLoop
Definition: descriptor.h:119
int getConstraintSet3Flag() const
Definition: descriptor.c:1211
int getAncillaryDataIdentifier() const
Definition: descriptor.c:840
int getServiceType() const
Definition: descriptor.c:521
char * getText(const char *separation1="\, const char *separation2="\")
Definition: descriptor.c:86
const parental_rating * s
Definition: descriptor.h:117
const descr_time_shifted_service * s
Definition: descriptor.h:292
const local_time_offset_entry * s
Definition: descriptor.h:452
int getOriginalNetworkId() const
Definition: descriptor.c:763
int getConstraintSet1Flag() const
Definition: descriptor.c:1203
Definition: si.h:497
const descr_service_move * s
Definition: descriptor.h:344
int getMinute() const
Definition: descriptor.c:831
StructureLoop< LogicalChannel > logicalChannelLoop
Definition: descriptor.h:573
int getHour() const
Definition: descriptor.c:827
int getNewServiceId() const
Definition: descriptor.c:624
int getComponentTag() const
Definition: descriptor.c:570
const descr_extended_event * s
Definition: descriptor.h:48
virtual int getLength()
Definition: si.h:294
const content_identifier_entry * s
Definition: descriptor.h:375
const descr_s2_satellite_delivery_system * s
Definition: descriptor.h:525
Definition: headers.h:1968
virtual void Parse()
Definition: descriptor.c:525
int getContentNibbleLevel1() const
Definition: descriptor.c:284
Definition: headers.h:1989
int getConstraintSet2Flag() const
Definition: descriptor.c:1207
virtual void Parse()
Definition: descriptor.c:18
CharArray privateData
Definition: descriptor.h:147
int getConstraintSet4Flag() const
Definition: descriptor.c:1215
int getCaType() const
Definition: descriptor.c:346
StructureLoop< LocalTimeOffset > localTimeOffsetLoop
Definition: descriptor.h:454
const item_teletext * s
Definition: descriptor.h:136
const descr_iso_639_language_loop * s
Definition: descriptor.h:487
StructureLoop< Teletext > teletextLoop
Definition: descriptor.h:138
int getHandOverType() const
Definition: descriptor.c:775
StructureLoop< Subtitling > subtitlingLoop
Definition: descriptor.h:331
const nibble_content * s
Definition: descriptor.h:100
char * getTextItemized(const char *separation1="\, const char *separation2="\")
Definition: descriptor.c:192
LinkageType
Definition: si.h:204
int getExtensionDescriptorTag() const
Definition: descriptor.c:880
virtual void Parse()
Definition: descriptor.c:574
StructureLoop< HdSimulcastLogicalChannel > hdSimulcastLogicalChannelLoop
Definition: descriptor.h:591
const descr_private_data_specifier * s
Definition: descriptor.h:314
virtual void Parse()
Definition: descriptor.c:321
CharArray privateData
Definition: descriptor.h:788
const descr_frequency_list * s
Definition: descriptor.h:354
int getExtensionDescriptorTag() const
Definition: descriptor.c:894
Definition: descriptor.c:16
Definition: headers.h:1622
const item_logical_channel * s
Definition: descriptor.h:571
StructureLoop< Name > nameLoop
Definition: descriptor.h:433
const descr_satellite_delivery_system * s
Definition: descriptor.h:221
const descr_service_list_loop * s
Definition: descriptor.h:200
int getOriginType() const
Definition: descriptor.c:779
const descr_service * s
Definition: descriptor.h:265
int getServiceId() const
Definition: descriptor.c:767
int getContentNibbleLevel2() const
Definition: descriptor.c:288
const descr_terrestrial_delivery * s
Definition: descriptor.h:254
Definition: headers.h:2044
StructureLoop< Profile > profileLoop
Definition: descriptor.h:669
Definition: headers.h:1300
virtual void Parse()
Definition: descriptor.c:748
const descr_stream_identifier * s
Definition: descriptor.h:160
virtual void Parse()
Definition: descriptor.c:1243
virtual void Parse()
Definition: descriptor.c:814
virtual void Parse()
Definition: descriptor.c:369
const descr_transport_protocol * s
Definition: descriptor.h:716
Definition: headers.h:1683
int getMaximumTextLength(const char *separation1="\, const char *separation2="\")
Definition: descriptor.c:81
const application_profile_entry * s
Definition: descriptor.h:665
StructureLoop< Language > languageLoop
Definition: descriptor.h:489
Definition: headers.h:1949
const descr_time_shifted_event * s
Definition: descriptor.h:85
const descr_linkage_8 * s1
Definition: descriptor.h:473
StructureLoop< ApplicationEntryDescriptor > entryLoop
Definition: descriptor.h:650
const descr_t2_delivery_system * s
Definition: descriptor.h:556
const descr_component * s
Definition: descriptor.h:305
int getMonth() const
Definition: descriptor.c:823
const descr_application_end * s
Definition: descriptor.h:675
const descr_application_icons_descriptor_end * s
Definition: descriptor.h:752
int getConstraintSet5Flag() const
Definition: descriptor.c:1219
virtual void Parse()
Definition: descriptor.c:628
const descr_multilingual_component * s
Definition: descriptor.h:420
const item_premiere_content_transmission_time * s
Definition: descriptor.h:611
int getConstraintSet0Flag() const
Definition: descriptor.c:1199
int getAVCCompatibleFlags() const
Definition: descriptor.c:1223
const descr_ancillary_data * s
Definition: descriptor.h:512
int getExtendedDataFlag() const
Definition: descriptor.c:876
int getStreamContent() const
Definition: descriptor.c:562
virtual void Parse()
Definition: descriptor.c:354
virtual void Parse()
Definition: descriptor.c:389
StructureLoop< NameEntry > nameLoop
Definition: descriptor.h:690
StructureLoop< Service > serviceLoop
Definition: descriptor.h:202
StructureLoop< StartDayEntry > startDayLoop
Definition: descriptor.h:622
StructureLoop< Identifier > identifierLoop
Definition: descriptor.h:377
const item_premiere_content_transmission_day * s
Definition: descriptor.h:620
const item_nvod_reference * s
Definition: descriptor.h:279
const descr_carousel_identifier * s
Definition: descriptor.h:184
int getLevelIdc() const
Definition: descriptor.c:1227
LinkageType getLinkageType() const
Definition: descriptor.c:771
int getTransportStreamId() const
Definition: descriptor.c:759
int getFormatIdentifier() const
Definition: descriptor.c:1184
StructureLoop< UrlExtensionEntry > UrlExtensionLoop
Definition: descriptor.h:711
virtual void Parse()
Definition: descriptor.c:279
AudioType
Definition: si.h:217
int getComponentType() const
Definition: descriptor.c:566
const descr_premiere_content_transmission * s
Definition: descriptor.h:629
StructureLoop< Item > itemLoop
Definition: descriptor.h:43
int getFramePackingSEINotPresentFlag() const
Definition: descriptor.c:1239
StructureLoop< ApplicationEntry > applicationLoop
Definition: descriptor.h:731
int getCaPid() const
Definition: descriptor.c:350
char * getUrlBase(char *buffer, int size)
Definition: descriptor.c:1101
int getAVCStillPresent() const
Definition: descriptor.c:1231
const descr_registration * s
Definition: descriptor.h:771
int getMaximumTextItemizedLength(const char *separation1="\, const char *separation2="\")
Definition: descriptor.c:179
TypeLoop< ThirtyTwoBit > frequencies
Definition: descriptor.h:350
TypeLoop< EightBit > transportProtocolLabels
Definition: descriptor.h:673
int getDay() const
Definition: descriptor.c:819
const descr_scrambling_sequence_selector * sss
Definition: descriptor.h:526
int getProfileIdc() const
Definition: descriptor.c:1195
const descr_extension * s
Definition: descriptor.h:537
virtual void Parse()
Definition: descriptor.c:592
int getNewTransportStreamId() const
Definition: descriptor.c:620
const descr_cable_delivery_system * s
Definition: descriptor.h:234