OPAL  Version 3.18.8
OpalLocalConnection Class Reference

#include <localep.h>

Inheritance diagram for OpalLocalConnection:
Collaboration diagram for OpalLocalConnection:

Public Member Functions

Construction
 OpalLocalConnection (OpalCall &call, OpalLocalEndPoint &endpoint, void *userData, unsigned options, OpalConnection::StringOptions *stringOptions, char tokenPrefix= 'L')
 
 ~OpalLocalConnection ()
 
Overrides from OpalConnection
virtual PBoolean OnIncomingConnection (unsigned int options, OpalConnection::StringOptions *stringOptions)
 
virtual PBoolean IsNetworkConnection () const
 
virtual void OnApplyStringOptions ()
 Call back for connection to act on changed string options. More...
 
virtual PBoolean SetUpConnection ()
 
virtual PBoolean SetAlerting (const PString &calleeName, PBoolean withMedia)
 
virtual PBoolean SetConnected ()
 
virtual bool HoldRemote (bool placeOnHold)
 
virtual OpalMediaStreamCreateMediaStream (const OpalMediaFormat &mediaFormat, unsigned sessionID, PBoolean isSource)
 
virtual void OnClosedMediaStream (const OpalMediaStream &stream)
 
virtual PBoolean SendUserInputString (const PString &value)
 
New operations
virtual bool OnOutgoingSetUp ()
 
virtual bool OnOutgoing ()
 
virtual bool OnIncoming ()
 
virtual void AlertingIncoming (bool withMedia=false)
 
virtual void AcceptIncoming ()
 
Media call backs
virtual bool OnReadMediaFrame (const OpalMediaStream &mediaStream, RTP_DataFrame &frame)
 
virtual bool OnWriteMediaFrame (const OpalMediaStream &mediaStream, RTP_DataFrame &frame)
 
virtual bool OnReadMediaData (OpalMediaStream &mediaStream, void *data, PINDEX size, PINDEX &length)
 
virtual bool OnWriteMediaData (const OpalMediaStream &mediaStream, const void *data, PINDEX length, PINDEX &written)
 
virtual
OpalLocalEndPoint::Synchronicity 
GetSynchronicity (const OpalMediaFormat &mediaFormat, bool isSource) const
 
virtual bool CreateVideoInputDevice (const OpalMediaFormat &mediaFormat, PVideoInputDevice *&device, bool &autoDelete)
 
virtual bool CreateVideoOutputDevice (const OpalMediaFormat &mediaFormat, bool preview, PVideoOutputDevice *&device, bool &autoDelete)
 
virtual bool ChangeVideoInputDevice (const PVideoDevice::OpenArgs &device, unsigned sessionID=0)
 
virtual bool ChangeVideoOutputDevice (const PVideoDevice::OpenArgs &device, unsigned sessionID=0, bool preview=false)
 
bool FarEndCameraControl (PVideoControlInfo::Types what, int direction=0, const PTimeInterval &duration=0)
 
void SetFarEndCameraCapabilityChangedNotifier (const PNotifier &notifier)
 Set a callback for when the far end camera control capabilities change. More...
 
void SetFarEndCameraActionNotifier (const PNotifier &notifier)
 Set a callback for when a far end camera control action comes from remote. More...
 
Member variable access
void * GetUserData () const
 Get user data pointer. More...
 
void SetUserData (void *v)
 Set user data pointer. More...
 
- Public Member Functions inherited from OpalConnection
 P_DECLARE_TRACED_ENUM_EX (CallEndReasonCodes, NumCallEndReasons, EndedByLocalUser, 0, 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, EndedByMediaFailed, EndedByCallCompletedElsewhere, EndedByCertificateAuthority, EndedByIllegalAddress, EndedByCustomCode)
 
 P_DECLARE_TRACED_ENUM (AnswerCallResponse, AnswerCallNow, AnswerCallDenied, AnswerCallPending, AnswerCallDeferred, AnswerCallAlertWithMedia, AnswerCallDeferredWithMedia, AnswerCallProgress, AnswerCallNowAndReleaseCurrent)
 
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 EnableRecording ()
 
