vdr  2.6.9
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.2 2020/06/23 09:27:09 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 getStreamContentExt() const;
299  int getComponentType() const;
300  int getComponentTag() const;
301  char languageCode[4];
303 protected:
304  virtual void Parse();
305 private:
307 };
308 
310 public:
311  int getPrivateDataSpecifier() const;
312 protected:
313  virtual void Parse();
314 private:
316 };
317 
319 public:
320  class Subtitling : public LoopElement {
321  public:
322  char languageCode[4];
323  int getSubtitlingType() const;
324  int getCompositionPageId() const;
325  int getAncillaryPageId() const;
326  virtual int getLength() { return sizeof(item_subtitling); }
327  protected:
328  virtual void Parse();
329  private:
331  };
333 protected:
334  virtual void Parse();
335 };
336 
338 public:
339  int getNewOriginalNetworkId() const;
340  int getNewTransportStreamId() const;
341  int getNewServiceId() const;
342 protected:
343  virtual void Parse();
344 private:
346 };
347 
349 public:
350  int getCodingType() const;
352 protected:
353  virtual void Parse();
354 private:
356 };
357 
359 public:
361 protected:
362  virtual void Parse();
363 };
364 
366 public:
367  class Identifier : public LoopElement {
368  public:
370  int getCridType() const;
371  int getCridLocation() const;
372  virtual int getLength() { return sizeof(content_identifier_entry)+identifier.getLength(); }
373  protected:
374  virtual void Parse();
375  private:
377  };
379 protected:
380  virtual void Parse();
381 };
382 
384 public:
386 protected:
387  virtual void Parse();
388 };
389 
390 //abstract base class
392 public:
393  class Name : public LoopElement {
394  public:
395  char languageCode[4];
397  virtual int getLength() { return sizeof(entry_multilingual_name)+name.getLength(); }
398  protected:
399  virtual void Parse();
400  };
402 protected:
403  virtual void Parse();
404 };
405 
407  //inherits nameLoop from MultilingualNameDescriptor
408 };
409 
411  //inherits nameLoop from MultilingualNameDescriptor
412 };
413 
415 public:
416  int getComponentTag() const;
417  //inherits nameLoop from MultilingualNameDescriptor
418 protected:
419  virtual void Parse();
420 private:
422 };
423 
425 public:
427  public:
430  //inherits name, meaning: service name;
431  protected:
432  virtual void Parse();
433  };
435 protected:
436  virtual void Parse();
437 };
438 
440 public:
441  class LocalTimeOffset : public LoopElement {
442  public:
443  char countryCode[4];
444  virtual int getLength() { return sizeof(local_time_offset_entry); }
445  int getCountryId() const;
446  int getLocalTimeOffsetPolarity() const;
447  int getLocalTimeOffset() const;
448  time_t getTimeOfChange() const;
449  int getNextTimeOffset() const;
450  protected:
451  virtual void Parse();
452  private:
454  };
456 protected:
457  virtual void Parse();
458 };
459 
461 public:
462  int getTransportStreamId() const;
463  int getOriginalNetworkId() const;
464  int getServiceId() const;
465  LinkageType getLinkageType() const;
466  int getHandOverType() const;
467  int getOriginType() const;
468  int getId() const;
470 protected:
471  virtual void Parse();
472 private:
473  const descr_linkage *s;
475 };
476 
478 public:
479  char languageCode[4]; //for backwards compatibility
480  class Language : public LoopElement {
481  public:
482  virtual int getLength() { return sizeof(descr_iso_639_language_loop); }
483  char languageCode[4];
485  protected:
486  virtual void Parse();
487  private:
489  };
491 protected:
492  virtual void Parse();
493 };
494 
495 class PDCDescriptor : public Descriptor {
496 public:
497  int getDay() const;
498  int getMonth() const;
499  int getHour() const;
500  int getMinute() const;
501 protected:
502  virtual void Parse();
503 private:
504  const descr_pdc *s;
505 };
506 
508 public:
509  int getAncillaryDataIdentifier() const;
510 protected:
511  virtual void Parse();
512 private:
514 };
515 
517 public:
518  int getScramblingSequenceSelector() const;
519  int getMultipleInputStreamFlag() const;
521  int getScramblingSequenceIndex() const;
523 protected:
524  virtual void Parse();
525 private:
529 };
530 
532 public:
533  int getExtendedDataFlag() const;
534  int getExtensionDescriptorTag() const;
535 protected:
536  virtual void Parse();
537 private:
540 };
541 
543 public:
544  int getExtendedDataFlag() const;
545  int getExtensionDescriptorTag() const;
546  int getPlpId() const;
547  int getT2SystemId() const;
548  int getSisoMiso() const;
549  int getBandwidth() const;
550  int getGuardInterval() const;
551  int getTransmissionMode() const;
552  int getOtherFrequencyFlag() const;
553  int getTfsFlag() const;
554 protected:
555  virtual void Parse();
556 private:
559 };
560 
562 public:
563  class LogicalChannel : public LoopElement {
564  public:
565  int getServiceId() const;
566  int getVisibleServiceFlag() const;
567  int getLogicalChannelNumber() const;
568  virtual int getLength() { return sizeof(item_logical_channel); }
569  protected:
570  virtual void Parse();
571  private:
573  };
575 protected:
576  virtual void Parse();
577 };
578 
580 public:
582  public:
583  int getServiceId() const;
584  int getVisibleServiceFlag() const;
585  int getLogicalChannelNumber() const;
586  virtual int getLength() { return sizeof(item_hd_simulcast_logical_channel); }
587  protected:
588  virtual void Parse();
589  private:
591  };
593 protected:
594  virtual void Parse();
595 };
596 
597 // Private DVB Descriptor Premiere.de
598 // 0xF2 Content Transmission Descriptor
599 // http://dvbsnoop.sourceforge.net/examples/example-private-section.html
600 
602 public:
603  class StartDayEntry : public LoopElement {
604  public:
605  class StartTimeEntry : public LoopElement {
606  public:
607  virtual int getLength() { return sizeof(item_premiere_content_transmission_time); }
608  time_t getStartTime(int mjd) const; //UTC
609  protected:
610  virtual void Parse();
611  private:
613  };
615  virtual int getLength();
616  int getMJD() const;
617  int getLoopLength() const;
618  protected:
619  virtual void Parse();
620  private:
622  };
624  int getOriginalNetworkId() const;
625  int getTransportStreamId() const;
626  int getServiceId() const;
627 protected:
628  virtual void Parse();
629 private:
631 };
632 
633 //a descriptor currently unimplemented in this library
635 protected:
636  virtual void Parse() {}
637 };
638 
640 public:
642  public:
643  virtual int getLength() { return sizeof(application_signalling_entry); }
644  int getApplicationType() const;
645  int getAITVersionNumber() const;
646  protected:
647  virtual void Parse();
648  private:
650  };
652 protected:
653  virtual void Parse();
654 };
655 
657 public:
658  class Profile : public LoopElement {
659  public:
660  virtual int getLength() { return sizeof(application_profile_entry); }
661  int getApplicationProfile() const;
662  int getVersionMajor() const;
663  int getVersionMinor() const;
664  int getVersionMicro() const;
665  private:
667  protected:
668  virtual void Parse();
669  };
671  bool isServiceBound() const;
672  int getVisibility() const;
673  int getApplicationPriority() const;
675 private:
677 protected:
678  virtual void Parse();
679 };
680 
682 public:
683  class NameEntry : public LoopElement {
684  public:
685  virtual int getLength() { return sizeof(descr_application_name_entry)+name.getLength(); }
686  char languageCode[4];
688  protected:
689  virtual void Parse();
690  };
692 protected:
693  virtual void Parse();
694 };
695 
697 public:
699  public:
700  virtual int getLength() { return sizeof(descr_url_extension_entry)+UrlExtension.getLength(); }
702  protected:
703  virtual void Parse();
704  };
705 
707  int getProtocolId() const;
708  int getProtocolLabel() const;
709  bool isRemote() const;
710  int getComponentTag() const;
711  char *getUrlBase(char *buffer, int size);
713 
714 protected:
715  virtual void Parse();
716 private:
718  bool remote;
721 };
722 
724 public:
725  class ApplicationEntry : public LoopElement {
726  public:
727  virtual int getLength() { return sizeof(descr_dvbj_application_entry)+parameter.getLength(); }
729  protected:
730  virtual void Parse();
731  };
733 protected:
734  virtual void Parse();
735 };
736 
738 public:
742 protected:
743  virtual void Parse();
744 };
745 
747 public:
749  int getIconFlags() const;
750 protected:
751  virtual void Parse();
752 private:
754 };
755 
757 public:
758  char *getLocation(char *buffer, int size);
759 protected:
760  virtual void Parse();
761 private:
763 };
764 
766 public:
767  int getFormatIdentifier() const;
769 protected:
770  virtual void Parse();
771 private:
773 };
774 
775 class AVCDescriptor : public Descriptor {
776 public:
777  int getProfileIdc() const;
778  int getConstraintSet0Flag() const;
779  int getConstraintSet1Flag() const;
780  int getConstraintSet2Flag() const;
781  int getConstraintSet3Flag() const;
782  int getConstraintSet4Flag() const;
783  int getConstraintSet5Flag() const;
784  int getAVCCompatibleFlags() const;
785  int getLevelIdc() const;
786  int getAVCStillPresent() const;
787  int getAVC24HourPictureFlag() const;
790 protected:
791  virtual void Parse();
792 private:
793  const descr_avc *s;
794 };
795 
796 } //end of namespace
797 
798 #endif //LIBSI_TABLE_H
const descr_avc * s
Definition: descriptor.h:793
int getProfileIdc() const
Definition: descriptor.c:1204
int getAVCCompatibleFlags() const
Definition: descriptor.c:1232
int getLevelIdc() const
Definition: descriptor.c:1236
int getConstraintSet3Flag() const
Definition: descriptor.c:1220
int getFramePackingSEINotPresentFlag() const
Definition: descriptor.c:1248
int getConstraintSet2Flag() const
Definition: descriptor.c:1216
int getConstraintSet1Flag() const
Definition: descriptor.c:1212
int getConstraintSet0Flag() const
Definition: descriptor.c:1208
CharArray privateData
Definition: descriptor.h:789
int getConstraintSet4Flag() const
Definition: descriptor.c:1224
int getAVCStillPresent() const
Definition: descriptor.c:1240
int getConstraintSet5Flag() const
Definition: descriptor.c:1228
int getAVC24HourPictureFlag() const
Definition: descriptor.c:1244
virtual void Parse()
Definition: descriptor.c:1252
const descr_ancillary_data * s
Definition: descriptor.h:513
int getAncillaryDataIdentifier() const
Definition: descriptor.c:849
StructureLoop< ApplicationEntryDescriptor > entryLoop
Definition: descriptor.h:651
CharArray privateData
Definition: descriptor.h:147
virtual void Parse()
Definition: descriptor.c:359
const descr_ca * s
Definition: descriptor.h:151
int getCaPid() const
Definition: descriptor.c:355
int getCaType() const
Definition: descriptor.c:351
TypeLoop< SixteenBit > identifiers
Definition: descriptor.h:172
const descr_cable_delivery_system * s
Definition: descriptor.h:234
const descr_carousel_identifier * s
Definition: descriptor.h:184
const descr_component * s
Definition: descriptor.h:306
int getComponentType() const
Definition: descriptor.c:575
int getStreamContentExt() const
Definition: descriptor.c:571
int getStreamContent() const
Definition: descriptor.c:567
virtual void Parse()
Definition: descriptor.c:583
int getComponentTag() const
Definition: descriptor.c:579
const nibble_content * s
Definition: descriptor.h:100
int getContentNibbleLevel1() const
Definition: descriptor.c:289
int getContentNibbleLevel2() const
Definition: descriptor.c:293
StructureLoop< Nibble > nibbleLoop
Definition: descriptor.h:102
virtual void Parse()
Definition: descriptor.c:284
const content_identifier_entry * s
Definition: descriptor.h:376
StructureLoop< Identifier > identifierLoop
Definition: descriptor.h:378
const descr_extended_event * s
Definition: descriptor.h:48
StructureLoop< Item > itemLoop
Definition: descriptor.h:43
char * getTextItemized(const char *separation1="\t", const char *separation2="\n")
Definition: descriptor.c:197
char * getText(const char *separation1="\t", const char *separation2="\n")
Definition: descriptor.c:86
int getMaximumTextItemizedLength(const char *separation1="\t", const char *separation2="\n")
Definition: descriptor.c:184
int getMaximumTextLength(const char *separation1="\t", const char *separation2="\n")
Definition: descriptor.c:81
int getExtendedDataFlag() const
Definition: descriptor.c:885
virtual void Parse()
Definition: descriptor.c:879
const descr_extension * s
Definition: descriptor.h:538
int getExtensionDescriptorTag() const
Definition: descriptor.c:889
TypeLoop< ThirtyTwoBit > frequencies
Definition: descriptor.h:351
const descr_frequency_list * s
Definition: descriptor.h:355
StructureLoop< HdSimulcastLogicalChannel > hdSimulcastLogicalChannelLoop
Definition: descriptor.h:592
const descr_iso_639_language_loop * s
Definition: descriptor.h:488
StructureLoop< Language > languageLoop
Definition: descriptor.h:490
int getOriginalNetworkId() const
Definition: descriptor.c:772
const descr_linkage * s
Definition: descriptor.h:473
int getTransportStreamId() const
Definition: descriptor.c:768
const descr_linkage_8 * s1
Definition: descriptor.h:474
int getOriginType() const
Definition: descriptor.c:788
int getServiceId() const
Definition: descriptor.c:776
LinkageType getLinkageType() const
Definition: descriptor.c:780
virtual void Parse()
Definition: descriptor.c:757
int getHandOverType() const
Definition: descriptor.c:784
const local_time_offset_entry * s
Definition: descriptor.h:453
StructureLoop< LocalTimeOffset > localTimeOffsetLoop
Definition: descriptor.h:455
const item_logical_channel * s
Definition: descriptor.h:572
StructureLoop< LogicalChannel > logicalChannelLoop
Definition: descriptor.h:574
const application_profile_entry * s
Definition: descriptor.h:666
StructureLoop< Profile > profileLoop
Definition: descriptor.h:670
TypeLoop< EightBit > transportProtocolLabels
Definition: descriptor.h:674
const descr_application_end * s
Definition: descriptor.h:676
const descr_application_icons_descriptor_end * s
Definition: descriptor.h:753
StructureLoop< NameEntry > nameLoop
Definition: descriptor.h:691
StructureLoop< ApplicationEntry > applicationLoop
Definition: descriptor.h:732
char * getLocation(char *buffer, int size)
Definition: descriptor.c:1182
char * getUrlBase(char *buffer, int size)
Definition: descriptor.c:1110
StructureLoop< UrlExtensionEntry > UrlExtensionLoop
Definition: descriptor.h:712
const descr_transport_protocol * s
Definition: descriptor.h:717
const descr_multilingual_component * s
Definition: descriptor.h:421
StructureLoop< Name > nameLoop
Definition: descriptor.h:401
StructureLoop< Name > nameLoop
Definition: descriptor.h:434
const item_nvod_reference * s
Definition: descriptor.h:279
StructureLoop< Service > serviceLoop
Definition: descriptor.h:281
virtual void Parse()
Definition: descriptor.c:374
virtual void Parse()
Definition: descriptor.c:823
int getDay() const
Definition: descriptor.c:828
int getMinute() const
Definition: descriptor.c:840
int getHour() const
Definition: descriptor.c:836
const descr_pdc * s
Definition: descriptor.h:504
int getMonth() const
Definition: descriptor.c:832
const parental_rating * s
Definition: descriptor.h:117
StructureLoop< Rating > ratingLoop
Definition: descriptor.h:119
const item_premiere_content_transmission_time * s
Definition: descriptor.h:612
const item_premiere_content_transmission_day * s
Definition: descriptor.h:621
StructureLoop< StartDayEntry > startDayLoop
Definition: descriptor.h:623
const descr_premiere_content_transmission * s
Definition: descriptor.h:630
const descr_private_data_specifier * s
Definition: descriptor.h:315
const descr_registration * s
Definition: descriptor.h:772
int getFormatIdentifier() const
Definition: descriptor.c:1193
const descr_scrambling_sequence_selector * sss
Definition: descriptor.h:527
const descr_s2_satellite_delivery_system * s
Definition: descriptor.h:526
const descr_satellite_delivery_system * s
Definition: descriptor.h:221
virtual void Parse()
Definition: descriptor.c:530
const descr_service * s
Definition: descriptor.h:265
int getServiceType() const
Definition: descriptor.c:526
const descr_service_list_loop * s
Definition: descriptor.h:200
virtual void Parse()
Definition: descriptor.c:394
StructureLoop< Service > serviceLoop
Definition: descriptor.h:202
virtual void Parse()
Definition: descriptor.c:637
int getNewServiceId() const
Definition: descriptor.c:633
int getNewOriginalNetworkId() const
Definition: descriptor.c:625
const descr_service_move * s
Definition: descriptor.h:345
int getNewTransportStreamId() const
Definition: descriptor.c:629
virtual void Parse()
Definition: descriptor.c:18
const descr_stream_identifier * s
Definition: descriptor.h:160
Definition: si.h:496
const item_subtitling * s
Definition: descriptor.h:330
virtual void Parse()
Definition: descriptor.c:601
StructureLoop< Subtitling > subtitlingLoop
Definition: descriptor.h:332
const descr_t2_delivery_system * s
Definition: descriptor.h:557
int getExtensionDescriptorTag() const
Definition: descriptor.c:903
const item_teletext * s
Definition: descriptor.h:136
StructureLoop< Teletext > teletextLoop
Definition: descriptor.h:138
virtual void Parse()
Definition: descriptor.c:326
const descr_terrestrial_delivery * s
Definition: descriptor.h:254
const descr_time_shifted_event * s
Definition: descriptor.h:85
const descr_time_shifted_service * s
Definition: descriptor.h:292
virtual int getLength()
Definition: si.h:293
Definition: descriptor.c:16
AudioType
Definition: si.h:216
LinkageType
Definition: si.h:203
Definition: headers.h:1949
Definition: headers.h:1622
Definition: headers.h:1683
Definition: headers.h:1968
Definition: headers.h:2044
Definition: headers.h:1989
Definition: headers.h:1300