OPAL  Version 3.14.3
OpalRTPSession Class Reference

#include <rtp_session.h>

Inheritance diagram for OpalRTPSession:
Collaboration diagram for OpalRTPSession:

Data Structures

class  ReceiverReport
 
class  SenderReport
 
class  SourceDescription
 

Public Types

typedef PNotifierTemplate
< SendReceiveStatus & > 
FilterNotifier
 
- Public Types inherited from OpalMediaSession
typedef PList< PChannel > Transport
 

Public Member Functions

virtual void SetCloseOnBYE (bool v)
 
virtual void SendFlowControl (unsigned maxBitRate, unsigned overhead=0, bool notify=false)
 
virtual void SendIntraFrameRequest (bool rfc2032, bool pictureLoss)
 
virtual void SendTemporalSpatialTradeOff (unsigned tradeOff)
 
void SetNextSentSequenceNumber (WORD num)
 
DWORD GetLastSentTimestamp () const
 
const PTimeInterval & GetLastSentPacketTime () const
 
DWORD GetSyncSourceIn () const
 
void AddFilter (const FilterNotifier &filter)
 
virtual void SendBYE ()
 
bool SetQoS (const PIPSocket::QoS &qos)
 
Construction
 OpalRTPSession (const Init &init)
 
 ~OpalRTPSession ()
 
Overrides from class OpalMediaSession
virtual const PCaselessString & GetSessionType () const
 
virtual bool Open (const PString &localInterface, const OpalTransportAddress &remoteAddress, bool isMediaAddress)
 
virtual bool IsOpen () const
 
virtual bool Close ()
 
virtual bool Shutdown (bool reading)
 
virtual OpalTransportAddress GetLocalAddress (bool isMediaAddress=true) const
 
virtual OpalTransportAddress GetRemoteAddress (bool isMediaAddress=true) const
 
virtual bool SetRemoteAddress (const OpalTransportAddress &remoteAddress, bool isMediaAddress=true)
 
virtual void AttachTransport (Transport &transport)
 
virtual Transport DetachTransport ()
 
virtual OpalMediaStreamCreateMediaStream (const OpalMediaFormat &mediaFormat, unsigned sessionID, bool isSource)
 
Operations
bool SetJitterBufferSize (const OpalJitterBuffer::Init &init)
 
unsigned GetJitterBufferSize () const
 
unsigned GetJitterBufferDelay () const
 
unsigned GetJitterTimeUnits () const
 
virtual bool ReadData (RTP_DataFrame &frame)
 
virtual bool WriteData (RTP_DataFrame &frame, const PIPSocketAddressAndPort *remote=NULL, bool rewriteHeader=true)
 
void SendReport (bool force)
 
virtual bool WriteControl (RTP_ControlFrame &frame, const PIPSocketAddressAndPort *remote=NULL)
 
virtual void Restart (bool isReading)
 
virtual PString GetLocalHostName ()
 
virtual void GetStatistics (OpalMediaStatistics &statistics, bool receiver) const
 
- Public Member Functions inherited from OpalMediaSession
void OfferCryptoSuite (const PString &cryptoSuite)
 
virtual OpalMediaCryptoKeyListGetOfferedCryptoKeys ()
 
virtual bool ApplyCryptoKey (OpalMediaCryptoKeyList &keys, bool rx)
 
virtual bool IsCryptoSecured (bool rx) const
 
OpalConnectionGetConnection () const
 
unsigned GetSessionID () const
 
const OpalMediaTypeGetMediaType () const
 
const PString & GetLocalUsername () const
 
const PString & GetLocalPassword () const
 
virtual void SetRemoteUserPass (const PString &user, const PString &pass)
 

Static Public Member Functions

static const PCaselessString & RTP_AVP ()
 
static const PCaselessString & RTP_AVPF ()
 

Protected Types

typedef PSafePtr
< OpalJitterBuffer,
PSafePtrMultiThreaded > 
JitterBufferPtr
 

Protected Member Functions

ReceiverReportArray BuildReceiverReportArray (const RTP_ControlFrame &frame, PINDEX offset)
 
void AddReceiverReport (RTP_ControlFrame::ReceiverReport &receiver)
 
bool InitialiseControlFrame (RTP_ControlFrame &report)
 
virtual SendReceiveStatus ReadDataPDU (RTP_DataFrame &frame)
 
virtual SendReceiveStatus OnReadTimeout (RTP_DataFrame &frame)
 
virtual bool InternalReadData (RTP_DataFrame &frame)
 
virtual SendReceiveStatus ReadControlPDU ()
 
virtual SendReceiveStatus ReadRawPDU (BYTE *framePtr, PINDEX &frameSize, bool fromDataChannel)
 
virtual bool HandleUnreachable (PTRACE_PARAM(const char *channelName))
 
virtual bool WriteRawPDU (const BYTE *framePtr, PINDEX frameSize, bool toDataChannel, const PIPSocketAddressAndPort *remote=NULL)
 
void SaveOutOfOrderPacket (RTP_DataFrame &frame)
 
 PDECLARE_NOTIFIER (PTimer, OpalRTPSession, TimedSendReport)
 
