OPAL  Version 3.10.10
OpalRTPConnection Class Reference

#include <rtpconn.h>

Inheritance diagram for OpalRTPConnection:
OpalConnection H323Connection SIPConnection

Data Structures

struct  MediaInformation
 

Public Member Functions

virtual void AttachRFC2833HandlerToPatch (PBoolean isSource, OpalMediaPatch &patch)
 
virtual PBoolean SendUserInputTone (char tone, unsigned duration=0)
 
virtual void SessionFailing (RTP_Session &session)
 
Construction
 OpalRTPConnection (OpalCall &call, OpalRTPEndPoint &endpoint, const PString &token, unsigned options=0, OpalConnection::StringOptions *stringOptions=NULL)
 
 ~OpalRTPConnection ()
 
virtual void OnReleased ()
 
RTP Session Management
virtual unsigned GetNextSessionID (const OpalMediaType &mediaType, bool isSource)
 
virtual RTP_SessionGetSession (unsigned sessionID) const
 
virtual OpalMediaSessionGetMediaSession (unsigned sessionID) const
 
virtual RTP_SessionUseSession (const OpalTransport &transport, unsigned sessionID, const OpalMediaType &mediatype, RTP_QOS *rtpqos=NULL)
 
virtual void CloseSession (unsigned sessionID)
 
virtual RTP_SessionCreateSession (const OpalTransport &transport, unsigned sessionID, const OpalMediaType &mediaType, RTP_QOS *rtpqos)
 
virtual RTP_UDPCreateRTPSession (unsigned sessionId, const OpalMediaType &mediaType, bool remoteIsNat)
 
virtual bool ChangeSessionID (unsigned fromSessionID, unsigned toSessionID)
 
NAT Management
virtual PBoolean RemoteIsNAT () const
 
virtual PBoolean IsRTPNATEnabled (const PIPSocket::Address &localAddr, const PIPSocket::Address &peerAddr, const PIPSocket::Address &signalAddr, PBoolean incoming)
 
Overrides from OpalConnection
virtual PBoolean GetMediaInformation (unsigned sessionID, MediaInformation &info) const
 
virtual PBoolean IsMediaBypassPossible (unsigned sessionID) const
 
virtual OpalMediaStreamCreateMediaStream (const OpalMediaFormat &mediaFormat, unsigned sessionID, PBoolean isSource)
 
virtual void AdjustMediaFormats (bool local, const OpalConnection *otherConnection, OpalMediaFormatList &mediaFormats) const
 
virtual void OnPatchMediaStream (PBoolean isSource, OpalMediaPatch &patch)
 
virtual bool OnMediaCommand (OpalMediaStream &stream, const OpalMediaCommand &command)
 
- Public Member Functions inherited from OpalConnection
virtual bool GarbageCollection ()
 
const StringOptionsGetStringOptions () const
 Get the string options associated with this connection. More...
 
void SetStringOptions (const StringOptions &options, bool overwrite)
 Set the string options associated with this connection. More...
 
virtual void OnApplyStringOptions ()
 Call back for connection to act on changed string options. More...
 
virtual void EnableRecording ()
 
virtual void DisableRecording ()
 
 OpalConnection (OpalCall &call, OpalEndPoint &endpoint, const PString &token, unsigned options=0, OpalConnection::StringOptions *stringOptions=NULL)
 
 ~OpalConnection ()
 
void PrintOn (ostream &strm) const
 
virtual PBoolean OnIncomingConnection (unsigned int options, OpalConnection::StringOptions *stringOptions)
 
virtual PBoolean SetUpConnection ()=0
 
virtual PBoolean OnSetUpConnection ()
 
virtual void OnProceeding ()
 
virtual void OnAlerting ()
 
virtual PBoolean SetAlerting (const PString &calleeName, PBoolean withMedia)=0
 
virtual AnswerCallResponse OnAnswerCall (const PString &callerName)
 
virtual void AnsweringCall (AnswerCallResponse response)
 
virtual void OnConnected ()
 