virtual void DisableRecording ()
 
 PDECLARE_NOTIFIER (RTP_DataFrame, OpalConnection, OnRecordAudio)
 
void InternalOnRecordAudio (PString key, PAutoPtr< RTP_DataFrame > frame)
 
 PDECLARE_NOTIFIER (RTP_DataFrame, OpalConnection, OnRecordVideo)
 
void InternalOnRecordVideo (PString key, PAutoPtr< RTP_DataFrame > frame)
 
virtual void OnStartRecording (OpalMediaPatch *patch)
 
virtual void OnStopRecording (OpalMediaPatch *patch)
 
bool InternalOnConnected ()
 
bool InternalOnEstablished ()
 
void InternalSetAsOriginating ()
 
bool InternalRelease (CallEndReason reason)
 
void InternalOnReleased ()
 
void InternalExecuteMediaCommand (OpalMediaCommand *command)
 
void InternalCreatedMediaTransport (const OpalMediaTransportPtr &transport)
 
 OpalConnection (OpalCall &call, OpalEndPoint &endpoint, const PString &token, unsigned options=0, OpalConnection::StringOptions *stringOptions=NULL)
 
 ~OpalConnection ()
 
void PrintOn (ostream &strm) const
 
virtual PBoolean OnSetUpConnection ()
 
virtual void OnProceeding ()
 
virtual void OnAlerting (bool withMedia)
 
virtual void OnAlerting ()
 
virtual AnswerCallResponse OnAnswerCall (const PString &callerName)
 
virtual void AnsweringCall (AnswerCallResponse response)
 
virtual void OnConnected ()
 
virtual void OnEstablished ()
 
virtual bool OnTransferNotify (const PStringToString &info, const OpalConnection *transferringConnection)
 
virtual void Release (CallEndReason reason=EndedByLocalUser, bool synchronous=false)
 
virtual void OnReleased ()
 
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 void AdjustMediaFormats (bool local, const OpalConnection *otherConnection, OpalMediaFormatList &mediaFormats) const
 
virtual PStringArray GetMediaCryptoSuites () const
 
virtual unsigned GetNextSessionID (const OpalMediaType &mediaType, bool isSource)
 
virtual bool RequireSymmetricMediaStreams () const
 
virtual
OpalMediaType::AutoStartMode 
GetAutoStart (const OpalMediaType &mediaType) const
 
virtual void AutoStartMediaStreams (bool transfer=false)
 
virtual OpalMediaStreamPtr OpenMediaStream (const OpalMediaFormat &mediaFormat, unsigned sessionID, bool isSource)
 
bool CloseMediaStream (unsigned sessionId, bool source)
 
bool CloseMediaStream (OpalMediaStreamPtr 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
 
bool GetStatistics (const OpalMediaType &mediaType, bool source, OpalMediaStatistics &statistics) const
 Get media statistics of the type, and of the specifed direction. More...
 
virtual PBoolean OnOpenMediaStream (OpalMediaStream &stream)
 
virtual void OnFailedMediaStream (bool fromRemote, const PString &reason)
 
virtual void OnPatchMediaStream (PBoolean isSource, OpalMediaPatch &patch)
 
virtual void OnStartMediaPatch (OpalMediaPatch &patch)
 
virtual void OnStopMediaPatch (OpalMediaPatch &patch)
 
virtual bool OnMediaFailed (unsigned sessionId)
 
bool AllMediaFailed () const
 
virtual bool OnMediaCommand (OpalMediaStream &stream, const OpalMediaCommand &command)
 
virtual bool ExecuteMediaCommand (const OpalMediaCommand &command, bool aync=false) const
 
virtual bool GetMediaTransportAddresses (OpalConnection &otherConnection, unsigned sessionId, const OpalMediaType &mediaType, OpalTransportAddressArray &transports) 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)
 