- Protected Member Functions inherited from OpalMediaSession
 OpalMediaSession (const Init &init)
 

Protected Attributes

OpalRTPEndPointm_endpoint
 
bool m_singlePort
 
bool m_isAudio
 
unsigned m_timeUnits
 
PString m_canonicalName
 
PString m_groupId
 
PString m_toolName
 
RTPExtensionHeaders m_extensionHeaders
 
PTimeInterval m_maxNoReceiveTime
 
PTimeInterval m_maxNoTransmitTime
 
DWORD syncSourceOut
 
DWORD syncSourceIn
 
DWORD lastSentTimestamp
 
bool allowAnySyncSource
 
bool allowOneSyncSourceChange
 
bool allowSequenceChange
 
unsigned txStatisticsInterval
 
unsigned rxStatisticsInterval
 
WORD lastSentSequenceNumber
 
WORD expectedSequenceNumber
 
PTimeInterval lastSentPacketTime
 
PTimeInterval lastReceivedPacketTime
 
PTime lastSRTimestamp
 
PTime lastSRReceiveTime
 
PTime lastRRSendTime
 
WORD lastRRSequenceNumber
 
bool resequenceOutOfOrderPackets
 
unsigned consecutiveOutOfOrderPackets
 
PTimeInterval outOfOrderWaitTime
 
PTimeInterval outOfOrderPacketTime
 
BYTE m_lastFIRSequenceNumber
 
BYTE m_lastTSTOSequenceNumber
 
RTP_DataFrameList m_pendingPackets
 
PTime firstPacketSent
 
DWORD packetsSent
 
DWORD rtcpPacketsSent
 
DWORD octetsSent
 
PTime firstPacketReceived
 
DWORD packetsReceived
 
DWORD senderReportsReceived
 
DWORD octetsReceived
 
DWORD packetsLost
 
DWORD packetsLostByRemote
 
DWORD packetsOutOfOrder
 
DWORD averageSendTime
 
DWORD maximumSendTime
 
DWORD minimumSendTime
 
DWORD averageReceiveTime
 
DWORD maximumReceiveTime
 
DWORD minimumReceiveTime
 
DWORD jitterLevel
 
DWORD jitterLevelOnRemote
 
DWORD maximumJitterLevel
 
DWORD roundTripTime
 
DWORD m_syncTimestamp
 
PTime m_syncRealTime
 
DWORD markerSendCount
 
DWORD markerRecvCount
 
unsigned txStatisticsCount
 
unsigned rxStatisticsCount
 
DWORD averageSendTimeAccum
 
DWORD maximumSendTimeAccum
 
DWORD minimumSendTimeAccum
 
DWORD averageReceiveTimeAccum
 
DWORD maximumReceiveTimeAccum
 
DWORD minimumReceiveTimeAccum
 
DWORD packetsLostSinceLastRR
 
DWORD lastTransitTime
 
DWORD m_lastReceivedStatisticTimestamp
 
RTP_DataFrame::PayloadTypes lastReceivedPayloadType
 
bool ignorePayloadTypeChanges
 
PMutex m_reportMutex
 
PTimer m_reportTimer
 
PMutex m_dataMutex
 
PMutex m_readMutex
 
bool m_closeOnBye
 
bool m_byeSent
 
list< FilterNotifierm_filters
 
PIPSocket::Address m_localAddress
 
WORD m_localDataPort
 
WORD m_localControlPort
 
PIPSocket::Address m_remoteAddress
 
WORD m_remoteDataPort
 
WORD m_remoteControlPort
 
PIPSocket::QoS m_qos
 
PUDPSocket * m_dataSocket
 
PUDPSocket * m_controlSocket
 
bool m_shutdownRead
 
bool m_shutdownWrite
 
bool m_remoteBehindNAT
 
bool m_localHasRestrictedNAT
 
bool m_firstControl
 
DWORD m_noTransmitErrors
 
PSimpleTimer m_noTransmitTimer
 
JitterBufferPtr m_jitterBuffer
 
ApplDefinedNotifierList m_applDefinedNotifiers
 
- Protected Attributes inherited from OpalMediaSession
OpalConnectionm_connection
 
unsigned m_sessionId
 
OpalMediaType m_mediaType
 
PString m_localUsername
 
PString m_localPassword
 
PString m_remoteUsername
 
PString m_remotePassword
 
OpalMediaCryptoKeyList m_offeredCryptokeys
 

Friends

class RTP_JitterBuffer
 

Call back functions

enum  SendReceiveStatus { e_ProcessPacket, e_IgnorePacket, e_AbortTransport }
 
typedef PNotifierListTemplate
< const
RTP_ControlFrame::ApplDefinedInfo & > 
ApplDefinedNotifierList
 
typedef PNotifierTemplate
< const
RTP_ControlFrame::ApplDefinedInfo & > 
ApplDefinedNotifier
 
virtual SendReceiveStatus OnSendData (RTP_DataFrame &frame, bool rewriteHeader)
 
virtual SendReceiveStatus OnSendControl (RTP_ControlFrame &frame)
 
virtual SendReceiveStatus OnReceiveData (RTP_DataFrame &frame, PINDEX pduSize)
 
