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   -#
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   -#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   -#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   -}