vdr 2.7.3
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
19namespace SI {
20
22public:
23 char languageCode[4];
24 String name; //name of the event
25 String text; //short description
26protected:
27 virtual void Parse();
28};
29
31public:
32 class Item : public LoopElement {
33 public:
37 protected:
38 virtual void Parse();
39 };
40 char languageCode[4];
45protected:
46 virtual void Parse();
47private:
49};
50
52public:
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
79public:
80 int getReferenceServiceId() const;
81 int getReferenceEventId() const;
82protected:
83 virtual void Parse();
84private:
86};
87
89public:
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 };
103protected:
104 virtual void Parse();
105};
106
108public:
109 class Rating : public LoopElement {
110 public:
112 int getRating() const;
113 virtual int getLength() { return sizeof(parental_rating); }
114 protected:
115 virtual void Parse();
116 private:
118 };
120protected:
121 virtual void Parse();
122};
123
125public:
126 class Teletext : public LoopElement {
127 public:
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:
137 };
139protected:
140 virtual void Parse();
141};
142
143class CaDescriptor : public Descriptor {
144public:
145 int getCaType() const;
146 int getCaPid() const;
148protected:
149 virtual void Parse();
150private:
151 const descr_ca *s;
152};
153
155public:
156 int getComponentTag() const;
157protected:
158 virtual void Parse();
159private:
161};
162
164public:
166protected:
167 virtual void Parse();
168};
169
171public:
173protected:
174 virtual void Parse();
175};
176
178public:
179 int getCarouselId() const;
180 int getFormatId() const;
181protected:
182 virtual void Parse();
183private:
185};
186
189
191public:
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 };
203protected:
204 virtual void Parse();
205};
206
208public:
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;
218protected:
219 virtual void Parse();
220private:
222};
223
225public:
226 int getFrequency() const;
227 int getFecOuter() const;
228 int getModulation() const;
229 int getSymbolRate() const;
230 int getFecInner() const;
231protected:
232 virtual void Parse();
233private:
235};
236
238public:
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;
251protected:
252 virtual void Parse();
253private:
255};
256
258public:
259 int getServiceType() const;
262protected:
263 virtual void Parse();
264private:
266};
267
269public:
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 };
282protected:
283 virtual void Parse();
284};
285
287public:
288 int getReferenceServiceId() const;
289protected:
290 virtual void Parse();
291private:
293};
294
296public:
297 int getStreamContent() const;
298 int getStreamContentExt() const;
299 int getComponentType() const;
300 int getComponentTag() const;
303protected:
304 virtual void Parse();
305private:
307};
308
310public:
311 int getPrivateDataSpecifier() const;
312protected:
313 virtual void Parse();
314private:
316};
317
319public:
320 class Subtitling : public LoopElement {
321 public:
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 };
333protected:
334 virtual void Parse();
335};
336
338public:
339 int getNewOriginalNetworkId() const;
340 int getNewTransportStreamId() const;
341 int getNewServiceId() const;
342protected:
343 virtual void Parse();
344private:
346};
347
349public:
350 int getCodingType() const;
352protected:
353 virtual void Parse();
354private:
356};
357
359public:
361protected:
362 virtual void Parse();
363};
364
366public:
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 };
379protected:
380 virtual void Parse();
381};
382
384public:
386protected:
387 virtual void Parse();
388};
389
390//abstract base class
392public:
393 class Name : public LoopElement {
394 public:
397 virtual int getLength() { return sizeof(entry_multilingual_name)+name.getLength(); }
398 protected:
399 virtual void Parse();
400 };
402protected:
403 virtual void Parse();
404};
405
407 //inherits nameLoop from MultilingualNameDescriptor
408};
409
411 //inherits nameLoop from MultilingualNameDescriptor
412};
413
415public:
416 int getComponentTag() const;
417 //inherits nameLoop from MultilingualNameDescriptor
418protected:
419 virtual void Parse();
420private:
422};
423
425public:
427 public:
430 //inherits name, meaning: service name;
431 protected:
432 virtual void Parse();
433 };
435protected:
436 virtual void Parse();
437};
438
440public:
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 };
456protected:
457 virtual void Parse();
458};
459
461public:
462 int getTransportStreamId() const;
463 int getOriginalNetworkId() const;
464 int getServiceId() const;
466 int getHandOverType() const;
467 int getOriginType() const;
468 int getId() const;
470protected:
471 virtual void Parse();
472private:
475};
476
478public:
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); }
485 protected:
486 virtual void Parse();
487 private:
489 };
491protected:
492 virtual void Parse();
493};
494
495class PDCDescriptor : public Descriptor {
496public:
497 int getDay() const;
498 int getMonth() const;
499 int getHour() const;
500 int getMinute() const;
501protected:
502 virtual void Parse();
503private:
504 const descr_pdc *s;
505};
506
508public:
509 int getAncillaryDataIdentifier() const;
510protected:
511 virtual void Parse();
512private:
514};
515
530
532public:
533 int getExtendedDataFlag() const;
534 int getExtensionDescriptorTag() const;
535protected:
536 virtual void Parse();
537private:
540};
541
543public:
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;
554protected:
555 virtual void Parse();
556private:
559};
560
562public:
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 };
575protected:
576 virtual void Parse();
577};
578
580public:
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 };
593protected:
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
602public:
603 class StartDayEntry : public LoopElement {
604 public:
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;
627protected:
628 virtual void Parse();
629private:
631};
632
633//a descriptor currently unimplemented in this library
635protected:
636 virtual void Parse() {}
637};
638
640public:
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 };
652protected:
653 virtual void Parse();
654};
655
657public:
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;
675private:
677protected:
678 virtual void Parse();
679};
680
682public:
683 class NameEntry : public LoopElement {
684 public:
685 virtual int getLength() { return sizeof(descr_application_name_entry)+name.getLength(); }
688 protected:
689 virtual void Parse();
690 };
692protected:
693 virtual void Parse();
694};
695
697public:
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
714protected:
715 virtual void Parse();
716private:
718 bool remote;
721};
722
724public:
726 public:
727 virtual int getLength() { return sizeof(descr_dvbj_application_entry)+parameter.getLength(); }
729 protected:
730 virtual void Parse();
731 };
733protected:
734 virtual void Parse();
735};
736
738public:
742protected:
743 virtual void Parse();
744};
745
747public:
749 int getIconFlags() const;
750protected:
751 virtual void Parse();
752private:
754};
755
757public:
758 char *getLocation(char *buffer, int size);
759protected:
760 virtual void Parse();
761private:
763};
764
766public:
767 int getFormatIdentifier() const;
769protected:
770 virtual void Parse();
771private:
773};
774
775class AVCDescriptor : public Descriptor {
776public:
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;
790protected:
791 virtual void Parse();
792private:
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
int getAVCCompatibleFlags() const
int getLevelIdc() const
int getConstraintSet3Flag() const
int getFramePackingSEINotPresentFlag() const
int getConstraintSet2Flag() const
int getConstraintSet1Flag() const
int getConstraintSet0Flag() const
CharArray privateData
Definition descriptor.h:789
int getConstraintSet4Flag() const
int getAVCStillPresent() const
int getConstraintSet5Flag() const
int getAVC24HourPictureFlag() const
virtual void Parse()
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
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
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)
char * getUrlBase(char *buffer, int size)
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
const item_nvod_reference * s
Definition descriptor.h:279
StructureLoop< Service > serviceLoop
Definition descriptor.h:281
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
StructureLoop< Rating > ratingLoop
Definition descriptor.h:119
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
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
StructureLoop< Service > serviceLoop
Definition descriptor.h:202
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
StructureLoop< Subtitling > subtitlingLoop
Definition descriptor.h:332
const descr_t2_delivery_system * s
Definition descriptor.h:557
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
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