virtual SendReceiveStatus OnReceiveData (RTP_DataFrame &frame)
 
virtual SendReceiveStatus OnReceiveControl (RTP_ControlFrame &frame)
 
 PARRAY (ReceiverReportArray, ReceiverReport)
 
virtual void OnRxSenderReport (const SenderReport &sender, const ReceiverReportArray &reports)
 
virtual void OnRxReceiverReport (DWORD src, const ReceiverReportArray &reports)
 
virtual void OnReceiverReports (const ReceiverReportArray &reports)
 
 PARRAY (SourceDescriptionArray, SourceDescription)
 
virtual void OnRxSourceDescription (const SourceDescriptionArray &descriptions)
 
virtual void OnRxGoodbye (const PDWORDArray &sources, const PString &reason)
 
virtual void OnRxApplDefined (const RTP_ControlFrame::ApplDefinedInfo &info)
 
void AddApplDefinedNotifier (const ApplDefinedNotifier &notifier)
 
void RemoveApplDefinedNotifier (const ApplDefinedNotifier &notifier)
 

Member variable access

enum  { JitterRoundingGuardBits = 4 }
 
void SetSinglePort (bool v=true)
 
bool IsAudio () const
 
void SetAudio (bool aud)
 
PString GetCanonicalName () const
 
void SetCanonicalName (const PString &name)
 
PString GetGroupId () const
 
void SetGroupId (const PString &id)
 
PString GetToolName () const
 
void SetToolName (const PString &name)
 
RTPExtensionHeaders GetExtensionHeaders () const
 
void SetExtensionHeader (const RTPExtensionHeaders &ext)
 
DWORD GetSyncSourceOut () const
 
bool AllowAnySyncSource () const
 
void SetAnySyncSource (bool allow)
 
void SetIgnorePayloadTypeChanges (bool ignore)
 
const PTimeInterval & GetMaxNoReceiveTime ()
 
void SetMaxNoReceiveTime (const PTimeInterval &interval)
 
const PTimeInterval & GetMaxNoTransmitTime ()
 
void SetMaxNoTransmitTime (const PTimeInterval &interval)
 
PTimeInterval GetReportTimeInterval ()
 
void SetReportTimeInterval (const PTimeInterval &interval)
 
unsigned GetTxStatisticsInterval ()
 
void SetTxStatisticsInterval (unsigned packets)
 
unsigned GetRxStatisticsInterval ()
 
void SetRxStatisticsInterval (unsigned packets)
 
void ClearStatistics ()
 
virtual WORD GetLocalDataPort () const
 
virtual WORD GetLocalControlPort () const
 
virtual WORD GetRemoteDataPort () const
 
virtual WORD GetRemoteControlPort () const
 
virtual PUDPSocket & GetDataSocket ()
 
virtual PUDPSocket & GetControlSocket ()
 
DWORD GetPacketsSent () const
 
DWORD GetOctetsSent () const
 
DWORD GetPacketsReceived () const
 
DWORD GetOctetsReceived () const
 
DWORD GetPacketsLost () const
 
DWORD GetPacketsLostByRemote () const
 
DWORD GetPacketsOutOfOrder () const
 
DWORD GetPacketsTooLate () const
 
DWORD GetPacketOverruns () const
 
DWORD GetAverageSendTime () const
 
DWORD GetMarkerRecvCount () const
 
DWORD GetMarkerSendCount () const
 
DWORD GetMaximumSendTime () const
 
DWORD GetMinimumSendTime () const
 
DWORD GetAverageReceiveTime () const
 
DWORD GetMaximumReceiveTime () const
 
DWORD GetMinimumReceiveTime () const
 
DWORD GetAvgJitterTime () const
 
DWORD GetMaxJitterTime () const
 
DWORD GetJitterTimeOnRemote () const
 
DWORD GetRoundTripTime () const
 

Detailed Description

This class is for encpsulating the IETF Real Time Protocol interface.

Member Typedef Documentation

typedef PNotifierTemplate<SendReceiveStatus &> OpalRTPSession::FilterNotifier
typedef PSafePtr<OpalJitterBuffer, PSafePtrMultiThreaded> OpalRTPSession::JitterBufferPtr
protected

Member Enumeration Documentation

anonymous enum
Enumerator
JitterRoundingGuardBits 
Enumerator
e_ProcessPacket 
e_IgnorePacket 
e_AbortTransport 

Constructor & Destructor Documentation

OpalRTPSession::OpalRTPSession ( const Init init)

Create a new RTP session.

OpalRTPSession::~OpalRTPSession ( )

Delete a session. This deletes the userData field if autoDeleteUserData is true.

Member Function Documentation

void OpalRTPSession::AddApplDefinedNotifier ( const ApplDefinedNotifier notifier)
inline
void OpalRTPSession::AddFilter ( const FilterNotifier filter)
void OpalRTPSession::AddReceiverReport ( RTP_ControlFrame::ReceiverReport receiver)
protected
bool OpalRTPSession::AllowAnySyncSource ( ) const
inline

Indicate if will ignore all but first received SSRC value.

References allowAnySyncSource.

virtual void OpalRTPSession::AttachTransport ( Transport transport)
virtual

