30 #ifndef OPAL_RTP_RTP_SESSION_H
31 #define OPAL_RTP_RTP_SESSION_H
43 #include <ptlib/sockets.h>
44 #include <ptlib/safecoll.h>
45 #include <ptlib/notifier_ext.h>
46 #include <ptclib/pnat.h>
47 #include <ptclib/url.h>
56 class RTCP_XR_Metrics;
57 class RTP_MetricsReport;
67 #define OPAL_OPT_RTP_ALLOW_SSRC "RTP-Allow-SSRC"
68 #define OPAL_OPT_RTP_ALLOW_SSRC_ANY "any"
69 #define OPAL_OPT_RTP_ALLOW_SSRC_FIRST "first"
70 #define OPAL_OPT_RTP_ALLOW_SSRC_PRESET "preset"
76 #define OPAL_OPT_RTP_ABS_SEND_TIME "RTP-Abs-Send-Time"
83 #define OPAL_OPT_TRANSPORT_WIDE_CONGESTION_CONTROL "Transport-Wide-Congestion-Control"
94 static const PCaselessString &
RTP_AVP();
95 static const PCaselessString &
RTP_AVPF();
113 virtual bool Close();
119 virtual bool AddGroup(
const PString & groupId,
const PString & mediaId,
bool overwrite =
true);
150 const char * cname = NULL
157 PTRACE_PARAM(,
const char * reason)
210 const PIPSocketAddressAndPort * remote = NULL,
211 const PTime & now = PTime()
219 const PTime & now = PTime()
226 const PIPSocketAddressAndPort * remote = NULL
250 #define PDECLARE_RTPDataNotifier(cls, fn) PDECLARE_NOTIFIER2(OpalRTPSession, cls, fn, OpalRTPSession::Data &)
251 #define PCREATE_RTPDataNotifier(fn) PCREATE_NOTIFIER2(fn, OpalRTPSession::Data &)
303 virtual void OnRxMetricsReport(
305 const RTP_MetricsReport & report
307 #endif // OPAL_RTCP_XR
358 unsigned m_ccRecovery;
360 unsigned m_ptRecovery;
362 unsigned m_tsRecovery;
363 unsigned m_lenRecovery;
364 vector<FecLevel> m_level;
380 unsigned GetUlpFecSendLevel()
const {
return m_ulpFecSendLevel; }
383 void SetUlpFecSendLevel(
unsigned level) { m_ulpFecSendLevel = level; }
384 #endif // OPAL_RTP_FEC
392 void SetLabel(
const PString & name);
491 const PTimeInterval & interval
501 const PTimeInterval & interval
648 unsigned overhead = 0,
661 const PTime & now = PTime()
713 unsigned m_ulpFecSendLevel;
714 #endif // OPAL_RTP_FEC
752 #endif // OPAL_RTP_FEC
755 void CalculateRTT(
const PTime & reportTime,
const PTimeInterval & reportDelay,
const PTime & now);
833 unsigned m_absSendTimeLoglevel;
944 std::set<RTP_SyncSourceId> m_loggedBadSSRC;
951 P_REMOVE_VIRTUAL(
int,WaitForPDU(PUDPSocket&,PUDPSocket&,
const PTimeInterval&),0);
953 P_REMOVE_VIRTUAL(
bool,WriteDataOrControlPDU(
const BYTE *,PINDEX,
bool),
false);
971 #endif // OPAL_RTP_RTP_H
int m_lateOutOfOrder
Definition: rtp_session.h:847
void SetHeaderExtensions(const RTPHeaderExtensions &ext)
int GetRoundTripTime() const
int m_minimumPacketTime
Definition: rtp_session.h:851
RxPacket(const RTP_DataFrame &pkt)
Definition: rtp_session.h:806
virtual SendReceiveStatus WriteControl(RTP_ControlFrame &frame, const PIPSocketAddressAndPort *remote=NULL)
virtual OpalTransportAddress GetLocalAddress(bool isMediaAddress=true) const
PTimeInterval m_staleReceiverTimeout
Definition: rtp_session.h:701
RxPacket(const PTime &when)
Definition: rtp_session.h:807
unsigned m_rtcpPacketsSent
Definition: rtp_session.h:918
Definition: manager.h:150
virtual void OnRxDelayLastReceiverReport(const RTP_DelayLastReceiverReport &dlrr, const PTime &now)
void CalculateRTT(const PTime &reportTime, const PTimeInterval &reportDelay, const PTime &now)
RTP_SyncSourceId GetSyncSourceOut() const
Definition: rtp_session.h:465
const PTime & GetLastSentNetTime(RTP_SyncSourceId ssrc=0) const
Definition: rtp_session.h:672
virtual SendReceiveStatus SendTWCC(const RTP_TransportWideCongestionControl &twcc)
Send Transport Wide Congestion Control RTCP command.
static const PString & GetAbsSendTimeHdrExtURI()
unsigned m_transportWideSeqNumHdrExtId
Definition: rtp_session.h:700
int GetMinimumSendTime(RTP_SyncSourceId ssrc=0) const
Definition: rtp_session.h:589
Definition: rtp_session.h:186
PTime m_lastSenderReportTime
Definition: rtp_session.h:872
RTP_DataFrame::PayloadTypes m_rtxPT
Definition: rtp_session.h:782
PIPSocket::QoS m_qos
Definition: rtp_session.h:929
unsigned m_rtcpPacketsReceived
Definition: rtp_session.h:919
virtual void SetLastSequenceNumber(RTP_SequenceNumber sequenceNumber)
int m_maximumPacketTime
Definition: rtp_session.h:850
Definition: rtp_session.h:134
virtual void OnRxReceiverReferenceTimeReport(RTP_SyncSourceId ssrc, const PTime &ntp, const PTime &now)
Definition: rtp_session.h:725
PTimeInterval m_lateOutOfOrderAdaptBoost
Definition: rtp_session.h:801
virtual void OnRxSenderReport(const RTP_SenderReport &sender, const PTime &now)
int GetMaxJitterTime(RTP_SyncSourceId ssrc=0) const
Definition: rtp_session.h:618
RTP_SequenceNumber m_nextOutOfOrderPacket
Definition: rtp_session.h:796
virtual SendReceiveStatus OnSendControl(RTP_ControlFrame &frame, const PTime &now)
unsigned m_maximumTimeAccum
Definition: rtp_session.h:862
virtual SendReceiveStatus SendBYE()
int GetPacketsLostByRemote(RTP_SyncSourceId ssrc=0) const
Definition: rtp_session.h:555
int m_maxConsecutiveLost
Definition: rtp_session.h:845
unsigned GetTxStatisticsInterval()
Definition: rtp_session.h:506
RTP_Timestamp m_lastPacketTimestamp
Definition: rtp_session.h:857
uint32_t m_lastRRSequenceNumber
Definition: rtp_session.h:868
bool IsAudio() const
Definition: rtp_session.h:339
virtual bool OnSendReceiverReport(RTP_ControlFrame::ReceiverReport *report, const PTime &now PTRACE_PARAM(, unsigned logLevel))
uint32_t m_firstSequenceNumber
Definition: rtp_session.h:790
virtual SendReceiveStatus WriteData(RTP_DataFrame &frame, RewriteMode rewrite=e_RewriteHeader, const PIPSocketAddressAndPort *remote=NULL, const PTime &now=PTime())
virtual SendReceiveStatus OnReceiveControl(RTP_ControlFrame &frame, const PTime &now)
void FinaliseSyncSourceRtx(RTP_DataFrame::PayloadTypes primaryPT, RTP_DataFrame::PayloadTypes rtxPT, OpalRTPSession::Direction dir)
PString GetToolName() const
PTime m_endWaitOutOfOrderTime
Definition: rtp_session.h:797
uint32_t m_absSendTimeLowBits
Definition: rtp_session.h:831
atomic< RTP_SyncSourceId > m_defaultSSRC[2]
Definition: rtp_session.h:904
bool InternalSetQoS(const PIPSocket::QoS &qos)
TxPacketMap m_pendingTxPackets
Definition: rtp_session.h:818
Data(const RTP_DataFrame &frame)
Definition: rtp_session.h:242
void SetTxStatisticsInterval(unsigned packets)
Definition: rtp_session.h:510
void RemoveApplDefinedNotifier(const ApplDefinedNotifier ¬ifier)
Definition: rtp_session.h:297
RewriteMode
Definition: rtp_session.h:189
virtual bool SetRemoteAddress(const OpalTransportAddress &remoteAddress, bool isMediaAddress=true)
PArray< RTP_SourceDescription > RTP_SourceDescriptionArray
Definition: rtp.h:68
Definition: rtp_session.h:195
OpalRTPEndPoint & m_endpoint
Definition: rtp_session.h:689
RTPHeaderExtensions m_headerExtensions
Definition: rtp_session.h:698
unsigned m_lateOutOfOrderAdaptCount
Definition: rtp_session.h:799
int m_packetsMissing
Definition: rtp_session.h:843
PNotifierTemplate< const RTP_ControlFrame::ApplDefinedInfo & > ApplDefinedNotifier
Definition: rtp_session.h:290
bool IsSinglePortRx()
Definition: rtp_session.h:319
PString GetMediaTrackId(RTP_SyncSourceId ssrc, Direction dir) const
Definition: rtp_session.h:202
virtual bool ResequenceOutOfOrderPackets(SyncSource &ssrc) const
std::map< uint32_t, RxPacket > RxPacketMap
Definition: rtp_session.h:809
virtual SyncSource * UseSyncSource(RTP_SyncSourceId ssrc, Direction dir, bool force)
int GetJitterTimeOnRemote(RTP_SyncSourceId ssrc=0) const
Definition: rtp_session.h:624
std::vector< RTP_SyncSourceId > RTP_SyncSourceArray
Definition: rtp.h:47
void SetToolName(const PString &name)
virtual void OnRxSourceDescription(const RTP_SourceDescriptionArray &descriptions)
SyncSource m_dummySyncSource
Definition: rtp_session.h:903
friend class RTCP_XR_Metrics
Definition: rtp_session.h:967
void SetSinglePortRx(bool v=true)
virtual SendReceiveStatus OnReceiveRetransmit(RTP_DataFrame &frame, const PTime &now)
RTP_SyncSourceId EnableSyncSourceRtx(RTP_SyncSourceId primarySSRC, RTP_DataFrame::PayloadTypes rtxPT, RTP_SyncSourceId rtxSSRC)
virtual PString GetLocalHostName()
Direction
Definition: rtp_session.h:132
PString m_label
Definition: rtp_session.h:697
int m_rtxPackets
Definition: rtp_session.h:783
Direction m_direction
Definition: rtp_session.h:774
ReceiveType
Definition: rtp_session.h:198
uint64_t m_ntpPassThrough
Definition: rtp_session.h:871
virtual SendReceiveStatus SendBYE(RTP_SyncSourceId ssrc=0)
Send BYE command.
PString GetCanonicalName(RTP_SyncSourceId ssrc=0, Direction dir=e_Sender) const
static const PString & GetTransportWideSeqNumHdrExtURI()
virtual bool HandlePendingFrames(const PTime &now)
PString m_mediaTrackId
Definition: rtp_session.h:779
uint64_t m_absSendTimeNTP
Definition: rtp_session.h:830
unsigned m_lastRRPacketsReceived
Definition: rtp_session.h:867
unsigned m_packetsOutOfOrder
Definition: rtp_session.h:846
Definition: rtp_session.h:193
uint32_t m_extendedSequenceNumber
Definition: rtp_session.h:791
virtual bool UpdateMediaFormat(const OpalMediaFormat &mediaFormat)
static const PCaselessString & RTP_AVPF()
PNotifierTemplate< Data & > DataNotifier
Definition: rtp_session.h:249
bool IsNackEnabled() const
Definition: rtp_session.h:770
uint16_t RTP_SequenceNumber
Definition: rtp.h:45
PTimeInterval m_lateOutOfOrderAdaptPeriod
Definition: rtp_session.h:802
SyncSourceMap m_SSRC
Definition: rtp_session.h:902
RTPHeaderExtensions GetHeaderExtensions() const
unsigned m_lastFIRSequenceNumber
Definition: rtp_session.h:792
virtual OpalMediaTransport * CreateMediaTransport(const PString &name)
PayloadTypes
Definition: rtp.h:556
void SetMediaTrackId(const PString &id, RTP_SyncSourceId ssrc, Direction dir)
OpalRTPSession(const Init &init)
unsigned m_consecutiveOutOfOrderPackets
Definition: rtp_session.h:794
Definition: rtp_session.h:804
PTime m_consecutiveOutOfOrderEndTime
Definition: rtp_session.h:795
Definition: rtp_session.h:240
RTP_SyncSourceId GetSyncSourceIn() const
Definition: rtp_session.h:461
OpalManager & m_manager
Definition: rtp_session.h:690
OpalRTPSession & m_session
Definition: rtp_session.h:773
virtual void SaveSentData(const RTP_DataFrame &frame, const PTime &now)
bool AddHeaderExtension(const RTPHeaderExtensionInfo &ext)
PString m_toolName
Definition: rtp_session.h:696
RTP_Timestamp m_reportTimestamp
Definition: rtp_session.h:825
unsigned m_rxStatisticsInterval
Definition: rtp_session.h:705
Definition: rtp_session.h:135
PTime m_lateOutOfOrderAdaptTime
Definition: rtp_session.h:798
RTP_SyncSourceId m_rtxSSRC
Definition: rtp_session.h:781
void SetReducedSizeRTCP(bool v=true)
Definition: rtp_session.h:331
PINDEX m_maxOutOfOrderPackets
Definition: rtp_session.h:702
OpalMediaTransport::CongestionControl * GetCongestionControl()
SendReceiveStatus
Definition: rtp_session.h:183
bool m_sendEstablished
Definition: rtp_session.h:932
int m_rtcpJitterBufferDelay
Definition: rtp_session.h:870
PTime m_referenceReportNTP
Definition: rtp_session.h:875
RTP_Timestamp GetLastSentTimestamp(RTP_SyncSourceId ssrc=0) const
Definition: rtp_session.h:671
virtual void OnRxSenderReport(const RTP_SenderReport &report, const PTime &now)
PTime m_reportAbsoluteTime
Definition: rtp_session.h:826
int m_packetsUnrecovered
Definition: rtp_session.h:844
bool HasFeedback(OpalMediaFormat::RTCPFeedback feature) const
Definition: rtp_session.h:677
unsigned GetPacketsSent(RTP_SyncSourceId ssrc=0) const
Definition: rtp_session.h:534
uint32_t ExtendSequenceNumber(RTP_SequenceNumber sequenceNumber) const
virtual void OnRxTWCC(const RTP_TransportWideCongestionControl &twcc)
virtual void OnRxGoodbye(const RTP_SyncSourceArray &sources, const PString &reason)
uint64_t GetOctetsSent(RTP_SyncSourceId ssrc=0) const
Definition: rtp_session.h:538
Definition: rtp_session.h:812
void AddApplDefinedNotifier(const ApplDefinedNotifier ¬ifier)
Definition: rtp_session.h:292
OpalMediaTransport::ReadNotifier m_dataNotifier
Definition: rtp_session.h:935
unsigned m_txStatisticsInterval
Definition: rtp_session.h:704
int GetMaximumSendTime(RTP_SyncSourceId ssrc=0) const
Definition: rtp_session.h:583
Definition: rtp_session.h:192
bool IsSinglePortTx()
Definition: rtp_session.h:327
Definition: rtp_session.h:191
PTRACE_THROTTLE(m_throttleTxReport, 3, 60000, 5)
RTP_SyncSourceId m_loopbackIdentifier
Definition: rtp_session.h:776
ApplDefinedNotifierList m_applDefinedNotifiers
Definition: rtp_session.h:938
void InternalAttachTransport(const OpalMediaTransportPtr &transport PTRACE_PARAM(, const char *from))
virtual void GetStatistics(OpalMediaStatistics &statistics) const
void SetJitterBuffer(OpalJitterBuffer *jitterBuffer, RTP_SyncSourceId ssrc=0)
Set the jitter buffer to get certain RTCP statustics from.
PTRACE_THROTTLE(m_throttleSendData, 3, 20000)
PTimeInterval m_pendingTxPacketAgeLimit
Definition: rtp_session.h:820
int m_maximumJitter
Definition: rtp_session.h:853
RTP_SyncSourceId GetRtxSyncSource(RTP_SyncSourceId ssrc, Direction dir, bool isPrimary) const
virtual void OnRxApplDefined(const RTP_ControlFrame::ApplDefinedInfo &info)
void SetRxStatisticsInterval(unsigned packets)
Definition: rtp_session.h:520
PDECLARE_MediaReadNotifier(OpalRTPSession, OnRxDataPacket)
int GetAverageSendTime(RTP_SyncSourceId ssrc=0) const
Definition: rtp_session.h:565
virtual bool AddGroup(const PString &groupId, const PString &mediaId, bool overwrite=true)
virtual WORD GetLocalDataPort() const
const PTimeInterval & GetOutOfOrderWaitTime()
Definition: rtp_session.h:486
void SetLabel(const PString &name)
void SetCanonicalName(const PString &name, RTP_SyncSourceId ssrc=0, Direction dir=e_Sender)
float m_rtcpDiscardRate
Definition: rtp_session.h:869
void SetReportTimeInterval(const PTimeInterval &interval)
Definition: rtp_session.h:500
virtual bool OnReceiveExtendedReports(const RTP_ControlFrame &frame, const PTime &now)
void SetAnySyncSource(bool allow)
virtual void OnRxNACK(const RTP_ControlFrame::LostPacketMask &lostPackets, const PTime &now)
OpalMediaFormat::RTCPFeedback m_feedback
Definition: rtp_session.h:706
TxPacket(const RTP_DataFrame &pkt)
Definition: rtp_session.h:814
OpalJitterBuffer * m_jitterBuffer
Definition: rtp_session.h:708
RTP_DataFrame m_frame
Definition: rtp_session.h:246
virtual SendReceiveStatus SendReport(RTP_SyncSourceId ssrc, bool force, const PTime &now=PTime())
virtual const PCaselessString & GetSessionType() const
Definition: rtp_session.h:111
OpalJitterBuffer * m_jitterBuffer
Definition: rtp_session.h:883
Definition: rtp_session.h:90
unsigned GetPacketsOutOfOrder(RTP_SyncSourceId ssrc=0) const
Definition: rtp_session.h:559
virtual void OnRxReceiverReport(const RTP_ReceiverReport &report, const PTime &now)
Definition: rtp_session.h:185
virtual void InitialiseControlFrame(RTP_ControlFrame &frame, SyncSource &sender)
virtual SendReceiveStatus OnOutOfOrderPacket(RTP_DataFrame &frame, ReceiveType &rxType, const PTime &now)
bool IsRtx() const
Definition: rtp_session.h:769
PTime m_firstPacketTime
Definition: rtp_session.h:838
std::map< RTP_SyncSourceId, SyncSource * > SyncSourceMap
Definition: rtp_session.h:901
NotifierMap m_notifiers
Definition: rtp_session.h:722
PString m_mediaStreamId
Definition: rtp_session.h:778
int GetMinimumReceiveTime(RTP_SyncSourceId ssrc=0) const
Definition: rtp_session.h:607
ostream & operator<<(ostream &strm, OpalSilenceDetector::Mode mode)
virtual bool RemoveSyncSource(RTP_SyncSourceId id)
bool IsStaleReceiver(const PTime &now) const
Definition: rtp_session.h:184
int m_rtxDuplicates
Definition: rtp_session.h:784
PTime m_lastReferencedTime
Definition: rtp_session.h:873
virtual void OnRxDelayLastReceiverReport(const RTP_DelayLastReceiverReport &dlrr, const PTime &now)
virtual SendReceiveStatus OnSendData(RewriteMode &rewrite, RTP_DataFrame &frame, const PTime &now)
TxPacketTimes m_pendingTxPacketTime
Definition: rtp_session.h:819
bool m_singlePortTx
Definition: rtp_session.h:692
unsigned GetMarkerRecvCount(RTP_SyncSourceId ssrc=0) const
Definition: rtp_session.h:571
virtual bool CheckControlSSRC(RTP_SyncSourceId senderSSRC, RTP_SyncSourceId targetSSRC, SyncSource *&info PTRACE_PARAM(, const char *pduName))
unsigned GetRxStatisticsInterval()
Definition: rtp_session.h:516
unsigned GetPacketsLost(RTP_SyncSourceId ssrc=0) const
Definition: rtp_session.h:550
unsigned m_statisticsCount
Definition: rtp_session.h:877
int m_roundTripTime
Definition: rtp_session.h:920
virtual SendReceiveStatus OnReceiveData(RTP_DataFrame &frame, ReceiveType rxType, const PTime &now)
PTime m_lastPacketNetTime
Definition: rtp_session.h:859
uint32_t RTP_Timestamp
Definition: rtp.h:44
void SessionFailed(SubChannels subchannel PTRACE_PARAM(, const char *reason))
void SetMaxOutOfOrderPackets(PINDEX packets)
uint64_t m_octets
Definition: rtp_session.h:840
static const PCaselessString & RTP_AVP()
virtual SyncSource * CreateSyncSource(RTP_SyncSourceId id, Direction dir, const char *cname)
virtual SendReceiveStatus SendIntraFrameRequest(unsigned options, RTP_SyncSourceId ssrc=0, const PTime &now=PTime())
RewriteMode m_rewriteMode
Definition: rtp_session.h:813
virtual bool IsEncrypted() const
Definition: rtp_session.h:273
virtual bool HasPendingFrames() const
bool m_isAudio
Definition: rtp_session.h:694
virtual void AttachTransport(const OpalMediaTransportPtr &transport)
void SetMediaStreamId(const PString &id, RTP_SyncSourceId ssrc, Direction dir)
unsigned m_timeUnits
Definition: rtp_session.h:695
unsigned m_packets
Definition: rtp_session.h:839
bool m_singlePortRx
Definition: rtp_session.h:691
int GetAverageReceiveTime(RTP_SyncSourceId ssrc=0) const
Definition: rtp_session.h:595
void Remove(const DataNotifier ¬ifier)
virtual OpalMediaTransportPtr DetachTransport()
virtual RTP_SyncSourceId AddSyncSource(RTP_SyncSourceId id, Direction dir, const char *cname=NULL)
unsigned m_averageTimeAccum
Definition: rtp_session.h:861
Definition: rtp_session.h:199
Definition: rtp_session.h:716
PString GetMediaStreamId(RTP_SyncSourceId ssrc, Direction dir) const
SyncSource(OpalRTPSession &session, RTP_SyncSourceId id, Direction dir, const char *cname)
PString m_canonicalName
Definition: rtp_session.h:777
OpalMediaTransport::ReadNotifier m_controlNotifier
Definition: rtp_session.h:936
std::map< PTime, RTP_SequenceNumber > TxPacketTimes
Definition: rtp_session.h:817
uint64_t GetOctetsReceived(RTP_SyncSourceId ssrc=0) const
Definition: rtp_session.h:546
NotifierMap m_notifiers
Definition: rtp_session.h:786
virtual void OnRxReceiverReports(RTP_SyncSourceId src, const RTP_ControlFrame::ReceiverReport *rr, unsigned count, const PTime &now)
WORD m_remoteControlPort
Definition: rtp_session.h:931
bool m_synthesizeAbsTime
Definition: rtp_session.h:827
PINDEX GetMaxOutOfOrderPackets()
Definition: rtp_session.h:476
RTP_SyncSourceArray GetSyncSources(Direction dir) const
void RemoveDataNotifier(const DataNotifier ¬ifier, RTP_SyncSourceId ssrc=0)
Remove the data notifier.
virtual OpalMediaStream * CreateMediaStream(const OpalMediaFormat &mediaFormat, unsigned sessionID, bool isSource)
PTime m_lastNackTime
Definition: rtp_session.h:805
virtual SendReceiveStatus SendTemporalSpatialTradeOff(unsigned tradeOff, RTP_SyncSourceId ssrc=0)
RxPacketMap m_pendingRxPackets
Definition: rtp_session.h:810
virtual OpalTransportAddress GetRemoteAddress(bool isMediaAddress=true) const
virtual WORD GetLocalControlPort() const
void SetAudio(bool aud)
Definition: rtp_session.h:343
unsigned m_markerCount
Definition: rtp_session.h:854
virtual bool InternalSendReport(RTP_ControlFrame &report, SyncSource &sender, bool includeReceivers, bool forced, const PTime &now)
Set up RTCP as per RFC rules.
const SyncSource & GetSyncSource(RTP_SyncSourceId ssrc, Direction dir) const
unsigned m_lastTSTOSequenceNumber
Definition: rtp_session.h:793
atomic< unsigned > m_NACKs
Definition: rtp_session.h:842
void SetSinglePortTx(bool v=true)
Definition: transports.h:151
RTP_SequenceNumber m_lastSequenceNumber
Definition: rtp_session.h:789
virtual void GetStatistics(OpalMediaStatistics &statistics, Direction dir) const
void Add(unsigned priority, const DataNotifier ¬ifier)
OpalJitterBuffer * GetJitterBuffer() const
PTime m_lastPacketAbsTime
Definition: rtp_session.h:858
RTP_SyncSourceId m_sourceIdentifier
Definition: rtp_session.h:775
int m_currentJitter
Definition: rtp_session.h:852
uint32_t RTP_SyncSourceId
Definition: rtp.h:46
RTP_DataFrame::PayloadTypes m_payloadType
Definition: rtp_session.h:837
virtual bool OnSendDelayLastReceiverReport(RTP_ControlFrame::DelayLastReceiverReport::Receiver *report, const PTime &now)
virtual void CalculateStatistics(const RTP_DataFrame &frame, const PTime &now)
unsigned m_lateOutOfOrderAdaptMax
Definition: rtp_session.h:800
void SetOutOfOrderWaitTime(const PTimeInterval &interval)
Definition: rtp_session.h:490
unsigned m_senderReports
Definition: rtp_session.h:841
unsigned m_minimumTimeAccum
Definition: rtp_session.h:863
unsigned m_packetOverhead
Definition: rtp_session.h:930
bool m_reducedSizeRTCP
Definition: rtp_session.h:693
int m_averagePacketTime
Definition: rtp_session.h:849
Definition: rtp_session.h:201
unsigned m_jitterAccum
Definition: rtp_session.h:864
int GetAvgJitterTime(RTP_SyncSourceId ssrc=0) const
Definition: rtp_session.h:613
Definition: rtp_session.h:200
virtual SendReceiveStatus OnPreReceiveData(RTP_DataFrame &frame, const PTime &now)
PTimer m_reportTimer
Definition: rtp_session.h:922
virtual bool Open(const PString &localInterface, const OpalTransportAddress &remoteAddress)
virtual SendReceiveStatus OnSendData(RTP_DataFrame &frame, RewriteMode rewrite, const PTime &now)
virtual void OnRxNACK(RTP_SyncSourceId ssrc, const RTP_ControlFrame::LostPacketMask &lostPackets, const PTime &now)
virtual SendReceiveStatus OnReceiveData(RTP_DataFrame &frame, ReceiveType rxType, const PTime &now)
Definition: rtp_session.h:194
void AddDataNotifier(unsigned priority, const DataNotifier ¬ifier, RTP_SyncSourceId ssrc=0)
PDECLARE_NOTIFIER(PTimer, OpalRTPSession, TimedSendReport)
PTimeInterval GetReportTimeInterval()
Definition: rtp_session.h:496
unsigned GetMarkerSendCount(RTP_SyncSourceId ssrc=0) const
Definition: rtp_session.h:577
virtual SendReceiveStatus SendFlowControl(unsigned maxBitRate, unsigned overhead=0, bool notify=false, RTP_SyncSourceId ssrc=0)
PTime m_referenceReportTime
Definition: rtp_session.h:874
PNotifierListTemplate< const RTP_ControlFrame::ApplDefinedInfo & > ApplDefinedNotifierList
Definition: rtp_session.h:289
virtual bool IsExpectingRetransmit(RTP_SequenceNumber sequenceNumber)
P_REMOVE_VIRTUAL(SendReceiveStatus, OnSendData(RTP_DataFrame &, bool), e_AbortTransport)
int GetMaximumReceiveTime(RTP_SyncSourceId ssrc=0) const
Definition: rtp_session.h:601
unsigned m_absSendTimeHdrExtId
Definition: rtp_session.h:699
virtual void OnRxReceiverReport(RTP_SyncSourceId src, const RTP_ControlFrame::ReceiverReport &rr)
bool UseReducedSizeRTCP() const
Definition: rtp_session.h:335
SendReceiveStatus m_status
Definition: rtp_session.h:247
virtual SendReceiveStatus SendNACK(const RTP_ControlFrame::LostPacketMask &lostPackets, RTP_SyncSourceId ssrc=0)
Send NACK RTCP command.
unsigned GetPacketsReceived(RTP_SyncSourceId ssrc=0) const
Definition: rtp_session.h:542
PTimeInterval m_waitOutOfOrderTime
Definition: rtp_session.h:703
std::map< RTP_SequenceNumber, TxPacket > TxPacketMap
Definition: rtp_session.h:816