virtual PBoolean SetConnected ()
 
virtual void OnEstablished ()
 
virtual bool OnTransferNotify (const PStringToString &info, const OpalConnection *transferringConnection)
 
virtual void Release (CallEndReason reason=EndedByLocalUser, bool synchronous=false)
 
virtual PString GetDestinationAddress ()
 
virtual PBoolean ForwardCall (const PString &forwardParty)
 
PSafePtr< OpalConnectionGetOtherPartyConnection () const
 
template<class cls >
PSafePtr< cls > GetOtherPartyConnectionAs () const
 
virtual OpalMediaFormatList GetMediaFormats () const
 
virtual OpalMediaFormatList GetLocalMediaFormats ()
 
virtual OpalMediaType::AutoStartMode GetAutoStart (const OpalMediaType &mediaType) const
 
virtual void AutoStartMediaStreams (bool force=false)
 
virtual bool SwitchFaxMediaStreams (bool toT38)
 
virtual void OnSwitchedFaxMediaStreams (bool toT38, bool success)
 
virtual bool OnSwitchingFaxMediaStreams (bool toT38)
 
virtual OpalMediaStreamPtr OpenMediaStream (const OpalMediaFormat &mediaFormat, unsigned sessionID, bool isSource)
 
virtual bool CloseMediaStream (unsigned sessionId, bool source)
 
virtual bool CloseMediaStream (OpalMediaStream &stream)
 
bool RemoveMediaStream (OpalMediaStream &strm)
 
virtual void StartMediaStreams ()
 
virtual void CloseMediaStreams ()
 
virtual void PauseMediaStreams (bool paused)
 
virtual void OnPauseMediaStream (OpalMediaStream &strm, bool paused)
 
OpalMediaStreamPtr GetMediaStream (const PString &streamID, bool source) const
 
OpalMediaStreamPtr GetMediaStream (unsigned sessionId, bool source) const
 
OpalMediaStreamPtr GetMediaStream (const OpalMediaType &mediaType, bool source, OpalMediaStreamPtr previous=NULL) const
 
virtual PBoolean OnOpenMediaStream (OpalMediaStream &stream)
 
virtual void OnClosedMediaStream (const OpalMediaStream &stream)
 
virtual void OnStartMediaPatch (OpalMediaPatch &patch)
 
virtual void OnStopMediaPatch (OpalMediaPatch &patch)
 
virtual PBoolean CreateVideoInputDevice (const OpalMediaFormat &mediaFormat, PVideoInputDevice *&device, PBoolean &autoDelete)
 
virtual PBoolean CreateVideoOutputDevice (const OpalMediaFormat &mediaFormat, PBoolean preview, PVideoOutputDevice *&device, PBoolean &autoDelete)
 
virtual bool SendVideoUpdatePicture (unsigned sessionID=0, bool force=false) const
 
virtual PBoolean SetAudioVolume (PBoolean source, unsigned percentage)
 
virtual PBoolean GetAudioVolume (PBoolean source, unsigned &percentage)
 
virtual bool SetAudioMute (bool source, bool mute)
 
virtual bool GetAudioMute (bool source, bool &mute)
 
virtual unsigned GetAudioSignalLevel (PBoolean source)
 
unsigned GetBandwidthAvailable () const
 
virtual PBoolean SetBandwidthAvailable (unsigned newBandwidth, PBoolean force=false)
 
virtual unsigned GetBandwidthUsed () const
 
virtual PBoolean SetBandwidthUsed (unsigned releasedBandwidth, unsigned requiredBandwidth)
 
OpalEndPointGetEndPoint () const
 
OpalCallGetCall () const
 
const PString & GetToken () const
 
PBoolean IsOriginating () const
 
const PTime & GetPhaseTime (Phases phase) const
 
const PTime & GetSetupUpTime () const
 
const PTime & GetAlertingTime () const
 
const PTime & GetConnectionStartTime () const
 
const PTime & GetConnectionEndTime () const
 
const OpalProductInfoGetProductInfo () const
 