Reimplemented from OpalMediaSession.

ReceiverReportArray OpalRTPSession::BuildReceiverReportArray ( const RTP_ControlFrame frame,
PINDEX  offset 
)
protected
void OpalRTPSession::ClearStatistics ( )

Clear statistics

virtual bool OpalRTPSession::Close ( )
virtual

Reimplemented from OpalMediaSession.

virtual OpalMediaStream* OpalRTPSession::CreateMediaStream ( const OpalMediaFormat mediaFormat,
unsigned  sessionID,
bool  isSource 
)
virtual

Implements OpalMediaSession.

virtual Transport OpalRTPSession::DetachTransport ( )
virtual

Reimplemented from OpalMediaSession.

DWORD OpalRTPSession::GetAverageReceiveTime ( ) const
inline

Get average time between received packets. This is averaged over the last rxStatisticsInterval packets and is in milliseconds.

References averageReceiveTime.

DWORD OpalRTPSession::GetAverageSendTime ( ) const
inline

Get average time between sent packets. This is averaged over the last txStatisticsInterval packets and is in milliseconds.

References averageSendTime.

DWORD OpalRTPSession::GetAvgJitterTime ( ) const
inline

Get averaged jitter time for received packets. This is the calculated statistical variance of the interarrival time of received packets in milliseconds.

References GetJitterTimeUnits(), jitterLevel, and JitterRoundingGuardBits.

PString OpalRTPSession::GetCanonicalName ( ) const

Get the canonical name for the RTP session.

virtual PUDPSocket& OpalRTPSession::GetControlSocket ( )
inlinevirtual

Get control UDP socket of session.

References m_controlSocket.

virtual PUDPSocket& OpalRTPSession::GetDataSocket ( )
inlinevirtual

Get data UDP socket of session.

References m_dataSocket.

RTPExtensionHeaders OpalRTPSession::GetExtensionHeaders ( ) const

Get the RTP header extension codes for the session.

PString OpalRTPSession::GetGroupId ( ) const

Get the group id for the RTP session.

unsigned OpalRTPSession::GetJitterBufferDelay ( ) const
inline
unsigned OpalRTPSession::GetJitterBufferSize ( ) const

Get current size of the jitter buffer. This returns the currently used jitter buffer delay in RTP timestamp units. It will be some value between the minimum and maximum set in the SetJitterBufferSize() function.

Referenced by GetJitterBufferDelay().

DWORD OpalRTPSession::GetJitterTimeOnRemote ( ) const
inline

Get jitter time for received packets on remote. This is the calculated statistical variance of the interarrival time of received packets in milliseconds.

References GetJitterTimeUnits(), and jitterLevelOnRemote.

unsigned OpalRTPSession::GetJitterTimeUnits ( ) const
inline

Get current time units of the jitter buffer.

References m_timeUnits.

Referenced by GetAvgJitterTime(), GetJitterBufferDelay(), GetJitterTimeOnRemote(), and GetMaxJitterTime().

const PTimeInterval& OpalRTPSession::GetLastSentPacketTime ( ) const
inline

References lastSentPacketTime.

DWORD OpalRTPSession::GetLastSentTimestamp ( ) const
inline

References lastSentTimestamp.

virtual OpalTransportAddress OpalRTPSession::GetLocalAddress ( bool  isMediaAddress = true) const
virtual

Reimplemented from OpalMediaSession.

virtual WORD OpalRTPSession::GetLocalControlPort ( ) const
inlinevirtual

Get local control port of session.

References m_localControlPort.

virtual WORD OpalRTPSession::GetLocalDataPort ( ) const
inlinevirtual

Get local data port of session.

References m_localDataPort.

virtual PString OpalRTPSession::GetLocalHostName ( )
virtual

Get the local host name as used in SDES packes.

DWORD OpalRTPSession::GetMarkerRecvCount ( ) const
inline

Get the number of marker packets received this session. This can be used to find out the number of frames received in a video RTP stream.

References markerRecvCount.

DWORD OpalRTPSession::GetMarkerSendCount ( ) const
inline

Get the number of marker packets sent this session. This can be used to find out the number of frames sent in a video RTP stream.

References markerSendCount.

DWORD OpalRTPSession::GetMaximumReceiveTime ( ) const
inline

Get maximum time between received packets. This is over the last rxStatisticsInterval packets and is in milliseconds.

References maximumReceiveTime.

DWORD OpalRTPSession::GetMaximumSendTime ( ) const
inline

Get maximum time between sent packets. This is over the last txStatisticsInterval packets and is in milliseconds.

References maximumSendTime.

DWORD OpalRTPSession::GetMaxJitterTime ( ) const
inline

Get averaged jitter time for received packets. This is the maximum value of jitterLevel for the session.

References GetJitterTimeUnits(), JitterRoundingGuardBits, and maximumJitterLevel.

const PTimeInterval& OpalRTPSession::GetMaxNoReceiveTime ( )
inline

Get the maximum time we wait for packets from remote.

References m_maxNoReceiveTime.

const PTimeInterval& OpalRTPSession::GetMaxNoTransmitTime ( )
inline

