rtp.h
上传用户:hnnddl
上传日期:2007-01-06
资源大小:3580k
文件大小:4k
源码类别:

IP电话/视频会议

开发平台:

WINDOWS

  1. /*
  2.  * $Revision: 1.3 $
  3.  * $Date: 1998/04/03 15:21:43 $
  4.  */
  5. ////////////////////////////////////////////////////////////////
  6. //               Copyright (c) 1996,97 Lucent Technologies    //
  7. //                       All Rights Reserved                  //
  8. //                                                            //
  9. //                       THIS IS UNPUBLISHED                  //
  10. //                       PROPRIETARY SOURCE                   //
  11. //                   CODE OF Lucent Technologies              //
  12. //      AND elemedia    //
  13. //                                                            //
  14. //           The copyright notice above does not evidence any //
  15. //          actual or intended publication of such source code//
  16. ////////////////////////////////////////////////////////////////
  17. //
  18. /////////////////////////////////////////////////////////////////
  19. // File : rtp.h        //
  20. //                                                             //
  21. // This file declares  RTP related classes.    //
  22. //    //
  23. //                                                            //
  24. // History:    //
  25. //  15_Jan_1997 Created    //
  26. // 30_Jun_1997 GetLocal method removed from RTPSession class. //
  27. //    //
  28. /////////////////////////////////////////////////////////////////
  29. #if !defined(__RTP_H__)
  30. #define __RTP_H__
  31. #include "util/listifc.h"
  32. #include "rtp/endpoint.h"
  33. #include "rtp/packet.h"
  34. #include "rtp/ntptime.h"
  35. #include "rtp/reports.h"
  36. #include "rtp/rtperr.h"
  37. class ListManager;
  38. class CBuffer;
  39. class Logger;
  40.  //
  41.  // The RTP session class.
  42.  //
  43.  // A RTP session is a association among a set of 
  44.  // participants communicating using RTP. A session is
  45.  // defined/identified by a set of two transport addresses
  46.  // (eg ip-addr/port), one for RTP and the other for RTCP.
  47.  //
  48. class DLLEXPORT RTPSession 
  49. {
  50. public:
  51. // These classes need access to certain protected
  52. // methods of this class.
  53. friend class RTCPPacket;
  54. friend class RTPPacket;
  55. // cname: Canonical name for this endpoint
  56. // payload_type: Type of payload carried in the rtp packets
  57. // sampling_rate: Sampling rate for computing the MediaTime
  58. // (see GetMediaTime method)
  59. RTPSession(char *cname, int payload_type, int sampling_rate);
  60. ~RTPSession();
  61. // SDES methods
  62. void SetRealName(char *name, int length);
  63. void SetEMail(char *email, int length);
  64. void SetPhone(char *phone_number, int length);
  65. void SetLoc(char *loc, int length);
  66. void SetTool(char *tool, int length);
  67. void SetNote(char *note, int length);
  68. void SetPriv(char *priv, int length);
  69. // Lookup a participant based on ssrc.
  70. RTPEndpointInfo *GetParticipant(unsigned int ssrc);
  71. // Returns current number of participants in the
  72. // session.
  73. int GetNumParticipants();
  74. // table: Pointer to array of RTPEndpointInfo pointers.
  75. // length: Length of the table.
  76. int GetParticipants(RTPEndpointInfo **table, int length);
  77. // Returns pointer to local RTPEndpointInfo
  78. RTPEndpointInfo* GetLocalEndpointInfo();
  79. // Returns the RTP version
  80. int GetVersion();
  81. // Returns the current payload type.
  82. int GetPayloadType();
  83. void SetPayloadType(int pt);
  84. // Returns the mediatime corresponding to the current
  85. // wall clock time.
  86. unsigned int GetMediaTime();
  87. protected:
  88. // Generates next seq no
  89. unsigned short GetNextSequenceNo();
  90. // Returns pointer to ListManager class
  91. // containing the list of current participants
  92. // in the session.
  93. ListManager* GetParticipants();
  94. // Method to generate an unique SSRC
  95. unsigned int GenerateSSRC();
  96. unsigned short sequence_no;
  97. int payload_type;
  98. int rtp_version;
  99. // Our Endpoint info
  100. RTPEndpointInfo *local;
  101. // The endpoints list contains information regarding all remote
  102. // endpoints that participate with this local endpoint for this 
  103. // session. This information has statistics needed for sending
  104. // reception reports.
  105. ListManager *endpoint_list;
  106. int sampling_rate;
  107. private:
  108. Logger *_logger;
  109. };
  110. #endif // __RTP_H__