void SetProductInfo (const OpalProductInfo &info)
 
virtual PString GetPrefixName () const
 
const PString & GetLocalPartyName () const
 
virtual void SetLocalPartyName (const PString &name)
 
virtual PString GetLocalPartyURL () const
 
const PString & GetDisplayName () const
 
void SetDisplayName (const PString &name)
 
virtual bool IsPresentationBlocked () const
 
const PString & GetRemotePartyName () const
 
void SetRemotePartyName (const PString &name)
 
const PString & GetRemotePartyNumber () const
 
const PString & GetRemotePartyAddress () const
 
void SetRemotePartyAddress (const PString &addr)
 
virtual PString GetRemotePartyURL () const
 
const PString & GetRedirectingParty () const
 
void SetRedirectingParty (const PString &party)
 
const PString GetRemotePartyCallbackURL () const
 
PCaselessString GetRemoteApplication () const
 
const OpalProductInfoGetRemoteProductInfo () const
 
const PString & GetCalledPartyName () const
 
const PString & GetCalledPartyNumber () const
 
virtual PString GetCalledPartyURL ()
 
void CopyPartyNames (const OpalConnection &other)
 
virtual PString GetAlertingType () const
 
virtual bool SetAlertingType (const PString &info)
 
virtual PString GetCallInfo () const
 
unsigned GetMinAudioJitterDelay () const
 
unsigned GetMaxAudioJitterDelay () const
 
void SetAudioJitterDelay (unsigned minDelay, unsigned maxDelay)
 
OpalSilenceDetectorGetSilenceDetector () const
 
virtual PString GetIdentifier () const
 
virtual PINDEX GetMaxRtpPayloadSize () const
 
virtual OpalTransportGetTransport () const
 
 PDICTIONARY (MediaAddressesDict, POrdinalKey, OpalTransportAddress)
 
MediaAddressesDict & GetMediaTransportAddresses ()
 
unsigned GetVideoUpdateRequestsSent () const
 
virtual bool IsNetworkConnection () const =0
 
__inline Phases GetPhase () const
 
__inline bool IsEstablished () const
 Return true if connection is in the established phase. More...
 
__inline bool IsReleased () const
 Return true if connection is in the established phase. More...
 
void SetPhase (Phases phaseToSet)
 
CallEndReason GetCallEndReason () const
 
PString GetCallEndReasonText () const
 
virtual void SetCallEndReason (CallEndReason reason)
 
void ClearCall (CallEndReason reason=EndedByLocalUser, PSyncPoint *sync=NULL)
 
virtual void ClearCallSynchronous (PSyncPoint *sync, CallEndReason reason=EndedByLocalUser)
 
unsigned GetQ931Cause () const
 
void SetQ931Cause (unsigned v)
 
virtual bool TransferConnection (const PString &remoteParty)
 
virtual bool Hold (bool fromRemote, bool placeOnHold)
 
virtual bool IsOnHold (bool fromRemote)
 
virtual void OnHold (bool fromRemote, bool onHold)
 
virtual void SetSendUserInputMode (SendUserInputModes mode)
 
virtual SendUserInputModes GetSendUserInputMode () const
 
virtual SendUserInputModes GetRealSendUserInputMode () const
 
virtual PBoolean SendUserInputString (const PString &value)
 
virtual void OnUserInputString (const PString &value)
 
virtual void OnUserInputTone (char tone, unsigned duration)
 
void SendUserInputHookFlash (unsigned duration=500)
 
virtual PString GetUserInput (unsigned timeout=30)
 
virtual void SetUserInput (const PString &input)
 
virtual PString ReadUserInput (const char *terminators="#\r\n", unsigned lastDigitTimeout=4, unsigned firstDigitTimeout=30)
 
virtual PBoolean PromptUserInput (PBoolean play)
 

Protected Member Functions

 PDECLARE_NOTIFIER (OpalRFC2833Info, OpalRTPConnection, OnUserInputInlineRFC2833)
 
 PDECLARE_NOTIFIER (OpalRFC2833Info, OpalRTPConnection, OnUserInputInlineCiscoNSE)
 
