OPAL  Version 3.10.10
RTP_Session Class Referenceabstract

#include <rtp.h>

Inheritance diagram for RTP_Session:
RTP_UDP SecureRTP_UDP

Data Structures

class  EncodingLock
 
struct  Params
 
class  ReceiverReport
 
class  SenderReport
 
class  SourceDescription
 

Public Types

typedef PNotifierTemplate< SendReceiveStatus & > FilterNotifier
 

Public Member Functions

virtual void SetCloseOnBYE (PBoolean v)
 
virtual void SendIntraFrameRequest (bool rfc2032, bool pictureLoss)
 
virtual void SendTemporalSpatialTradeOff (unsigned tradeOff)
 
void SetNextSentSequenceNumber (WORD num)
 
virtual PString GetEncoding () const
 
virtual void SetEncoding (const PString &newEncoding)
 
DWORD GetSyncSourceIn () const
 
void SetFailed (bool v)
 
bool HasFailed () const
 
void AddFilter (const FilterNotifier &filter)
 
virtual void SendBYE ()
 
Construction
 RTP_Session (const Params &options)
 
 ~RTP_Session ()
 
Operations
void SetJitterBufferSize (unsigned minJitterDelay, unsigned maxJitterDelay, unsigned timeUnits=0, PINDEX packetSize=2048)
 
unsigned GetJitterBufferSize () const
 
unsigned GetJitterBufferDelay () const
 
unsigned GetJitterTimeUnits () const
 
virtual PBoolean ModifyQOS (RTP_QOS *)
 
virtual PBoolean ReadBufferedData (RTP_DataFrame &frame)
 
virtual PBoolean ReadData (RTP_DataFrame &frame)=0
 
virtual void FlushData ()
 
virtual PBoolean WriteData (RTP_DataFrame &frame)=0
 
virtual PBoolean WriteOOBData (RTP_DataFrame &frame, bool rewriteTimeStamp=true)
 
virtual PBoolean WriteControl (RTP_ControlFrame &frame)=0
 
virtual bool Close (PBoolean reading)=0
 
virtual void Reopen (PBoolean isReading)=0
 
virtual PString GetLocalHostName ()=0
 
virtual void GetStatistics (OpalMediaStatistics &statistics, bool receiver) const
 

Protected Types

typedef PSafePtr< RTP_JitterBuffer, PSafePtrMultiThreaded > JitterBufferPtr
 

Protected Member Functions

RTP_Session::ReceiverReportArray BuildReceiverReportArray (const RTP_ControlFrame &frame, PINDEX offset)
 
void AddReceiverReport (RTP_ControlFrame::ReceiverReport &receiver)
 
PBoolean InsertReportPacket (RTP_ControlFrame &report)
 
void SaveOutOfOrderPacket (RTP_DataFrame &frame)
 
 PDECLARE_NOTIFIER (PTimer, RTP_Session, SendReport)
 

Protected Attributes

PString m_encoding
 
PMutex m_encodingMutex
 
RTP_Encodingm_encodingHandler
 
unsigned sessionID
 
bool isAudio
 
unsigned m_timeUnits
 
PString canonicalName
 
PString toolName
 
RTP_UserDatauserData
 
PBoolean autoDeleteUserData
 
JitterBufferPtr m_jitterBuffer
 
DWORD syncSourceOut
 
DWORD syncSourceIn
 
DWORD lastSentTimestamp
 
bool allowAnySyncSource
 
bool allowOneSyncSourceChange
 
PBoolean allowRemoteTransmitAddressChange
 
PBoolean allowSequenceChange
 
unsigned txStatisticsInterval
 
unsigned rxStatisticsInterval
 
WORD lastSentSequenceNumber
 
WORD expectedSequenceNumber
 
PTimeInterval lastSentPacketTime
 
PTimeInterval lastReceivedPacketTime
 
PTime lastSRTimestamp
 
PTime lastSRReceiveTime
 
PTimeInterval delaySinceLastSR
 
WORD lastRRSequenceNumber
 
bool resequenceOutOfOrderPackets
 
