vdr  2.4.1
section.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: section.h 4.0 2012/02/26 13:58:26 kls Exp $
10  * *
11  ***************************************************************************/
12 
13 #ifndef LIBSI_SECTION_H
14 #define LIBSI_SECTION_H
15 
16 #include <time.h>
17 
18 #include "si.h"
19 #include "headers.h"
20 
21 namespace SI {
22 
23 class PAT : public NumberedSection {
24 public:
25  PAT(const unsigned char *data, bool doCopy=true) : NumberedSection(data, doCopy) {}
26  PAT() {}
27  class Association : public LoopElement {
28  public:
29  int getServiceId() const;
30  int getPid() const;
31  bool isNITPid() const { return getServiceId()==0; }
32  virtual int getLength() { return int(sizeof(pat_prog)); }
33  protected:
34  virtual void Parse();
35  private:
36  const pat_prog *s;
37  };
38  int getTransportStreamId() const;
40 protected:
41  virtual void Parse();
42 private:
43  const pat *s;
44 };
45 
46 class CAT : public NumberedSection {
47 public:
48  CAT(const unsigned char *data, bool doCopy=true) : NumberedSection(data, doCopy) {}
49  CAT() {}
51 protected:
52  virtual void Parse();
53 };
54 
55 class PMT : public NumberedSection {
56 public:
57  PMT(const unsigned char *data, bool doCopy=true) : NumberedSection(data, doCopy) {}
58  PMT() {}
59  class Stream : public LoopElement {
60  public:
61  int getPid() const;
62  int getStreamType() const;
64  virtual int getLength() { return int(sizeof(pmt_info)+streamDescriptors.getLength()); }
65  protected:
66  virtual void Parse();
67  private:
68  const pmt_info *s;
69  };
72  int getServiceId() const;
73  int getPCRPid() const;
74 protected:
75  virtual void Parse();
76 private:
77  const pmt *s;
78 };
79 
80 class TSDT : public NumberedSection {
81 public:
82  TSDT(const unsigned char *data, bool doCopy=true) : NumberedSection(data, doCopy) {}
83  TSDT() {}
84  DescriptorLoop transportStreamDescriptors;
85 protected:
86  virtual void Parse();
87 private:
88  const tsdt *s;
89 };
90 
91 class NIT : public NumberedSection {
92 public:
93  NIT(const unsigned char *data, bool doCopy=true) : NumberedSection(data, doCopy) {}
94  NIT() {}
95  class TransportStream : public LoopElement {
96  public:
97  int getTransportStreamId() const;
98  int getOriginalNetworkId() const;
99  virtual int getLength() { return int(sizeof(ni_ts)+transportStreamDescriptors.getLength()); }
101  protected:
102  virtual void Parse();
103  private:
104  const ni_ts *s;
105  };
108  int getNetworkId() const;
109 protected:
110  virtual void Parse();
111 private:
112  const nit *s;
113 };
114 
115 //BAT has the same structure as NIT but different allowed descriptors
116 class BAT : public NIT {
117 public:
118  BAT(const unsigned char *data, bool doCopy=true) : NIT(data, doCopy) {}
119  BAT() {}
120  int getBouquetId() const { return getNetworkId(); }
121 };
122 
123 class SDT : public NumberedSection {
124 public:
125  SDT(const unsigned char *data, bool doCopy=true) : NumberedSection(data, doCopy) {}
126  SDT() {}
127  class Service : public LoopElement {
128  public:
129  int getServiceId() const;
130  int getEITscheduleFlag() const;
131  int getEITpresentFollowingFlag() const;
133  int getFreeCaMode() const;
134  virtual int getLength() { return int(sizeof(sdt_descr)+serviceDescriptors.getLength()); }
136  protected:
137  virtual void Parse();
138  private:
139  const sdt_descr *s;
140  };
141  int getTransportStreamId() const;
142  int getOriginalNetworkId() const;
144 protected:
145  virtual void Parse();
146 private:
147  const sdt *s;
148 };
149 
150 class EIT : public NumberedSection {
151 public:
152  EIT(const unsigned char *data, bool doCopy=true) : NumberedSection(data, doCopy) {}
153  EIT() {}
154  class Event : public LoopElement {
155  public:
156  int getEventId() const;
157  time_t getStartTime() const; //UTC
158  time_t getDuration() const;
159 
160  int getMJD() const;
161  int getStartTimeHour() const; //UTC
162  int getStartTimeMinute() const; //UTC
163  int getStartTimeSecond() const; //UTC
164  int getDurationHour() const;
165  int getDurationMinute() const;
166  int getDurationSecond() const;
168  int getFreeCaMode() const;
169 
171  virtual int getLength() { return int(sizeof(eit_event)+eventDescriptors.getLength()); }
172  protected:
173  virtual void Parse();
174  private:
175  const eit_event *s;
176  };
177  int getServiceId() const;
178  int getTransportStreamId() const;
179  int getOriginalNetworkId() const;
181  int getLastTableId() const;
183 
184  //true if table conveys present/following information, false if it conveys schedule information
185  bool isPresentFollowing() const;
186  //true if table describes TS on which it is broadcast, false if it describes other TS
187  bool isActualTS() const;
188 protected:
189  virtual void Parse();
190 private:
191  const eit *s;
192 };
193 
194 class TDT : public Section {
195 public:
196  TDT(const unsigned char *data, bool doCopy=true) : Section(data, doCopy) {}
197  TDT() {}
198  time_t getTime() const; //UTC
199 protected:
200  virtual void Parse();
201 private:
202  const tdt *s;
203 };
204 
205 class TOT : public CRCSection {
206 public:
207  TOT(const unsigned char *data, bool doCopy=true) : CRCSection(data, doCopy) {}
208  TOT() {}
209  time_t getTime() const;
210  DescriptorLoop descriptorLoop;
211 protected:
212  virtual void Parse();
213 private:
214  const tot *s;
215 };
216 
217 class RST : public Section {
218 public:
219  RST(const unsigned char *data, bool doCopy=true) : Section(data, doCopy) {}
220  RST() {}
221  class RunningInfo : public LoopElement {
222  public:
223  int getTransportStreamId() const;
224  int getOriginalNetworkId() const;
225  int getServiceId() const;
226  int getEventId() const;
228  virtual int getLength() { return int(sizeof(rst_info)); }
229  protected:
230  virtual void Parse();
231  private:
232  const rst_info *s;
233  };
235 protected:
236  virtual void Parse();
237 };
238 
239 class AIT : public NumberedSection {
240 public:
241  AIT(const unsigned char *data, bool doCopy=true) : NumberedSection(data, doCopy) {}
242  AIT() {}
243  class Application : public LoopElement {
244  public:
245  virtual int getLength() { return int(sizeof(ait_app)+applicationDescriptors.getLength()); }
246  long getOrganisationId() const;
247  int getApplicationId() const;
248  int getControlCode() const;
250  protected:
251  virtual void Parse();
252  const ait_app *s;
253  };
256  int getApplicationType() const;
257  int getAITVersion() const;
258 protected:
259  const ait *first;
260  virtual void Parse();
261 };
262 
263 /* Premiere Content Information Table */
264 
265 class PremiereCIT : public NumberedSection {
266 public:
267  PremiereCIT(const unsigned char *data, bool doCopy=true) : NumberedSection(data, doCopy) {}
268  PremiereCIT() {}
269  int getContentId() const;
270  time_t getDuration() const;
272 protected:
273  virtual void Parse();
274 private:
275  const pcit *s;
276 };
277 
278 } //end of namespace
279 
280 #endif //LIBSI_TABLE_H
SI::RST::RunningInfo::getRunningStatus
RunningStatus getRunningStatus() const
Definition: section.c:309
SI::AIT::Application::getOrganisationId
long getOrganisationId() const
Definition: section.c:336
SI::EIT::Event::getDurationMinute
int getDurationMinute() const
Definition: section.c:239
SI::PAT::Association::Parse
virtual void Parse()
Definition: section.c:48
SI::pmt
Definition: headers.h:203
SI::tdt
Definition: headers.h:608
SI::sdt
Definition: headers.h:427
SI::SDT::Parse
virtual void Parse()
Definition: section.c:128
SI::EIT::Event::getDurationSecond
int getDurationSecond() const
Definition: section.c:243
SI::Section::Section
Section()
Definition: si.h:264
SI::RST::Parse
virtual void Parse()
Definition: section.c:286
SI::SDT::s
const sdt * s
Definition: section.h:157
SI::PremiereCIT::getDuration
time_t getDuration() const
Definition: section.c:366
SI::PremiereCIT::PremiereCIT
PremiereCIT()
Definition: section.h:278
SI::PAT::Association::getServiceId
int getServiceId() const
Definition: section.c:40
SI::SDT::Service::Parse
virtual void Parse()
Definition: section.c:162
SI::PMT
Definition: section.h:65
SI::tsdt
Definition: headers.h:284
SI::SDT::Service::s
const sdt_descr * s
Definition: section.h:149
SI::PMT::Stream::getStreamType
int getStreamType() const
Definition: section.c:79
SI::EIT::isPresentFollowing
bool isPresentFollowing() const
Definition: section.c:190
SI::EIT::Event::Parse
virtual void Parse()
Definition: section.c:255
SI::PremiereCIT::Parse
virtual void Parse()
Definition: section.c:356
SI::EIT::Event::getEventId
int getEventId() const
Definition: section.c:215
SI::PMT::Stream::s
const pmt_info * s
Definition: section.h:78
SI::PMT::PMT
PMT()
Definition: section.h:68
SI::pmt_info
Definition: headers.h:251
SI::PAT::Association::getLength
virtual int getLength()
Definition: section.h:52
SI::RST::RunningInfo::Parse
virtual void Parse()
Definition: section.c:313
SI::SDT::Service::getServiceId
int getServiceId() const
Definition: section.c:142
SI::PMT::Stream::Parse
virtual void Parse()
Definition: section.c:83
SI::EIT::Parse
virtual void Parse()
Definition: section.c:200
SI::ni_ts
Definition: headers.h:382
headers.h
SI::EIT::getServiceId
int getServiceId() const
Definition: section.c:170
SI::PMT::s
const pmt * s
Definition: section.h:87
SI::pat_prog
Definition: headers.h:136
SI::RST::RunningInfo::getEventId
int getEventId() const
Definition: section.c:305
SI::RST::RunningInfo::getLength
virtual int getLength()
Definition: section.h:238
SI::PMT::streamLoop
StructureLoop< Stream > streamLoop
Definition: section.h:81
SI::AIT
Definition: section.h:249
SI::EIT
Definition: section.h:160
SI::EIT::Event::getStartTimeMinute
int getStartTimeMinute() const
Definition: section.c:227
SI::EIT::EIT
EIT()
Definition: section.h:163
SI::RST::RST
RST()
Definition: section.h:230
SI::PMT::Parse
virtual void Parse()
Definition: section.c:60
SI::PremiereCIT::getContentId
int getContentId() const
Definition: section.c:362
SI::PAT::getTransportStreamId
int getTransportStreamId() const
Definition: section.c:36
SI::PAT::Association::s
const pat_prog * s
Definition: section.h:56
SI::PAT::Parse
virtual void Parse()
Definition: section.c:30
SI::EIT::getLastTableId
int getLastTableId() const
Definition: section.c:186
SI::EIT::Event::getStartTimeHour
int getStartTimeHour() const
Definition: section.c:223
SI::SDT::Service::getRunningStatus
RunningStatus getRunningStatus() const
Definition: section.c:154
SI::PMT::getPCRPid
int getPCRPid() const
Definition: section.c:71
SI::SDT::Service::getFreeCaMode
int getFreeCaMode() const
Definition: section.c:158
SI::AIT::Application::Parse
virtual void Parse()
Definition: section.c:348
SI::PAT::Association::getPid
int getPid() const
Definition: section.c:44
SI::TOT::s
const tot * s
Definition: section.h:224
SI::NIT::TransportStream::Parse
virtual void Parse()
Definition: section.c:120
SI::EIT::Event::getRunningStatus
RunningStatus getRunningStatus() const
Definition: section.c:247
SI::LoopElement
Definition: si.h:309
SI::TSDT::Parse
virtual void Parse()
Definition: section.c:91
SI::RST
Definition: section.h:227
SI::RST::RunningInfo::getServiceId
int getServiceId() const
Definition: section.c:301
SI::NIT
Definition: section.h:101
SI::PAT::PAT
PAT()
Definition: section.h:46
SI::RST::RunningInfo::getTransportStreamId
int getTransportStreamId() const
Definition: section.c:293
SI::eit
Definition: headers.h:496
SI::ait
Definition: headers.h:707
SI::eit_event
Definition: headers.h:531
SI::TOT::Parse
virtual void Parse()
Definition: section.c:278
SI::nit
Definition: headers.h:325
SI::EIT::Event::getDurationHour
int getDurationHour() const
Definition: section.c:235
SI::NIT::s
const nit * s
Definition: section.h:122
SI::TDT::Parse
virtual void Parse()
Definition: section.c:268
SI::TDT::TDT
TDT()
Definition: section.h:207
SI::NIT::getNetworkId
int getNetworkId() const
Definition: section.c:99
SI::SDT::Service::getEITpresentFollowingFlag
int getEITpresentFollowingFlag() const
Definition: section.c:150
SI::RST::RunningInfo::getOriginalNetworkId
int getOriginalNetworkId() const
Definition: section.c:297
SI::BAT::BAT
BAT()
Definition: section.h:129
SI::rst_info
Definition: headers.h:578
SI::RST::RunningInfo::s
const rst_info * s
Definition: section.h:242
SI::PMT::Stream::getLength
virtual int getLength()
Definition: section.h:74
SI::AIT::first
const ait * first
Definition: section.h:269
SI::NumberedSection
Definition: si.h:284
SI::PMT::Stream::streamDescriptors
DescriptorLoop streamDescriptors
Definition: section.h:73
SI::PremiereCIT::eventDescriptors
PCIT_DescriptorLoop eventDescriptors
Definition: section.h:281
SI::TSDT
Definition: section.h:90
SI::NumberedSection::NumberedSection
NumberedSection()
Definition: si.h:287
SI::NIT::TransportStream::s
const ni_ts * s
Definition: section.h:114
SI::AIT::AIT
AIT()
Definition: section.h:252
SI::AIT::applicationLoop
StructureLoop< Application > applicationLoop
Definition: section.h:265
SI::NIT::Parse
virtual void Parse()
Definition: section.c:103
SI::pat
Definition: headers.h:105
SI::BAT::getBouquetId
int getBouquetId() const
Definition: section.h:130
SI::EIT::Event::s
const eit_event * s
Definition: section.h:185
SI::EIT::getSegmentLastSectionNumber
int getSegmentLastSectionNumber() const
Definition: section.c:182
SI::Object::data
CharArray data
Definition: si.h:251
SI::AIT::Application::getLength
virtual int getLength()
Definition: section.h:255
SI::StructureLoop
Definition: si.h:349
SI::EIT::getOriginalNetworkId
int getOriginalNetworkId() const
Definition: section.c:178
SI::NIT::TransportStream::getLength
virtual int getLength()
Definition: section.h:109
SI::MHP_DescriptorLoop
Definition: si.h:472
SI::RST::infoLoop
StructureLoop< RunningInfo > infoLoop
Definition: section.h:244
SI::CRCSection
Definition: si.h:272
SI
Definition: descriptor.c:16
SI::PAT::associationLoop
StructureLoop< Association > associationLoop
Definition: section.h:59
SI::PremiereCIT::s
const pcit * s
Definition: section.h:285
SI::AIT::Application::getControlCode
int getControlCode() const
Definition: section.c:344
SI::VariableLengthPart::getLength
virtual int getLength()
Definition: si.h:304
SI::EIT::Event::getMJD
int getMJD() const
Definition: section.c:219
SI::CAT::loop
DescriptorLoop loop
Definition: section.h:60
SI::PMT::getServiceId
int getServiceId() const
Definition: section.c:67
SI::NIT::TransportStream::getOriginalNetworkId
int getOriginalNetworkId() const
Definition: section.c:116
SI::ait_app
Definition: headers.h:763
SI::NIT::TransportStream::transportStreamDescriptors
DescriptorLoop transportStreamDescriptors
Definition: section.h:110
SI::TSDT::transportStreamDescriptors
DescriptorLoop transportStreamDescriptors
Definition: section.h:94
SI::CAT::Parse
virtual void Parse()
Definition: section.c:54
SI::TDT::s
const tdt * s
Definition: section.h:212
SI::EIT::Event::getStartTime
time_t getStartTime() const
Definition: section.c:207
SI::TDT::getTime
time_t getTime() const
Definition: section.c:264
SI::EIT::s
const eit * s
Definition: section.h:201
SI::RunningStatus
RunningStatus
Definition: si.h:207
SI::NIT::NIT
NIT()
Definition: section.h:104
SI::EIT::Event::getDuration
time_t getDuration() const
Definition: section.c:211
SI::EIT::Event::eventDescriptors
DescriptorLoop eventDescriptors
Definition: section.h:180
SI::SDT::Service::serviceDescriptors
DescriptorLoop serviceDescriptors
Definition: section.h:145
SI::PAT::s
const pat * s
Definition: section.h:63
SI::EIT::Event::getFreeCaMode
int getFreeCaMode() const
Definition: section.c:251
SI::AIT::Application::applicationDescriptors
MHP_DescriptorLoop applicationDescriptors
Definition: section.h:259
SI::TOT::getTime
time_t getTime() const
Definition: section.c:274
SI::PremiereCIT
Definition: section.h:275
SI::AIT::Parse
virtual void Parse()
Definition: section.c:327
SI::Section
Definition: si.h:260
SI::sdt_descr
Definition: headers.h:462
SI::TSDT::TSDT
TSDT()
Definition: section.h:93
SI::AIT::Application::getApplicationId
int getApplicationId() const
Definition: section.c:340
si.h
SI::SDT::Service::getLength
virtual int getLength()
Definition: section.h:144
SI::NIT::transportStreamLoop
StructureLoop< TransportStream > transportStreamLoop
Definition: section.h:117
SI::TOT
Definition: section.h:215
SI::AIT::commonDescriptors
MHP_DescriptorLoop commonDescriptors
Definition: section.h:264
SI::PCIT_DescriptorLoop
Definition: si.h:478
SI::SDT
Definition: section.h:133
SI::TDT
Definition: section.h:204
SI::AIT::getApplicationType
int getApplicationType() const
Definition: section.c:319
SI::SDT::SDT
SDT()
Definition: section.h:136
SI::EIT::Event::getStartTimeSecond
int getStartTimeSecond() const
Definition: section.c:231
SI::CAT
Definition: section.h:56
SI::BAT
Definition: section.h:126
SI::AIT::getAITVersion
int getAITVersion() const
Definition: section.c:323
SI::CAT::CAT
CAT()
Definition: section.h:59
SI::SDT::getTransportStreamId
int getTransportStreamId() const
Definition: section.c:134
SI::tot
Definition: headers.h:638
SI::TOT::TOT
TOT()
Definition: section.h:218
SI::NIT::commonDescriptors
DescriptorLoop commonDescriptors
Definition: section.h:116
SI::PMT::commonDescriptors
DescriptorLoop commonDescriptors
Definition: section.h:80
SI::TSDT::s
const tsdt * s
Definition: section.h:98
SI::SDT::Service::getEITscheduleFlag
int getEITscheduleFlag() const
Definition: section.c:146
SI::EIT::eventLoop
StructureLoop< Event > eventLoop
Definition: section.h:192
SI::AIT::Application::s
const ait_app * s
Definition: section.h:262
SI::PMT::Stream::getPid
int getPid() const
Definition: section.c:75
SI::SDT::getOriginalNetworkId
int getOriginalNetworkId() const
Definition: section.c:138
SI::SDT::serviceLoop
StructureLoop< Service > serviceLoop
Definition: section.h:153
SI::PAT::Association::isNITPid
bool isNITPid() const
Definition: section.h:51
SI::EIT::getTransportStreamId
int getTransportStreamId() const
Definition: section.c:174
SI::NIT::TransportStream::getTransportStreamId
int getTransportStreamId() const
Definition: section.c:112
SI::EIT::isActualTS
bool isActualTS() const
Definition: section.c:194
SI::pcit
Definition: headers.h:790
SI::EIT::Event::getLength
virtual int getLength()
Definition: section.h:181
SI::DescriptorLoop
Definition: si.h:388
SI::TOT::descriptorLoop
DescriptorLoop descriptorLoop
Definition: section.h:220