vdr 2.7.7
section.c
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.c 1.5 2006/04/14 10:53:44 kls Exp $
10 * *
11 ***************************************************************************/
12
13#include "section.h"
14#include <stdio.h>
15
16namespace SI {
17
18/*********************** PAT ***********************/
19
20void PAT::Parse() {
21 int offset=0;
22 data.setPointerAndOffset<const pat>(s, offset);
23 associationLoop.setData(data+offset, getLength()-offset-4);
24}
25
27 return HILO(s->transport_stream_id);
28}
29
31 return HILO(s->program_number);
32}
33
35 return HILO(s->network_pid);
36}
37
39 s=data.getData<pat_prog>();
40}
41
42/*********************** CAT ***********************/
43
44void CAT::Parse() {
45 loop.setData(data+sizeof(cat), getLength()-sizeof(cat)-4);
46}
47
48/*********************** PMT ***********************/
49
50void PMT::Parse() {
51 int offset=0;
52 data.setPointerAndOffset<const pmt>(s, offset);
53 commonDescriptors.setDataAndOffset(data+offset, HILO(s->program_info_length), offset);
54 streamLoop.setData(data+offset, getLength()-offset-4);
55}
56
57int PMT::getServiceId() const {
58 return HILO(s->program_number);
59}
60
61int PMT::getPCRPid() const {
62 return HILO(s->PCR_PID);
63}
64
66 return HILO(s->elementary_PID);
67}
68
70 return s->stream_type;
71}
72
74 int offset=0;
75 data.setPointerAndOffset<const pmt_info>(s, offset);
76 streamDescriptors.setData(data+offset, HILO(s->ES_info_length));
77}
78
79/*********************** TSDT ***********************/
80
82 int offset=0;
83 data.setPointerAndOffset<const tsdt>(s, offset);
84 transportStreamDescriptors.setDataAndOffset(data+offset, getLength()-offset-4, offset);
85}
86
87/*********************** NIT ***********************/
88
89int NIT::getNetworkId() const {
90 return HILO(s->network_id);
91}
92
93void NIT::Parse() {
94 int offset=0;
95 data.setPointerAndOffset<const nit>(s, offset);
96 commonDescriptors.setDataAndOffset(data+offset, HILO(s->network_descriptor_length), offset);
97 const nit_mid *mid;
98 data.setPointerAndOffset<const nit_mid>(mid, offset);
99 transportStreamLoop.setData(data+offset, HILO(mid->transport_stream_loop_length));
100}
101
103 return HILO(s->transport_stream_id);
104}
105
107 return HILO(s->original_network_id);
108}
109
111 int offset=0;
112 data.setPointerAndOffset<const ni_ts>(s, offset);
113 transportStreamDescriptors.setData(data+offset, HILO(s->transport_descriptors_length));
114}
115
116/*********************** SDT ***********************/
117
119 int offset=0;
120 data.setPointerAndOffset<const sdt>(s, offset);
121 serviceLoop.setData(data+offset, getLength()-offset-4); //4 is for CRC
122}
123
125 return HILO(s->transport_stream_id);
126}
127
129 return HILO(s->original_network_id);
130}
131
133 return HILO(s->service_id);
134}
135
137 return s->eit_schedule_flag;
138}
139
141 return s->eit_present_following_flag;
142}
143
145 return (RunningStatus)s->running_status;
146}
147
149 return s->free_ca_mode;
150}
151
153 int offset=0;
154 data.setPointerAndOffset<const sdt_descr>(s, offset);
155 serviceDescriptors.setData(data+offset, HILO(s->descriptors_loop_length));
156}
157
158/*********************** EIT ***********************/
159
160int EIT::getServiceId() const {
161 return HILO(s->service_id);
162}
163
165 return HILO(s->transport_stream_id);
166}
167
169 return HILO(s->original_network_id);
170}
171
173 return s->segment_last_section_number;
174}
175
177 return s->last_table_id;
178}
179
183
189
191 int offset=0;
192 data.setPointerAndOffset<const eit>(s, offset);
193 //printf("%d %d %d %d %d\n", getServiceId(), getTransportStreamId(), getOriginalNetworkId(), isPresentFollowing(), isActualTS());
194 eventLoop.setData(data+offset, getLength()-offset-4); //4 is for CRC
195}
196
198 return DVBTime::getTime(s->mjd_hi, s->mjd_lo, s->start_time_h, s->start_time_m, s->start_time_s);
199}
200
202 return DVBTime::getDuration(s->duration_h, s->duration_m, s->duration_s);
203}
204
206 return HILO(s->event_id);
207}
208
210 return HILO(s->mjd);
211}
212
214 return DVBTime::bcdToDec(s->start_time_h);
215}
216
218 return DVBTime::bcdToDec(s->start_time_m);
219}
220
222 return DVBTime::bcdToDec(s->start_time_s);
223}
224
226 return DVBTime::bcdToDec(s->duration_h);
227}
228
230 return DVBTime::bcdToDec(s->duration_m);
231}
232
234 return DVBTime::bcdToDec(s->duration_s);
235}
236
238 return (RunningStatus)s->running_status;
239}
240
242 return s->free_ca_mode;
243}
244
246 int offset=0;
247 data.setPointerAndOffset<const eit_event>(s, offset);
248 //printf("%d %d %d\n", getStartTime(), getDuration(), getRunningStatus());
249 eventDescriptors.setData(data+offset, HILO(s->descriptors_loop_length));
250}
251
252/*********************** TDT ***********************/
253
254time_t TDT::getTime() const {
255 return DVBTime::getTime(s->utc_mjd_hi, s->utc_mjd_lo, s->utc_time_h, s->utc_time_m, s->utc_time_s);
256}
257
259 s=data.getData<const tdt>();
260}
261
262/*********************** TOT ***********************/
263
264time_t TOT::getTime() const {
265 return DVBTime::getTime(s->utc_mjd_hi, s->utc_mjd_lo, s->utc_time_h, s->utc_time_m, s->utc_time_s);
266}
267
269 int offset=0;
270 data.setPointerAndOffset<const tot>(s, offset);
271 descriptorLoop.setData(data+offset, getLength()-offset-4);
272}
273
274/*********************** RST ***********************/
275
277 int offset=0;
278 const rst *s;
279 data.setPointerAndOffset<const rst>(s, offset);
280 infoLoop.setData(data+offset, getLength()-offset);
281}
282
284 return HILO(s->transport_stream_id);
285}
286
288 return HILO(s->original_network_id);
289}
290
292 return HILO(s->service_id);
293}
294
296 return HILO(s->event_id);
297}
298
300 return (RunningStatus)s->running_status;
301}
302
304 s=data.getData<const rst_info>();
305}
306
307/*********************** AIT ***********************/
308
310 return HILO(first->application_type);
311}
312
314 return first->version_number;
315}
316
318 int offset=0;
319 data.setPointerAndOffset<const ait>(first, offset);
320 commonDescriptors.setDataAndOffset(data+offset, HILO(first->common_descriptors_length), offset);
321 const ait_mid *mid;
322 data.setPointerAndOffset<const ait_mid>(mid, offset);
323 applicationLoop.setData(data+offset, HILO(mid->application_loop_length));
324}
325
327 return data.FourBytes(0);
328}
329
331 return HILO(s->application_id);
332}
333
335 return s->application_control_code;
336}
337
339 int offset=0;
340 data.setPointerAndOffset<const ait_app>(s, offset);
341 applicationDescriptors.setData(data+offset, HILO(s->application_descriptors_length));
342}
343
344/******************* PremiereCIT *******************/
345
347 int offset=0;
348 data.setPointerAndOffset<const pcit>(s, offset);
349 eventDescriptors.setData(data+offset, HILO(s->descriptors_loop_length));
350}
351
353 return (HILO(s->contentId_hi) << 16) | HILO(s->contentId_lo);
354}
355
357 return DVBTime::getDuration(s->duration_h, s->duration_m, s->duration_s);
358}
359
360} //end of namespace
int getControlCode() const
Definition section.c:334
long getOrganisationId() const
Definition section.c:326
MHP_DescriptorLoop applicationDescriptors
Definition section.h:249
const ait_app * s
Definition section.h:252
virtual void Parse() override
Definition section.c:338
int getApplicationId() const
Definition section.c:330
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
virtual void Parse() override
Definition section.c:317
MHP_DescriptorLoop commonDescriptors
Definition section.h:254
DescriptorLoop loop
Definition section.h:50
virtual void Parse() override
Definition section.c:44
int getStartTimeMinute() const
Definition section.c:217
virtual void Parse() override
Definition section.c:245
const eit_event * s
Definition section.h:175
DescriptorLoop eventDescriptors
Definition section.h:170
int getStartTimeSecond() const
Definition section.c:221
int getDurationHour() const
Definition section.c:225
int getFreeCaMode() const
Definition section.c:241
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
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
virtual void Parse() override
Definition section.c:190
int getLastTableId() const
Definition section.c:176
int getOriginalNetworkId() const
Definition section.c:106
virtual void Parse() override
Definition section.c:110
int getTransportStreamId() const
Definition section.c:102
DescriptorLoop transportStreamDescriptors
Definition section.h:100
int getNetworkId() const
Definition section.c:89
DescriptorLoop commonDescriptors
Definition section.h:106
virtual void Parse() override
Definition section.c:93
const nit * s
Definition section.h:112
StructureLoop< TransportStream > transportStreamLoop
Definition section.h:107
CharArray data
Definition si.h:240
const pat_prog * s
Definition section.h:36
int getPid() const
Definition section.c:34
int getServiceId() const
Definition section.c:30
virtual void Parse() override
Definition section.c:38
const pat * s
Definition section.h:43
StructureLoop< Association > associationLoop
Definition section.h:39
int getTransportStreamId() const
Definition section.c:26
virtual void Parse() override
Definition section.c:20
virtual void Parse() override
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
DescriptorLoop commonDescriptors
Definition section.h:70
const pmt * s
Definition section.h:77
virtual void Parse() override
Definition section.c:50
virtual void Parse() override
Definition section.c:346
time_t getDuration() const
Definition section.c:356
const pcit * s
Definition section.h:275
PCIT_DescriptorLoop eventDescriptors
Definition section.h:271
int getContentId() const
Definition section.c:352
int getTransportStreamId() const
Definition section.c:283
int getOriginalNetworkId() const
Definition section.c:287
const rst_info * s
Definition section.h:232
virtual void Parse() override
Definition section.c:303
RunningStatus getRunningStatus() const
Definition section.c:299
int getServiceId() const
Definition section.c:291
int getEventId() const
Definition section.c:295
StructureLoop< RunningInfo > infoLoop
Definition section.h:234
virtual void Parse() override
Definition section.c:276
virtual void Parse() override
Definition section.c:152
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
int getFreeCaMode() const
Definition section.c:148
int getEITscheduleFlag() const
Definition section.c:136
int getEITpresentFollowingFlag() const
Definition section.c:140
int getTransportStreamId() const
Definition section.c:124
StructureLoop< Service > serviceLoop
Definition section.h:143
virtual void Parse() override
Definition section.c:118
const sdt * s
Definition section.h:147
int getOriginalNetworkId() const
Definition section.c:128
TableId getTableId() const
Definition si.c:45
virtual int getLength() override
Definition si.c:49
virtual void Parse() override
Definition section.c:258
time_t getTime() const
Definition section.c:254
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
virtual void Parse() override
Definition section.c:268
const tsdt * s
Definition section.h:88
virtual void Parse() override
Definition section.c:81
DescriptorLoop transportStreamDescriptors
Definition section.h:84
unsigned char bcdToDec(unsigned char b)
Definition util.h:141
time_t getTime(unsigned char date_hi, unsigned char date_lo, unsigned char timehr, unsigned char timemi, unsigned char timese)
Definition util.c:190
time_t getDuration(unsigned char timehr, unsigned char timemi, unsigned char timese)
Definition util.c:213
RunningStatus
Definition si.h:196
@ TableIdEIT_schedule_last
Definition si.h:36
@ TableIdEIT_schedule_first
Definition si.h:35
@ TableIdEIT_presentFollowing
Definition si.h:32
@ TableIdEIT_presentFollowing_other
Definition si.h:33
#define HILO(x)
Definition util.h:21