unsigned consecutiveOutOfOrderPackets
 
PTimeInterval outOfOrderWaitTime
 
PTimeInterval outOfOrderPacketTime
 
std::list< RTP_DataFramem_outOfOrderPackets
 
PMutex dataMutex
 
DWORD timeStampOffs
 
PBoolean oobTimeStampBaseEstablished
 
DWORD oobTimeStampOutBase
 
PTimeInterval oobTimeStampBase
 
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 markerSendCount
 
DWORD markerRecvCount
 
unsigned txStatisticsCount
 
unsigned rxStatisticsCount
 
DWORD averageSendTimeAccum
 
DWORD maximumSendTimeAccum
 
DWORD minimumSendTimeAccum
 
DWORD averageReceiveTimeAccum
 
DWORD maximumReceiveTimeAccum
 
DWORD minimumReceiveTimeAccum
 
DWORD packetsLostSinceLastRR
 
DWORD lastTransitTime
 
RTP_DataFrame::PayloadTypes lastReceivedPayloadType
 
PBoolean ignorePayloadTypeChanges
 
PMutex m_reportMutex
 
PTimer m_reportTimer
 
PBoolean closeOnBye
 
PBoolean byeSent
 
bool failed
 set to true if session has received too many ICMP destination unreachable More...
 
list< FilterNotifierm_filters
 

Friends

class EncodingLock
 

Call back functions

enum  SendReceiveStatus { e_ProcessPacket, e_IgnorePacket, e_AbortTransport }
 
virtual SendReceiveStatus OnSendData (RTP_DataFrame &frame)
 
virtual SendReceiveStatus Internal_OnSendData (RTP_DataFrame &frame)
 
virtual SendReceiveStatus OnSendControl (RTP_ControlFrame &frame, PINDEX &len)
 
virtual SendReceiveStatus Internal_OnSendControl (RTP_ControlFrame &frame, PINDEX &len)
 
virtual SendReceiveStatus OnReceiveData (RTP_DataFrame &frame)
 
virtual SendReceiveStatus Internal_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 PString &type, unsigned subtype, DWORD src, const BYTE *data, PINDEX size)
 

Member variable access

enum  { JitterRoundingGuardBits = 4 }
 
unsigned GetSessionID () const
 
void SetSessionID (unsigned id)
 
bool IsAudio () const
 
void SetAudio (bool aud)
 
PString GetCanonicalName () const
 
void SetCanonicalName (const PString &name)
 
PString GetToolName () const
 
void SetToolName (const PString &name)
 
RTP_UserDataGetUserData () const
 
void SetUserData (RTP_UserData *data, PBoolean autoDeleteUserData=true)
 
DWORD GetSyncSourceOut () const
 
bool AllowAnySyncSource () const
 
void SetAnySyncSource (bool allow)
 
void SetIgnorePayloadTypeChanges (PBoolean ignore)
 
const PTimeInterval & GetReportTimeInterval ()
 
void SetReportTimeInterval (const PTimeInterval &interval)
 
unsigned GetTxStatisticsInterval ()
 
void SetTxStatisticsInterval (unsigned packets)
 
unsigned GetRxStatisticsInterval ()
 
void SetRxStatisticsInterval (unsigned packets)
 
void ClearStatistics ()
 
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
 

Detailed Description

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

Member Typedef Documentation

◆ FilterNotifier

typedef PNotifierTemplate<SendReceiveStatus &> RTP_Session::FilterNotifier

◆ JitterBufferPtr

typedef PSafePtr<RTP_JitterBuffer, PSafePtrMultiThreaded> RTP_Session::JitterBufferPtr
protected

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
JitterRoundingGuardBits 

◆ SendReceiveStatus

Enumerator
e_ProcessPacket 
e_IgnorePacket 
e_AbortTransport 

Constructor & Destructor Documentation

◆ RTP_Session()

RTP_Session::RTP_Session ( const Params options)

Create a new RTP session.

Parameters
optionsParameters to construct with session.

◆ ~RTP_Session()

RTP_Session::~RTP_Session ( )

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

Member Function Documentation

◆ AddFilter()

