vdr  2.2.0
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 3.0 2006/04/14 10:53:44 kls Exp $
10  * *
11  ***************************************************************************/
12 
13 #include "section.h"
14 #include <stdio.h>
15 
16 namespace SI {
17 
18 /*********************** PAT ***********************/
19 
20 void 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 
44 void CAT::Parse() {
45  loop.setData(data+sizeof(cat), getLength()-sizeof(cat)-4);
46 }
47 
48 /*********************** PMT ***********************/
49 
50 void 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 
57 int PMT::getServiceId() const {
58  return HILO(s->program_number);
59 }
60 
61 int PMT::getPCRPid() const {
62  return HILO(s->PCR_PID);
63 }
64 
65 int PMT::Stream::getPid() const {
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 
81 void TSDT::Parse() {
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 
89 int NIT::getNetworkId() const {
90  return HILO(s->network_id);
91 }
92 
93 void 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 
118 void SDT::Parse() {
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 
160 int 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 
176 int EIT::getLastTableId() const {
177  return s->last_table_id;
178 }
179 
182 }
183 
184 bool EIT::isActualTS() const {
185  return
188 }
189 
190 void EIT::Parse() {
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 
197 time_t EIT::Event::getStartTime() const {
198  return DVBTime::getTime(s->mjd_hi, s->mjd_lo, s->start_time_h, s->start_time_m, s->start_time_s);
199 }
200 
201 time_t EIT::Event::getDuration() const {
202  return DVBTime::getDuration(s->duration_h, s->duration_m, s->duration_s);
203 }
204 
206  return HILO(s->event_id);
207 }
208 
209 int EIT::Event::getMJD() const {
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 
254 time_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 
258 void TDT::Parse() {
259  s=data.getData<const tdt>();
260 }
261 
262 /*********************** TOT ***********************/
263 
264 time_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 
268 void TOT::Parse() {
269  int offset=0;
270  data.setPointerAndOffset<const tot>(s, offset);
271  descriptorLoop.setData(data+offset, getLength()-offset-4);
272 }
273 
274 /*********************** RST ***********************/
275 
276 void RST::Parse() {
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 
313 int AIT::getAITVersion() const {
314  return first->version_number;
315 }
316 
317 void AIT::Parse() {
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 
356 time_t PremiereCIT::getDuration() const {
357  return DVBTime::getDuration(s->duration_h, s->duration_m, s->duration_s);
358 }
359 
360 } //end of namespace
RunningStatus getRunningStatus() const
Definition: section.c:144
virtual void Parse()
Definition: section.c:317
int getApplicationId() const
Definition: section.c:330
int getStartTimeSecond() const
Definition: section.c:221
RunningStatus
Definition: si.h:197
time_t getTime(unsigned char date_hi, unsigned char date_lo, unsigned char timehr, unsigned char timemi, unsigned char timese)
Definition: util.c:190
int getLastTableId() const
Definition: section.c:176
int getTransportStreamId() const
Definition: section.c:102
virtual void Parse()
Definition: section.c:93
virtual void Parse()
Definition: section.c:81
virtual void Parse()
Definition: section.c:268
int getOriginalNetworkId() const
Definition: section.c:287
StructureLoop< Association > associationLoop
Definition: section.h:39
int getAITVersion() const
Definition: section.c:313
virtual void Parse()
Definition: section.c:338
virtual void Parse()
Definition: section.c:346
time_t getDuration() const
Definition: section.c:201
int getServiceId() const
Definition: section.c:132
virtual void Parse()
Definition: section.c:20
int getServiceId() const
Definition: section.c:57
virtual void Parse()
Definition: section.c:258
time_t getDuration(unsigned char timehr, unsigned char timemi, unsigned char timese)
Definition: util.c:213
int getServiceId() const
Definition: section.c:160
virtual void Parse()
Definition: section.c:190
time_t getTime() const
Definition: section.c:264
int getStartTimeHour() const
Definition: section.c:213
TableId getTableId() const
Definition: si.c:45
int getPid() const
Definition: section.c:65
int getControlCode() const
Definition: section.c:334
int getPid() const
Definition: section.c:34
Definition: descriptor.c:16
void setPointerAndOffset(const T *&p, int &offset) const
Definition: util.h:56
int getTransportStreamId() const
Definition: section.c:283
int getFreeCaMode() const
Definition: section.c:241
long getOrganisationId() const
Definition: section.c:326
bool isActualTS() const
Definition: section.c:184
int getDurationMinute() const
Definition: section.c:229
int getFreeCaMode() const
Definition: section.c:148
virtual void Parse()
Definition: section.c:303
int getApplicationType() const
Definition: section.c:309
virtual void Parse()
Definition: section.c:50
time_t getDuration() const
Definition: section.c:356
int getStartTimeMinute() const
Definition: section.c:217
int getContentId() const
Definition: section.c:352
virtual int getLength()
Definition: si.c:49
int getOriginalNetworkId() const
Definition: section.c:106
int getOriginalNetworkId() const
Definition: section.c:168
int getEITpresentFollowingFlag() const
Definition: section.c:140
int getDurationSecond() const
Definition: section.c:233
const pat * s
Definition: section.h:43
virtual void Parse()
Definition: section.c:38
virtual void Parse()
Definition: section.c:44
RunningStatus getRunningStatus() const
Definition: section.c:237
time_t getStartTime() const
Definition: section.c:197
int getStreamType() const
Definition: section.c:69
int getMJD() const
Definition: section.c:209
virtual void Parse()
Definition: section.c:110
int getOriginalNetworkId() const
Definition: section.c:128
int getServiceId() const
Definition: section.c:30
bool isPresentFollowing() const
Definition: section.c:180
virtual void Parse()
Definition: section.c:245
virtual void Parse()
Definition: section.c:73
int getTransportStreamId() const
Definition: section.c:124
unsigned char bcdToDec(unsigned char b)
Definition: util.h:143
int getTransportStreamId() const
Definition: section.c:164
int getPCRPid() const
Definition: section.c:61
int getEITscheduleFlag() const
Definition: section.c:136
int getEventId() const
Definition: section.c:295
int getTransportStreamId() const
Definition: section.c:26
CharArray data
Definition: si.h:241
int getNetworkId() const
Definition: section.c:89
u_int32_t FourBytes(const int index) const
Definition: util.h:60
virtual void Parse()
Definition: section.c:152
RunningStatus getRunningStatus() const
Definition: section.c:299
int getServiceId() const
Definition: section.c:291
const unsigned char * getData() const
Definition: util.h:51
int getEventId() const
Definition: section.c:205
virtual void Parse()
Definition: section.c:276
time_t getTime() const
Definition: section.c:254
#define HILO(x)
Definition: util.h:21
virtual void Parse()
Definition: section.c:118
int getDurationHour() const
Definition: section.c:225
int getSegmentLastSectionNumber() const
Definition: section.c:172