- Protected Member Functions inherited from OpalConnection
void OnConnectedInternal ()
 
 PDECLARE_NOTIFIER (PThread, OpalConnection, OnReleaseThreadMain)
 
 PDECLARE_NOTIFIER (RTP_DataFrame, OpalConnection, OnRecordAudio)
 
 PDECLARE_NOTIFIER (RTP_DataFrame, OpalConnection, OnRecordVideo)
 
void OnStartRecording (OpalMediaPatch *patch)
 
void OnStopRecording (OpalMediaPatch *patch)
 

Protected Attributes

OpalRTPSessionManager m_rtpSessions
 
OpalRFC2833Protorfc2833Handler
 
PBoolean remoteIsNAT
 
PBoolean useRTPAggregation
 
- Protected Attributes inherited from OpalConnection
OpalCallownerCall
 
OpalEndPointendpoint
 
PString callToken
 
PBoolean originating
 
OpalProductInfo productInfo
 
PString localPartyName
 
PString displayName
 
PString remotePartyName
 
PString remotePartyURL
 
OpalProductInfo remoteProductInfo
 
PString remotePartyNumber
 
PString remotePartyAddress
 
PString m_redirectingParty
 
CallEndReason callEndReason
 
PString m_calledPartyNumber
 
PString m_calledPartyName
 
SendUserInputModes sendUserInputMode
 
PString userInputString
 
PSyncPoint userInputAvailable
 
OpalSilenceDetectorsilenceDetector
 
OpalMediaFormat m_filterMediaFormat
 
OpalMediaFormatList m_localMediaFormats
 
MediaAddressesDict mediaTransportAddresses
 
PSafeList< OpalMediaStreammediaStreams
 
unsigned minAudioJitterDelay
 
unsigned maxAudioJitterDelay
 
unsigned bandwidthAvailable
 
StringOptions m_stringOptions
 
PString m_recordingFilename
 
PNotifier m_recordAudioNotifier
 
PNotifier m_recordVideoNotifier
 
unsigned m_VideoUpdateRequestsSent
 
AutoStartMap m_autoStartInfo
 
enum OpalConnection:: { ... }  m_faxMediaStreamsSwitchState
 
ZeroTime m_phaseTime [NumPhases]
 

Additional Inherited Members

- Public Types inherited from OpalConnection
enum  CallEndReasonCodes {
  EndedByLocalUser, EndedByNoAccept, EndedByAnswerDenied, EndedByRemoteUser,
  EndedByRefusal, EndedByNoAnswer, EndedByCallerAbort, EndedByTransportFail,
  EndedByConnectFail, EndedByGatekeeper, EndedByNoUser, EndedByNoBandwidth,
  EndedByCapabilityExchange, EndedByCallForwarded, EndedBySecurityDenial, EndedByLocalBusy,
  EndedByLocalCongestion, EndedByRemoteBusy, EndedByRemoteCongestion, EndedByUnreachable,
  EndedByNoEndPoint, EndedByHostOffline, EndedByTemporaryFailure, EndedByQ931Cause,
  EndedByDurationLimit, EndedByInvalidConferenceID, EndedByNoDialTone, EndedByNoRingBackTone,
  EndedByOutOfService, EndedByAcceptingCallWaiting, EndedByGkAdmissionFailed, NumCallEndReasons
}
 
enum  AnswerCallResponse {
  AnswerCallNow, AnswerCallDenied, AnswerCallPending, AnswerCallDeferred,
  AnswerCallAlertWithMedia, AnswerCallDeferredWithMedia, AnswerCallProgress, AnswerCallNowAndReleaseCurrent,
  NumAnswerCallResponses
}
 