OpalBandwidth GetBandwidthAvailable (OpalBandwidth::Direction dir) const
 
virtual bool SetBandwidthAvailable (OpalBandwidth::Direction dir, OpalBandwidth availableBandwidth)
 
virtual bool SetBandwidthAllocated (OpalBandwidth::Direction dir, OpalBandwidth newBandwidth)
 
virtual OpalBandwidth GetBandwidthUsed (OpalBandwidth::Direction dir) const
 
virtual bool SetBandwidthUsed (OpalBandwidth::Direction dir, OpalBandwidth releasedBandwidth, OpalBandwidth requiredBandwidth)
 
 P_DECLARE_TRACED_ENUM (SendUserInputModes, SendUserInputAsQ931, SendUserInputAsString, SendUserInputAsTone, SendUserInputAsRFC2833, SendUserInputAsInlineRFC2833=SendUserInputAsRFC2833, SendUserInputInBand, SendUserInputAsProtocolDefault)
 
virtual void SetSendUserInputMode (SendUserInputModes mode)
 
virtual SendUserInputModes GetSendUserInputMode () const
 
virtual SendUserInputModes GetRealSendUserInputMode () const
 
virtual PBoolean SendUserInputTone (char tone, unsigned duration=0)
 
virtual void OnUserInputString (const PString &value)
 
void OnUserInputStringCallback (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="YX#\r\n", unsigned lastDigitTimeout=4, unsigned firstDigitTimeout=30)
 
virtual PBoolean PromptUserInput (PBoolean play)
 
virtual bool GetConferenceState (OpalConferenceState *state) const
 
virtual bool RequestPresentationRole (bool release)
 
virtual bool OnChangedPresentationRole (const PString &newChairURI, bool request)
 
virtual bool HasPresentationRole () const
 
virtual bool GarbageCollection ()
 
OpalEndPointGetEndPoint () const
 
OpalCallGetCall () const
 
const PString & GetToken () const
 
virtual void SetToken (const PString &newToken)
 
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
 
virtual OpalTransportAddress GetRemoteAddress () const
 
virtual PString GetRemotePartyURL () const
 
virtual PString GetRemoteIdentity () const
 
P_DEPRECATED PString GetRemotePartyAddress () const
 
P_DEPRECATED const PString GetRemotePartyCallbackURL () const
 
PCaselessString GetRemoteApplication () const
 
const OpalProductInfoGetRemoteProductInfo () const
 
void SetRemoteProductInfo (const OpalProductInfo &info)
 
const PString & GetRedirectingParty () const
 
void SetRedirectingParty (const PString &party)
 
const PString & GetCalledPartyName () const
 
void SetCalledPartyName (const PString &name)
 
const PString & GetCalledPartyNumber () const
 
virtual PString GetCalledPartyURL ()
 
virtual PMultiPartList GetExtraCallInfo () const
 
void CopyPartyNames (const OpalConnection &other)
 
virtual PString GetAlertingType () const
 
virtual bool SetAlertingType (const PString &info)
 
virtual PString GetCallInfo () const
 
virtual PString GetSupportedFeatures () const
 
unsigned GetMinAudioJitterDelay () const
 
unsigned GetMaxAudioJitterDelay () const
 
void SetAudioJitterDelay (unsigned minDelay, unsigned maxDelay)
 
OpalSilenceDetectorGetSilenceDetector () const
 
virtual PString GetIdentifier () const
 
virtual PINDEX GetMaxRtpPayloadSize () const
 
 P_DECLARE_STREAMABLE_ENUM (Phases, UninitialisedPhase, SetUpPhase, ProceedingPhase, AlertingPhase, ConnectedPhase, EstablishedPhase, ForwardingPhase, ReleasingPhase, ReleasedPhase)
 