Get the maximum time we wait for remote to start accepting out packets.

References m_maxNoTransmitTime.

DWORD OpalRTPSession::GetMinimumReceiveTime ( ) const
inline

Get minimum time between received packets. This is over the last rxStatisticsInterval packets and is in milliseconds.

References minimumReceiveTime.

DWORD OpalRTPSession::GetMinimumSendTime ( ) const
inline

Get minimum time between sent packets. This is over the last txStatisticsInterval packets and is in milliseconds.

References minimumSendTime.

DWORD OpalRTPSession::GetOctetsReceived ( ) const
inline

Get total number of octets received in session.

References octetsReceived.

DWORD OpalRTPSession::GetOctetsSent ( ) const
inline

Get total number of octets sent in session.

References octetsSent.

DWORD OpalRTPSession::GetPacketOverruns ( ) const

Get total number received packets that could not fit into the jitter buffer.

DWORD OpalRTPSession::GetPacketsLost ( ) const
inline

Get total number received packets lost in session.

References packetsLost.

DWORD OpalRTPSession::GetPacketsLostByRemote ( ) const
inline

Get total number transmitted packets lost by remote in session. Determined via RTCP.

References packetsLostByRemote.

DWORD OpalRTPSession::GetPacketsOutOfOrder ( ) const
inline

Get total number of packets received out of order in session.

References packetsOutOfOrder.

DWORD OpalRTPSession::GetPacketsReceived ( ) const
inline

Get total number of packets received in session.

References packetsReceived.

DWORD OpalRTPSession::GetPacketsSent ( ) const
inline

Get total number of packets sent in session.

References packetsSent.

DWORD OpalRTPSession::GetPacketsTooLate ( ) const

Get total number received packets too late to go into jitter buffer.

virtual OpalTransportAddress OpalRTPSession::GetRemoteAddress ( bool  isMediaAddress = true) const
virtual

Reimplemented from OpalMediaSession.

virtual WORD OpalRTPSession::GetRemoteControlPort ( ) const
inlinevirtual

Get remote control port of session.

References m_remoteControlPort.

virtual WORD OpalRTPSession::GetRemoteDataPort ( ) const
inlinevirtual

Get remote data port of session.

References m_remoteDataPort.

PTimeInterval OpalRTPSession::GetReportTimeInterval ( )
inline

Get the time interval for sending RTCP reports in the session.

References m_reportTimer.

DWORD OpalRTPSession::GetRoundTripTime ( ) const
inline

Get round trip time to remote. This is calculated according to the RFC 3550 algorithm.

References roundTripTime.

unsigned OpalRTPSession::GetRxStatisticsInterval ( )
inline

Get the interval for receiver statistics in the session.

References rxStatisticsInterval.

virtual const PCaselessString& OpalRTPSession::GetSessionType ( ) const
inlinevirtual

Implements OpalMediaSession.

References RTP_AVP().

virtual void OpalRTPSession::GetStatistics ( OpalMediaStatistics statistics,
bool  receiver 
) const
virtual

Reimplemented from OpalMediaSession.

DWORD OpalRTPSession::GetSyncSourceIn ( ) const
inline

References syncSourceIn.

DWORD OpalRTPSession::GetSyncSourceOut ( ) const
inline

Get the source output identifier.

References syncSourceOut.

PString OpalRTPSession::GetToolName ( ) const

Get the tool name for the RTP session.

unsigned OpalRTPSession::GetTxStatisticsInterval ( )
inline

Get the interval for transmitter statistics in the session.

References txStatisticsInterval.

virtual bool OpalRTPSession::HandleUnreachable ( PTRACE_PARAM(const char *channelName)  )
protectedvirtual
bool OpalRTPSession::InitialiseControlFrame ( RTP_ControlFrame report)
protected
virtual bool OpalRTPSession::InternalReadData ( RTP_DataFrame frame)
protectedvirtual
bool OpalRTPSession::IsAudio ( ) const
inline

Get flag for is audio RTP.

References m_isAudio.

virtual bool OpalRTPSession::IsOpen ( ) const
virtual

Reimplemented from OpalMediaSession.

virtual SendReceiveStatus OpalRTPSession::OnReadTimeout ( RTP_DataFrame frame)
protectedvirtual
virtual SendReceiveStatus OpalRTPSession::OnReceiveControl ( RTP_ControlFrame frame)
virtual
virtual SendReceiveStatus OpalRTPSession::OnReceiveData ( RTP_DataFrame frame,
PINDEX  pduSize 
)
virtual
virtual SendReceiveStatus OpalRTPSession::OnReceiveData ( RTP_DataFrame frame)
virtual
virtual void OpalRTPSession::OnReceiverReports ( const ReceiverReportArray &  reports)
virtual
virtual void OpalRTPSession::OnRxApplDefined ( const RTP_ControlFrame::ApplDefinedInfo info)
virtual
virtual void OpalRTPSession::OnRxGoodbye ( const PDWORDArray &  sources,
const PString &  reason 
)
virtual
virtual void OpalRTPSession::OnRxReceiverReport ( DWORD  src,
const ReceiverReportArray &  reports 
)
virtual
virtual void OpalRTPSession::OnRxSenderReport ( const SenderReport sender,
const ReceiverReportArray &  reports 
)
virtual
virtual void OpalRTPSession::OnRxSourceDescription ( const SourceDescriptionArray &  descriptions)
virtual
virtual SendReceiveStatus OpalRTPSession::OnSendControl ( RTP_ControlFrame frame)
virtual
virtual SendReceiveStatus OpalRTPSession::OnSendData ( RTP_DataFrame frame,
bool  rewriteHeader 
)
virtual
virtual bool OpalRTPSession::Open ( const PString &  localInterface,
const OpalTransportAddress remoteAddress,
bool  isMediaAddress 
)
virtual

