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
00030
00031
00032
00033
00034 #ifndef OPAL_H323_H323RTP_H
00035 #define OPAL_H323_H323RTP_H
00036
00037 #ifdef P_USE_PRAGMA
00038 #pragma interface
00039 #endif
00040
00041 #include <opal/buildopts.h>
00042
00043 #if OPAL_H323
00044
00045 #include <h323/channels.h>
00046 #include <rtp/rtp_session.h>
00047
00048
00049 class H225_RTPSession;
00050
00051 class H245_TransportAddress;
00052 class H245_H2250LogicalChannelParameters;
00053 class H245_H2250LogicalChannelAckParameters;
00054 class H245_ArrayOf_GenericInformation;
00055
00056 class H323Connection;
00057 class H323_RTPChannel;
00058
00059 class H245_TransportCapability;
00060
00061
00063
00066 class H323_RTPChannel : public H323_RealTimeChannel
00067 {
00068 PCLASSINFO(H323_RTPChannel, H323_RealTimeChannel);
00069 public:
00074 H323_RTPChannel(
00075 H323Connection & connection,
00076 const H323Capability & capability,
00077 Directions direction,
00078 OpalMediaSession & session
00079 );
00080
00082 ~H323_RTPChannel();
00084
00091 virtual unsigned GetSessionID() const;
00092
00099 virtual bool SetSessionID(
00100 unsigned sessionID
00101 );
00102
00109 virtual PBoolean GetMediaTransportAddress(
00110 OpalTransportAddress & data,
00111 OpalTransportAddress & control
00112 ) const;
00114
00119 virtual PBoolean OnSendingPDU(
00120 H245_H2250LogicalChannelParameters & param
00121 ) const;
00122
00125 virtual PBoolean OnSendingAltPDU(
00126 H245_ArrayOf_GenericInformation & alternate
00127 ) const;
00128
00132 virtual void OnSendOpenAck(
00133 H245_H2250LogicalChannelAckParameters & param
00134 ) const;
00135
00142 virtual PBoolean OnReceivedPDU(
00143 const H245_H2250LogicalChannelParameters & param,
00144 unsigned & errorCode
00145 );
00146
00153 virtual PBoolean OnReceivedAckPDU(
00154 const H245_H2250LogicalChannelAckParameters & param
00155 );
00156
00159 virtual PBoolean OnReceivedAckAltPDU(
00160 const H245_ArrayOf_GenericInformation & alternate
00161 );
00163
00172 virtual void OnSendRasInfo(
00173 H225_RTPSession & info
00174 );
00176
00177 #if 0 // NOTE QOS?
00178
00182 virtual PBoolean WriteTransportCapPDU(
00183 H245_TransportCapability & cap,
00184 const H323_RTPChannel & channel
00185 ) const;
00186
00189 virtual void ReadTransportCapPDU(
00190 const H245_TransportCapability & cap,
00191 H323_RTPChannel & channel
00192 );
00194 #endif
00195
00196 protected:
00197 virtual bool ExtractTransport(
00198 const H245_TransportAddress & pdu,
00199 bool isDataPort,
00200 unsigned & errorCode
00201 );
00202
00203 protected:
00204 OpalMediaSession & m_session;
00205 };
00206
00207
00208 #endif // OPAL_H323
00209
00210 #endif // OPAL_H323_H323RTP_H
00211
00212