enum  Options {
  FastStartOptionDisable = 0x0001, FastStartOptionEnable = 0x0002, FastStartOptionMask = 0x0003, H245TunnelingOptionDisable = 0x0004,
  H245TunnelingOptionEnable = 0x0008, H245TunnelingOptionMask = 0x000c, H245inSetupOptionDisable = 0x0010, H245inSetupOptionEnable = 0x0020,
  H245inSetupOptionMask = 0x0030, DetectInBandDTMFOptionDisable = 0x0040, DetectInBandDTMFOptionEnable = 0x0080, DetectInBandDTMFOptionMask = 0x00c0,
  RTPAggregationDisable = 0x0100, RTPAggregationEnable = 0x0200, RTPAggregationMask = 0x0300, SendDTMFAsDefault = 0x0000,
  SendDTMFAsString = 0x0400, SendDTMFAsTone = 0x0800, SendDTMFAsRFC2833 = 0x0c00, SendDTMFMask = 0x0c00
}
 
enum  Phases {
  UninitialisedPhase, SetUpPhase, ProceedingPhase, AlertingPhase,
  ConnectedPhase, EstablishedPhase, ForwardingPhase, ReleasingPhase,
  ReleasedPhase, NumPhases
}
 
enum  SendUserInputModes {
  SendUserInputAsQ931, SendUserInputAsString, SendUserInputAsTone, SendUserInputAsRFC2833,
  SendUserInputInBand, SendUserInputAsProtocolDefault, NumSendUserInputModes, SendUserInputAsInlineRFC2833 = SendUserInputAsRFC2833
}
 
- Static Public Member Functions inherited from OpalConnection
static PString GetCallEndReasonText (CallEndReason reason)
 
static void SetCallEndReasonText (CallEndReasonCodes reasonCode, const PString &newText)
 
- Protected Types inherited from OpalConnection
enum  { e_NotSwitchingFaxMediaStreams, e_SwitchingToFaxMediaStreams, e_SwitchingFromFaxMediaStreams }
 

Detailed Description

This is the base class for OpalConnections that use RTP sessions, such as H.323 and SIPconnections to an endpoint.

Constructor & Destructor Documentation

OpalRTPConnection::OpalRTPConnection ( OpalCall call,
OpalRTPEndPoint endpoint,
const PString &  token,
unsigned  options = 0,
OpalConnection::StringOptions stringOptions = NULL 
)

Create a new connection.

Parameters
callOwner calll for connection
endpointOwner endpoint for connection
tokenToken to identify the connection
optionsConnection options
stringOptionsmore complex options
OpalRTPConnection::~OpalRTPConnection ( )

Destroy connection.

Member Function Documentation

virtual void OpalRTPConnection::AdjustMediaFormats ( bool  local,
const OpalConnection otherConnection,
OpalMediaFormatList mediaFormats 
) const
virtual

Adjust media formats available on a connection. This is called by a connection after it has called OpalCall::GetMediaFormats() to get all media formats that it can use so that an application may remove or reorder the media formats before they are used to open media streams.

This function may also be executed by other connections in the call. If this happens then the "otherConnection" parameter will be non-NULL. The "local" parameter sense is relative to the "otherConnection" parameter, if NULL then it is relative to "this".

The default behaviour calls the OpalEndPoint function of the same name.

Parameters
localMedia formats a local ones to be presented to remote
otherConnectionOther connection we are adjusting media for
mediaFormatsMedia formats to use

Reimplemented from OpalConnection.

virtual void OpalRTPConnection::AttachRFC2833HandlerToPatch ( PBoolean  isSource,
OpalMediaPatch patch 
)
virtual

Attaches the RFC 2833 handler to the media patch This method may be called from subclasses, e.g. within OnPatchMediaStream()

Reimplemented from OpalConnection.

virtual bool OpalRTPConnection::ChangeSessionID ( unsigned  fromSessionID,
unsigned  toSessionID 
)
virtual

Change the sessionID for an existing session. This will adjust the RTP session and media streams.

Return false if no such session exists.

Parameters
fromSessionIDSession ID to search for
toSessionIDSession ID to change to
virtual void OpalRTPConnection::CloseSession ( unsigned  sessionID)
virtual

Release the session.