Reimplemented from OpalMediaSession.

OpalRTPSession::PARRAY ( ReceiverReportArray  ,
ReceiverReport   
)
OpalRTPSession::PARRAY ( SourceDescriptionArray  ,
SourceDescription   
)
OpalRTPSession::PDECLARE_NOTIFIER ( PTimer  ,
OpalRTPSession  ,
TimedSendReport   
)
protected
virtual SendReceiveStatus OpalRTPSession::ReadControlPDU ( )
protectedvirtual
virtual bool OpalRTPSession::ReadData ( RTP_DataFrame frame)
virtual

Read a data frame from the RTP channel. This function will conditionally read data from the jitter buffer or directly if there is no jitter buffer enabled.

Parameters
frameFrame read from the RTP session
virtual SendReceiveStatus OpalRTPSession::ReadDataPDU ( RTP_DataFrame frame)
protectedvirtual
virtual SendReceiveStatus OpalRTPSession::ReadRawPDU ( BYTE *  framePtr,
PINDEX &  frameSize,
bool  fromDataChannel 
)
protectedvirtual
void OpalRTPSession::RemoveApplDefinedNotifier ( const ApplDefinedNotifier notifier)
inline
virtual void OpalRTPSession::Restart ( bool  isReading)
virtual

Restarts an existing session in the given direction.

static const PCaselessString& OpalRTPSession::RTP_AVP ( )
static

Referenced by GetSessionType().

static const PCaselessString& OpalRTPSession::RTP_AVPF ( )
static
void OpalRTPSession::SaveOutOfOrderPacket ( RTP_DataFrame frame)
protected
virtual void OpalRTPSession::SendBYE ( )
virtual
virtual void OpalRTPSession::SendFlowControl ( unsigned  maxBitRate,
unsigned  overhead = 0,
bool  notify = false 
)
virtual

Send flow control (Temporary Maximum Media Stream Bit Rate) Request/Notification.

Parameters
maxBitRateNew temporary maximum bit rate
overheadProtocol overhead, defaults to IP/UDP/RTP header size
notifySend request/notification
virtual void OpalRTPSession::SendIntraFrameRequest ( bool  rfc2032,
bool  pictureLoss 
)
virtual

Tell the rtp session to send out an intra frame request control packet. This is called when the media stream receives an OpalVideoUpdatePicture media command.

void OpalRTPSession::SendReport ( bool  force)

Send a report to remote.

virtual void OpalRTPSession::SendTemporalSpatialTradeOff ( unsigned  tradeOff)
virtual

Tell the rtp session to send out an temporal spatial trade off request control packet. This is called when the media stream receives an OpalTemporalSpatialTradeOff media command.

void OpalRTPSession::SetAnySyncSource ( bool  allow)
inline

Indicate if will ignore all but first received SSRC value.

Parameters
allowFlag for allow any SSRC values

References allowAnySyncSource.

void OpalRTPSession::SetAudio ( bool  aud)
inline

Set flag for RTP session is audio.

Parameters
audNew audio indication flag

References m_isAudio.

void OpalRTPSession::SetCanonicalName ( const PString &  name)

Set the canonical name for the RTP session.

virtual void OpalRTPSession::SetCloseOnBYE ( bool  v)
inlinevirtual

References m_closeOnBye.

void OpalRTPSession::SetExtensionHeader ( const RTPExtensionHeaders ext)

Set the RTP header extension codes for the session.

void OpalRTPSession::SetGroupId ( const PString &  id)

Set the group id for the RTP session.

void OpalRTPSession::SetIgnorePayloadTypeChanges ( bool  ignore)
inline

Indicate if will ignore rtp payload type changes in received packets.

Parameters
ignoreFlag to ignore payload type changes

References ignorePayloadTypeChanges.

bool OpalRTPSession::SetJitterBufferSize ( const OpalJitterBuffer::Init init)

Sets the size of the jitter buffer to be used by this RTP session. A session defaults to not having any jitter buffer enabled for reading and the ReadBufferedData() function simply calls ReadData().

If either jitter delay parameter is zero, it destroys the jitter buffer attached to this RTP session.

Parameters
initInitialisation information
void OpalRTPSession::SetMaxNoReceiveTime ( const PTimeInterval &  interval)
inline

Set the maximum time we wait for packets from remote.

Parameters
intervalNew time interval for reports.

References m_maxNoReceiveTime.

void OpalRTPSession::SetMaxNoTransmitTime ( const PTimeInterval &  interval)
inline