void RTP_Session::AddFilter ( const FilterNotifier filter)

◆ AddReceiverReport()

void RTP_Session::AddReceiverReport ( RTP_ControlFrame::ReceiverReport receiver)
protected

◆ AllowAnySyncSource()

bool RTP_Session::AllowAnySyncSource ( ) const
inline

Indicate if will ignore all but first received SSRC value.

◆ BuildReceiverReportArray()

RTP_Session::ReceiverReportArray RTP_Session::BuildReceiverReportArray ( const RTP_ControlFrame frame,
PINDEX  offset 
)
protected

◆ ClearStatistics()

void RTP_Session::ClearStatistics ( )

Clear statistics

◆ Close()

virtual bool RTP_Session::Close ( PBoolean  reading)
pure virtual

Close down the RTP session.

Parameters
readingClosing the read side of the session

Implemented in RTP_UDP.

◆ FlushData()

virtual void RTP_Session::FlushData ( )
virtual

Flush incoming data.

Reimplemented in RTP_UDP.

◆ GetAverageReceiveTime()

DWORD RTP_Session::GetAverageReceiveTime ( ) const
inline

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

◆ GetAverageSendTime()

DWORD RTP_Session::GetAverageSendTime ( ) const
inline

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

◆ GetAvgJitterTime()

DWORD RTP_Session::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.

◆ GetCanonicalName()

PString RTP_Session::GetCanonicalName ( ) const

Get the canonical name for the RTP session.

◆ GetEncoding()

virtual PString RTP_Session::GetEncoding ( ) const
inlinevirtual

◆ GetJitterBufferDelay()

unsigned RTP_Session::GetJitterBufferDelay ( ) const
inline

◆ GetJitterBufferSize()

unsigned RTP_Session::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.

◆ GetJitterTimeOnRemote()

DWORD RTP_Session::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.

◆ GetJitterTimeUnits()

unsigned RTP_Session::GetJitterTimeUnits ( ) const
inline

Get current time units of the jitter buffer.

◆ GetLocalHostName()

virtual PString RTP_Session::GetLocalHostName ( )
pure virtual

Get the local host name as used in SDES packes.

Implemented in RTP_UDP.

◆ GetMarkerRecvCount()

DWORD RTP_Session::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.

◆ GetMarkerSendCount()

DWORD RTP_Session::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.

◆ GetMaximumReceiveTime()

DWORD RTP_Session::GetMaximumReceiveTime ( ) const
inline

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

◆ GetMaximumSendTime()

DWORD RTP_Session::GetMaximumSendTime ( ) const
inline

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

◆ GetMaxJitterTime()

DWORD RTP_Session::GetMaxJitterTime ( ) const
inline

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

◆ GetMinimumReceiveTime()

DWORD RTP_Session::GetMinimumReceiveTime ( ) const
inline

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

◆ GetMinimumSendTime()

DWORD RTP_Session::GetMinimumSendTime ( ) const
inline

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

◆ GetOctetsReceived()

DWORD RTP_Session::GetOctetsReceived ( ) const
inline

Get total number of octets received in session.

◆ GetOctetsSent()

DWORD RTP_Session::GetOctetsSent ( ) const
inline

Get total number of octets sent in session.

◆ GetPacketOverruns()

DWORD RTP_Session::GetPacketOverruns ( ) const

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

◆ GetPacketsLost()

DWORD RTP_Session::GetPacketsLost ( ) const
inline

Get total number received packets lost in session.

◆ GetPacketsLostByRemote()

DWORD RTP_Session::GetPacketsLostByRemote ( ) const
inline

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

◆ GetPacketsOutOfOrder()

DWORD RTP_Session::GetPacketsOutOfOrder ( ) const
inline

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

◆ GetPacketsReceived()

DWORD RTP_Session::GetPacketsReceived ( ) const
inline

Get total number of packets received in session.

Referenced by OpalRTPMediaSession::HasFailed().

◆ GetPacketsSent()

DWORD RTP_Session::GetPacketsSent ( ) const
inline

Get total number of packets sent in session.

◆ GetPacketsTooLate()

