Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

330 lines
7.3 KiB

  1. /*
  2. * Filename: RRCMPROT.H
  3. *
  4. * Functions prototyping.
  5. *
  6. * INTEL Corporation Proprietary Information
  7. * This listing is supplied under the terms of a license agreement with
  8. * Intel Corporation and may not be copied nor disclosed except in
  9. * accordance with the terms of that agreement.
  10. * Copyright (c) 1995 Intel Corporation.
  11. *--------------------------------------------------------------------------*/
  12. #ifndef _RRCMPROT_H_
  13. #define _RRCMPROT_H_
  14. #include "rrcm.h"
  15. #include "rtp.h"
  16. #if defined(__cplusplus)
  17. extern "C"
  18. {
  19. #endif // (__cplusplus)
  20. /*
  21. RRCMqueu.CPP
  22. */
  23. extern DWORD allocateLinkedList (PLINK_LIST,
  24. HANDLE,
  25. PDWORD,
  26. DWORD,
  27. CRITICAL_SECTION *);
  28. extern void addToHeadOfList (PLINK_LIST,
  29. PLINK_LIST,
  30. CRITICAL_SECTION *);
  31. extern void addToTailOfList (PLINK_LIST,
  32. PLINK_LIST,
  33. CRITICAL_SECTION *);
  34. extern PLINK_LIST removePcktFromTail (PLINK_LIST,
  35. CRITICAL_SECTION *);
  36. extern PLINK_LIST removePcktFromHead (PLINK_LIST,
  37. CRITICAL_SECTION *);
  38. /*
  39. RTCPINIT.CPP
  40. */
  41. extern DWORD initRTCP(void);
  42. extern DWORD deleteRTCP(void);
  43. /*
  44. RTCPSESS.CPP
  45. */
  46. extern DWORD allocateRTCPContextHeaps (PRTCP_CONTEXT);
  47. extern DWORD allocateRTCPSessionHeaps (PRTCP_SESSION *);
  48. extern DWORD allocateRTCPsessionResources (PRTCP_SESSION *,
  49. PSSRC_ENTRY *);
  50. extern PRTCP_SESSION CreateRTCPSession (SOCKET,
  51. SOCKET,
  52. LPVOID,
  53. DWORD,
  54. PSDES_DATA,
  55. DWORD,
  56. PENCRYPT_INFO,
  57. DWORD,
  58. PRRCM_EVENT_CALLBACK,
  59. DWORD_PTR,
  60. DWORD,
  61. DWORD,
  62. PDWORD);
  63. extern DWORD deleteRTCPSession (SOCKET,
  64. PCHAR);
  65. extern DWORD buildSDESinfo (PSSRC_ENTRY,
  66. PSDES_DATA);
  67. extern DWORD frequencyToPckt (DWORD);
  68. extern DWORD CreateRTCPthread (void);
  69. extern void terminateRtcpThread (void);
  70. extern DWORD RTCPflushIO (PSSRC_ENTRY);
  71. extern DWORD flushIO (PSSRC_ENTRY);
  72. extern void CALLBACK RTCPflushCallback (DWORD,
  73. DWORD,
  74. LPWSAOVERLAPPED,
  75. DWORD);
  76. /*
  77. RTCPSSRC.CPP
  78. */
  79. extern PSSRC_ENTRY getOneSSRCentry (PLINK_LIST,
  80. HANDLE,
  81. PDWORD,
  82. CRITICAL_SECTION *);
  83. extern DWORD getSSRC (LINK_LIST,
  84. LINK_LIST);
  85. extern DWORD isSSRCunique (PSSRC_ENTRY,
  86. PDWORD);
  87. extern PSSRC_ENTRY createSSRCEntry (DWORD,
  88. PRTCP_SESSION,
  89. PSOCKADDR,
  90. DWORD,
  91. DWORD);
  92. extern DWORD RRCMChkCollisionTable (PSOCKADDR pFrom,
  93. UINT fromlen,
  94. PSSRC_ENTRY);
  95. extern DWORD RRCMAddEntryToCollisionTable (PSOCKADDR pFrom,
  96. UINT fromlen,
  97. PSSRC_ENTRY);
  98. extern void RRCMTimeOutCollisionTable (PRTCP_SESSION);
  99. extern DWORD deleteSSRCEntry (DWORD,
  100. PRTCP_SESSION);
  101. extern void deleteSSRClist (PRTCP_SESSION,
  102. PLINK_LIST,
  103. PRTCP_CONTEXT);
  104. void clearSSRCEntry (PSSRC_ENTRY);
  105. /*
  106. RTCPMEM.CPP
  107. */
  108. extern DWORD allocateRTCPBfrList (PLINK_LIST,
  109. HANDLE,
  110. HANDLE,
  111. PDWORD,
  112. DWORD,
  113. CRITICAL_SECTION *);
  114. /*
  115. RTCPTIME.CPP
  116. */
  117. extern DWORD RTCPxmitInterval (DWORD,
  118. DWORD,
  119. DWORD,
  120. DWORD,
  121. DWORD,
  122. int *,
  123. DWORD);
  124. /*
  125. RTCPRECV.CPP
  126. */
  127. extern DWORD RTCPrcvInit (PSSRC_ENTRY);
  128. extern void CALLBACK RTCPrcvCallback (DWORD,
  129. DWORD,
  130. LPWSAOVERLAPPED,
  131. DWORD);
  132. extern DWORD parseRTCPsr (SOCKET,
  133. RTCP_T *,
  134. PRTCP_SESSION,
  135. PRTCP_BFR_LIST);
  136. extern DWORD parseRTCPrr (SOCKET,
  137. RTCP_RR_T *,
  138. PRTCP_SESSION,
  139. PRTCP_BFR_LIST,
  140. DWORD);
  141. extern PCHAR parseRTCPsdes (SOCKET,
  142. PCHAR,
  143. PRTCP_SESSION,
  144. PRTCP_BFR_LIST);
  145. extern DWORD parseRTCPbye (SOCKET,
  146. DWORD,
  147. PRTCP_SESSION,
  148. PRTCP_BFR_LIST);
  149. extern DWORD ownLoopback (SOCKET,
  150. DWORD,
  151. PRTCP_SESSION);
  152. extern DWORD updateRRfeedback (SOCKET,
  153. DWORD,
  154. DWORD,
  155. RTCP_RR_T *,
  156. PSSRC_ENTRY);
  157. extern void RTCPpostRecvBfr (PSSRC_ENTRY,
  158. PRTCP_BFR_LIST);
  159. /*
  160. RTCPSEND.CPP
  161. */
  162. extern void CALLBACK RTCPxmtCallback (DWORD,
  163. DWORD,
  164. LPWSAOVERLAPPED,
  165. DWORD);
  166. extern BOOL FormatRTCPReport (PRTCP_SESSION,
  167. PSSRC_ENTRY,
  168. DWORD);
  169. extern DWORD getSSRCpcktLoss (PSSRC_ENTRY,
  170. DWORD);
  171. extern DWORD *RTCPbuildSDES (RTCP_COMMON_T *,
  172. PSSRC_ENTRY,
  173. SOCKET,
  174. char *,
  175. PSDES_DATA);
  176. extern void RTCPcheckSDEStoXmit (PSSRC_ENTRY,
  177. PSDES_DATA);
  178. extern void RTCPbuildSenderRpt (PSSRC_ENTRY,
  179. RTCP_COMMON_T *,
  180. SENDER_RPT **,
  181. SOCKET);
  182. extern DWORD usec2ntp (DWORD);
  183. extern DWORD usec2ntpFrac (long);
  184. extern void RTCPbuildReceiverRpt (PSSRC_ENTRY,
  185. RTCP_RR_T *,
  186. SOCKET);
  187. extern void RTCPsendBYE (PSSRC_ENTRY,
  188. PCHAR);
  189. extern DWORD getDLSR (PSSRC_ENTRY);
  190. #ifdef DYNAMIC_RTCP_BW
  191. extern DWORD updateRtpXmtBW (PSSRC_ENTRY);
  192. extern DWORD updateRtpRcvBW (PSSRC_ENTRY);
  193. #endif
  194. /*
  195. RTPINIT.CPP
  196. */
  197. extern DWORD deleteRTP (HINSTANCE);
  198. extern void addBuf (void);
  199. extern DWORD initRTP (HINSTANCE);
  200. extern void RRCMreadRegistry (PRTP_CONTEXT);
  201. extern void RRCMgetRegistryValue (HKEY,
  202. LPTSTR,
  203. PDWORD,
  204. DWORD,
  205. DWORD);
  206. extern DWORD RRCMgetDynamicLink (void);
  207. extern DWORD deleteRTPSession(PRTP_CONTEXT,
  208. PRTP_SESSION);
  209. /*
  210. RTPSEND.CPP
  211. */
  212. extern void CALLBACK RTPTransmitCallback (DWORD,
  213. DWORD,
  214. LPWSAOVERLAPPED,
  215. DWORD);
  216. extern DWORD CALLBACK saveWinsockContext(LPWSAOVERLAPPED,
  217. LPWSAOVERLAPPED_COMPLETION_ROUTINE,
  218. PRTP_SESSION,
  219. SOCKET);
  220. #if 0
  221. extern void updateNtpRtpTimeStampOffset (RTP_HDR_T *,
  222. PSSRC_ENTRY);
  223. #endif
  224. /*
  225. RTPRECV.CPP
  226. */
  227. extern DWORD RTPReceiveCheck (
  228. HANDLE hRTPSession,
  229. SOCKET RTPsocket,
  230. char *pPacket,
  231. DWORD cbTransferred,
  232. PSOCKADDR pFrom,
  233. UINT fromlen
  234. );
  235. extern BOOL validateRTPHeader(RTP_HDR_T *);
  236. /*
  237. RTP_STAT.CPP
  238. */
  239. extern DWORD calculateJitter (RTP_HDR_T *,
  240. PSSRC_ENTRY);
  241. extern DWORD updateRTPStats (RTP_HDR_T *,
  242. PSSRC_ENTRY,
  243. DWORD);
  244. /*
  245. RTPMISC.CPP
  246. */
  247. extern DWORD saveNetworkAddress (PSSRC_ENTRY,
  248. PSOCKADDR,
  249. int);
  250. extern PSSRC_ENTRY searchforSSRCatHead(PSSRC_ENTRY,
  251. DWORD);
  252. extern PSSRC_ENTRY searchforSSRCatTail(PSSRC_ENTRY,
  253. DWORD);
  254. extern PSSRC_ENTRY searchForMySSRC(PSSRC_ENTRY,
  255. SOCKET);
  256. #ifdef ENABLE_ISDM2
  257. extern void registerSessionToISDM (PSSRC_ENTRY,
  258. PRTCP_SESSION,
  259. PISDM2);
  260. extern void updateISDMstat (PSSRC_ENTRY,
  261. PISDM2,
  262. DWORD,
  263. BOOL);
  264. #endif
  265. extern void RRCMdebugMsg (PCHAR,
  266. DWORD,
  267. PCHAR,
  268. DWORD,
  269. DWORD);
  270. extern void RRCMnotification (RRCM_EVENT_T,
  271. PSSRC_ENTRY,
  272. DWORD,
  273. DWORD);
  274. /*
  275. RRCMCRT.CPP
  276. */
  277. extern void RRCMsrand (unsigned int);
  278. extern int RRCMrand (void);
  279. extern char *RRCMitoa (int, char *, int);
  280. extern char *RRCMultoa (unsigned long, char *, int);
  281. extern char *RRCMltoa (long, char *, int);
  282. /*
  283. RTCPTHRD.CPP
  284. */
  285. extern void RTCPThread (PRTCP_CONTEXT);
  286. extern PSSRC_ENTRY SSRCTimeoutCheck (PRTCP_SESSION,
  287. DWORD);
  288. #if defined(__cplusplus)
  289. }
  290. #endif // (__cplusplus)
  291. #endif /* ifndef _RRCMPROT_H_ */
  292.