Commit d8416ef00da001ad651a5c192708bc2b9880e8da

Authored by Erickson Silva
1 parent a17be48c
Exists in master and in 1 other branch devel

Remove /util/src/tspacket.cpp, pois é obsoleto

Makefile-libras.mk
@@ -1,128 +0,0 @@ @@ -1,128 +0,0 @@
1 -#  
2 -# There exist several targets which are by default empty and which can be  
3 -# used for execution of your targets. These targets are usually executed  
4 -# before and after some main targets. They are:  
5 -#  
6 -# .build-pre: called before 'build' target  
7 -# .build-post: called after 'build' target  
8 -# .clean-pre: called before 'clean' target  
9 -# .clean-post: called after 'clean' target  
10 -# .clobber-pre: called before 'clobber' target  
11 -# .clobber-post: called after 'clobber' target  
12 -# .all-pre: called before 'all' target  
13 -# .all-post: called after 'all' target  
14 -# .help-pre: called before 'help' target  
15 -# .help-post: called after 'help' target  
16 -#  
17 -# Targets beginning with '.' are not intended to be called on their own.  
18 -#  
19 -# Main targets can be executed directly, and they are:  
20 -#  
21 -# build build a specific configuration  
22 -# clean remove built files from a configuration  
23 -# clobber remove all built files  
24 -# all build all configurations  
25 -# help print help mesage  
26 -#  
27 -# Targets .build-impl, .clean-impl, .clobber-impl, .all-impl, and  
28 -# .help-impl are implemented in nbproject/makefile-impl.mk.  
29 -#  
30 -# Available make variables:  
31 -#  
32 -# CND_BASEDIR base directory for relative paths  
33 -# CND_DISTDIR default top distribution directory (build artifacts)  
34 -# CND_BUILDDIR default top build directory (object files, ...)  
35 -# CONF name of current configuration  
36 -# CND_PLATFORM_${CONF} platform name (current configuration)  
37 -# CND_ARTIFACT_DIR_${CONF} directory of build artifact (current configuration)  
38 -# CND_ARTIFACT_NAME_${CONF} name of build artifact (current configuration)  
39 -# CND_ARTIFACT_PATH_${CONF} path to build artifact (current configuration)  
40 -# CND_PACKAGE_DIR_${CONF} directory of package (current configuration)  
41 -# CND_PACKAGE_NAME_${CONF} name of package (current configuration)  
42 -# CND_PACKAGE_PATH_${CONF} path to package (current configuration)  
43 -#  
44 -# NOCDDL  
45 -  
46 -  
47 -# Environment  
48 -MKDIR=mkdir  
49 -CP=cp  
50 -CCADMIN=CCadmin  
51 -  
52 -  
53 -# build  
54 -build: .build-post  
55 -  
56 -.build-pre:  
57 -# Add your pre 'build' code here...  
58 -  
59 -.build-post: .build-impl  
60 -# Add your post 'build' code here...  
61 -  
62 -  
63 -# clean  
64 -clean: .clean-post  
65 -  
66 -.clean-pre:  
67 -# Add your pre 'clean' code here...  
68 -  
69 -.clean-post: .clean-impl  
70 -# Add your post 'clean' code here...  
71 -  
72 -  
73 -# clobber  
74 -clobber: .clobber-post  
75 -  
76 -.clobber-pre:  
77 -# Add your pre 'clobber' code here...  
78 -  
79 -.clobber-post: .clobber-impl  
80 -# Add your post 'clobber' code here...  
81 -  
82 -  
83 -# all  
84 -all: .all-post  
85 -  
86 -.all-pre:  
87 -# Add your pre 'all' code here...  
88 -  
89 -.all-post: .all-impl  
90 -# Add your post 'all' code here...  
91 -  
92 -  
93 -# build tests  
94 -build-tests: .build-tests-post  
95 -  
96 -.build-tests-pre:  
97 -# Add your pre 'build-tests' code here...  
98 -  
99 -.build-tests-post: .build-tests-impl  
100 -# Add your post 'build-tests' code here...  
101 -  
102 -  
103 -# run tests  
104 -test: .test-post  
105 -  
106 -.test-pre:  
107 -# Add your pre 'test' code here...  
108 -  
109 -.test-post: .test-impl  
110 -# Add your post 'test' code here...  
111 -  
112 -  
113 -# help  
114 -help: .help-post  
115 -  
116 -.help-pre:  
117 -# Add your pre 'help' code here...  
118 -  
119 -.help-post: .help-impl  
120 -# Add your post 'help' code here...  
121 -  
122 -  
123 -  
124 -# include project implementation makefile  
125 -include nbproject/Makefile-impl.mk  
126 -  
127 -# include project make variables  
128 -include nbproject/Makefile-variables.mk  
util/src/include/tspacket.h
@@ -1,122 +0,0 @@ @@ -1,122 +0,0 @@
1 -#ifndef _TSPACKET_H_  
2 -#define _TSPACKET_H_  
3 -  
4 -/**  
5 - * Esse arquivo possui fun??????es que retornam os campos de um pacote TS  
6 - * As informa??????es necess???rias para a constru??????o deste arquivo estao na  
7 -especifica??????o  
8 - * ISO/IEC 13818-1, Table 2-2, pag 18.  
9 - *  
10 - **/  
11 -  
12 -#include <stdio.h>  
13 -#include <string.h>  
14 -#include <stdint.h>  
15 -#include <stdlib.h>  
16 -//#include "section.h"  
17 -  
18 -#define PID_PACOTE_NULO 0x1FFF  
19 -  
20 -/* 71 == 0x47*/  
21 -#define SYNC_BYTE 71  
22 -  
23 -#define PACKET_SIZE 188  
24 -#define MAX_PAYLOAD_SIZE 184  
25 -#define STUFFING_BYTE 0xFF  
26 -  
27 -#define AFC_RESERVED 0  
28 -#define AFC_ONLY_PAYLOAD 1  
29 -#define AFC_ONLY_ADAPT_FIELD 2  
30 -#define AFC_BOTH_PAYLOAD_AND_ADAPT_FIELD 3  
31 -  
32 -#define SC_NOT_SCRAMBLED 0  
33 -#define SC_USER_DEFINED_1 1  
34 -#define SC_USER_DEFINED_2 2  
35 -#define SC_USER_DEFINED_3 3  
36 -  
37 -#ifndef NULL  
38 -#define NULL 0  
39 -#endif  
40 -  
41 -/// Assinatura das funcoes:  
42 -  
43 -/// Genericas  
44 -unsigned char * getPayload (unsigned char * pacote, unsigned int *  
45 -length);  
46 -unsigned int getPayloadLength (unsigned char * pacote);  
47 -unsigned int getAdaptationFieldLength (unsigned char * pacote);  
48 -char hasAdaptationField (unsigned char * pacote);  
49 -//char assert (int value);  
50 -unsigned int generateGenericTsPackets(unsigned char * tsPacketInitial, int pid,  
51 -unsigned char * section, unsigned int tableSize);  
52 -unsigned int generateTsPacket(unsigned char * tsPacketInitial, int pid, unsigned  
53 -char * section);  
54 -void create_ts_null_packet(unsigned char *buffer);  
55 -  
56 -/// Gets tamanho  
57 -unsigned getSectionLength(unsigned char * section);  
58 -unsigned getSectionDataLength(unsigned char * section);  
59 -  
60 -  
61 -/// Gets do cabecalho ts ...  
62 -int getSyncByte (unsigned char * pacote);  
63 -char getTransportErrorIndicator (unsigned char * pacote);  
64 -unsigned char getPayloadUnitStartIndicator (unsigned char * pacote);  
65 -char getTransportPriority (unsigned char * pacote);  
66 -int getPid (unsigned char * pacote);  
67 -char getTransportScramblingControl(unsigned char * pacote);  
68 -unsigned int getAdaptationFieldControl (unsigned char * pacote);  
69 -unsigned int getAdaptationFieldLength (unsigned char * pacote);  
70 -unsigned getContinuityCounter (unsigned char * pacote);  
71 -  
72 -  
73 -  
74 -/// Sets do cabecalho ts ...  
75 -void setSyncByte (unsigned char * pacote, int value);  
76 -void setTransportErrorIndicator (unsigned char * pacote, unsigned char  
77 -transportError);  
78 -void setPayloadUnitStartIndicator (unsigned char * pacote, unsigned char  
79 -payloadUnitStart);  
80 -void setTransportPriority (unsigned char * pacote, unsigned char  
81 -transportPriority);  
82 -void setPid (unsigned char * pacote, int pid);  
83 -void setTransportScramblingControl(unsigned char * pacote, unsigned char  
84 -scramblingControl);  
85 -void setAdaptationFieldControl (unsigned char * pacote, unsigned char  
86 -adaptationFieldControl);  
87 -void setContinuityCounter (unsigned char * pacote, unsigned char  
88 -continuityCounter);  
89 -void setPayload (unsigned char * pacote, unsigned char *data,  
90 -unsigned length);  
91 -void setAdaptationFieldLength (unsigned char * pacote, int length);  
92 -  
93 -/// Adaptation Field  
94 -char hasPcr (unsigned char * pacote);  
95 -int64_t getPcrBase (unsigned char * pacote);  
96 -int64_t getPcrExtension (unsigned char * pacote);  
97 -  
98 -char getDiscontinuityIndicator (unsigned char * pacote);  
99 -char getRandomAccessIndicator (unsigned char * pacote);  
100 -char getElementaryStreamPriorityIndicator(unsigned char * pacote);  
101 -char getPcrFlag (unsigned char * pacote);  
102 -char getOpcrFlag (unsigned char * pacote);  
103 -char getSplicingPointFlag (unsigned char * pacote);  
104 -char getTransportPrivateDataFlag (unsigned char * pacote);  
105 -char getAdaptationFieldExtensionFlag(unsigned char * pacote);  
106 -  
107 -void setPcrBase (unsigned char * pacote, int64_t pcrBase);  
108 -void setPcrExtension (unsigned char * pacote, int64_t pcrExtension);  
109 -  
110 -void setDiscontinuityIndicator (unsigned char * pacote, int value);  
111 -void setRandomAccessIndicator (unsigned char * pacote, int value);  
112 -void setElementaryStreamPriorityIndicator(unsigned char * pacote, int value);  
113 -void setPcrFlag (unsigned char * pacote, char flag);  
114 -void setOpcrFlag (unsigned char * pacote, char flag);  
115 -void setSplicingPointFlag (unsigned char * pacote, char flag);  
116 -void setTransportPrivateDataFlag (unsigned char * pacote, char flag);  
117 -void setFlagsZero (unsigned char * pacote);  
118 -void setAdaptationFieldExtensionFlag(unsigned char * pacote, char flag);  
119 -  
120 -#endif // _TSPACKET_H_  
121 -  
122 -  
util/src/tspacket.cpp
@@ -1,625 +0,0 @@ @@ -1,625 +0,0 @@
1 -#include "tspacket.h"  
2 -//#include "debug.h"  
3 -  
4 -//#include "dprintf.h"  
5 -  
6 -// Cria pacote nulo de 188 bytes  
7 - void create_ts_null_packet(unsigned char *buffer){  
8 -  
9 - unsigned char nullPacket [188]= {  
10 - 0x47, 0x1F, 0xFF, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,  
11 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,  
12 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,  
13 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,  
14 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,  
15 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,  
16 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,  
17 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,  
18 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,  
19 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,  
20 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,  
21 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,  
22 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,  
23 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,  
24 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,  
25 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};  
26 -  
27 - memcpy(buffer, nullPacket, 188);  
28 - return;  
29 -}  
30 -  
31 -  
32 -/**  
33 - * Retorna error se value <= 0  
34 - *  
35 - * @param value -> valor a ser avaliado  
36 - **/  
37 -char assert(int value)  
38 -{  
39 - if (value <= 0)  
40 - {  
41 - printf("Error no assert %d\n", value);  
42 - return 0;  
43 - }  
44 - else  
45 - return 1;  
46 -}  
47 -  
48 -  
49 -/**  
50 - * retorna zero se n???o h??? adaptation field, ou diferente de zero se h???  
51 - *  
52 - * @param pacote -> pacote TS de 188 bytes  
53 - **/  
54 -char hasAdaptationField(unsigned char * pacote)  
55 -{  
56 - return getAdaptationFieldControl(pacote) == AFC_ONLY_ADAPT_FIELD  
57 - || getAdaptationFieldControl(pacote) == AFC_BOTH_PAYLOAD_AND_ADAPT_FIELD;  
58 -}  
59 -  
60 -  
61 -/**  
62 - * retorna o adaptation field len  
63 - *  
64 - * @param pacote -> pacote TS de 188 bytes  
65 - **/  
66 -unsigned int getAdaptationFieldLength(unsigned char * pacote)  
67 -{  
68 - if ( hasAdaptationField(pacote) )  
69 - {  
70 - unsigned aFieldLength = pacote[4]; // 5 byte  
71 -  
72 - switch (getAdaptationFieldControl(pacote)) {  
73 - case AFC_ONLY_ADAPT_FIELD:  
74 - //assert(aFieldLength == 183);  
75 - //break;  
76 - if (aFieldLength == 183)  
77 - break;  
78 - else  
79 - return 0;  
80 -  
81 - case AFC_BOTH_PAYLOAD_AND_ADAPT_FIELD:  
82 - //assert(0 <= aFieldLength && aFieldLength <= 182);  
83 - //break;  
84 - if(0 <= aFieldLength && aFieldLength <= 182)  
85 - break;  
86 - else  
87 - return 0;  
88 - default:  
89 - break;  
90 - }  
91 -  
92 - return aFieldLength;  
93 - }  
94 - else  
95 - return 0;  
96 -}  
97 -  
98 -void setAdaptationFieldLength(unsigned char * pacote, int length)  
99 -{  
100 - if ( hasAdaptationField(pacote) )  
101 - {  
102 - pacote[4] = length;  
103 - }  
104 -}  
105 -  
106 -  
107 -  
108 -  
109 -/**  
110 - * Retorna o tamanho do payload  
111 - *  
112 - * @param pacote -> pacote TS de 188 bytes  
113 - **/  
114 -unsigned int getPayloadLength(unsigned char * pacote)  
115 -{  
116 - int aFieldControl = getAdaptationFieldControl(pacote);  
117 -  
118 - if (aFieldControl & 0x1) { /* aFieldControl is either 0x1 or 0x3: payload is  
119 -present */  
120 - unsigned aFieldLength = 0;  
121 -  
122 - if (aFieldControl == 0x3) /* adaption field is present */  
123 - aFieldLength = getAdaptationFieldLength(pacote) + 1; /* the '1' is to include the  
124 -aFieldLength itself */  
125 -  
126 - if (aFieldLength <= 183)  
127 - return MAX_PAYLOAD_SIZE - aFieldLength;  
128 - }  
129 -  
130 - return 0; /* nao h??? payload */  
131 -}  
132 -// proveitoso, recompesador, valer a pena, prof???cuo  
133 -  
134 -/**  
135 - * Retorna um ponteiro para o in???cio do payload no pacote.  
136 - *  
137 - * @param pacote -> pacote TS de 188 bytes  
138 - * @param length -> vari???vel que receber??? o tamanho do payload  
139 - */  
140 -unsigned char * getPayload(unsigned char * pacote, unsigned int * length) {  
141 - (*length) = getPayloadLength(pacote);  
142 -  
143 - if ( (*length) == 0 )  
144 - return NULL;  
145 -  
146 - return &pacote[PACKET_SIZE - (*length)];  
147 -}  
148 -  
149 -  
150 -/// Gets...  
151 -  
152 -int getSyncByte(unsigned char * pacote)  
153 -{  
154 - return pacote[0];  
155 -}  
156 -  
157 -// retorna 1 ou zero  
158 -char getTransportErrorIndicator(unsigned char * pacote) {  
159 - return (pacote[1] & 0x80) >> 7;  
160 -}  
161 -  
162 -/**  
163 - * retorna 0x40 se existir o payload unit start indication, e zero se nao existir  
164 - * @param pacote -> pacote TS de 188 bytes  
165 - **/  
166 -unsigned char getPayloadUnitStartIndicator(unsigned char * pacote)  
167 -{  
168 - return (pacote[1] & 0x40) >> 6;  
169 -}  
170 -  
171 -// retorna 1 ou zero  
172 -char getTransportPriority(unsigned char * pacote) {  
173 - return (pacote[1] & 0x20) >> 5;  
174 -}  
175 -  
176 -/**  
177 - * retorna o pid do pacote TS  
178 - * @param pacote -> pacote TS de 188 bytes  
179 - **/  
180 -int getPid(unsigned char * pacote)  
181 -{  
182 - return ((pacote[1] & 0x1F) << 8) | pacote[2];  
183 -}  
184 -  
185 -  
186 -char getTransportScramblingControl(unsigned char * pacote) {  
187 - unsigned sControl = (pacote[3] & 0xC0) >> 6;  
188 -  
189 - switch (sControl) {  
190 - case 0x1: return SC_USER_DEFINED_1;  
191 - case 0x2: return SC_USER_DEFINED_2;  
192 - case 0x3: return SC_USER_DEFINED_3;  
193 - }  
194 - return SC_NOT_SCRAMBLED;  
195 -}  
196 -  
197 -  
198 -  
199 -/**  
200 - * retorna o adaptation field control  
201 - * @param pacote -> pacote TS de 188 bytes  
202 - **/  
203 -unsigned int getAdaptationFieldControl(unsigned char * pacote)  
204 -{  
205 - unsigned int aFieldControl = (pacote[3] & 0x30) >> 4;  
206 - switch (aFieldControl) {  
207 - case 0x1: return AFC_ONLY_PAYLOAD;  
208 - case 0x2: return AFC_ONLY_ADAPT_FIELD;  
209 - case 0x3: return AFC_BOTH_PAYLOAD_AND_ADAPT_FIELD;  
210 - }  
211 - return AFC_RESERVED;  
212 -}  
213 -  
214 -unsigned getContinuityCounter(unsigned char * pacote) {  
215 - return pacote[3] & 0x0F;  
216 -}  
217 -  
218 -  
219 -  
220 -/// Sets...  
221 -  
222 -// Value deve ser setado para 71 decimal, ou 47 hexa  
223 -void setSyncByte(unsigned char * pacote, int value) {  
224 - pacote[0] = value;  
225 -}  
226 -  
227 -// transportError deve ser 0 ou 1  
228 -void setTransportErrorIndicator(unsigned char * pacote, unsigned char transportError) {  
229 - pacote[1] = (pacote[1] & 0x7F) | (transportError << 7);  
230 -}  
231 -  
232 -// payloadUnitStart deve ser 0 ou 1  
233 -void setPayloadUnitStartIndicator(unsigned char * pacote, unsigned char  
234 -payloadUnitStart) {  
235 - pacote[1] = (pacote[1] & 0xBF) | (payloadUnitStart << 6);  
236 -}  
237 -  
238 -// transportError deve ser 0 ou 1  
239 -void setTransportPriority(unsigned char * pacote, unsigned char transportPriority) {  
240 - pacote[1] = (pacote[1] & 0xDF) | (transportPriority << 5);  
241 -}  
242 -  
243 -// pid contem 13 bits  
244 -void setPid(unsigned char * pacote, int pid) {  
245 - pacote[1] = (pacote[1] & 0xE0) | ((pid & 0x1F00) >> 8);  
246 - pacote[2] = pid & 0x00FF;  
247 -}  
248 -  
249 -// scramblingControl contem 2 bits  
250 -void setTransportScramblingControl(unsigned char * pacote, unsigned char  
251 -scramblingControl) {  
252 - pacote[3] = (pacote[3] & 0x3F) | ((scramblingControl << 6) & 0xC0);  
253 -}  
254 -  
255 -// adaptationFieldControl contem 2 bits  
256 -void setAdaptationFieldControl(unsigned char * pacote, unsigned char  
257 -adaptationFieldControl) {  
258 - pacote[3] = (pacote[3] & 0xCF) | ((adaptationFieldControl & 0x3) << 4);  
259 -}  
260 -  
261 -//continuityConter deve ser sempre incrementado externamente a essa funcao, mas seele ultrapassar 15,  
262 -// recebe zero  
263 -void setContinuityCounter(unsigned char * pacote, unsigned char continuityCounter) {  
264 - continuityCounter = continuityCounter % 16;  
265 - pacote[3] = (pacote[3] & 0xF0) | (continuityCounter & 0x0F);  
266 -}  
267 -  
268 -void setPayload(unsigned char * pacote, unsigned char *data, unsigned length) {  
269 - unsigned available;  
270 - unsigned char *payload = getPayload(pacote, &available);  
271 -  
272 - /* be sure that the available data is enough */  
273 - if (length <= available)  
274 - {  
275 - /* copy data */  
276 - memcpy(payload, data, length);  
277 -  
278 - /* fill the remaining data with stuffing bytes */  
279 - memset(payload + length, STUFFING_BYTE, available - length);  
280 - }  
281 - else  
282 - printf("Error, tentando setar o payload (%d) maior que o espa???o disponivel(%d)\n", length, available);  
283 -}  
284 -  
285 -char getDiscontinuityIndicator(unsigned char * pacote) {  
286 - if (getAdaptationFieldLength(pacote))  
287 - {  
288 - return pacote[5] & 0x80; /* 1000 0000 */  
289 - }  
290 - else  
291 - return 0;  
292 -}  
293 -  
294 -char getRandomAccessIndicator(unsigned char * pacote) {  
295 - if (getAdaptationFieldLength(pacote))  
296 - {  
297 - return pacote[5] & 0x40; /* 0100 0000 */  
298 - }  
299 - else  
300 - return 0;  
301 -}  
302 -  
303 -char getElementaryStreamPriorityIndicator(unsigned char * pacote) {  
304 - if (getAdaptationFieldLength(pacote))  
305 - {  
306 - return pacote[5] & 0x20; /* 0010 0000 */  
307 - }  
308 - else  
309 - return 0;  
310 -}  
311 -  
312 -void setDiscontinuityIndicator(unsigned char * pacote, int value) {  
313 - if (getAdaptationFieldLength(pacote))  
314 - {  
315 - pacote[5] = (pacote[5] & 0x7F) | ((value<<7) & 0x80); /* 1000 0000 */  
316 - }  
317 -}  
318 -  
319 -void setRandomAccessIndicator(unsigned char * pacote, int value) {  
320 - if (getAdaptationFieldLength(pacote))  
321 - {  
322 - pacote[5] = (pacote[5] & 0xBF) | ((value<<6) & 0x40); /* 0100 0000 */  
323 - }  
324 -}  
325 -  
326 -void setElementaryStreamPriorityIndicator(unsigned char * pacote, int value) {  
327 - if (getAdaptationFieldLength(pacote))  
328 - {  
329 - pacote[5] = (pacote[5] & 0xDF) | ((value << 5)& 0x20); /* 0010 0000 */  
330 - }  
331 -}  
332 -  
333 -char getOpcrFlag(unsigned char * pacote) {  
334 - if (getAdaptationFieldLength(pacote))  
335 - {  
336 - return pacote[5] & 0x08; /* 0000 1000 */  
337 - }  
338 - else  
339 - return NULL;  
340 -}  
341 -void setOpcrFlag(unsigned char * pacote, char flag) {  
342 - if (getAdaptationFieldLength(pacote))  
343 - {  
344 - pacote[5] = (pacote[5] & 0xF7) | ((flag<<3) & 0x08);  
345 - }  
346 -}  
347 -  
348 -  
349 -char getPcrFlag(unsigned char * pacote) {  
350 - if (getAdaptationFieldLength(pacote))  
351 - {  
352 - return pacote[5] & 0x10; /* 0001 0000 */  
353 - }  
354 - else  
355 - return 0;  
356 -}  
357 -void setPcrFlag(unsigned char * pacote, char flag) {  
358 - if (getAdaptationFieldLength(pacote))  
359 - {  
360 - pacote[5] = (pacote[5] & 0xEF) | ((flag<<4) & 0x10);  
361 - }  
362 -}  
363 -  
364 -  
365 -char getSplicingPointFlag(unsigned char * pacote) {  
366 - if (getAdaptationFieldLength(pacote))  
367 - {  
368 - return pacote[5] & 0x04; /* 0000 0100 */  
369 - }  
370 - else  
371 - return 0;  
372 -}  
373 -void setSplicingPointFlag(unsigned char * pacote, char flag) {  
374 - if (getAdaptationFieldLength(pacote))  
375 - {  
376 - pacote[5] = (pacote[5] & 0xFB) | ((flag<<2) & 0x04); /* 0000 0100 */  
377 - }  
378 -}  
379 -  
380 -char getTransportPrivateDataFlag(unsigned char * pacote) {  
381 - if (getAdaptationFieldLength(pacote))  
382 - {  
383 - return pacote[5] & 0x02; /* 0000 0010 */  
384 - }  
385 - else  
386 - return 0;  
387 -}  
388 -void setTransportPrivateDataFlag(unsigned char * pacote, char flag) {  
389 - if (getAdaptationFieldLength(pacote))  
390 - {  
391 - pacote[5] = (pacote[5] & 0xFD) | ((flag<<1) & 0x02); /* 0000 0010 */  
392 - }  
393 -}  
394 -  
395 -char getAdaptationFieldExtensionFlag(unsigned char * pacote) {  
396 - if (getAdaptationFieldLength(pacote))  
397 - {  
398 - return pacote[5] & 0x01; /* 0000 0001 */  
399 - }  
400 - else  
401 - return 0;  
402 -}  
403 -void setAdaptationFieldExtensionFlag(unsigned char * pacote, char flag) {  
404 - if (getAdaptationFieldLength(pacote))  
405 - {  
406 - pacote[5] = (pacote[5] & 0xFE) | (flag & 0x01); /* 0000 0001 */  
407 - }  
408 -}  
409 -  
410 -  
411 -void setFlagsZero(unsigned char * pacote)  
412 -{  
413 - if (getAdaptationFieldLength(pacote))  
414 - {  
415 - pacote[5] = pacote[5] & 0xE0;  
416 - }  
417 -}  
418 -  
419 -  
420 -  
421 -char hasPcr(unsigned char * pacote) {  
422 - return hasAdaptationField(pacote) && (getAdaptationFieldLength(pacote) != 0) && getPcrFlag(pacote);  
423 -}  
424 -  
425 -  
426 -int64_t getPcrBase(unsigned char * pacote) { /* 33 */  
427 -// if (hasPcr(pacote)) // comentei para otimizar o codigo  
428 - {  
429 - return (  
430 - ( ((uint64_t) pacote[ 6])<< 25 ) |  
431 - ( pacote[ 7] << 17 ) |  
432 - ( pacote[ 8] << 9 ) |  
433 - ( pacote[ 9] << 1 ) |  
434 - ( pacote[10] >> 7 ) );  
435 - //+ (((uint64_t)1000000000)*7) + (((uint64_t)100000000)*4) +(((uint64_t)10000000)*6);//testes  
436 - }  
437 -// else  
438 -// return 0;  
439 -/*  
440 - (( (((uint64_t) pacote[6]) << 25)) & (((uint64_t) 0x1FE00000)<<4 ) ) |  
441 - (( (uint64_t) (pacote[ 7] << 17)) & ( 0x001FE0000) ) |  
442 - (( (uint64_t) (pacote[ 8] << 9)) & ( 0x00001FE00) ) |  
443 - (( (uint64_t) (pacote[ 9] << 1)) & ( 0x0000001FE) ) |  
444 - (( (uint64_t) (pacote[10] >> 7)) & ( 0x000000001) ) );  
445 -*/  
446 -}  
447 -  
448 -  
449 -void setPcrBase(unsigned char * pacote, int64_t pcrBase) { /* 33 */  
450 -// if (hasPcr(pacote)) // comentei para ficar mais rapido  
451 - {  
452 - pacote[ 6] = pcrBase>>25;  
453 - pacote[ 7] = pcrBase>>17;  
454 - pacote[ 8] = pcrBase>>9;  
455 - pacote[ 9] = pcrBase>>1;  
456 - pacote[10] = ((pcrBase<<7) & 0x80) | (pacote[10] & 0x7F);  
457 - }  
458 -}  
459 -  
460 -  
461 -int64_t getPcrExtension(unsigned char * pacote) {  
462 - return ((pacote[10] & 0x1) << 8) | pacote[11];  
463 -}  
464 -  
465 -  
466 -void setPcrExtension(unsigned char * pacote, int64_t pcrExtension) {  
467 - pacote[10] = ((pcrExtension>>8) & 0x01) | (pacote[10] & 0xFE);  
468 - pacote[11] = pcrExtension;  
469 -}  
470 -  
471 -unsigned getSectionLength(unsigned char * section)  
472 -{  
473 - unsigned sectionLength = ((section[1] & 0x0F) << 8) | section[2];  
474 - /* ITU-T H.222.0 2.4.4.11 page 48 (private section length) */  
475 - if (sectionLength >= 4094)  
476 - {  
477 - printf("tamanho de pat section invalido (%d), maximo 4093\n",  
478 -sectionLength);  
479 - return 0;  
480 - }  
481 -  
482 - return sectionLength;  
483 -}  
484 -  
485 -unsigned getSectionDataLength(unsigned char * section) {  
486 - // +3, pq tem 3 bytes antes do campo sectionLength  
487 - return getSectionLength(section) + 3;  
488 -}  
489 -  
490 -  
491 -unsigned int generateGenericTsPackets(unsigned char * tsPacketInitial, int pid, unsigned char * section, unsigned int tableSize)  
492 -{  
493 - int sectionSize = tableSize;  
494 - unsigned char * temp = (unsigned char *) malloc(184);  
495 - unsigned char * tsPacket;  
496 - int remainBytes = 0;  
497 - int payloadSize = 0;  
498 - unsigned int quantPacotes =1;  
499 - int cc = 0;  
500 -  
501 - memset(temp, 0xFF, 184);  
502 - tsPacket = tsPacketInitial;  
503 -  
504 - if (sectionSize > 183)  
505 - payloadSize = 183;  
506 - else  
507 - payloadSize = sectionSize;  
508 -  
509 - temp[0] = 0;  
510 - memcpy(&temp[1], section, payloadSize);  
511 - remainBytes = sectionSize;  
512 -  
513 - setSyncByte (tsPacket, SYNC_BYTE);  
514 - setTransportErrorIndicator (tsPacket, 0);  
515 - setPayloadUnitStartIndicator (tsPacket, 1); // 1 == first packet  
516 - setTransportPriority (tsPacket, 0);  
517 - setPid (tsPacket, pid);  
518 - setTransportScramblingControl(tsPacket, SC_NOT_SCRAMBLED);  
519 - setAdaptationFieldControl (tsPacket, AFC_ONLY_PAYLOAD);  
520 - setContinuityCounter (tsPacket, cc++);  
521 - setPayload (tsPacket, temp, payloadSize+1);  
522 - free(temp);  
523 -  
524 -/*printf("Pat: ");  
525 -for (i = 0; i < 188; i++){  
526 - printf("%x ", tsPacket[i]);  
527 -}*/  
528 -  
529 - remainBytes -= payloadSize;  
530 -  
531 - while (remainBytes>0)  
532 - {  
533 -// printf("entrei no while, remainBytes == %d, payloadSize == %d \n", remainBytes,payloadSize);  
534 - quantPacotes++;  
535 - tsPacket = tsPacket + PACKET_SIZE;  
536 - section = section + payloadSize;  
537 -  
538 - if (remainBytes > 184)  
539 - payloadSize = 184;  
540 - else  
541 - payloadSize = remainBytes;  
542 -  
543 - setSyncByte (tsPacket, SYNC_BYTE);  
544 - setTransportErrorIndicator (tsPacket, 0);  
545 - setPayloadUnitStartIndicator (tsPacket, 0); // 0 == not the first packet  
546 - setTransportPriority (tsPacket, 0);  
547 - setPid (tsPacket, pid);  
548 - setTransportScramblingControl(tsPacket, SC_NOT_SCRAMBLED);  
549 - setAdaptationFieldControl (tsPacket, AFC_ONLY_PAYLOAD);  
550 - setContinuityCounter (tsPacket, cc++);  
551 - setPayload (tsPacket, section, payloadSize);  
552 -  
553 - remainBytes -= payloadSize;  
554 - }  
555 - return quantPacotes;  
556 -}  
557 -  
558 -  
559 -  
560 -unsigned int generateTsPacket(unsigned char * tsPacketInitial, int pid, unsigned char * section)  
561 -{  
562 - int sectionSize = getSectionDataLength(section);  
563 - unsigned char * temp = (unsigned char *) malloc(184);  
564 - unsigned char * tsPacket;  
565 - int remainBytes = 0;  
566 - int payloadSize = 0;  
567 - unsigned int quantPacotes =1;  
568 - int cc = 0;  
569 -  
570 - memset(temp, 0xFF, 184);  
571 - tsPacket = tsPacketInitial;  
572 -  
573 - if (sectionSize > 183)  
574 - payloadSize = 183;  
575 - else  
576 - payloadSize = sectionSize;  
577 -  
578 - temp[0] = 0;  
579 - memcpy(&temp[1], section, payloadSize);  
580 - remainBytes = sectionSize;  
581 -  
582 - setSyncByte (tsPacket, SYNC_BYTE);  
583 - setTransportErrorIndicator (tsPacket, 0);  
584 - setPayloadUnitStartIndicator (tsPacket, 1); // 1 == first packet  
585 - setTransportPriority (tsPacket, 0);  
586 - setPid (tsPacket, pid);  
587 - setTransportScramblingControl(tsPacket, SC_NOT_SCRAMBLED);  
588 - setAdaptationFieldControl (tsPacket, AFC_ONLY_PAYLOAD);  
589 - setContinuityCounter (tsPacket, cc++);  
590 - setPayload (tsPacket, temp, payloadSize+1);  
591 - free(temp);  
592 -  
593 -/*printf("Pat: ");  
594 -for (i = 0; i < 188; i++){  
595 - printf("%x ", tsPacket[i]);  
596 -}*/  
597 -  
598 - remainBytes -= payloadSize;  
599 -  
600 - while (remainBytes>0)  
601 - {  
602 -// printf("entrei no while, remainBytes == %d, payloadSize == %d \n", remainBytes,payloadSize);  
603 - quantPacotes++;  
604 - tsPacket = tsPacket + PACKET_SIZE;  
605 - section = section + payloadSize;  
606 -  
607 - if (remainBytes > 184)  
608 - payloadSize = 184;  
609 - else  
610 - payloadSize = remainBytes;  
611 -  
612 - setSyncByte (tsPacket, SYNC_BYTE);  
613 - setTransportErrorIndicator (tsPacket, 0);  
614 - setPayloadUnitStartIndicator (tsPacket, 0); // 0 == not the first packet  
615 - setTransportPriority (tsPacket, 0);  
616 - setPid (tsPacket, pid);  
617 - setTransportScramblingControl(tsPacket, SC_NOT_SCRAMBLED);  
618 - setAdaptationFieldControl (tsPacket, AFC_ONLY_PAYLOAD);  
619 - setContinuityCounter (tsPacket, cc++);  
620 - setPayload (tsPacket, section, payloadSize);  
621 -  
622 - remainBytes -= payloadSize;  
623 - }  
624 - return quantPacotes;  
625 -}