__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 IsOnHold (bool fromRemote) const
 
virtual void OnHold (bool fromRemote, bool onHold)
 

Protected Member Functions

void InternalAcceptIncoming ()
 
- Protected Member Functions inherited from OpalConnection
 PDECLARE_MUTEX (m_mediaSessionFailedMutex)
 

Protected Attributes

OpalLocalEndPointm_endpoint
 
void * m_userData
 
OpalH224Handlerm_h224Handler
 
OpalFarEndCameraControlm_farEndCameraControl
 
- Protected Attributes inherited from OpalConnection
OpalCallm_ownerCall
 
OpalEndPointm_endpoint
 
PString m_callToken
 
PBoolean m_originating
 
OpalProductInfo m_productInfo
 
PString m_localPartyName
 
PString m_displayName
 
PString m_remotePartyName
 
PString m_remotePartyURL
 
OpalProductInfo m_remoteProductInfo
 
PString m_remotePartyNumber
 
PString m_redirectingParty
 
CallEndReason m_callEndReason
 
PString m_calledPartyNumber
 
PString m_calledPartyName
 
SendUserInputModes m_sendUserInputMode
 
PString m_userInputString
 
PSyncPoint m_userInputAvailable
 
OpalSilenceDetectorm_silenceDetector
 
OpalMediaFormat m_filterMediaFormat
 
OpalMediaFormatList m_localMediaFormats
 
StreamDict m_mediaStreams
 
PSafeList< OpalMediaTransportm_mediaTransports
 
OpalJitterBuffer::Params m_jitterParams
 
OpalBandwidth m_rxBandwidthAvailable
 
OpalBandwidth m_txBandwidthAvailable
 
StringOptions m_stringOptions
 
PString m_recordingFilename
 
PNotifier m_recordAudioNotifier
 
PNotifier m_recordVideoNotifier
 
OpalMediaType::AutoStartMap m_autoStartInfo
 
ZeroTime m_phaseTime [NumPhases]
 
std::set< unsigned > m_mediaSessionFailed
 

Friends

class PSafeWorkNoArg< OpalLocalConnection >
 

Additional Inherited Members

- Public Types inherited from OpalConnection
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,
  SynchronousSetUp = 0x1000
}
 
- 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
typedef PSafeDictionary
< StreamKey, OpalMediaStream
StreamDict
 

Detailed Description

Local connection. This class represents a connection on the local machine that can receive media via virtual functions.

Constructor & Destructor Documentation

OpalLocalConnection::OpalLocalConnection ( OpalCall call,
OpalLocalEndPoint endpoint,
void *  userData,
unsigned  options,
OpalConnection::StringOptions stringOptions,
char  tokenPrefix = 'L' 
)

Create a new connection.

Parameters
callOwner call for connection
endpointOwner endpoint for connection
userDataArbitrary data to pass to connection
optionsOption bit mask to pass to connection
stringOptionsOptions to pass to connection
tokenPrefixPrefix for token generation
OpalLocalConnection::~OpalLocalConnection ( )

Destroy connection.

Member Function Documentation

virtual void OpalLocalConnection::AcceptIncoming ( )
virtual

Accept the incoming connection.

Reimplemented in OpalPCSSConnection.

virtual void OpalLocalConnection::AlertingIncoming ( bool  withMedia = false)
virtual

Indicate alerting for the incoming connection.

Parameters
withMediaIndicate media should be started

Reimplemented in OpalPCSSConnection.

virtual bool OpalLocalConnection::ChangeVideoInputDevice ( const PVideoDevice::OpenArgs &  device,
unsigned  sessionID = 0 
)
virtual

Change a PVideoInputDevice for a source media stream.

Parameters
deviceDevice to change to
sessionIDSession for media stream, 0 indicates first video stream
virtual bool OpalLocalConnection::ChangeVideoOutputDevice ( const PVideoDevice::OpenArgs &  device,
unsigned  sessionID = 0,
bool  preview = false 
)
virtual