Parameters
sessionIDRTP session number, 0 indicates all
virtual OpalMediaStream* OpalRTPConnection::CreateMediaStream ( const OpalMediaFormat mediaFormat,
unsigned  sessionID,
PBoolean  isSource 
)
virtual

Create a new media stream. This will create a media stream of an appropriate subclass as required by the underlying connection protocol. For instance H.323 would create an OpalRTPStream.

The sessionID parameter may not be needed by a particular media stream and may be ignored. In the case of an OpalRTPStream it us used.

Note that media streams may be created internally to the underlying protocol. This function is not the only way a stream can come into existance.

Parameters
mediaFormatMedia format for stream
sessionIDSession number for stream
isSourceIs a source stream

Reimplemented from OpalConnection.

virtual RTP_UDP* OpalRTPConnection::CreateRTPSession ( unsigned  sessionId,
const OpalMediaType mediaType,
bool  remoteIsNat 
)
virtual

Create a new underlying RTP session instance.

virtual RTP_Session* OpalRTPConnection::CreateSession ( const OpalTransport transport,
unsigned  sessionID,
const OpalMediaType mediaType,
RTP_QOS rtpqos 
)
virtual

Create and open a new RTP session. The type of RTP session that is created will be compatible with the transport. At this time only IP (RTP over UDP) is supported.

virtual PBoolean OpalRTPConnection::GetMediaInformation ( unsigned  sessionID,
MediaInformation info 
) const
virtual

Get information on the media channel for the connection. The default behaviour checked the mediaTransportAddresses dictionary for the session ID and returns information based on that. It also uses the rfc2833Handler variable for that part of the info.

It is up to the descendant class to assure that the mediaTransportAddresses dictionary is set correctly before OnIncomingCall() is executed.

Parameters
sessionIDSession ID for media channel
infoInformation on media channel

Reimplemented in H323Connection.

virtual OpalMediaSession* OpalRTPConnection::GetMediaSession ( unsigned  sessionID) const
virtual
Parameters
sessionIDRTP session number
virtual unsigned OpalRTPConnection::GetNextSessionID ( const OpalMediaType mediaType,
bool  isSource 
)
virtual

Get next available session ID for the media type.

Parameters
mediaTypeMedia type of stream being opened
isSourceStream is a source/sink

Reimplemented from OpalConnection.

Reimplemented in H323Connection.

virtual RTP_Session* OpalRTPConnection::GetSession ( unsigned  sessionID) const
virtual

Get an RTP session for the specified ID. If there is no session of the specified ID, NULL is returned.

Parameters
sessionIDRTP session number
virtual PBoolean OpalRTPConnection::IsMediaBypassPossible ( unsigned  sessionID) const
virtual

See if the media can bypass the local host.

The default behaviour returns true if the session is audio or video.

Parameters
sessionIDSession ID for media channel

Reimplemented from OpalConnection.

virtual PBoolean OpalRTPConnection::IsRTPNATEnabled ( const PIPSocket::Address &  localAddr,
const PIPSocket::Address &  peerAddr,
const PIPSocket::Address &  signalAddr,
PBoolean  incoming 
)
virtual

Determine if the RTP session needs to accommodate a NAT router. For endpoints that do not use STUN or something similar to set up all the correct protocol embeddded addresses correctly when a NAT router is between the endpoints, it is possible to still accommodate the call, with some restrictions. This function determines if the RTP can proceed with special NAT allowances.

The special allowance is that the RTP code will ignore whatever the remote indicates in the protocol for the address to send RTP data and wait for the first packet to arrive from the remote and will then proceed to send all RTP data back to that address AND port.

The default behaviour checks the values of the physical link (localAddr/peerAddr) against the signaling address the remote indicated in the protocol, eg H.323 SETUP sourceCallSignalAddress or SIP "To" or "Contact" fields, and makes a guess that the remote is behind a NAT router.