DWORD RTP_Session::GetPacketsTooLate ( ) const

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

◆ GetReportTimeInterval()

const PTimeInterval& RTP_Session::GetReportTimeInterval ( )
inline

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

◆ GetRxStatisticsInterval()

unsigned RTP_Session::GetRxStatisticsInterval ( )
inline

Get the interval for receiver statistics in the session.

◆ GetSessionID()

unsigned RTP_Session::GetSessionID ( ) const
inline

Get the ID for the RTP session.

◆ GetStatistics()

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

◆ GetSyncSourceIn()

DWORD RTP_Session::GetSyncSourceIn ( ) const
inline

◆ GetSyncSourceOut()

DWORD RTP_Session::GetSyncSourceOut ( ) const
inline

Get the source output identifier.

◆ GetToolName()

PString RTP_Session::GetToolName ( ) const

Get the tool name for the RTP session.

◆ GetTxStatisticsInterval()

unsigned RTP_Session::GetTxStatisticsInterval ( )
inline

Get the interval for transmitter statistics in the session.

◆ GetUserData()

RTP_UserData* RTP_Session::GetUserData ( ) const
inline

Get the user data for the session.

◆ HasFailed()

bool RTP_Session::HasFailed ( ) const
inline

◆ InsertReportPacket()

PBoolean RTP_Session::InsertReportPacket ( RTP_ControlFrame report)
protected

◆ Internal_OnReceiveData()

virtual SendReceiveStatus RTP_Session::Internal_OnReceiveData ( RTP_DataFrame frame)
virtual

◆ Internal_OnSendControl()

virtual SendReceiveStatus RTP_Session::Internal_OnSendControl ( RTP_ControlFrame frame,
PINDEX &  len 
)
virtual

◆ Internal_OnSendData()

virtual SendReceiveStatus RTP_Session::Internal_OnSendData ( RTP_DataFrame frame)
virtual

◆ IsAudio()

bool RTP_Session::IsAudio ( ) const
inline

Get flag for is audio RTP.

◆ ModifyQOS()

virtual PBoolean RTP_Session::ModifyQOS ( RTP_QOS )
inlinevirtual

Modifies the QOS specifications for this RTP session

Reimplemented in RTP_UDP.

◆ OnReceiveControl()

virtual SendReceiveStatus RTP_Session::OnReceiveControl ( RTP_ControlFrame frame)
virtual

◆ OnReceiveData()

virtual SendReceiveStatus RTP_Session::OnReceiveData ( RTP_DataFrame frame)
virtual

◆ OnReceiverReports()

virtual void RTP_Session::OnReceiverReports ( const ReceiverReportArray &  reports)
virtual

◆ OnRxApplDefined()

virtual void RTP_Session::OnRxApplDefined ( const PString &  type,
unsigned  subtype,
DWORD  src,
const BYTE *  data,
PINDEX  size 
)
virtual

◆ OnRxGoodbye()

virtual void RTP_Session::OnRxGoodbye ( const PDWORDArray &  sources,
const PString &  reason 
)
virtual

◆ OnRxReceiverReport()

virtual void RTP_Session::OnRxReceiverReport ( DWORD  src,
const ReceiverReportArray &  reports 
)
virtual

◆ OnRxSenderReport()

virtual void RTP_Session::OnRxSenderReport ( const SenderReport sender,
const ReceiverReportArray &  reports 
)
virtual

◆ OnRxSourceDescription()

virtual void RTP_Session::OnRxSourceDescription ( const SourceDescriptionArray &  descriptions)
virtual

◆ OnSendControl()

virtual SendReceiveStatus RTP_Session::OnSendControl ( RTP_ControlFrame frame,
PINDEX &  len 
)
virtual

◆ OnSendData()

virtual SendReceiveStatus RTP_Session::OnSendData ( RTP_DataFrame frame)
virtual

◆ PARRAY() [1/2]

RTP_Session::PARRAY ( ReceiverReportArray  ,
ReceiverReport   
)

◆ PARRAY() [2/2]