Create an PVideoOutputDevice for a sink media stream or the preview display for a source media stream.

Parameters
deviceDevice to change to
sessionIDSession for media stream, 0 indicates first video stream
previewFlag indicating is a preview output device
virtual OpalMediaStream* OpalLocalConnection::CreateMediaStream ( const OpalMediaFormat mediaFormat,
unsigned  sessionID,
PBoolean  isSource 
)
virtual

Open 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.

The default behaviour is pure.

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

Reimplemented from OpalConnection.

Reimplemented in OpalMixerConnection, OpalPCSSConnection, and OpalIVRConnection.

virtual bool OpalLocalConnection::CreateVideoInputDevice ( const OpalMediaFormat mediaFormat,
PVideoInputDevice *&  device,
bool &  autoDelete 
)
virtual

Create an PVideoInputDevice for a source media stream.

Parameters
mediaFormatMedia format for stream
deviceCreated device
autoDeleteFlag for auto delete device
virtual bool OpalLocalConnection::CreateVideoOutputDevice ( const OpalMediaFormat mediaFormat,
bool  preview,
PVideoOutputDevice *&  device,
bool &  autoDelete 
)
virtual

Create an PVideoOutputDevice for a sink media stream or the preview display for a source media stream.

Parameters
mediaFormatMedia format for stream
previewFlag indicating is a preview output
deviceCreated device
autoDeleteFlag for auto delete device
bool OpalLocalConnection::FarEndCameraControl ( PVideoControlInfo::Types  what,
int  direction = 0,
const PTimeInterval &  duration = 0 
)

Start/Stop Far End Camera Control on remote system. If direction is negative then starts panning left, tilting down, zoom out or focus out.

If direction is positive then starts panning right, tilting up, zoom in or focus in.

If direction is zero then the operation is stopped. This can also be used to determine if the remote is capabile of the operation.

If duration is non-zero then the actionis automatically stopped after that period. Zero indicated continue until explicitly stopped.

Returns
false if the operation cannot be performed.
Parameters
whatWhat to control, pan, tilt, zoom or focus
directionDirection to move
durationDuration of move
virtual OpalLocalEndPoint::Synchronicity OpalLocalConnection::GetSynchronicity ( const OpalMediaFormat mediaFormat,
bool  isSource 
) const
virtual

Indicate the I/O synchronous mode. See Synchronicity for more details.

Default behaviour returns m_defaultAudioSynchronicity (initially e_Synchronous) when is audio source or sink, m_defaultVideoSourceSynchronicity (initially e_Synchronous) when a video source, e_Asynchronous in all other cases.

Parameters
mediaFormatMedia format for stream being opened.
isSourceStream is a a source
void* OpalLocalConnection::GetUserData ( ) const
inline

Get user data pointer.

virtual bool OpalLocalConnection::HoldRemote ( bool  placeOnHold)
virtual

Put the current connection on hold, suspending media streams. The streams from the remote are always paused. The streams from the local to the remote are conditionally paused depending on underlying logic for "music on hold" functionality.

The fromRemote parameter indicates if we a putting the remote on hold (false) or it is a request for the remote to put us on hold (true).

The /p placeOnHold parameter indicates of the command/request is for going on hold or retrieving from hold.

Returns
true if hold request successfully initiated. The OnHold() call back must be monitored for final confirmation of hold state.
Parameters
placeOnHoldFlag for setting on or off hold

Reimplemented from OpalConnection.

void OpalLocalConnection::InternalAcceptIncoming ( )
protected
virtual PBoolean OpalLocalConnection::IsNetworkConnection ( ) const
inlinevirtual

Get indication of connection being to a "network". This indicates the if the connection may be regarded as a "network" connection. The distinction is about if there is a concept of a "remote" party being connected to and is best described by example: sip, h323, iax and pstn are all "network" connections as they connect to something "remote". While pc, pots and ivr are not as the entity being connected to is intrinsically local.