Parameters
localAddrLocal physical address of connection
peerAddrRemote physical address of connection
signalAddrRemotes signaling address as indicated by protocol of connection
incomingIncoming/outgoing connection
virtual bool OpalRTPConnection::OnMediaCommand ( OpalMediaStream stream,
const OpalMediaCommand command 
)
virtual

Callback for media commands. Calls the SendIntraFrameRequest on the rtp session

Returns
true if command is handled.
Parameters
streamStream command executed on
commandMedia command being executed

Reimplemented from OpalConnection.

Reimplemented in H323Connection, and SIPConnection.

virtual void OpalRTPConnection::OnPatchMediaStream ( PBoolean  isSource,
OpalMediaPatch patch 
)
virtual

Call back when patching a media stream. This function is called when a connection has created a new media patch between two streams. This is usually called twice per media patch, once for the source stream and once for the sink stream.

Note this is not called within the context of the patch thread and is called before that thread has started.

Parameters
isSourceIs source/sink call
patchNew patch

Reimplemented from OpalConnection.

virtual void OpalRTPConnection::OnReleased ( )
virtual

Clean up the termination of the connection. This function can do any internal cleaning up and waiting on background threads that may be using the connection object.

Note that there is not a one to one relationship with the OnEstablishedConnection() function. This function may be called without that function being called. For example if SetUpConnection() was used but the call never completed.

Classes that override this function should make sure they call the ancestor version for correct operation.

An application will not typically call this function as it is used by the OpalManager during a release of the connection.

The default behaviour calls the OpalEndPoint function of the same name.

Reimplemented from OpalConnection.

Reimplemented in SIPConnection, and H323Connection.

OpalRTPConnection::PDECLARE_NOTIFIER ( OpalRFC2833Info  ,
OpalRTPConnection  ,
OnUserInputInlineRFC2833   
)
protected
OpalRTPConnection::PDECLARE_NOTIFIER ( OpalRFC2833Info  ,
OpalRTPConnection  ,
OnUserInputInlineCiscoNSE   
)
protected
virtual PBoolean OpalRTPConnection::RemoteIsNAT ( ) const
inlinevirtual

Return true if the remote appears to be behind a NAT firewall

virtual PBoolean OpalRTPConnection::SendUserInputTone ( char  tone,
unsigned  duration = 0 
)
virtual

Send a user input indication to the remote endpoint. This sends DTMF emulation user input. If something more sophisticated than the simple tones that can be sent using the SendUserInput() function.

A duration of zero indicates that no duration is to be indicated. A non-zero logical channel indicates that the tone is to be syncronised with the logical channel at the rtpTimestamp value specified.

The tone parameter must be one of "0123456789#*ABCD!" where '!' indicates a hook flash. If tone is a ' ' character then a signalUpdate PDU is sent that updates the last tone indication sent. See the H.245 specifcation for more details on this.

The default behaviour sends the tone using RFC2833.

Parameters
toneDTMF tone code
durationDuration of tone in milliseconds

Reimplemented from OpalConnection.

Reimplemented in H323Connection, and SIPConnection.

virtual void OpalRTPConnection::SessionFailing ( RTP_Session session)
virtual
virtual RTP_Session* OpalRTPConnection::UseSession ( const OpalTransport transport,
unsigned  sessionID,
const OpalMediaType mediatype,
RTP_QOS rtpqos = NULL 
)
virtual

Use an RTP session for the specified ID. This will find a session of the specified ID and uses it if available.

If there is no session of the specified ID one is created.

The type of RTP session that is created will be compatible with the transport. At this time only IP (RTP over UDP) is supported.

Parameters
transportTransport of signalling
sessionIDRTP session number
mediatypemedia type
rtpqosQuiality of Service information

Reimplemented in H323Connection.

Field Documentation

OpalRTPSessionManager OpalRTPConnection::m_rtpSessions
protected
PBoolean OpalRTPConnection::remoteIsNAT
protected
OpalRFC2833Proto* OpalRTPConnection::rfc2833Handler
protected
PBoolean OpalRTPConnection::useRTPAggregation
protected

The documentation for this class was generated from the following file: