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 
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
SI::RST::RunningInfo::getRunningStatus
RunningStatus getRunningStatus() const
Definition: section.c:299
SI::AIT::Application::getOrganisationId
long getOrganisationId() const
Definition: section.c:326
SI::EIT::Event::getDurationMinute
int getDurationMinute() const
Definition: section.c:229
SI::PAT::Association::Parse
virtual void Parse()
Definition: section.c:38
SI::pmt
Definition: headers.h:189
SI::tdt
Definition: headers.h:594
SI::sdt
Definition: headers.h:413
SI::SDT::Parse
virtual void Parse()
Definition: section.c:118
SI::EIT::Event::getDurationSecond
int getDurationSecond() const
Definition: section.c:233
SI::CharArray::setPointerAndOffset
void setPointerAndOffset(const T *&p, int &offset) const
Definition: util.h:56
SI::RST::Parse
virtual void Parse()
Definition: section.c:276
SI::PremiereCIT::getDuration
time_t getDuration() const
Definition: section.c:356
SI::DVBTime::getTime
time_t getTime(unsigned char date_hi, unsigned char date_lo, unsigned char timehr, unsigned char timemi, unsigned char timese)
Definition: util.c:190
SI::PAT::Association::getServiceId
int getServiceId() const
Definition: section.c:30
SI::SDT::Service::Parse
virtual void Parse()
Definition: section.c:152
SI::tsdt
Definition: headers.h:270
SI::PMT::Stream::getStreamType
int getStreamType() const
Definition: section.c:69
SI::EIT::isPresentFollowing
bool isPresentFollowing() const
Definition: section.c:180
SI::EIT::Event::Parse
virtual void Parse()
Definition: section.c:245
SI::PremiereCIT::Parse
virtual void Parse()
Definition: section.c:346
section.h
SI::EIT::Event::getEventId
int getEventId() const
Definition: section.c:205
SI::pmt_info
Definition: headers.h:237
SI::RST::RunningInfo::Parse
virtual void Parse()
Definition: section.c:303
SI::SDT::Service::getServiceId
int getServiceId() const
Definition: section.c:132
SI::PMT::Stream::Parse
virtual void Parse()
Definition: section.c:73
SI::EIT::Parse
virtual void Parse()
Definition: section.c:190
SI::ni_ts
Definition: headers.h:368
HILO
#define HILO(x)
Definition: util.h:21
SI::EIT::getServiceId
int getServiceId() const
Definition: section.c:160
SI::pat_prog
Definition: headers.h:122
SI::RST::RunningInfo::getEventId
int getEventId() const
Definition: section.c:295
SI::EIT::Event::getStartTimeMinute
int getStartTimeMinute() const
Definition: section.c:217
SI::Section::getTableId
TableId getTableId() const
Definition: si.c:45
SI::PMT::Parse
virtual void Parse()
Definition: section.c:50
SI::PremiereCIT::getContentId
int getContentId() const
Definition: section.c:352
SI::PAT::getTransportStreamId
int getTransportStreamId() const
Definition: section.c:26
SI::PAT::Association::s
const pat_prog * s
Definition: section.h:36
SI::PAT::Parse
virtual void Parse()
Definition: section.c:20
SI::EIT::getLastTableId
int getLastTableId() const
Definition: section.c:176
SI::EIT::Event::getStartTimeHour
int getStartTimeHour() const
Definition: section.c:213
SI::SDT::Service::getRunningStatus
RunningStatus getRunningStatus() const
Definition: section.c:144
SI::PMT::getPCRPid
int getPCRPid() const
Definition: section.c:61
SI::SDT::Service::getFreeCaMode
int getFreeCaMode() const
Definition: section.c:148
SI::AIT::Application::Parse
virtual void Parse()
Definition: section.c:338
SI::PAT::Association::getPid
int getPid() const
Definition: section.c:34
SI::NIT::TransportStream::Parse
virtual void Parse()
Definition: section.c:110
SI::EIT::Event::getRunningStatus
RunningStatus getRunningStatus() const
Definition: section.c:237
SI::TableIdEIT_schedule_last
@ TableIdEIT_schedule_last
Definition: si.h:36
SI::TSDT::Parse
virtual void Parse()
Definition: section.c:81
SI::RST::RunningInfo::getServiceId
int getServiceId() const
Definition: section.c:291
SI::nit_mid
Definition: headers.h:349
SI::RST::RunningInfo::getTransportStreamId
int getTransportStreamId() const
Definition: section.c:283
SI::eit
Definition: headers.h:482
SI::DVBTime::getDuration
time_t getDuration(unsigned char timehr, unsigned char timemi, unsigned char timese)
Definition: util.c:213
SI::ait
Definition: headers.h:693
SI::eit_event
Definition: headers.h:517
SI::CharArray::getData
const unsigned char * getData() const
Definition: util.h:51
SI::TOT::Parse
virtual void Parse()
Definition: section.c:268
SI::nit
Definition: headers.h:311
SI::TableIdEIT_schedule_first
@ TableIdEIT_schedule_first
Definition: si.h:35
SI::EIT::Event::getDurationHour
int getDurationHour() const
Definition: section.c:225
SI::TDT::Parse
virtual void Parse()
Definition: section.c:258
SI::rst
Definition: headers.h:550
SI::NIT::getNetworkId
int getNetworkId() const
Definition: section.c:89
SI::SDT::Service::getEITpresentFollowingFlag
int getEITpresentFollowingFlag() const
Definition: section.c:140
SI::RST::RunningInfo::getOriginalNetworkId
int getOriginalNetworkId() const
Definition: section.c:287
SI::rst_info
Definition: headers.h:564
SI::NIT::Parse
virtual void Parse()
Definition: section.c:93
SI::pat
Definition: headers.h:91
SI::Section::getLength
virtual int getLength()
Definition: si.c:49
SI::EIT::getSegmentLastSectionNumber
int getSegmentLastSectionNumber() const
Definition: section.c:172
SI::Object::data
CharArray data
Definition: si.h:241
SI::EIT::getOriginalNetworkId
int getOriginalNetworkId() const
Definition: section.c:168
SI
Definition: descriptor.c:16
SI::PAT::associationLoop
StructureLoop< Association > associationLoop
Definition: section.h:39
SI::AIT::Application::getControlCode
int getControlCode() const
Definition: section.c:334
SI::EIT::Event::getMJD
int getMJD() const
Definition: section.c:209
SI::PMT::getServiceId
int getServiceId() const
Definition: section.c:57
SI::NIT::TransportStream::getOriginalNetworkId
int getOriginalNetworkId() const
Definition: section.c:106
SI::CharArray::FourBytes
u_int32_t FourBytes(const int index) const
Definition: util.h:60
SI::ait_app
Definition: headers.h:749
SI::CAT::Parse
virtual void Parse()
Definition: section.c:44
SI::EIT::Event::getStartTime
time_t getStartTime() const
Definition: section.c:197
SI::TDT::getTime
time_t getTime() const
Definition: section.c:254
SI::RunningStatus
RunningStatus
Definition: si.h:197
SI::EIT::Event::getDuration
time_t getDuration() const
Definition: section.c:201
SI::TableIdEIT_presentFollowing
@ TableIdEIT_presentFollowing
Definition: si.h:32
SI::PAT::s
const pat * s
Definition: section.h:43
SI::DVBTime::bcdToDec
unsigned char bcdToDec(unsigned char b)
Definition: util.h:143
SI::EIT::Event::getFreeCaMode
int getFreeCaMode() const
Definition: section.c:241
SI::TOT::getTime
time_t getTime() const
Definition: section.c:264
SI::AIT::Parse
virtual void Parse()
Definition: section.c:317
SI::sdt_descr
Definition: headers.h:448
SI::cat
Definition: headers.h:148
SI::AIT::Application::getApplicationId
int getApplicationId() const
Definition: section.c:330
SI::TableIdEIT_presentFollowing_other
@ TableIdEIT_presentFollowing_other
Definition: si.h:33
SI::ait_mid
Definition: headers.h:730
SI::AIT::getApplicationType
int getApplicationType() const
Definition: section.c:309
SI::EIT::Event::getStartTimeSecond
int getStartTimeSecond() const
Definition: section.c:221
SI::AIT::getAITVersion
int getAITVersion() const
Definition: section.c:313
SI::SDT::getTransportStreamId
int getTransportStreamId() const
Definition: section.c:124
SI::tot
Definition: headers.h:624
SI::SDT::Service::getEITscheduleFlag
int getEITscheduleFlag() const
Definition: section.c:136
SI::PMT::Stream::getPid
int getPid() const
Definition: section.c:65
SI::SDT::getOriginalNetworkId
int getOriginalNetworkId() const
Definition: section.c:128
SI::EIT::getTransportStreamId
int getTransportStreamId() const
Definition: section.c:164
SI::NIT::TransportStream::getTransportStreamId
int getTransportStreamId() const
Definition: section.c:102
SI::EIT::isActualTS
bool isActualTS() const
Definition: section.c:184
SI::pcit
Definition: headers.h:776