Implements OpalConnection.

Reimplemented in OpalIVRConnection.

virtual void OpalLocalConnection::OnApplyStringOptions ( )
virtual

Call back for connection to act on changed string options.

Reimplemented from OpalConnection.

Reimplemented in OpalMixerConnection, and OpalPCSSConnection.

virtual void OpalLocalConnection::OnClosedMediaStream ( const OpalMediaStream stream)
virtual

Call back for closed a media stream.

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

Parameters
streamMedia stream being closed

Reimplemented from OpalConnection.

virtual bool OpalLocalConnection::OnIncoming ( )
virtual

Call back to indicate that there is an incoming call. Note this function should not block or it will impede the operation of the stack.

The default implementation call OpalLocalEndPoint::OnIncomingCall().

Returns
false if the call is to be aborted with status of EndedByLocalBusy.

Reimplemented in OpalSockConnection.

virtual PBoolean OpalLocalConnection::OnIncomingConnection ( unsigned int  options,
OpalConnection::StringOptions stringOptions 
)
virtual

Call back for an incoming call. This function is used for an application to control the answering of incoming calls.

If true is returned then the connection continues. If false then the connection is aborted.

Note this function should not block for any length of time. If the decision to answer the call may take some time eg waiting for a user to pick up the phone, then AnswerCallPending or AnswerCallDeferred should be returned.

If an application overrides this function, it should generally call the ancestor version to complete calls. Unless the application completely takes over that responsibility. Generally, an application would only intercept this function if it wishes to do some form of logging. For this you can obtain the name of the caller by using the function OpalConnection::GetRemotePartyName().

The default behaviour calls the base class then OnOutgoingSetUp().

Note that the most explicit version of this override is made pure, so as to force descendant classes to implement it. This will only affect code that implements new descendants of OpalConnection - code that uses existing descendants will be unaffected

Reimplemented from OpalConnection.

virtual bool OpalLocalConnection::OnOutgoing ( )
virtual

Call back to indicate that remote is ringing.

The default implementation call OpalLocalEndPoint::OnOutgoingCall().

Returns
false if the call is to be aborted with EndedByNoAccept.

Reimplemented in OpalSockConnection.

virtual bool OpalLocalConnection::OnOutgoingSetUp ( )
virtual

Call back just before remote is contacted.

The default implementation call OpalLocalEndPoint::OnOutgoingSetUp().

Returns
false if the call is to be aborted with EndedByNoAccept.
virtual bool OpalLocalConnection::OnReadMediaData ( OpalMediaStream mediaStream,
void *  data,
PINDEX  size,
PINDEX &  length 
)
virtual

Call back to get media data for transmission. If false is returned the media stream will be closed.

Care with the handling of real time is required, see GetSynchronicity for more details.

The default implementation fills the buffer with zeros and returns true.

Parameters
mediaStreamMedia stream data is required for
dataData to send
sizeMaximum size of data buffer
lengthNumber of bytes placed in buffer

Reimplemented in OpalSockConnection.

virtual bool OpalLocalConnection::OnReadMediaFrame ( const OpalMediaStream mediaStream,
RTP_DataFrame frame 
)
virtual

Call back to get media data for transmission. If false is returned then OnReadMediaData() is called.

Care with the handling of real time is required, see GetSynchronicity for more details.

The default implementation returns false.

Parameters
mediaStreamMedia stream data is required for
frameRTP frame for data
virtual bool OpalLocalConnection::OnWriteMediaData ( const OpalMediaStream mediaStream,
const void *  data,
PINDEX  length,
PINDEX &  written 
)
virtual

Call back to handle received media data. If false is returned the media stream will be closed.

It is expected that this function be real time. That is if 320 bytes of PCM-16 are written, this function should take 20ms to execute. If not then the jitter buffer will not operate correctly and audio will not be of high quality. This timing can be simulated if required, see GetSynchronicity for more details.

