-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathh324m.h
153 lines (124 loc) · 4 KB
/
h324m.h
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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
#ifndef _H324M_H_
#define _H324M_H_
#define PDU_LEN 160
#define SPOOL_MAX 1024
/*Log defines*/
#define H324_LOG_ERROR 1,__FILE__,__LINE__
#define H324_LOG_WARNING 2,__FILE__,__LINE__
#define H324_LOG_DEBUG 3,__FILE__,__LINE__
/*HDLC flags type*/
#define HDLC_FLAG_S "\x87\xb2"
#define HDLC_FLAG_F "\x78\x4d"
#define HDLC_S 1
#define HDLC_F 2
/*H245 State*/
#define STATE_TERMCAP 1
#define STATE_MASTERSLAVE_DETERMINATION 2
#define STATE_OLC_AUDIO 4
#define STATE_OLC_VIDEO 8
#define STATE_MULTIPLEX_ENTRY_SEND 16
#define SLAVE 1
#define MASTER 2
/* AL types */
#define TYPE_AL1 1
#define TYPE_AL2 2
#define TYPE_AL3 4
#define SegmentableFlag 8
#define HasSeqNum 16
typedef struct MxElement {
int RC;
struct MxElement **subelement;
int subElementCount;
int LCN;
char used;
struct MxElement *nextelement;
} MxElement;
typedef struct LCN {
unsigned char *data;
unsigned int len;
unsigned char type;
unsigned char SeqNum;
int (*ALTransport)(void *session, int lcn);
int (*ALUser)(void *session, unsigned char *buf, unsigned int len);
} LCN;
typedef struct H245Message {
unsigned char *data;
unsigned int len;
unsigned char Acked;
} H245Message;
typedef struct NsrpReqAck {
unsigned int CRC;
unsigned char RepSN;
unsigned char *Response;
unsigned int RespLen;
}NsrpReqAck;
typedef struct SpoolBuffers {
unsigned int nb;
unsigned char locked;
unsigned char *data[SPOOL_MAX];
unsigned int len[SPOOL_MAX];
} SpoolBuffers;
typedef struct h324m_session {
unsigned char *raw_buffer;
unsigned int raw_buffer_len;
unsigned char *pdu;
unsigned int pdu_len;
unsigned char tmpl;
unsigned char tmc;
unsigned int p;
unsigned char AudioSN;
unsigned char VideoSN;
unsigned char Output[PDU_LEN];
unsigned char Remaining[10];
unsigned int RemainingLen;
SpoolBuffers h245Spool;
SpoolBuffers VideoSpool;
SpoolBuffers AudioSpool;
int flagtype;
MxElement MultiPlexEntryTable[16];
LCN lcntable[256]; //dont need
NsrpReqAck NsrpMsg[256];
unsigned char StateMachine;
unsigned int SessionTimer;
H245Message h245msg[256];
unsigned char NsrpSN;
unsigned int TerminalType;
unsigned int StatusDeterminationNumber;
unsigned char MasterSlave;
unsigned char *videobuf;
unsigned int videolen;
unsigned char *videobuftmp;
unsigned int videolentmp;
unsigned char *audiobuf;
unsigned char audiolen;
unsigned char audiolock;
unsigned char videolock;
char DTMF[80];
}h324m_session;
int h324m_GetDTMF(h324m_session *session, char *dtmf_out);
void h324m_GetAudioBuffer(h324m_session *session, unsigned char *buf,unsigned int *len);
void h324m_GetVideoBuffer(h324m_session *session, unsigned char *buf,unsigned int *len);
int h324m_Amr(void *ss, unsigned char *buf, unsigned int len);
int h324m_h263(void *ss, unsigned char *buf, unsigned int len);
int h324m_263Show(void *ss, unsigned char *buf, unsigned int len);
int h324m_AmrShow(void *ss, unsigned char *buf, unsigned int len);
int h324m_TreatPackets(h324m_session *session);
int myaffiche(unsigned char *buf, int len);
int h324m_ExtractFirstPdu(h324m_session *session);
int h324m_StateMachine(h324m_session *session);
int h324m_MakePdu(h324m_session *session);
int h324m_SpoolH245(h324m_session *session, unsigned char *buf, unsigned int len);
int h324m_SpoolVideoBuffer(h324m_session *session, unsigned char *buf, unsigned int len);
int h324m_SpoolAudioBuffer(h324m_session *session, unsigned char *buf, unsigned int len);
unsigned char *reversebuf(unsigned char *c, unsigned int len);
int h324m_AL1(struct h324m_session *session, int lcn);
int h324m_AL2(void *ss, int lcn);
int h324m_ALNull(struct h324m_session *session, int lcn);
int h324m_NSRP(struct h324m_session *session, int lcn);
int h324m_Demultiplex(MxElement *a,h324m_session *session);
unsigned char reverse(unsigned char a);
int h324m_log(int errtype, char *file, unsigned int line, char *msg);
h324m_session *new_session();
int h324m_CloseSession(h324m_session *session);
int h324m_OnReceived(h324m_session *session, unsigned char *buf, unsigned int len);
#endif //_H324M_H_