vdr 2.6.1
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
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
182}
183
184bool EIT::isActualTS() const {
185 return
188}
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
virtual void Parse()
Definition: section.c:338
int getApplicationId() const
Definition: section.c:330
virtual void Parse()
Definition: section.c:317
int getAITVersion() const
Definition: section.c:313
int getApplicationType() const
Definition: section.c:309
virtual void Parse()
Definition: section.c:44
void setPointerAndOffset(const T *&p, int &offset) const
u_int32_t FourBytes(const int index) const
const unsigned char * getData() const
int getStartTimeMinute() const
Definition: section.c:217
int getStartTimeSecond() const
Definition: section.c:221
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
int getSegmentLastSectionNumber() const
Definition: section.c:172
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
int getLastTableId() const
Definition: section.c:176
int getOriginalNetworkId() const
Definition: section.c:106
virtual void Parse()
Definition: section.c:110
int getTransportStreamId() const
Definition: section.c:102
int getNetworkId() const
Definition: section.c:89
virtual void Parse()
Definition: section.c:93
CharArray data
int getPid() const
Definition: section.c:34
virtual void Parse()
Definition: section.c:38
int getServiceId() const
Definition: section.c:30
virtual void Parse()
Definition: section.c:20
const pat * s
StructureLoop< Association > associationLoop
int getTransportStreamId() const
Definition: section.c:26
virtual void Parse()
Definition: section.c:73
int getPid() const
Definition: section.c:65
int getStreamType() const
Definition: section.c:69
int getServiceId() const
Definition: section.c:57
int getPCRPid() const
Definition: section.c:61
virtual void Parse()
Definition: section.c:50
time_t getDuration() const
Definition: section.c:356
virtual void Parse()
Definition: section.c:346
int getContentId() const
Definition: section.c:352
int getTransportStreamId() const
Definition: section.c:283
int getOriginalNetworkId() const
Definition: section.c:287
RunningStatus getRunningStatus() const
Definition: section.c:299
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
RunningStatus getRunningStatus() const
Definition: section.c:144
int getServiceId() const
Definition: section.c:132
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
int getTransportStreamId() const
Definition: section.c:124
int getOriginalNetworkId() const
Definition: section.c:128
virtual int getLength()
Definition: si.c:49
TableId getTableId() const
Definition: si.c:45
time_t getTime() const
Definition: section.c:254
virtual void Parse()
Definition: section.c:258
time_t getTime() const
Definition: section.c:264
virtual void Parse()
Definition: section.c:268
virtual void Parse()
Definition: section.c:81
#define HILO(x)
unsigned char bcdToDec(unsigned char b)
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
@ TableIdEIT_schedule_first
@ TableIdEIT_presentFollowing
@ TableIdEIT_schedule_last
@ TableIdEIT_presentFollowing_other