Note: For encoded audio media, if data is NULL then that indicates there is no incoming audio available from the jitter buffer. The application should output silence for a time. The written value should still contain the bytes of silence emitted, even though it will be larger that length. This does not occcur for raw (PCM-16) audio.

The default implementation ignores the media data and returns true.

Parameters
mediaStreamMedia stream data is required for
dataData received
lengthAmount of data available to write
writtenAmount of data written

Reimplemented in OpalSockConnection.

virtual bool OpalLocalConnection::OnWriteMediaFrame ( const OpalMediaStream mediaStream,
RTP_DataFrame frame 
)
virtual

Call back to handle received media data. If false is returned then OnWriteMediaData() is called.

Care with the handling of real time is required, see GetSynchronicity for more details.

Note it is the responsibility of this function to update the frame timestamp for correct operation of the jitter buffer.

The default implementation returns false.

Parameters
mediaStreamMedia stream data is required for
frameRTP frame for data
virtual PBoolean OpalLocalConnection::SendUserInputString ( const PString &  value)
virtual

Send a user input indication to the remote endpoint. This sends an arbitrary string as a user indication. If DTMF tones in particular are required to be sent then the SendIndicationTone() function should be used.

The default behaviour plays the DTMF tones on the line.

Parameters
valueString value of indication

Reimplemented from OpalConnection.

Reimplemented in OpalMixerConnection, and OpalIVRConnection.

virtual PBoolean OpalLocalConnection::SetAlerting ( const PString &  calleeName,
PBoolean  withMedia 
)
virtual

Indicate to remote endpoint an alert is in progress. If this is an incoming connection and the AnswerCallResponse is in a AnswerCallDeferred or AnswerCallPending state, then this function is used to indicate to that endpoint that an alert is in progress. This is usually due to another connection which is in the call (the B party) has received an OnAlerting() indicating that its remote endpoint is "ringing".

The default behaviour does nothing.

Parameters
calleeNameName of endpoint being alerted.
withMediaOpen media with alerting

Reimplemented from OpalConnection.

Reimplemented in OpalPCSSConnection.

virtual PBoolean OpalLocalConnection::SetConnected ( )
virtual

Indicate to remote endpoint we are connected.

The default behaviour sets the phase to ConnectedPhase, sets the connection start time and then checks if there is any media channels opened and if so, moves on to the established phase, calling OnEstablished().

In other words, this method is used to handle incoming calls, and is an indication that we have accepted the incoming call.

Reimplemented from OpalConnection.

void OpalLocalConnection::SetFarEndCameraActionNotifier ( const PNotifier &  notifier)

Set a callback for when a far end camera control action comes from remote.

void OpalLocalConnection::SetFarEndCameraCapabilityChangedNotifier ( const PNotifier &  notifier)

Set a callback for when the far end camera control capabilities change.

virtual PBoolean OpalLocalConnection::SetUpConnection ( )
virtual

Start an outgoing connection. This function will initiate the connection to the remote entity, for example in H.323 it sends a SETUP, in SIP it sends an INVITE etc.

The default behaviour determines if this si incoming or outgoing call by checking if we are party A or B, then does approriate setting up of the conenction, including calling OnOutgoing() or OnIncoming() as appropriate.

Reimplemented from OpalConnection.

void OpalLocalConnection::SetUserData ( void *  v)
inline

Set user data pointer.

References m_userData.

Friends And Related Function Documentation

friend class PSafeWorkNoArg< OpalLocalConnection >
friend

Field Documentation

OpalLocalEndPoint& OpalLocalConnection::m_endpoint
protected
OpalFarEndCameraControl* OpalLocalConnection::m_farEndCameraControl
protected
OpalH224Handler* OpalLocalConnection::m_h224Handler
protected
void* OpalLocalConnection::m_userData
protected

Referenced by SetUserData().


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