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

多媒体

开发平台:

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 __RTP_H
  13. #define __RTP_H
  14. #define RVVXDAPI RVAPI
  15. #define VXDCALLCONV RVCALLCONV
  16. #include <rvcommon.h>
  17. #ifdef _ATM_
  18. #include <rvws2atm.h>
  19. #endif
  20. DECLARE_OPAQUE(HRTPSESSION);
  21. #ifndef __RTCP_H
  22. DECLARE_OPAQUE(HRTCPSESSION);
  23. #endif
  24. typedef struct {
  25.     IN OUT  UINT32  timestamp;
  26.     IN OUT  BOOL    marker;
  27.     IN OUT  BYTE    payload;
  28.     OUT     UINT32  sSrc;
  29.     OUT     UINT16  sequenceNumber;
  30.     OUT     int     sByte;
  31.     OUT     int     len;
  32. } rtpParam;
  33. typedef void (*LPRTPEVENTHANDLER)
  34.     (
  35.         IN  HRTPSESSION  hRTP,
  36.         IN  void *       context
  37.     );
  38. typedef struct
  39. {
  40.     int            isAllocated;
  41.     int                socket;
  42.     UINT32             sSrc;
  43.     UINT32             sSrcMask;
  44.     UINT32             sSrcPattern;
  45.     LPRTPEVENTHANDLER  eventHandler;
  46.     void *             context;
  47.     UINT16             sequenceNumber;
  48.     UINT32             ip;
  49.     UINT16             port;
  50.     BOOL               useSequenceNumber;
  51.     HRTCPSESSION       hRTCP;
  52. #ifdef _ATM_
  53.     ATM_ADDRESS        HostAddr;
  54.     BOOL               bUseATM;
  55. #endif
  56. } rtpSession;       /* HRTPSESSION */
  57.                        /* == Basic RTP Functions == */
  58. RVAPI
  59. INT32 RVCALLCONV rtpInit(void);
  60. RVAPI
  61. INT32 RVCALLCONV rtpInitEx(UINT32);
  62. RVAPI
  63. void RVCALLCONV rtpEnd(void);
  64. /************************************************************************************
  65.  * rtpSetLocalAddress
  66.  * description: Set the local address to use for calls to rtpOpenXXX functions.
  67.  *              This parameter overrides the value given in rtpInitEx() for all
  68.  *              subsequent calls.
  69.  * input: ip    - Local IP address to use
  70.  * output: none.
  71.  * return value: Non-negative value on success
  72.  *               Negative value on failure
  73.  ***********************************************************************************/
  74. RVAPI
  75. int RVCALLCONV rtpSetLocalAddress(IN UINT32 ip);
  76. RVAPI
  77. int RVCALLCONV rtpGetAllocationSize(void);
  78. /************************************************************************************
  79. * rtpOpenFrom
  80. * description: Opens an RTP session in the memory that the application allocated.
  81. * input: port        - The UDP port number to be used for the RTP session.
  82. *        ssrcPattern - Synchronization source Pattern value for the RTP session.
  83. *        ssrcMask    - Synchronization source Mask value for the RTP session.
  84. *        buffer      - Application allocated buffer with a value no less than the
  85. *                      value returned by the function rtpGetAllocationSize().
  86. *        bufferSize  - size of the buffer.
  87. * output: none.
  88. * return value: If no error occurs, the function returns the handle for the opened RTP
  89. *               session. Otherwise, it returns NULL.
  90. ***********************************************************************************/
  91. RVAPI
  92. HRTPSESSION RVCALLCONV rtpOpenFrom(
  93.         IN  UINT16  port,
  94.         IN  UINT32  ssrcPattern,
  95.         IN  UINT32  ssrcMask,
  96.     IN  void*   buffer,
  97.     IN  int     bufferSize);
  98.     /************************************************************************************
  99.     * rtpOpen
  100.     * description: Opens an RTP session. The RTP Stack allocates an object and the
  101.     *              memory needed for the RTP session. It also opens a socket and waits
  102.     *              for packets. rtpOpen() also returns the handle of this session to
  103.     *              the application.
  104.     * input: port        - The UDP port number to be used for the RTP session.
  105.     *        ssrcPattern - Synchronization source Pattern value for the RTP session.
  106.     *        ssrcMask    - Synchronization source Mask value for the RTP session.
  107.     * output: none.
  108.     * return value: If no error occurs, the function returns the handle for the opened RTP
  109.     *               session. Otherwise, it returns NULL.
  110. ***********************************************************************************/
  111. RVAPI
  112. HRTPSESSION RVCALLCONV rtpOpen(
  113.         IN  UINT16  port,
  114.         IN  UINT32  ssrcPattern,
  115.         IN  UINT32  ssrcMask);
  116. /************************************************************************************
  117.  * rtpOpenEx
  118.  * description: Opens an RTP session and an associated RTCP session.
  119.  * input: port        - The UDP port number to be used for the RTP session.
  120.  *        ssrcPattern - Synchronization source Pattern value for the RTP session.
  121.  *        ssrcMask    - Synchronization source Mask value for the RTP session.
  122.  *        cname       - The unique name representing the source of the RTP data.
  123.  * output: none.
  124.  * return value: If no error occurs, the function returns the handle for the open
  125.  *               RTP session. Otherwise, the function returns NULL.
  126.  ***********************************************************************************/
  127. RVAPI
  128. HRTPSESSION RVCALLCONV rtpOpenEx(
  129.         IN  UINT16  port,
  130.         IN  UINT32  ssrcPattern,
  131.         IN  UINT32  ssrcMask,
  132.         IN  char *  cname);
  133. /************************************************************************************
  134.  * rtpClose
  135.  * description: Close RTP session.
  136.  * input: hRTP - Handle of the RTP session.
  137.  * output: none.
  138.  * return value: If an error occurs, the function returns a negative value.
  139.  *               If no error occurs, the function returns a non-negative value.
  140.  ***********************************************************************************/
  141. RVAPI
  142. UINT32 RVCALLCONV rtpClose(
  143.         IN  HRTPSESSION  hRTP);
  144. /************************************************************************************
  145.  * rtpGetSSRC
  146.  * description: Returns the current SSRC (synchronization source value) of the RTP session.
  147.  * input: hRTP - Handle of the RTP session.
  148.  * output: none.
  149.  * return value: If no error occurs, the function returns the current SSRC value.
  150.  *               Otherwise, it returns a negative value.
  151.  ***********************************************************************************/
  152. RVAPI
  153. UINT32 RVCALLCONV rtpGetSSRC(
  154.         IN  HRTPSESSION  hRTP);
  155. /************************************************************************************
  156.  * rtpSetEventHandler
  157.  * description: Set an Event Handler for the RTP session. The application must set
  158.  *              an Event Handler for each RTP session.
  159.  * input: hRTP          - Handle of the RTP session.
  160.  *        eventHandler  - Pointer to the callback function that is called each time a
  161.  *                        new RTP packet arrives to the RTP session.
  162.  *        context       - The parameter is an application handle that identifies the
  163.  *                        particular RTP session. The application passes the handle to
  164.  *                        the Event Handler.
  165.  * output: none.
  166.  * return value: none.
  167.  ***********************************************************************************/
  168. RVAPI
  169. void RVCALLCONV rtpSetEventHandler(
  170.         IN  HRTPSESSION        hRTP,
  171.         IN  LPRTPEVENTHANDLER  eventHandler,
  172.         IN  void *             context);
  173. /************************************************************************************
  174.  * rtpSetRemoteAddress
  175.  * description: Defines the address of the remote peer or the address of a multicast
  176.  *              group to which the RTP stream will be sent.
  177.  * input: hRTP  - Handle of the RTP session.
  178.  *        ip    - IP address to which RTP packets should be sent.
  179.  *        port  - UDP port to which RTP packets should be sent.
  180.  * output: none.
  181.  * return value: none.
  182.  ***********************************************************************************/
  183. RVAPI
  184. void RVCALLCONV rtpSetRemoteAddress(
  185.         IN  HRTPSESSION  hRTP,
  186.         IN  UINT32       ip,
  187.         IN  UINT16       port);
  188. /************************************************************************************
  189.  * rtpWrite
  190.  * description: This routine sets the RTP header.
  191.  * input: hRTP  - Handle of the RTP session.
  192.  *        buf   - Pointer to buffer containing the RTP packet with room before first
  193.  *                payload byte for RTP header.
  194.  *        len   - Length in bytes of buf.
  195.  *        p     - A struct of RTP param.
  196.  * output: none.
  197.  * return value:  If no error occurs, the function returns the non-neagtive value.
  198.  *                Otherwise, it returns a negative value.
  199.  ***********************************************************************************/
  200. RVAPI
  201. INT32 RVCALLCONV rtpWrite(
  202.         IN  HRTPSESSION  hRTP,
  203.         IN  void  *      buf,
  204.         IN  INT32        len,
  205.         IN  rtpParam *   p);
  206. /************************************************************************************
  207.  * rtpPack
  208.  * description: This routine sets the RTP header.
  209.  * input: hRTP  - Handle of the RTP session.
  210.  *        buf   - Pointer to buffer containing the RTP packet with room before first
  211.  *                payload byte for RTP header.
  212.  *        len   - Length in bytes of buf.
  213.  *        p     - A struct of RTP param.
  214.  * output: none.
  215.  * return value:  If no error occurs, the function returns the non-neagtive value.
  216.  *                Otherwise, it returns a negative value.
  217.  ***********************************************************************************/
  218. RVAPI
  219. INT32 RVCALLCONV rtpPack(
  220.         IN  HRTPSESSION  hRTP,
  221.         IN  void *       buf,
  222.         IN  INT32        len,
  223.         IN  rtpParam *   p);
  224. RVAPI
  225. INT32 RVCALLCONV rtpUnpack(
  226.         IN  HRTPSESSION  hRTP,
  227.         IN  void *buf,
  228.         IN  INT32 len,
  229.         OUT rtpParam* p);
  230. /************************************************************************************
  231.  * rtpRead
  232.  * description: This routine sets the header of the RTP message.
  233.  * input: hRTP  - Handle of the RTP session.
  234.  *        buf   - Pointer to buffer containing the RTP packet with room before first
  235.  *                payload byte for RTP header.
  236.  *        len   - Length in bytes of buf.
  237.  *
  238.  * output: p    - A struct of RTP param,contain the fields of RTP header.
  239.  * return value: If no error occurs, the function returns the non-neagtive value.
  240.  *                Otherwise, it returns a negative value.
  241.  ***********************************************************************************/
  242. RVAPI
  243. INT32 RVCALLCONV rtpRead(
  244.         IN   HRTPSESSION  hRTP,
  245.         IN   void *       buf,
  246.         IN   INT32        len,
  247.         OUT  rtpParam *   p);
  248. /************************************************************************************
  249.  * rtpReadEx
  250.  * description: Receives an RTP packet and updates the corresponding RTCP session.
  251.  * input: hRTP      - Handle of the RTP session.
  252.  *        buf       - Pointer to buffer containing the RTP packet with room before first
  253.  *                    payload byte for RTP header.
  254.  *        len       - Length in bytes of buf.
  255.  *        timestamp -
  256.  *        p         - A struct of RTP param,contain the fields of RTP header.
  257.  * output: none.
  258.  * return value: If no error occurs, the function returns the non-neagtive value.
  259.  *               Otherwise, it returns a negative value.
  260.  ***********************************************************************************/
  261. RVAPI
  262. INT32 RVCALLCONV rtpReadEx(
  263.         IN   HRTPSESSION  hRTP,
  264.         IN   void *       buf,
  265.         IN   INT32        len,
  266.         IN   UINT32       timestamp,
  267.         OUT  rtpParam *   p);
  268. /************************************************************************************
  269.  * rtpGetPort
  270.  * description: Returns the current port of the RTP session.
  271.  * input: hRTP - Handle of the RTP session.
  272.  * output: none.
  273.  * return value: If no error occurs, the function returns the current port value.
  274.  *               Otherwise, it returns a negative value.
  275.  ***********************************************************************************/
  276. RVAPI
  277. UINT16 RVCALLCONV rtpGetPort(
  278.         IN  HRTPSESSION  hRTP);
  279. /************************************************************************************
  280.  * rtpGetVersion
  281.  * description:  Returns the RTP version of the installed RTP Stack.
  282.  * input:  none.
  283.  * output: none.
  284.  * return value: If no error occurs, the function returns the current version value.
  285.  *               Otherwise, it returns a negative value.
  286.  ***********************************************************************************/
  287. RVAPI
  288. char * RVCALLCONV rtpGetVersion(void);
  289. /************************************************************************************
  290.  * rtpGetVersionNum
  291.  * description:  Returns the RTP version of the installed RTP Stack.
  292.  * input:  none.
  293.  * output: none.
  294.  * return value: If no error occurs, the function returns the current version value.
  295.  *               Otherwise, it returns a negative value.
  296.  ***********************************************************************************/
  297. RVAPI
  298. UINT32 RVCALLCONV rtpGetVersionNum(void);
  299.                     /* == ENDS: Basic RTP Functions == */
  300.                      /* == Accessory RTP Functions == */
  301. /************************************************************************************
  302.  * rtpGetRTCPSession
  303.  * description:  Returns the RTCP session.
  304.  * input:  hRTP - Handle of RTP session.
  305.  * output: none.
  306.  * return value: hRTCP - Handle of RTCP session.
  307.  ***********************************************************************************/
  308. RVAPI
  309. HRTCPSESSION RVCALLCONV rtpGetRTCPSession(
  310.         IN  HRTPSESSION  hRTP);
  311. /************************************************************************************
  312.  * rtpSetRTCPSession
  313.  * description:  set the RTCP session.
  314.  * input:  hRTP  - Handle of RTP session.
  315.  *         hRTCP - Handle of RTCP session.
  316.  * output: none.
  317.  * return value:return 0.
  318.  ***********************************************************************************/
  319. RVAPI
  320. INT32 RVCALLCONV rtpSetRTCPSession(
  321.         IN  HRTPSESSION   hRTP,
  322.         IN  HRTCPSESSION  hRTCP);
  323. /************************************************************************************
  324.  * rtpGetHeaderLength
  325.  * description:  return the header of RTP message.
  326.  * input:  none.
  327.  * output: none.
  328.  * return value:The return value is twelve.
  329.  ***********************************************************************************/
  330. RVAPI
  331. INT32 RVCALLCONV rtpGetHeaderLength(void);
  332. /************************************************************************************
  333.  * rtpRegenSSRC
  334.  * description:  Generates a new synchronization source value for the RTP session.
  335.  *               This function, in conjunction with rtpGetSSRC() may be used to
  336.  *               change the SSRC value when an SSRC collision is detected.
  337.  * input:  hRTP  - Handle of RTP session.
  338.  * output: none.
  339.  * return value: ssrc - If an error occurs, the function returns a negative value.
  340.  *               If no error occurs, the function returns a non-negative value.
  341.  ***********************************************************************************/
  342. RVAPI
  343. UINT32 RVCALLCONV rtpRegenSSRC(
  344.         IN  HRTPSESSION  hRTP);
  345. /************************************************************************************
  346.  * rtpSetGroupAddress
  347.  * description:  Defines a multicast IP for the RTP session.
  348.  * input:  hRTP  - Handle of RTP session.
  349.  *         ip    - Multicast IP address for the RTP session.
  350.  * output: none.
  351.  * return value: return 0.
  352.  ***********************************************************************************/
  353. RVAPI
  354. INT32 RVCALLCONV rtpSetGroupAddress(
  355.         IN  HRTPSESSION  hRTP,
  356.         IN  UINT32       ip);
  357. /************************************************************************************
  358.  * rtpResume
  359.  * description:  Causes a blocked rtpRead() or rtpReadEx() function running in
  360.  *               another thread to fail.
  361.  * input:  hRTP  - Handle of RTP session.
  362.  * output: none.
  363.  * return value: If an error occurs, the function returns a negative value.
  364.  *               If no error occurs, the function returns a non-negative value.
  365.  ***********************************************************************************/
  366. RVAPI
  367. INT32 RVCALLCONV rtpResume(
  368.         IN  HRTPSESSION  hRTP);
  369. /************************************************************************************
  370.  * rtpUseSequenceNumber
  371.  * description:  Forces the Stack to accept user input for the sequence number of
  372.  *               the RTP packet. The RTP Stack usually determines the sequence number.
  373.  *               However, the application can force its own sequence number.
  374.  *               Call rtpUseSequenceNumber() at the beginning of the RTP session and
  375.  *               then specify the sequence number in the rtpParam structure of the
  376.  *               rtpWrite() function.
  377.  * input:  hRTP  - Handle of RTP session.
  378.  * output: none.
  379.  * return value: return 0.
  380.  ***********************************************************************************/
  381. RVAPI
  382. INT32 RVCALLCONV rtpUseSequenceNumber(
  383.         IN  HRTPSESSION  hRTP);
  384. /************************************************************************************
  385.  * rtpSetReceiveBufferSize
  386.  * description:  Changes the RTP session receive buffer size.
  387.  * input:  hRTP  - Handle of RTP session.
  388.  * output: none.
  389.  * return value: return 0.
  390.  ***********************************************************************************/
  391. RVAPI
  392. INT32 RVCALLCONV rtpSetReceiveBufferSize(
  393.                 IN HRTPSESSION  hRTP,
  394.         IN int size);
  395. /************************************************************************************
  396.  * rtpSetTransmitBufferSize
  397.  * description:  Changes the RTP session transmit buffer size.
  398.  * input:  hRTP - Handle of RTP session.
  399.  *         size - The new transmit buffer size.
  400.  * output: none.
  401.  * return value: return 0.
  402.  ***********************************************************************************/
  403. RVAPI
  404. INT32 RVCALLCONV rtpSetTransmitBufferSize(
  405.                 IN HRTPSESSION  hRTP,
  406.                 IN int size);
  407. /************************************************************************************
  408.  * rtpSetTrasmitBufferSize
  409.  * description:  Changes the RTP session transmit buffer size.
  410.  * input:  hRTP - Handle of RTP session.
  411.  *         size - The new transmit buffer size.
  412.  * output: none.
  413.  * return value: return 0.
  414.  * comment     : obsolete function provided for compatibility with prev. version
  415.  ***********************************************************************************/
  416. RVAPI
  417. INT32 RVCALLCONV rtpSetTrasmitBufferSize(
  418.                 IN HRTPSESSION  hRTP,
  419.                 IN int size);
  420. /************************************************************************************
  421.  * rtpGetAvailableBytes
  422.  * description:  Gets the number of bytes available for reading in the RTP session.
  423.  * input:  hRTP - Handle of RTP session.
  424.  * output: none.
  425.  * return value: If an error occurs, the function returns a negative value.
  426.  *               If no error occurs, the function returns a non-negative value.
  427.  ***********************************************************************************/
  428. RVAPI
  429. INT32 RVCALLCONV rtpGetAvailableBytes(
  430.                 IN HRTPSESSION  hRTP);
  431.                /* == ENDS: Accessory RTP Functions == */
  432. #endif  /* __RTP_H */
  433. #ifdef __cplusplus
  434. }
  435. #endif