Set the maximum time we wait for remote to start accepting out packets.

Parameters
intervalNew time interval for reports.

References m_maxNoTransmitTime.

void OpalRTPSession::SetNextSentSequenceNumber ( WORD  num)
inline
bool OpalRTPSession::SetQoS ( const PIPSocket::QoS &  qos)
virtual bool OpalRTPSession::SetRemoteAddress ( const OpalTransportAddress remoteAddress,
bool  isMediaAddress = true 
)
virtual

Reimplemented from OpalMediaSession.

void OpalRTPSession::SetReportTimeInterval ( const PTimeInterval &  interval)
inline

Set the time interval for sending RTCP reports in the session.

Parameters
intervalNew time interval for reports.

References m_reportTimer.

void OpalRTPSession::SetRxStatisticsInterval ( unsigned  packets)

Set the interval for receiver statistics in the session.

Parameters
packetsNumber of packets between callbacks
void OpalRTPSession::SetSinglePort ( bool  v = true)
inline

Set flag for single port operation. This must be done before Open() is called to take effect.

References m_singlePort.

void OpalRTPSession::SetToolName ( const PString &  name)

Set the tool name for the RTP session.

void OpalRTPSession::SetTxStatisticsInterval ( unsigned  packets)

Set the interval for transmitter statistics in the session.

Parameters
packetsNumber of packets between callbacks
virtual bool OpalRTPSession::Shutdown ( bool  reading)
virtual
virtual bool OpalRTPSession::WriteControl ( RTP_ControlFrame frame,
const PIPSocketAddressAndPort *  remote = NULL 
)
virtual

Write a control frame from the RTP channel.

Parameters
frameFrame to write to the RTP session
remoteAlternate address to transmit control frame
virtual bool OpalRTPSession::WriteData ( RTP_DataFrame frame,
const PIPSocketAddressAndPort *  remote = NULL,
bool  rewriteHeader = true 
)
virtual

Write a data frame from the RTP channel.

Parameters
frameFrame to write to the RTP session
remoteAlternate address to transmit data frame
rewriteHeaderIndicate header fields like sequence numbers are to be rewritten according to session status
virtual bool OpalRTPSession::WriteRawPDU ( const BYTE *  framePtr,
PINDEX  frameSize,
bool  toDataChannel,
const PIPSocketAddressAndPort *  remote = NULL 
)
protectedvirtual

Friends And Related Function Documentation

friend class RTP_JitterBuffer
friend

Field Documentation

bool OpalRTPSession::allowAnySyncSource
protected
bool OpalRTPSession::allowOneSyncSourceChange
protected
bool OpalRTPSession::allowSequenceChange
protected
DWORD OpalRTPSession::averageReceiveTime
protected

Referenced by GetAverageReceiveTime().

DWORD OpalRTPSession::averageReceiveTimeAccum
protected
DWORD OpalRTPSession::averageSendTime
protected

Referenced by GetAverageSendTime().

DWORD OpalRTPSession::averageSendTimeAccum
protected
unsigned OpalRTPSession::consecutiveOutOfOrderPackets
protected
WORD OpalRTPSession::expectedSequenceNumber
protected
PTime OpalRTPSession::firstPacketReceived
protected
PTime OpalRTPSession::firstPacketSent
protected
bool OpalRTPSession::ignorePayloadTypeChanges
protected
DWORD OpalRTPSession::jitterLevel
protected

Referenced by GetAvgJitterTime().

DWORD OpalRTPSession::jitterLevelOnRemote
protected

Referenced by GetJitterTimeOnRemote().

PTimeInterval OpalRTPSession::lastReceivedPacketTime
protected
RTP_DataFrame::PayloadTypes OpalRTPSession::lastReceivedPayloadType
protected
PTime OpalRTPSession::lastRRSendTime
protected
WORD OpalRTPSession::lastRRSequenceNumber
protected
PTimeInterval OpalRTPSession::lastSentPacketTime
protected

Referenced by GetLastSentPacketTime().

WORD OpalRTPSession::lastSentSequenceNumber
protected
DWORD OpalRTPSession::lastSentTimestamp
protected

Referenced by GetLastSentTimestamp().

PTime OpalRTPSession::lastSRReceiveTime
protected
PTime OpalRTPSession::lastSRTimestamp
protected
DWORD OpalRTPSession::lastTransitTime
protected
ApplDefinedNotifierList OpalRTPSession::m_applDefinedNotifiers
protected
bool OpalRTPSession::m_byeSent
protected
PString OpalRTPSession::m_canonicalName
protected
bool OpalRTPSession::m_closeOnBye
protected

Referenced by SetCloseOnBYE().

PUDPSocket* OpalRTPSession::m_controlSocket
protected

Referenced by GetControlSocket().

PMutex OpalRTPSession::m_dataMutex
protected
PUDPSocket* OpalRTPSession::m_dataSocket
protected

Referenced by GetDataSocket().

OpalRTPEndPoint& OpalRTPSession::m_endpoint
protected
RTPExtensionHeaders OpalRTPSession::m_extensionHeaders
protected
list<FilterNotifier> OpalRTPSession::m_filters
protected
bool OpalRTPSession::m_firstControl
protected
PString OpalRTPSession::m_groupId
protected
bool OpalRTPSession::m_isAudio
protected

