tspacket.h
4.82 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#ifndef _TSPACKET_H_
#define _TSPACKET_H_
/**
* Esse arquivo possui fun??????es que retornam os campos de um pacote TS
* As informa??????es necess???rias para a constru??????o deste arquivo estao na
especifica??????o
* ISO/IEC 13818-1, Table 2-2, pag 18.
*
**/
#include <stdio.h>
#include <string.h>
#include <stdint.h>
#include <stdlib.h>
//#include "section.h"
#define PID_PACOTE_NULO 0x1FFF
/* 71 == 0x47*/
#define SYNC_BYTE 71
#define PACKET_SIZE 188
#define MAX_PAYLOAD_SIZE 184
#define STUFFING_BYTE 0xFF
#define AFC_RESERVED 0
#define AFC_ONLY_PAYLOAD 1
#define AFC_ONLY_ADAPT_FIELD 2
#define AFC_BOTH_PAYLOAD_AND_ADAPT_FIELD 3
#define SC_NOT_SCRAMBLED 0
#define SC_USER_DEFINED_1 1
#define SC_USER_DEFINED_2 2
#define SC_USER_DEFINED_3 3
#ifndef NULL
#define NULL 0
#endif
/// Assinatura das funcoes:
/// Genericas
unsigned char * getPayload (unsigned char * pacote, unsigned int *
length);
unsigned int getPayloadLength (unsigned char * pacote);
unsigned int getAdaptationFieldLength (unsigned char * pacote);
char hasAdaptationField (unsigned char * pacote);
//char assert (int value);
unsigned int generateGenericTsPackets(unsigned char * tsPacketInitial, int pid,
unsigned char * section, unsigned int tableSize);
unsigned int generateTsPacket(unsigned char * tsPacketInitial, int pid, unsigned
char * section);
void create_ts_null_packet(unsigned char *buffer);
/// Gets tamanho
unsigned getSectionLength(unsigned char * section);
unsigned getSectionDataLength(unsigned char * section);
/// Gets do cabecalho ts ...
int getSyncByte (unsigned char * pacote);
char getTransportErrorIndicator (unsigned char * pacote);
unsigned char getPayloadUnitStartIndicator (unsigned char * pacote);
char getTransportPriority (unsigned char * pacote);
int getPid (unsigned char * pacote);
char getTransportScramblingControl(unsigned char * pacote);
unsigned int getAdaptationFieldControl (unsigned char * pacote);
unsigned int getAdaptationFieldLength (unsigned char * pacote);
unsigned getContinuityCounter (unsigned char * pacote);
/// Sets do cabecalho ts ...
void setSyncByte (unsigned char * pacote, int value);
void setTransportErrorIndicator (unsigned char * pacote, unsigned char
transportError);
void setPayloadUnitStartIndicator (unsigned char * pacote, unsigned char
payloadUnitStart);
void setTransportPriority (unsigned char * pacote, unsigned char
transportPriority);
void setPid (unsigned char * pacote, int pid);
void setTransportScramblingControl(unsigned char * pacote, unsigned char
scramblingControl);
void setAdaptationFieldControl (unsigned char * pacote, unsigned char
adaptationFieldControl);
void setContinuityCounter (unsigned char * pacote, unsigned char
continuityCounter);
void setPayload (unsigned char * pacote, unsigned char *data,
unsigned length);
void setAdaptationFieldLength (unsigned char * pacote, int length);
/// Adaptation Field
char hasPcr (unsigned char * pacote);
int64_t getPcrBase (unsigned char * pacote);
int64_t getPcrExtension (unsigned char * pacote);
char getDiscontinuityIndicator (unsigned char * pacote);
char getRandomAccessIndicator (unsigned char * pacote);
char getElementaryStreamPriorityIndicator(unsigned char * pacote);
char getPcrFlag (unsigned char * pacote);
char getOpcrFlag (unsigned char * pacote);
char getSplicingPointFlag (unsigned char * pacote);
char getTransportPrivateDataFlag (unsigned char * pacote);
char getAdaptationFieldExtensionFlag(unsigned char * pacote);
void setPcrBase (unsigned char * pacote, int64_t pcrBase);
void setPcrExtension (unsigned char * pacote, int64_t pcrExtension);
void setDiscontinuityIndicator (unsigned char * pacote, int value);
void setRandomAccessIndicator (unsigned char * pacote, int value);
void setElementaryStreamPriorityIndicator(unsigned char * pacote, int value);
void setPcrFlag (unsigned char * pacote, char flag);
void setOpcrFlag (unsigned char * pacote, char flag);
void setSplicingPointFlag (unsigned char * pacote, char flag);
void setTransportPrivateDataFlag (unsigned char * pacote, char flag);
void setFlagsZero (unsigned char * pacote);
void setAdaptationFieldExtensionFlag(unsigned char * pacote, char flag);
#endif // _TSPACKET_H_