00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef OPAL_OPAL_RTPEP_H
00030 #define OPAL_OPAL_RTPEP_H
00031
00032 #ifdef P_USE_PRAGMA
00033 #pragma interface
00034 #endif
00035
00036 #include <opal/buildopts.h>
00037
00038 #include <opal/endpoint.h>
00039
00040
00044 class OpalRTPEndPoint : public OpalEndPoint
00045 {
00046 PCLASSINFO(OpalRTPEndPoint, OpalEndPoint);
00047
00052 OpalRTPEndPoint(
00053 OpalManager & manager,
00054 const PCaselessString & prefix,
00055 unsigned attributes
00056 );
00057
00060 ~OpalRTPEndPoint();
00062
00074 virtual OpalMediaFormatList GetMediaFormats() const;
00075
00081 virtual void OnClosedMediaStream(
00082 const OpalMediaStream & stream
00083 );
00085
00105 virtual PBoolean IsRTPNATEnabled(
00106 OpalConnection & connection,
00107 const PIPSocket::Address & localAddr,
00108 const PIPSocket::Address & peerAddr,
00109 const PIPSocket::Address & signalAddr,
00110 PBoolean incoming
00111 );
00112
00113 #ifdef OPAL_ZRTP
00114 virtual bool GetZRTPEnabled() const;
00115 #endif
00116
00129 virtual bool OnLocalRTP(
00130 OpalConnection & connection1,
00131 OpalConnection & connection2,
00132 unsigned sessionID,
00133 bool opened
00134 ) const;
00135
00136
00137 bool CheckForLocalRTP(const OpalRTPMediaStream & stream);
00138
00139
00140 void CheckEndLocalRTP(OpalConnection & connection, RTP_UDP * rtp);
00142
00143 protected:
00144 #ifdef OPAL_ZRTP
00145 bool zrtpEnabled;
00146 #endif
00147
00148 struct LocalRtpInfo {
00149 LocalRtpInfo(OpalConnection & connection) : m_connection(connection), m_previousResult(-1) { }
00150
00151 OpalConnection & m_connection;
00152 int m_previousResult;
00153 };
00154 typedef std::map<WORD, LocalRtpInfo> LocalRtpInfoMap;
00155 LocalRtpInfoMap m_connectionsByRtpLocalPort;
00156 };
00157
00158
00159 #endif // OPAL_OPAL_RTPEP_H