vdr 2.6.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 2.1 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
21namespace SI {
22
23class PAT : public NumberedSection {
24public:
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;
40protected:
41 virtual void Parse();
42private:
43 const pat *s;
44};
45
46class CAT : public NumberedSection {
47public:
48 CAT(const unsigned char *data, bool doCopy=true) : NumberedSection(data, doCopy) {}
49 CAT() {}
51protected:
52 virtual void Parse();
53};
54
55class PMT : public NumberedSection {
56public:
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;
74protected:
75 virtual void Parse();
76private:
77 const pmt *s;
78};
79
80class TSDT : public NumberedSection {
81public:
82 TSDT(const unsigned char *data, bool doCopy=true) : NumberedSection(data, doCopy) {}
83 TSDT() {}
85protected:
86 virtual void Parse();
87private:
88 const tsdt *s;
89};
90
91class NIT : public NumberedSection {
92public:
93 NIT(const unsigned char *data, bool doCopy=true) : NumberedSection(data, doCopy) {}
94 NIT() {}
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;
109protected:
110 virtual void Parse();
111private:
112 const nit *s;
113};
114
115//BAT has the same structure as NIT but different allowed descriptors
116class BAT : public NIT {
117public:
118 BAT(const unsigned char *data, bool doCopy=true) : NIT(data, doCopy) {}
119 BAT() {}
120 int getBouquetId() const { return getNetworkId(); }
121};
122
123class SDT : public NumberedSection {
124public:
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;
144protected:
145 virtual void Parse();
146private:
147 const sdt *s;
148};
149
150class EIT : public NumberedSection {
151public:
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;
180 int getSegmentLastSectionNumber() 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;
188protected:
189 virtual void Parse();
190private:
191 const eit *s;
192};
193
194class TDT : public Section {
195public:
196 TDT(const unsigned char *data, bool doCopy=true) : Section(data, doCopy) {}
197 TDT() {}
198 time_t getTime() const; //UTC
199protected:
200 virtual void Parse();
201private:
202 const tdt *s;
203};
204
205class TOT : public CRCSection {
206public:
207 TOT(const unsigned char *data, bool doCopy=true) : CRCSection(data, doCopy) {}
208 TOT() {}
209 time_t getTime() const;
211protected:
212 virtual void Parse();
213private:
214 const tot *s;
215};
216
217class RST : public Section {
218public:
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 };
235protected:
236 virtual void Parse();
237};
238
239class AIT : public NumberedSection {
240public:
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;
258protected:
259 const ait *first;
260 virtual void Parse();
261};
262
263/* Premiere Content Information Table */
264
266public:
267 PremiereCIT(const unsigned char *data, bool doCopy=true) : NumberedSection(data, doCopy) {}
269 int getContentId() const;
270 time_t getDuration() const;
272protected:
273 virtual void Parse();
274private:
275 const pcit *s;
276};
277
278} //end of namespace
279
280#endif //LIBSI_TABLE_H
int getControlCode() const
Definition: section.c:334
long getOrganisationId() const
Definition: section.c:326
MHP_DescriptorLoop applicationDescriptors
Definition: section.h:249
virtual void Parse()
Definition: section.c:338
const ait_app * s
Definition: section.h:252
virtual int getLength()
Definition: section.h:245
int getApplicationId() const
Definition: section.c:330
AIT()
Definition: section.h:242
virtual void Parse()
Definition: section.c:317
StructureLoop< Application > applicationLoop
Definition: section.h:255
const ait * first
Definition: section.h:259
int getAITVersion() const
Definition: section.c:313
int getApplicationType() const
Definition: section.c:309
AIT(const unsigned char *data, bool doCopy=true)
Definition: section.h:241
MHP_DescriptorLoop commonDescriptors
Definition: section.h:254
BAT(const unsigned char *data, bool doCopy=true)
Definition: section.h:118
BAT()
Definition: section.h:119
int getBouquetId() const
Definition: section.h:120
DescriptorLoop loop
Definition: section.h:50
CAT()
Definition: section.h:49
CAT(const unsigned char *data, bool doCopy=true)
Definition: section.h:48
virtual void Parse()
Definition: section.c:44
int getStartTimeMinute() const
Definition: section.c:217
const eit_event * s
Definition: section.h:175
DescriptorLoop eventDescriptors
Definition: section.h:170
int getStartTimeSecond() const
Definition: section.c:221
virtual int getLength()
Definition: section.h:171
int getDurationHour() const
Definition: section.c:225
int getFreeCaMode() const
Definition: section.c:241
virtual void Parse()
Definition: section.c:245
time_t getDuration() const
Definition: section.c:201
time_t getStartTime() const
Definition: section.c:197
int getDurationMinute() const
Definition: section.c:229
int getStartTimeHour() const
Definition: section.c:213
int getEventId() const
Definition: section.c:205
RunningStatus getRunningStatus() const
Definition: section.c:237
int getDurationSecond() const
Definition: section.c:233
int getMJD() const
Definition: section.c:209
int getOriginalNetworkId() const
Definition: section.c:168
const eit * s
Definition: section.h:191
int getSegmentLastSectionNumber() const
Definition: section.c:172
StructureLoop< Event > eventLoop
Definition: section.h:182
virtual void Parse()
Definition: section.c:190
bool isActualTS() const
Definition: section.c:184
int getServiceId() const
Definition: section.c:160
bool isPresentFollowing() const
Definition: section.c:180
int getTransportStreamId() const
Definition: section.c:164
EIT()
Definition: section.h:153
int getLastTableId() const
Definition: section.c:176
EIT(const unsigned char *data, bool doCopy=true)
Definition: section.h:152
const ni_ts * s
Definition: section.h:104
int getOriginalNetworkId() const
Definition: section.c:106
virtual int getLength()
Definition: section.h:99
virtual void Parse()
Definition: section.c:110
int getTransportStreamId() const
Definition: section.c:102
DescriptorLoop transportStreamDescriptors
Definition: section.h:100
int getNetworkId() const
Definition: section.c:89
virtual void Parse()
Definition: section.c:93
NIT(const unsigned char *data, bool doCopy=true)
Definition: section.h:93
DescriptorLoop commonDescriptors
Definition: section.h:106
const nit * s
Definition: section.h:112
StructureLoop< TransportStream > transportStreamLoop
Definition: section.h:107
NIT()
Definition: section.h:94
CharArray data
Definition: si.h:241
const pat_prog * s
Definition: section.h:36
virtual int getLength()
Definition: section.h:32
int getPid() const
Definition: section.c:34
virtual void Parse()
Definition: section.c:38
int getServiceId() const
Definition: section.c:30
bool isNITPid() const
Definition: section.h:31
virtual void Parse()
Definition: section.c:20
PAT()
Definition: section.h:26
PAT(const unsigned char *data, bool doCopy=true)
Definition: section.h:25
const pat * s
Definition: section.h:43
StructureLoop< Association > associationLoop
Definition: section.h:39
int getTransportStreamId() const
Definition: section.c:26
virtual int getLength()
Definition: section.h:64
virtual void Parse()
Definition: section.c:73
DescriptorLoop streamDescriptors
Definition: section.h:63
int getPid() const
Definition: section.c:65
const pmt_info * s
Definition: section.h:68
int getStreamType() const
Definition: section.c:69
int getServiceId() const
Definition: section.c:57
int getPCRPid() const
Definition: section.c:61
StructureLoop< Stream > streamLoop
Definition: section.h:71
PMT()
Definition: section.h:58
virtual void Parse()
Definition: section.c:50
DescriptorLoop commonDescriptors
Definition: section.h:70
const pmt * s
Definition: section.h:77
PMT(const unsigned char *data, bool doCopy=true)
Definition: section.h:57
time_t getDuration() const
Definition: section.c:356
const pcit * s
Definition: section.h:275
virtual void Parse()
Definition: section.c:346
PCIT_DescriptorLoop eventDescriptors
Definition: section.h:271
int getContentId() const
Definition: section.c:352
PremiereCIT(const unsigned char *data, bool doCopy=true)
Definition: section.h:267
int getTransportStreamId() const
Definition: section.c:283
int getOriginalNetworkId() const
Definition: section.c:287
const rst_info * s
Definition: section.h:232
RunningStatus getRunningStatus() const
Definition: section.c:299
virtual int getLength()
Definition: section.h:228
virtual void Parse()
Definition: section.c:303
int getServiceId() const
Definition: section.c:291
int getEventId() const
Definition: section.c:295
virtual void Parse()
Definition: section.c:276
RST(const unsigned char *data, bool doCopy=true)
Definition: section.h:219
StructureLoop< RunningInfo > infoLoop
Definition: section.h:234
RST()
Definition: section.h:220
RunningStatus getRunningStatus() const
Definition: section.c:144
int getServiceId() const
Definition: section.c:132
const sdt_descr * s
Definition: section.h:139
DescriptorLoop serviceDescriptors
Definition: section.h:135
virtual int getLength()
Definition: section.h:134
int getFreeCaMode() const
Definition: section.c:148
virtual void Parse()
Definition: section.c:152
int getEITscheduleFlag() const
Definition: section.c:136
int getEITpresentFollowingFlag() const
Definition: section.c:140
virtual void Parse()
Definition: section.c:118
SDT(const unsigned char *data, bool doCopy=true)
Definition: section.h:125
int getTransportStreamId() const
Definition: section.c:124
StructureLoop< Service > serviceLoop
Definition: section.h:143
SDT()
Definition: section.h:126
const sdt * s
Definition: section.h:147
int getOriginalNetworkId() const
Definition: section.c:128
TDT(const unsigned char *data, bool doCopy=true)
Definition: section.h:196
time_t getTime() const
Definition: section.c:254
TDT()
Definition: section.h:197
virtual void Parse()
Definition: section.c:258
const tdt * s
Definition: section.h:202
const tot * s
Definition: section.h:214
time_t getTime() const
Definition: section.c:264
DescriptorLoop descriptorLoop
Definition: section.h:210
TOT()
Definition: section.h:208
virtual void Parse()
Definition: section.c:268
TOT(const unsigned char *data, bool doCopy=true)
Definition: section.h:207
TSDT()
Definition: section.h:83
const tsdt * s
Definition: section.h:88
DescriptorLoop transportStreamDescriptors
Definition: section.h:84
virtual void Parse()
Definition: section.c:81
TSDT(const unsigned char *data, bool doCopy=true)
Definition: section.h:82
virtual int getLength()
Definition: si.h:294
Definition: descriptor.c:16
RunningStatus
Definition: si.h:197