rtcp.h
上传用户:biaoge6808
上传日期:2007-08-15
资源大小:42k
文件大小:6k
源码类别:

多媒体

开发平台:

C/C++

  1. /*
  2. NOTICE:
  3. This document contains information that is proprietary to RADVISION LTD.
  4. No part of this publication may be reproduced in any form whatsoever without
  5. written prior approval by RADVISION LTD.
  6. RADVISION LTD. reserves the right to revise this publication and make changes
  7. without obligation to notify any person of such revisions or changes.
  8. */
  9. #ifdef __cplusplus
  10. extern "C" {
  11. #endif
  12. #ifndef __RTCP_H
  13. #define __RTCP_H
  14. #include <rvcommon.h>
  15. #ifndef __RTP_H
  16. DECLARE_OPAQUE(HRTCPSESSION);
  17. #define RVVXDAPI RVAPI
  18. #define VXDCALLCONV RVCALLCONV
  19. #endif
  20. #define ERR_RTCP_GENERALERROR     -350   /* general error */
  21. #define ERR_RTCP_SSRCCOLLISION    -351   /* ssrc collision */
  22. #define ERR_RTCP_ILLEGALSSRC      -352   /* an illegal ssrc was specified */
  23. #define ERR_RTCP_ILLEGALSDES      -353   /* an illegal sdes was specified */
  24. #define ERR_RTCP_ILLEGALPACKET    -354   /* illegal RTCP pkt encountered */
  25. /*h.e 30.04.01*/
  26. typedef void (RVCALLCONV *LPRTCPEVENTHANDLER)(
  27.         IN HRTCPSESSION,
  28.         IN void * context,
  29.         IN UINT32 ssrc);
  30. /*===*/
  31. typedef BOOL (RVCALLCONV *LPSSRCENUM)(
  32.         IN  HRTCPSESSION  hRTCP,
  33.         IN  UINT32        ssrc);
  34. typedef struct {
  35.     BOOL    valid;
  36.     UINT32  mNTPtimestamp;
  37.     UINT32  lNTPtimestamp;
  38.     UINT32  timestamp;
  39.     UINT32  packets;
  40.     UINT32  octets;
  41. } RTCPSRINFO;
  42. typedef struct {
  43.     BOOL    valid;
  44.     UINT32  fractionLost;
  45.     UINT32  cumulativeLost;
  46.     UINT32  sequenceNumber;
  47.     UINT32  jitter;
  48.     UINT32  lSR;
  49.     UINT32  dlSR;
  50. } RTCPRRINFO;
  51. typedef struct {
  52.     BOOL        selfNode;
  53.     RTCPSRINFO  sr;
  54.     RTCPRRINFO  rrFrom;
  55.     RTCPRRINFO  rrTo;
  56.     char        cname[255];
  57. } RTCPINFO;
  58.                       /* == Basic RTCP Functions == */
  59. RVAPI
  60. INT32 RVCALLCONV rtcpInit(void);
  61. RVAPI
  62. INT32 RVCALLCONV rtcpInitEx(UINT32);
  63. RVAPI
  64. INT32 RVCALLCONV rtcpEnd(void);
  65. /************************************************************************************
  66.  * rtcpSetLocalAddress
  67.  * description: Set the local address to use for calls to rtcpOpenXXX functions.
  68.  *              This parameter overrides the value given in rtcpInitEx() for all
  69.  *              subsequent calls.
  70.  * input: ip    - Local IP address to use
  71.  * output: none.
  72.  * return value: Non-negative value on success
  73.  *               Negative value on failure
  74.  ***********************************************************************************/
  75. RVAPI
  76. int RVCALLCONV rtcpSetLocalAddress(IN UINT32 ip);
  77. RVAPI
  78. INT32 RVCALLCONV rtcpSetRTCPRecvEventHandler(
  79.     IN HRTCPSESSION         hRTCP,
  80.     IN LPRTCPEVENTHANDLER   rtcpCallback,
  81.     IN void *               context);
  82. RVAPI
  83. int RVCALLCONV rtcpGetAllocationSize(
  84.     IN  int sessionMembers);
  85. /************************************************************************************
  86.  * rtcpOpenFrom
  87.  * description: Opens an RTCP session in the memory that the application allocated.
  88.  * input: ssrc        - Synchronization source value for the RTCP session.
  89.  *        port        - The UDP port number to be used for the RTCP session.
  90.  *        cname       - CNAME to use
  91.  *        maxSessionMembers - Maximum number of different SSRC that can be handled
  92.  *        buffer      - Application allocated buffer with a value no less than the
  93.  *                      value returned by the function rtpGetAllocationSize().
  94.  *        bufferSize  - size of the buffer.
  95.  * output: none.
  96.  * return value: If no error occurs, the function returns the handle for the opened RTP
  97.  *               session. Otherwise, it returns NULL.
  98.  ***********************************************************************************/
  99. RVAPI
  100. HRTCPSESSION RVCALLCONV rtcpOpenFrom(
  101.     IN  UINT32  ssrc,
  102.     IN  UINT16  port,
  103.     IN  char *  cname,
  104.     IN  int     maxSessionMembers,
  105.     IN  void *  buffer,
  106.     IN  int     bufferSize);
  107. RVAPI
  108. HRTCPSESSION RVCALLCONV rtcpOpen(
  109.         IN  UINT32  ssrc,
  110.         IN  UINT16  port,
  111.         IN  char *  cname);
  112. RVAPI
  113. INT32 RVCALLCONV rtcpClose(
  114.         IN  HRTCPSESSION  hRCTP);
  115. RVAPI
  116. void RVCALLCONV rtcpSetRemoteAddress(
  117.         IN  HRTCPSESSION  hRTCP,
  118.         IN  UINT32        ip,
  119.         IN  UINT16        port);
  120. RVAPI
  121. INT32 RVCALLCONV rtcpStop(
  122.         IN  HRTCPSESSION  hRTCP);
  123. RVAPI
  124. INT32 RVCALLCONV rtcpRTPPacketRecv(
  125.         IN  HRTCPSESSION  hRTCP,
  126.         IN  UINT32        ssrc,
  127.         IN  UINT32        localTimestamp,
  128.         IN  UINT32        myTimestamp,
  129.         IN  UINT16        sequence);
  130. RVAPI
  131. INT32 RVCALLCONV rtcpRTPPacketSent(
  132.         IN  HRTCPSESSION  hRTCP,
  133.         IN  INT32         bytes,
  134.         IN  UINT32        timestamp);
  135. RVAPI
  136. UINT16 RVCALLCONV rtcpGetPort(
  137.         IN  HRTCPSESSION  hRCTP);
  138.                    /* == ENDS: Basic RTCP Functions == */
  139.                     /* == Accessory RTCP Functions == */
  140. RVAPI
  141. BOOL RVCALLCONV rtcpCheckSSRCCollision(
  142.         IN  HRTCPSESSION  hRTCP);
  143. /* ouch! */
  144. #define rtcpEnumParticipients  rtcpEnumParticipants
  145. RVAPI
  146. BOOL RVCALLCONV rtcpEnumParticipants(
  147.         IN  HRTCPSESSION  hRTCP,
  148.         IN  LPSSRCENUM    enumerator);
  149. RVAPI
  150. INT32 RVCALLCONV rtcpGetSourceInfo(
  151.         IN   HRTCPSESSION hRTCP,
  152.         IN   UINT32       ssrc,
  153.         OUT  RTCPINFO*    info);
  154. RVAPI
  155. INT32 RVCALLCONV rtcpSetGroupAddress(
  156.         IN  HRTCPSESSION  hRTCP,
  157.         IN  UINT32        ip);
  158. RVAPI
  159. INT32 RVCALLCONV rtcpGetSSRC(
  160.         IN  HRTCPSESSION  hRTCP);
  161. RVAPI
  162. INT32 RVCALLCONV rtcpSetSSRC(
  163.         IN  HRTCPSESSION  hRTCP,
  164.         IN  UINT32        ssrc);
  165.                  /* == ENDS: Accessory RTCP Functions == */
  166. RVAPI
  167. INT32 RVCALLCONV rtcpGetEnumNext(
  168.                 IN  HRTCPSESSION  hRTCP,
  169.                 IN  INT32         prev,
  170.                 IN  INT32 *       ssrc);
  171. RVAPI
  172. INT32 RVCALLCONV rtcpGetEnumFirst(
  173.                 IN  HRTCPSESSION  hRTCP,
  174.                 IN  INT32 *       ssrc);
  175. #endif  /* __RTCP_H */
  176. #ifdef __cplusplus
  177. }
  178. #endif