RTP_Session::PARRAY ( SourceDescriptionArray  ,
SourceDescription   
)

◆ PDECLARE_NOTIFIER()

RTP_Session::PDECLARE_NOTIFIER ( PTimer  ,
RTP_Session  ,
SendReport   
)
protected

◆ ReadBufferedData()

virtual PBoolean RTP_Session::ReadBufferedData ( 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. An application should generally use this in preference to directly calling ReadData().

Parameters
frameFrame read from the RTP session

◆ ReadData()

virtual PBoolean RTP_Session::ReadData ( RTP_DataFrame frame)
pure virtual

Read a data frame from the RTP channel. Any control frames received are dispatched to callbacks and are not returned by this function. It will block until a data frame is available or an error occurs.

Parameters
frameFrame read from the RTP session

Implemented in RTP_UDP.

◆ Reopen()

virtual void RTP_Session::Reopen ( PBoolean  isReading)
pure virtual

Reopens an existing session in the given direction.

Implemented in RTP_UDP.

◆ SaveOutOfOrderPacket()

void RTP_Session::SaveOutOfOrderPacket ( RTP_DataFrame frame)
protected

◆ SendBYE()

virtual void RTP_Session::SendBYE ( )
virtual

◆ SendIntraFrameRequest()

virtual void RTP_Session::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.

◆ SendTemporalSpatialTradeOff()

virtual void RTP_Session::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.

◆ SetAnySyncSource()

void RTP_Session::SetAnySyncSource ( bool  allow)
inline

Indicate if will ignore all but first received SSRC value.

Parameters
allowFlag for allow any SSRC values

◆ SetAudio()

void RTP_Session::SetAudio ( bool  aud)
inline

Set flag for RTP session is audio.

Parameters
audNew audio indication flag

◆ SetCanonicalName()

void RTP_Session::SetCanonicalName ( const PString &  name)

Set the canonical name for the RTP session.

◆ SetCloseOnBYE()

virtual void RTP_Session::SetCloseOnBYE ( PBoolean  v)
inlinevirtual

◆ SetEncoding()

virtual void RTP_Session::SetEncoding ( const PString &  newEncoding)
virtual

Reimplemented in RTP_UDP.

◆ SetFailed()

void RTP_Session::SetFailed ( bool  v)
inline

◆ SetIgnorePayloadTypeChanges()

void RTP_Session::SetIgnorePayloadTypeChanges ( PBoolean  ignore)
inline

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

Parameters
ignoreFlag to ignore payload type changes

◆ SetJitterBufferSize()

void RTP_Session::SetJitterBufferSize ( unsigned  minJitterDelay,
unsigned  maxJitterDelay,
unsigned  timeUnits = 0,
PINDEX  packetSize = 2048 
)

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
minJitterDelayMinimum jitter buffer delay in RTP timestamp units
maxJitterDelayMaximum jitter buffer delay in RTP timestamp units
timeUnitsTime Units, zero uses default
packetSizeReceive RTP packet size

◆ SetNextSentSequenceNumber()

void RTP_Session::SetNextSentSequenceNumber ( WORD  num)
inline

◆ SetReportTimeInterval()

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

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

Parameters
intervalNew time interval for reports.

◆ SetRxStatisticsInterval()

void RTP_Session::SetRxStatisticsInterval ( unsigned  packets)

Set the interval for receiver statistics in the session.

Parameters
packetsNumber of packets between callbacks

◆ SetSessionID()

void RTP_Session::SetSessionID ( unsigned  id)
inline

Set the ID for the RTP session.

◆ SetToolName()

void RTP_Session::SetToolName ( const PString &  name)

Set the tool name for the RTP session.

◆ SetTxStatisticsInterval()

void RTP_Session::SetTxStatisticsInterval ( unsigned  packets)

Set the interval for transmitter statistics in the session.

Parameters
packetsNumber of packets between callbacks

◆ SetUserData()

void RTP_Session::SetUserData ( RTP_UserData data,
PBoolean  autoDeleteUserData = true 
)

Set the user data for the session.

Parameters
dataNew user data to be used
autoDeleteUserDataDelete optional data with session.

◆ WriteControl()

virtual PBoolean RTP_Session::WriteControl ( RTP_ControlFrame frame)
pure virtual

Write a control frame from the RTP channel.

Parameters
frameFrame to write to the RTP session

Implemented in RTP_UDP.

◆ WriteData()

virtual PBoolean RTP_Session::WriteData ( RTP_DataFrame frame)
pure virtual

Write a data frame from the RTP channel.

Parameters
frameFrame to write to the RTP session

Implemented in RTP_UDP.

◆ WriteOOBData()

virtual PBoolean RTP_Session::WriteOOBData ( RTP_DataFrame frame,
bool  rewriteTimeStamp = true 
)
virtual

Write data frame to the RTP channel outside the normal stream of media Used for RFC2833 packets

Reimplemented in RTP_UDP.

Friends And Related Function Documentation

◆ EncodingLock

friend class EncodingLock
friend

Field Documentation

◆ allowAnySyncSource

bool RTP_Session::allowAnySyncSource
protected

◆ allowOneSyncSourceChange

bool RTP_Session::allowOneSyncSourceChange
protected

◆ allowRemoteTransmitAddressChange

PBoolean RTP_Session::allowRemoteTransmitAddressChange
protected

◆ allowSequenceChange

PBoolean RTP_Session::allowSequenceChange
protected

◆ autoDeleteUserData

PBoolean RTP_Session::autoDeleteUserData
protected

◆ averageReceiveTime

DWORD RTP_Session::averageReceiveTime
protected

◆ averageReceiveTimeAccum

DWORD RTP_Session::averageReceiveTimeAccum
protected

◆ averageSendTime

DWORD RTP_Session::averageSendTime
protected

◆ averageSendTimeAccum

DWORD RTP_Session::averageSendTimeAccum
protected

◆ byeSent

PBoolean RTP_Session::byeSent
protected

◆ canonicalName

PString RTP_Session::canonicalName
protected

◆ closeOnBye

PBoolean RTP_Session::closeOnBye
protected

◆ consecutiveOutOfOrderPackets

unsigned RTP_Session::consecutiveOutOfOrderPackets
protected

◆ dataMutex

PMutex RTP_Session::dataMutex
protected

◆ delaySinceLastSR

PTimeInterval RTP_Session::delaySinceLastSR
protected

◆ expectedSequenceNumber

WORD RTP_Session::expectedSequenceNumber
protected

◆ failed

bool RTP_Session::failed
protected

set to true if session has received too many ICMP destination unreachable

◆ firstPacketReceived

PTime RTP_Session::firstPacketReceived
protected

◆ firstPacketSent

PTime RTP_Session::firstPacketSent
protected

◆ ignorePayloadTypeChanges

PBoolean RTP_Session::ignorePayloadTypeChanges
protected

◆ isAudio

bool RTP_Session::isAudio
protected

◆ jitterLevel

DWORD RTP_Session::jitterLevel
protected

◆ jitterLevelOnRemote

DWORD RTP_Session::jitterLevelOnRemote
protected

◆ lastReceivedPacketTime

PTimeInterval RTP_Session::lastReceivedPacketTime
protected

◆ lastReceivedPayloadType

RTP_DataFrame::PayloadTypes RTP_Session::lastReceivedPayloadType
protected

◆ lastRRSequenceNumber

WORD RTP_Session::lastRRSequenceNumber
protected

◆ lastSentPacketTime

PTimeInterval RTP_Session::lastSentPacketTime
protected

◆ lastSentSequenceNumber

WORD RTP_Session::lastSentSequenceNumber
protected

◆ lastSentTimestamp

DWORD RTP_Session::lastSentTimestamp
protected

◆ lastSRReceiveTime

PTime RTP_Session::lastSRReceiveTime
protected

◆ lastSRTimestamp

PTime RTP_Session::lastSRTimestamp
protected

◆ lastTransitTime

DWORD RTP_Session::lastTransitTime
protected

◆ m_encoding

PString RTP_Session::m_encoding
protected

◆ m_encodingHandler

RTP_Encoding* RTP_Session::m_encodingHandler
protected

◆ m_encodingMutex

PMutex RTP_Session::m_encodingMutex
protected

◆ m_filters

list<FilterNotifier> RTP_Session::m_filters
protected

◆ m_jitterBuffer

JitterBufferPtr RTP_Session::m_jitterBuffer
protected

◆ m_outOfOrderPackets

std::list<RTP_DataFrame> RTP_Session::m_outOfOrderPackets
protected

◆ m_reportMutex

PMutex RTP_Session::m_reportMutex
protected

◆ m_reportTimer

PTimer RTP_Session::m_reportTimer
protected

◆ m_timeUnits

unsigned RTP_Session::m_timeUnits
protected

◆ markerRecvCount

DWORD RTP_Session::markerRecvCount
protected

◆ markerSendCount

DWORD RTP_Session::markerSendCount
protected

◆ maximumJitterLevel

DWORD RTP_Session::maximumJitterLevel
protected

◆ maximumReceiveTime

DWORD RTP_Session::maximumReceiveTime
protected

◆ maximumReceiveTimeAccum

DWORD RTP_Session::maximumReceiveTimeAccum
protected

◆ maximumSendTime

DWORD RTP_Session::maximumSendTime
protected

◆ maximumSendTimeAccum

DWORD RTP_Session::maximumSendTimeAccum
protected

◆ minimumReceiveTime

DWORD RTP_Session::minimumReceiveTime
protected

◆ minimumReceiveTimeAccum

DWORD RTP_Session::minimumReceiveTimeAccum
protected

◆ minimumSendTime

DWORD RTP_Session::minimumSendTime
protected

◆ minimumSendTimeAccum

DWORD RTP_Session::minimumSendTimeAccum
protected

◆ octetsReceived

DWORD RTP_Session::octetsReceived
protected

◆ octetsSent

DWORD RTP_Session::octetsSent
protected

◆ oobTimeStampBase

PTimeInterval RTP_Session::oobTimeStampBase
protected

◆ oobTimeStampBaseEstablished

PBoolean RTP_Session::oobTimeStampBaseEstablished
protected

◆ oobTimeStampOutBase

DWORD RTP_Session::oobTimeStampOutBase
protected

◆ outOfOrderPacketTime

PTimeInterval RTP_Session::outOfOrderPacketTime
protected

◆ outOfOrderWaitTime

PTimeInterval RTP_Session::outOfOrderWaitTime
protected

◆ packetsLost

DWORD RTP_Session::packetsLost
protected

◆ packetsLostByRemote

DWORD RTP_Session::packetsLostByRemote
protected

◆ packetsLostSinceLastRR

DWORD RTP_Session::packetsLostSinceLastRR
protected

◆ packetsOutOfOrder

DWORD RTP_Session::packetsOutOfOrder
protected

◆ packetsReceived

DWORD RTP_Session::packetsReceived
protected

◆ packetsSent

DWORD RTP_Session::packetsSent
protected

◆ resequenceOutOfOrderPackets

bool RTP_Session::resequenceOutOfOrderPackets
protected

◆ rtcpPacketsSent

DWORD RTP_Session::rtcpPacketsSent
protected

◆ rxStatisticsCount

unsigned RTP_Session::rxStatisticsCount
protected

◆ rxStatisticsInterval

unsigned RTP_Session::rxStatisticsInterval
protected

◆ senderReportsReceived

DWORD RTP_Session::senderReportsReceived
protected

◆ sessionID

unsigned RTP_Session::sessionID
protected

◆ syncSourceIn

DWORD RTP_Session::syncSourceIn
protected

◆ syncSourceOut

DWORD RTP_Session::syncSourceOut
protected

◆ timeStampOffs

DWORD RTP_Session::timeStampOffs
protected

◆ toolName

PString RTP_Session::toolName
protected

◆ txStatisticsCount

unsigned RTP_Session::txStatisticsCount
protected

◆ txStatisticsInterval

unsigned RTP_Session::txStatisticsInterval
protected

◆ userData

RTP_UserData* RTP_Session::userData
protected

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