Main Page | Class Hierarchy | Class List | File List | Class Members | File Members

h323rtp.h

Go to the documentation of this file.
00001 /* 00002 * h323rtp.h 00003 * 00004 * H.323 RTP protocol handler 00005 * 00006 * Open H323 Library 00007 * 00008 * Copyright (c) 1998-2000 Equivalence Pty. Ltd. 00009 * 00010 * The contents of this file are subject to the Mozilla Public License 00011 * Version 1.0 (the "License"); you may not use this file except in 00012 * compliance with the License. You may obtain a copy of the License at 00013 * http://www.mozilla.org/MPL/ 00014 * 00015 * Software distributed under the License is distributed on an "AS IS" 00016 * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See 00017 * the License for the specific language governing rights and limitations 00018 * under the License. 00019 * 00020 * The Original Code is Open H323 Library. 00021 * 00022 * The Initial Developer of the Original Code is Equivalence Pty. Ltd. 00023 * 00024 * Portions of this code were written with the assisance of funding from 00025 * Vovida Networks, Inc. http://www.vovida.com. 00026 * 00027 * Contributor(s): ______________________________________. 00028 * 00029 * $Log: h323rtp.h,v $ 00030 * Revision 1.11 2003/10/27 06:03:39 csoutheren 00031 * Added support for QoS 00032 * Thanks to Henry Harrison of AliceStreet 00033 * 00034 * Revision 1.10 2003/02/07 00:27:59 robertj 00035 * Changed function to virtual to help in using external multiicast RTP stacks. 00036 * 00037 * Revision 1.9 2002/09/16 01:14:15 robertj 00038 * Added #define so can select if #pragma interface/implementation is used on 00039 * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. 00040 * 00041 * Revision 1.8 2002/09/03 06:19:37 robertj 00042 * Normalised the multi-include header prevention ifdef/define symbol. 00043 * 00044 * Revision 1.7 2002/08/05 10:03:47 robertj 00045 * Cosmetic changes to normalise the usage of pragma interface/implementation. 00046 * 00047 * Revision 1.6 2001/02/09 05:16:24 robertj 00048 * Added #pragma interface for GNU C++. 00049 * 00050 * Revision 1.5 2000/08/31 08:15:32 robertj 00051 * Added support for dynamic RTP payload types in H.245 OpenLogicalChannel negotiations. 00052 * 00053 * Revision 1.4 2000/05/18 11:53:34 robertj 00054 * Changes to support doc++ documentation generation. 00055 * 00056 * Revision 1.3 2000/05/02 04:32:24 robertj 00057 * Fixed copyright notice comment. 00058 * 00059 * Revision 1.2 2000/04/05 03:17:31 robertj 00060 * Added more RTP statistics gathering and H.245 round trip delay calculation. 00061 * 00062 * Revision 1.1 1999/12/23 23:02:35 robertj 00063 * File reorganision for separating RTP from H.323 and creation of LID for VPB support. 00064 * 00065 */ 00066 00067 #ifndef __OPAL_H323RTP_H 00068 #define __OPAL_H323RTP_H 00069 00070 #ifdef P_USE_PRAGMA 00071 #pragma interface 00072 #endif 00073 00074 00075 #include "rtp.h" 00076 00077 00078 class H225_RTPSession; 00079 00080 class H245_TransportAddress; 00081 class H245_H2250LogicalChannelParameters; 00082 class H245_H2250LogicalChannelAckParameters; 00083 00084 class H323Connection; 00085 class H323_RTPChannel; 00086 00087 00088 00090 00093 class H323_RTP_Session : public RTP_UserData 00094 { 00095 PCLASSINFO(H323_RTP_Session, RTP_UserData); 00096 00105 virtual void OnTxStatistics( 00106 const RTP_Session & session 00107 ) const; 00108 00115 virtual void OnRxStatistics( 00116 const RTP_Session & session 00117 ) const; 00119 00124 virtual BOOL OnSendingPDU( 00125 const H323_RTPChannel & channel, 00126 H245_H2250LogicalChannelParameters & param 00127 ) const = 0; 00128 00132 virtual void OnSendingAckPDU( 00133 const H323_RTPChannel & channel, 00134 H245_H2250LogicalChannelAckParameters & param 00135 ) const = 0; 00136 00141 virtual BOOL OnReceivedPDU( 00142 H323_RTPChannel & channel, 00143 const H245_H2250LogicalChannelParameters & param, 00144 unsigned & errorCode 00145 ) = 0; 00146 00151 virtual BOOL OnReceivedAckPDU( 00152 H323_RTPChannel & channel, 00153 const H245_H2250LogicalChannelAckParameters & param 00154 ) = 0; 00155 00162 virtual void OnSendRasInfo( 00163 H225_RTPSession & info 00164 ) = 0; 00166 00167 00168 protected: 00173 H323_RTP_Session( 00174 const H323Connection & connection 00175 ); 00177 00178 const H323Connection & connection; 00179 }; 00180 00181 00184 class H323_RTP_UDP : public H323_RTP_Session 00185 { 00186 PCLASSINFO(H323_RTP_UDP, H323_RTP_Session); 00187 00188 public: 00193 H323_RTP_UDP( 00194 const H323Connection & connection, 00195 RTP_UDP & rtp, 00196 RTP_QOS * rtpqos = NULL 00197 ); 00199 00204 virtual BOOL OnSendingPDU( 00205 const H323_RTPChannel & channel, 00206 H245_H2250LogicalChannelParameters & param 00207 ) const; 00208 00212 virtual void OnSendingAckPDU( 00213 const H323_RTPChannel & channel, 00214 H245_H2250LogicalChannelAckParameters & param 00215 ) const; 00216 00223 virtual BOOL OnReceivedPDU( 00224 H323_RTPChannel & channel, 00225 const H245_H2250LogicalChannelParameters & param, 00226 unsigned & errorCode 00227 ); 00228 00235 virtual BOOL OnReceivedAckPDU( 00236 H323_RTPChannel & channel, 00237 const H245_H2250LogicalChannelAckParameters & param 00238 ); 00239 00246 virtual void OnSendRasInfo( 00247 H225_RTPSession & info 00248 ); 00250 00251 protected: 00252 virtual BOOL ExtractTransport( 00253 const H245_TransportAddress & pdu, 00254 BOOL isDataPort, 00255 unsigned & errorCode 00256 ); 00257 00258 RTP_UDP & rtp; 00259 }; 00260 00261 00262 #endif // __OPAL_H323RTP_H 00263 00264

Generated on Sat Jul 24 17:03:32 2004 for OpenH323 by doxygen 1.3.7