OPAL
Version 3.18.8
|
#include <sockep.h>
Data Structures | |
struct | MediaBitrate |
struct | MediaHeader |
Public Member Functions | |
Construction | |
OpalSockConnection (OpalCall &call, OpalSockEndPoint &endpoint, void *userData, unsigned options=0, OpalConnection::StringOptions *stringOptions=NULL) | |
~OpalSockConnection () | |
Overrides from OpalConnection | |
virtual OpalMediaFormatList | GetMediaFormats () const |
virtual void | OnReleased () |
virtual bool | TransferConnection (const PString &remoteParty) |
virtual bool | OnMediaCommand (OpalMediaStream &stream, const OpalMediaCommand &command) |
Overrides from OpalLocalConnection | |
virtual bool | OnOutgoing () |
virtual bool | OnIncoming () |
virtual bool | OnReadMediaData (OpalMediaStream &mediaStream, void *data, PINDEX size, PINDEX &length) |
virtual bool | OnWriteMediaData (const OpalMediaStream &mediaStream, const void *data, PINDEX length, PINDEX &written) |
![]() | |
OpalLocalConnection (OpalCall &call, OpalLocalEndPoint &endpoint, void *userData, unsigned options, OpalConnection::StringOptions *stringOptions, char tokenPrefix= 'L') | |
~OpalLocalConnection () | |
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 OpalMediaStream * | CreateMediaStream (const OpalMediaFormat &mediaFormat, unsigned sessionID, PBoolean isSource) |
virtual void | OnClosedMediaStream (const OpalMediaStream &stream) |
virtual PBoolean | SendUserInputString (const PString &value) |
virtual bool | OnOutgoingSetUp () |
virtual void | AlertingIncoming (bool withMedia=false) |
virtual void | AcceptIncoming () |
virtual bool | OnReadMediaFrame (const OpalMediaStream &mediaStream, RTP_DataFrame &frame) |
virtual bool | OnWriteMediaFrame (const OpalMediaStream &mediaStream, RTP_DataFrame &frame) |
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 ¬ifier) |
Set a callback for when the far end camera control capabilities change. More... | |
void | SetFarEndCameraActionNotifier (const PNotifier ¬ifier) |
Set a callback for when a far end camera control action comes from remote. More... | |
void * | GetUserData () const |
Get user data pointer. More... | |
void | SetUserData (void *v) |
Set user data pointer. More... | |
![]() | |
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 StringOptions & | GetStringOptions () 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 PString | GetDestinationAddress () |
virtual PBoolean | ForwardCall (const PString &forwardParty) |
PSafePtr< OpalConnection > | GetOtherPartyConnection () const |
template<class cls > | |
PSafePtr< cls > | GetOtherPartyConnectionAs () 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 | 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 () |
OpalEndPoint & | GetEndPoint () const |
OpalCall & | GetCall () 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 OpalProductInfo & | GetProductInfo () 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 OpalProductInfo & | GetRemoteProductInfo () 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) |
OpalSilenceDetector * | GetSilenceDetector () 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 | IsOnHold (bool fromRemote) const |
virtual void | OnHold (bool fromRemote, bool onHold) |
Protected Member Functions | |
bool | OpenMediaSockets () |
bool | OpenMediaSocket (PIPSocket *&socket, const PString &addrKey, const PString &portKey, const PCaselessString &protoKey) |
PDECLARE_MUTEX (m_writeMutex) | |
![]() | |
void | InternalAcceptIncoming () |
![]() | |
PDECLARE_MUTEX (m_mediaSessionFailedMutex) | |
Socket media connection. This simply routes media to/from tcp/udp sockets
OpalSockConnection::OpalSockConnection | ( | OpalCall & | call, |
OpalSockEndPoint & | endpoint, | ||
void * | userData, | ||
unsigned | options = 0 , |
||
OpalConnection::StringOptions * | stringOptions = NULL |
||
) |
Create a new endpoint.
call | Owner calll for connection |
endpoint | Owner endpoint for connection |
userData | Arbitrary data to pass to connection |
options | Option bit map to be passed to connection |
stringOptions | Options to be passed to connection |
OpalSockConnection::~OpalSockConnection | ( | ) |
Destroy endpoint.
|
virtual |
Get the data formats this endpoint is capable of operating. This provides a list of media data format names that may be used by an OpalMediaStream may be created by a connection from this endpoint.
Note that a specific connection may not actually support all of the media formats returned here, but should return no more.
The default behaviour returns the most basic media formats, PCM audio and YUV420P video.
Reimplemented from OpalConnection.
|
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().
Reimplemented from OpalLocalConnection.
|
virtual |
Callback for media commands. Executes OnMediaCommand ont he other connection in call.
stream | Stream command executed on |
command | Media command being executed |
Reimplemented from OpalConnection.
|
virtual |
Call back to indicate that remote is ringing.
The default implementation call OpalLocalEndPoint::OnOutgoingCall().
Reimplemented from OpalLocalConnection.
|
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.
mediaStream | Media stream data is required for |
data | Data to send |
size | Maximum size of data buffer |
length | Number of bytes placed in buffer |
Reimplemented from OpalLocalConnection.
|
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.
|
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.
mediaStream | Media stream data is required for |
data | Data received |
length | Amount of data available to write |
written | Amount of data written |
Reimplemented from OpalLocalConnection.
|
protected |
|
protected |
|
protected |
|
virtual |
Initiate the transfer of an existing call (connection) to a new remote party.
If remoteParty is a valid call token, then the remote party is transferred to that party (consultation transfer) and both calls are cleared.
remoteParty | Remote party to transfer the existing call to |
Reimplemented from OpalConnection.
|
protected |
|
protected |
|
protected |