Referenced by IsAudio(), and SetAudio().

JitterBufferPtr OpalRTPSession::m_jitterBuffer
protected
BYTE OpalRTPSession::m_lastFIRSequenceNumber
protected
DWORD OpalRTPSession::m_lastReceivedStatisticTimestamp
protected
BYTE OpalRTPSession::m_lastTSTOSequenceNumber
protected
PIPSocket::Address OpalRTPSession::m_localAddress
protected
WORD OpalRTPSession::m_localControlPort
protected

Referenced by GetLocalControlPort().

WORD OpalRTPSession::m_localDataPort
protected

Referenced by GetLocalDataPort().

bool OpalRTPSession::m_localHasRestrictedNAT
protected
PTimeInterval OpalRTPSession::m_maxNoReceiveTime
protected
PTimeInterval OpalRTPSession::m_maxNoTransmitTime
protected
DWORD OpalRTPSession::m_noTransmitErrors
protected
PSimpleTimer OpalRTPSession::m_noTransmitTimer
protected
RTP_DataFrameList OpalRTPSession::m_pendingPackets
protected
PIPSocket::QoS OpalRTPSession::m_qos
protected
PMutex OpalRTPSession::m_readMutex
protected
PIPSocket::Address OpalRTPSession::m_remoteAddress
protected
bool OpalRTPSession::m_remoteBehindNAT
protected
WORD OpalRTPSession::m_remoteControlPort
protected

Referenced by GetRemoteControlPort().

WORD OpalRTPSession::m_remoteDataPort
protected

Referenced by GetRemoteDataPort().

PMutex OpalRTPSession::m_reportMutex
protected
PTimer OpalRTPSession::m_reportTimer
protected
bool OpalRTPSession::m_shutdownRead
protected
bool OpalRTPSession::m_shutdownWrite
protected
bool OpalRTPSession::m_singlePort
protected

Referenced by SetSinglePort().

PTime OpalRTPSession::m_syncRealTime
protected
DWORD OpalRTPSession::m_syncTimestamp
protected
unsigned OpalRTPSession::m_timeUnits
protected

Referenced by GetJitterTimeUnits().

PString OpalRTPSession::m_toolName
protected
DWORD OpalRTPSession::markerRecvCount
protected

Referenced by GetMarkerRecvCount().

DWORD OpalRTPSession::markerSendCount
protected

Referenced by GetMarkerSendCount().

DWORD OpalRTPSession::maximumJitterLevel
protected

Referenced by GetMaxJitterTime().

DWORD OpalRTPSession::maximumReceiveTime
protected

Referenced by GetMaximumReceiveTime().

DWORD OpalRTPSession::maximumReceiveTimeAccum
protected
DWORD OpalRTPSession::maximumSendTime
protected

Referenced by GetMaximumSendTime().

DWORD OpalRTPSession::maximumSendTimeAccum
protected
DWORD OpalRTPSession::minimumReceiveTime
protected

Referenced by GetMinimumReceiveTime().

DWORD OpalRTPSession::minimumReceiveTimeAccum
protected
DWORD OpalRTPSession::minimumSendTime
protected

Referenced by GetMinimumSendTime().

DWORD OpalRTPSession::minimumSendTimeAccum
protected
DWORD OpalRTPSession::octetsReceived
protected

Referenced by GetOctetsReceived().

DWORD OpalRTPSession::octetsSent
protected

Referenced by GetOctetsSent().

PTimeInterval OpalRTPSession::outOfOrderPacketTime
protected
PTimeInterval OpalRTPSession::outOfOrderWaitTime
protected
DWORD OpalRTPSession::packetsLost
protected

Referenced by GetPacketsLost().

DWORD OpalRTPSession::packetsLostByRemote
protected

Referenced by GetPacketsLostByRemote().

DWORD OpalRTPSession::packetsLostSinceLastRR
protected
DWORD OpalRTPSession::packetsOutOfOrder
protected

Referenced by GetPacketsOutOfOrder().

DWORD OpalRTPSession::packetsReceived
protected

Referenced by GetPacketsReceived().

DWORD OpalRTPSession::packetsSent
protected

Referenced by GetPacketsSent().

bool OpalRTPSession::resequenceOutOfOrderPackets
protected
DWORD OpalRTPSession::roundTripTime
protected

Referenced by GetRoundTripTime().

DWORD OpalRTPSession::rtcpPacketsSent
protected
unsigned OpalRTPSession::rxStatisticsCount
protected
unsigned OpalRTPSession::rxStatisticsInterval
protected

Referenced by GetRxStatisticsInterval().

DWORD OpalRTPSession::senderReportsReceived
protected
DWORD OpalRTPSession::syncSourceIn
protected

Referenced by GetSyncSourceIn().

DWORD OpalRTPSession::syncSourceOut
protected

Referenced by GetSyncSourceOut().

unsigned OpalRTPSession::txStatisticsCount
protected
unsigned OpalRTPSession::txStatisticsInterval
protected

Referenced by GetTxStatisticsInterval().


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