vdr  2.0.5
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 2.4 2012/01/11 11:35:17 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 private:
494 };
495 
496 class PDCDescriptor : public Descriptor {
497 public:
498  int getDay() const;
499  int getMonth() const;
500  int getHour() const;
501  int getMinute() const;
502 protected:
503  virtual void Parse();
504 private:
505  const descr_pdc *s;
506 };
507 
509 public:
510  int getAncillaryDataIdentifier() const;
511 protected:
512  virtual void Parse();
513 private:
515 };
516 
518 public:
519  int getScramblingSequenceSelector() const;
520  int getMultipleInputStreamFlag() const;
522  int getScramblingSequenceIndex() const;
524 protected:
525  virtual void Parse();
526 private:
530 };
531 
533 public:
534  int getExtensionDescriptorTag() const;
535 protected:
536  virtual void Parse();
537 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 
560 // Private DVB Descriptor Premiere.de
561 // 0xF2 Content Transmission Descriptor
562 // http://dvbsnoop.sourceforge.net/examples/example-private-section.html
563 
565 public:
566  class StartDayEntry : public LoopElement {
567  public:
568  class StartTimeEntry : public LoopElement {
569  public:
570  virtual int getLength() { return sizeof(item_premiere_content_transmission_time); }
571  time_t getStartTime(int mjd) const; //UTC
572  protected:
573  virtual void Parse();
574  private:
576  };
578  virtual int getLength();
579  int getMJD() const;
580  int getLoopLength() const;
581  protected:
582  virtual void Parse();
583  private:
585  };
587  int getOriginalNetworkId() const;
588  int getTransportStreamId() const;
589  int getServiceId() const;
590 protected:
591  virtual void Parse();
592 private:
594 };
595 
596 //a descriptor currently unimplemented in this library
598 protected:
599  virtual void Parse() {}
600 };
601 
603 public:
605  public:
606  virtual int getLength() { return sizeof(application_signalling_entry); }
607  int getApplicationType() const;
608  int getAITVersionNumber() const;
609  protected:
610  virtual void Parse();
611  private:
613  };
615 protected:
616  virtual void Parse();
617 };
618 
620 public:
621  class Profile : public LoopElement {
622  public:
623  virtual int getLength() { return sizeof(application_profile_entry); }
624  int getApplicationProfile() const;
625  int getVersionMajor() const;
626  int getVersionMinor() const;
627  int getVersionMicro() const;
628  private:
630  protected:
631  virtual void Parse();
632  };
634  bool isServiceBound() const;
635  int getVisibility() const;
636  int getApplicationPriority() const;
638 private:
640 protected:
641  virtual void Parse();
642 };
643 
645 public:
646  class NameEntry : public LoopElement {
647  public:
648  virtual int getLength() { return sizeof(descr_application_name_entry)+name.getLength(); }
649  char languageCode[4];
651  protected:
652  virtual void Parse();
653  };
655 protected:
656  virtual void Parse();
657 };
658 
660 public:
662  public:
663  virtual int getLength() { return sizeof(descr_url_extension_entry)+UrlExtension.getLength(); }
665  protected:
666  virtual void Parse();
667  };
668 
670  int getProtocolId() const;
671  int getProtocolLabel() const;
672  bool isRemote() const;
673  int getComponentTag() const;
674  char *getUrlBase(char *buffer, int size);
676 
677 protected:
678  virtual void Parse();
679 private:
681  bool remote;
684 };
685 
687 public:
688  class ApplicationEntry : public LoopElement {
689  public:
690  virtual int getLength() { return sizeof(descr_dvbj_application_entry)+parameter.getLength(); }
692  protected:
693  virtual void Parse();
694  };
696 protected:
697  virtual void Parse();
698 };
699 
701 public:
705 protected:
706  virtual void Parse();
707 };
708 
710 public:
712  int getIconFlags() const;
713 protected:
714  virtual void Parse();
715 private:
717 };
718 
720 public:
721  char *getLocation(char *buffer, int size);
722 protected:
723  virtual void Parse();
724 private:
726 };
727 
729 public:
730  int getFormatIdentifier() const;
732 protected:
733  virtual void Parse();
734 private:
736 };
737 
738 } //end of namespace
739 
740 #endif //LIBSI_TABLE_H
const item_subtitling * s
Definition: descriptor.h:329
TypeLoop< SixteenBit > identifiers
Definition: descriptor.h:172
virtual void Parse()
Definition: descriptor.c:870
int getOriginalNetworkId() const
Definition: descriptor.c:763
const descr_linkage * s
Definition: descriptor.h:472
const descr_pdc * s
Definition: descriptor.h:505
StructureLoop< Name > nameLoop
Definition: descriptor.h:400
int getExtensionDescriptorTag() const
Definition: descriptor.c:889
char * getLocation(char *buffer, int size)
Definition: descriptor.c:1126
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 getNewTransportStreamId() const
Definition: descriptor.c:620
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
Definition: si.h:179
int getAncillaryDataIdentifier() const
Definition: descriptor.c:840
Definition: si.h:480
const descr_service_move * s
Definition: descriptor.h:344
int getHandOverType() const
Definition: descriptor.c:775
const descr_extended_event * s
Definition: descriptor.h:48
virtual int getLength()
Definition: si.h:277
const content_identifier_entry * s
Definition: descriptor.h:375
const descr_s2_satellite_delivery_system * s
Definition: descriptor.h:527
Definition: headers.h:1920
int getTransportStreamId() const
Definition: descriptor.c:759
int getServiceType() const
Definition: descriptor.c:521
virtual void Parse()
Definition: descriptor.c:525
const descr_iso_639_language * s
Definition: descriptor.h:493
Definition: headers.h:1941
int getCaPid() const
Definition: descriptor.c:350
int getApplicationPriority() const
Definition: descriptor.c:991
virtual void Parse()
Definition: descriptor.c:18
CharArray privateData
Definition: descriptor.h:147
int getComponentTag() const
Definition: descriptor.c:570
int getOtherFrequencyFlag() const
Definition: descriptor.c:917
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
StructureLoop< Subtitling > subtitlingLoop
Definition: descriptor.h:331
int getExtensionDescriptorTag() const
Definition: descriptor.c:875
const nibble_content * s
Definition: descriptor.h:100
int getNewOriginalNetworkId() const
Definition: descriptor.c:616
LinkageType
Definition: si.h:188
virtual void Parse()
Definition: descriptor.c:574
int getId() const
Definition: descriptor.c:783
const descr_private_data_specifier * s
Definition: descriptor.h:314
virtual void Parse()
Definition: descriptor.c:321
const descr_frequency_list * s
Definition: descriptor.h:354
Definition: headers.h:1622
StructureLoop< Name > nameLoop
Definition: descriptor.h:433
int getCaType() const
Definition: descriptor.c:346
int getMinute() const
Definition: descriptor.c:831
const descr_satellite_delivery_system * s
Definition: descriptor.h:221
const descr_service_list_loop * s
Definition: descriptor.h:200
const descr_service * s
Definition: descriptor.h:265
const descr_terrestrial_delivery * s
Definition: descriptor.h:254
Definition: headers.h:1996
int getContentNibbleLevel2() const
Definition: descriptor.c:288
StructureLoop< Profile > profileLoop
Definition: descriptor.h:633
int getFormatIdentifier() const
Definition: descriptor.c:1137
Definition: headers.h:1300
int getOriginType() const
Definition: descriptor.c:779
virtual void Parse()
Definition: descriptor.c:748
const descr_stream_identifier * s
Definition: descriptor.h:160
virtual void Parse()
Definition: descriptor.c:814
virtual void Parse()
Definition: descriptor.c:369
const descr_transport_protocol * s
Definition: descriptor.h:680
Definition: headers.h:1683
const application_profile_entry * s
Definition: descriptor.h:629
StructureLoop< Language > languageLoop
Definition: descriptor.h:489
Definition: headers.h:1901
LinkageType getLinkageType() const
Definition: descriptor.c:771
const descr_time_shifted_event * s
Definition: descriptor.h:85
const descr_linkage_8 * s1
Definition: descriptor.h:473
int getContentNibbleLevel1() const
Definition: descriptor.c:284
int getNewServiceId() const
Definition: descriptor.c:624
StructureLoop< ApplicationEntryDescriptor > entryLoop
Definition: descriptor.h:614
const descr_t2_delivery_system * s
Definition: descriptor.h:556
const descr_component * s
Definition: descriptor.h:305
const descr_application_end * s
Definition: descriptor.h:639
const descr_application_icons_descriptor_end * s
Definition: descriptor.h:716
int getMaximumTextItemizedLength(const char *separation1="\t", const char *separation2="\n")
Definition: descriptor.c:179
int getHour() const
Definition: descriptor.c:827
int getMonth() const
Definition: descriptor.c:823
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:575
const descr_ancillary_data * s
Definition: descriptor.h:514
virtual void Parse()
Definition: descriptor.c:354
virtual void Parse()
Definition: descriptor.c:389
int getReferenceServiceId() const
Definition: descriptor.c:267
StructureLoop< NameEntry > nameLoop
Definition: descriptor.h:654
int getStreamContent() const
Definition: descriptor.c:562
StructureLoop< Service > serviceLoop
Definition: descriptor.h:202
StructureLoop< StartDayEntry > startDayLoop
Definition: descriptor.h:586
StructureLoop< Identifier > identifierLoop
Definition: descriptor.h:377
const item_premiere_content_transmission_day * s
Definition: descriptor.h:584
const item_nvod_reference * s
Definition: descriptor.h:279
char * getText(const char *separation1="\t", const char *separation2="\n")
Definition: descriptor.c:86
const descr_carousel_identifier * s
Definition: descriptor.h:184
int getDay() const
Definition: descriptor.c:819
StructureLoop< UrlExtensionEntry > UrlExtensionLoop
Definition: descriptor.h:675
virtual void Parse()
Definition: descriptor.c:279
AudioType
Definition: si.h:200
const descr_premiere_content_transmission * s
Definition: descriptor.h:593
StructureLoop< Item > itemLoop
Definition: descriptor.h:43
int getTeletextMagazineNumber() const
Definition: descriptor.c:338
StructureLoop< ApplicationEntry > applicationLoop
Definition: descriptor.h:695
char * getUrlBase(char *buffer, int size)
Definition: descriptor.c:1054
char * getTextItemized(const char *separation1="\t", const char *separation2="\n")
Definition: descriptor.c:192
int getComponentType() const
Definition: descriptor.c:566
const descr_registration * s
Definition: descriptor.h:735
int getServiceId() const
Definition: descriptor.c:767
TypeLoop< ThirtyTwoBit > frequencies
Definition: descriptor.h:350
TypeLoop< EightBit > transportProtocolLabels
Definition: descriptor.h:637
const descr_scrambling_sequence_selector * sss
Definition: descriptor.h:528
int getMaximumTextLength(const char *separation1="\t", const char *separation2="\n")
Definition: descriptor.c:81
const descr_extension * s
Definition: descriptor.h:538
virtual void Parse()
Definition: descriptor.c:592
const descr_cable_delivery_system * s
Definition: descriptor.h:234