37 #ifndef RTPSOURCEDATA_H
39 #define RTPSOURCEDATA_H
41 #include "rtpconfig.h"
55 class RTCPSenderReportInfo
58 RTCPSenderReportInfo():ntptimestamp(0,0),receivetime(0,0) { hasinfo =
false; rtptimestamp = 0; packetcount = 0; bytecount = 0; }
59 void Set(
const RTPNTPTime &ntptime,uint32_t rtptime,uint32_t pcount,
60 uint32_t bcount,
const RTPTime &rcvtime) { ntptimestamp = ntptime; rtptimestamp = rtptime; packetcount = pcount; bytecount = bcount; receivetime = rcvtime; hasinfo =
true; }
62 bool HasInfo()
const {
return hasinfo; }
63 RTPNTPTime GetNTPTimestamp()
const {
return ntptimestamp; }
64 uint32_t GetRTPTimestamp()
const {
return rtptimestamp; }
65 uint32_t GetPacketCount()
const {
return packetcount; }
66 uint32_t GetByteCount()
const {
return bytecount; }
67 RTPTime GetReceiveTime()
const {
return receivetime; }
70 RTPNTPTime ntptimestamp;
71 uint32_t rtptimestamp;
77 class RTCPReceiverReportInfo
80 RTCPReceiverReportInfo():receivetime(0,0) { hasinfo =
false; fractionlost = 0; packetslost = 0; exthighseqnr = 0; jitter = 0; lsr = 0; dlsr = 0; }
81 void Set(uint8_t fraclost,int32_t plost,uint32_t exthigh,
82 uint32_t jit,uint32_t l,uint32_t dl,
const RTPTime &rcvtime) { fractionlost = ((double)fraclost)/256.0; packetslost = plost; exthighseqnr = exthigh; jitter = jit; lsr = l; dlsr = dl; receivetime = rcvtime; hasinfo =
true; }
84 bool HasInfo()
const {
return hasinfo; }
85 double GetFractionLost()
const {
return fractionlost; }
86 int32_t GetPacketsLost()
const {
return packetslost; }
87 uint32_t GetExtendedHighestSequenceNumber()
const {
return exthighseqnr; }
88 uint32_t GetJitter()
const {
return jitter; }
89 uint32_t GetLastSRTimestamp()
const {
return lsr; }
90 uint32_t GetDelaySinceLastSR()
const {
return dlsr; }
91 RTPTime GetReceiveTime()
const {
return receivetime; }
96 uint32_t exthighseqnr;
107 void ProcessPacket(RTPPacket *pack,
const RTPTime &receivetime,
double tsunit,
bool ownpacket,
bool *accept,
bool applyprobation,
bool *onprobation);
109 bool HasSentData()
const {
return sentdata; }
110 uint32_t GetNumPacketsReceived()
const {
return packetsreceived; }
111 uint32_t GetBaseSequenceNumber()
const {
return baseseqnr; }
112 uint32_t GetExtendedHighestSequenceNumber()
const {
return exthighseqnr; }
113 uint32_t GetJitter()
const {
return jitter; }
115 int32_t GetNumPacketsReceivedInInterval()
const {
return numnewpackets; }
116 uint32_t GetSavedExtendedSequenceNumber()
const {
return savedextseqnr; }
117 void StartNewInterval() { numnewpackets = 0; savedextseqnr = exthighseqnr; }
119 void SetLastMessageTime(
const RTPTime &t) { lastmsgtime = t; }
120 RTPTime GetLastMessageTime()
const {
return lastmsgtime; }
121 void SetLastRTPPacketTime(
const RTPTime &t) { lastrtptime = t; }
122 RTPTime GetLastRTPPacketTime()
const {
return lastrtptime; }
124 void SetLastNoteTime(
const RTPTime &t) { lastnotetime = t; }
125 RTPTime GetLastNoteTime()
const {
return lastnotetime; }
128 uint32_t packetsreceived;
131 uint32_t exthighseqnr,prevexthighseqnr;
132 uint32_t jitter,prevtimestamp;
134 RTPTime prevpacktime;
137 RTPTime lastnotetime;
138 uint32_t numnewpackets;
139 uint32_t savedextseqnr;
140 #ifdef RTP_SUPPORT_PROBATION
144 #endif // RTP_SUPPORT_PROBATION
147 inline RTPSourceStats::RTPSourceStats():prevpacktime(0,0),lastmsgtime(0,0),lastrtptime(0,0),lastnotetime(0,0)
153 prevexthighseqnr = 0;
160 #ifdef RTP_SUPPORT_PROBATION
163 #endif // RTP_SUPPORT_PROBATION
180 bool HasData()
const {
if (!validated)
return false;
return packetlist.empty()?
false:
true; }
203 bool IsActive()
const {
if (!validated)
return false;
if (receivedbye)
return false;
return true; }
246 uint8_t *
GetBYEReason(
size_t *len)
const { *len = byereasonlen;
return byereason; }
410 #ifdef RTP_SUPPORT_SDESPRIV
424 #endif // RTP_SUPPORT_SDESPRIV
430 std::list<RTPPacket *> packetlist;
435 double timestampunit;
438 bool processedinrtcp;
441 RTCPSenderReportInfo SRinf,SRprevinf;
442 RTCPReceiverReportInfo RRinf,RRprevinf;
443 RTPSourceStats stats;
446 bool isrtpaddrset,isrtcpaddrset;
461 if (packetlist.empty())
463 p = *(packetlist.begin());
464 packetlist.pop_front();
470 std::list<RTPPacket *>::const_iterator it;
472 for (it = packetlist.begin() ; it != packetlist.end() ; ++it)
473 RTPDelete(*it,GetMemoryManager());
479 #endif // RTPSOURCEDATA_H
double RR_GetFractionLost() const
Returns the fraction lost value from the last report.
Definition: rtpsourcedata.h:302
double GetTimestampUnit() const
Returns the timestamp unit used for this participant.
Definition: rtpsourcedata.h:260
bool IsOwnSSRC() const
Returns true if the participant was added using the RTPSources member function CreateOwnSSRC and retu...
Definition: rtpsourcedata.h:188
void INF_StartNewInterval()
Starts a new interval to count received packets in; this also stores the current extended highest seq...
Definition: rtpsourcedata.h:381
uint8_t * SDES_GetEMail(size_t *len) const
Returns a pointer to the SDES e-mail item of this participant and stores its length in len...
Definition: rtpsourcedata.h:396
uint32_t SR_GetPacketCount() const
Returns the packet count contained in the last sender report.
Definition: rtpsourcedata.h:272
The class RTCPSDESInfo is a container for RTCP SDES information.
Definition: rtcpsdesinfo.h:53
uint32_t SR_GetByteCount() const
Returns the octet count contained in the last sender report.
Definition: rtpsourcedata.h:275
uint8_t * SDES_GetNote(size_t *len) const
Returns a pointer to the SDES note item of this participant and stores its length in len...
Definition: rtpsourcedata.h:408
uint8_t * GetCNAME(size_t *len) const
Returns the SDES CNAME item and stores its length in len.
Definition: rtcpsdesinfo.h:96
bool RR_Prev_HasInfo() const
Returns true if this participant sent more than one receiver report with information about the recept...
Definition: rtpsourcedata.h:325
uint32_t RR_GetExtendedHighestSequenceNumber() const
Returns the extended highest sequence number contained in the last report.
Definition: rtpsourcedata.h:308
uint8_t * GetLocation(size_t *len) const
Returns the SDES location item and stores its length in len.
Definition: rtcpsdesinfo.h:108
RTPNTPTime SR_Prev_GetNTPTimestamp() const
Returns the NTP timestamp contained in the second to last sender report.
Definition: rtpsourcedata.h:284
uint32_t GetSSRC() const
Returns the SSRC identifier for this member.
Definition: rtpsourcedata.h:183
uint8_t * SDES_GetTool(size_t *len) const
Returns a pointer to the SDES tool item of this participant and stores its length in len...
Definition: rtpsourcedata.h:405
uint32_t RR_Prev_GetDelaySinceLastSR() const
Returns the DLSR value from the second to last report.
Definition: rtpsourcedata.h:343
bool SDES_GetPrivateValue(uint8_t *prefix, size_t prefixlen, uint8_t **value, size_t *valuelen) const
Looks for the entry which corresponds to the SDES private item prefix prefix with length prefixlen; i...
Definition: rtpsourcedata.h:423
RTPTime RR_Prev_GetReceiveTime() const
Returns the time at which the second to last report was received.
Definition: rtpsourcedata.h:346
RTPTime SR_GetReceiveTime() const
Returns the time at which the last sender report was received.
Definition: rtpsourcedata.h:278
bool HasData() const
Returns true if there are RTP packets which can be extracted.
Definition: rtpsourcedata.h:180
bool SR_HasInfo() const
Returns true if an RTCP sender report has been received from this participant.
Definition: rtpsourcedata.h:263
uint8_t * SDES_GetName(size_t *len) const
Returns a pointer to the SDES name item of this participant and stores its length in len...
Definition: rtpsourcedata.h:393
RTPTime INF_GetLastMessageTime() const
Returns the time at which something was last heard from this member.
Definition: rtpsourcedata.h:364
double RR_Prev_GetFractionLost() const
Returns the fraction lost value from the second to last report.
Definition: rtpsourcedata.h:328
uint32_t RR_GetDelaySinceLastSR() const
Returns the DLSR value from the last report.
Definition: rtpsourcedata.h:317
This is a simple wrapper for the most significant word (MSW) and least significant word (LSW) of an N...
Definition: rtptimeutilities.h:61
ProbationType
Type of probation to use for new sources.
Definition: rtpsources.h:78
bool ReceivedBYE() const
Returns true if we received a BYE message for this participant and false otherwise.
Definition: rtpsourcedata.h:240
uint32_t RR_GetLastSRTimestamp() const
Returns the LSR value from the last report.
Definition: rtpsourcedata.h:314
This class is an abstract class which is used to specify destinations, multicast groups etc...
Definition: rtpaddress.h:50
bool IsProcessedInRTCP() const
This function is used by the RTCPPacketBuilder class and returns whether this participant has been pr...
Definition: rtpsourcedata.h:213
void GotoFirstPrivateValue()
Starts the iteration over the stored SDES private item prefixes and their associated values...
uint32_t INF_GetSavedExtendedSequenceNumber() const
Returns the extended sequence number which was stored by the INF_StartNewInterval call...
Definition: rtpsourcedata.h:376
uint32_t RR_Prev_GetLastSRTimestamp() const
Returns the LSR value from the second to last report.
Definition: rtpsourcedata.h:340
RTPTime INF_GetRoundtripTime() const
Estimates the round trip time by using the LSR and DLSR info from the last receiver report...
uint32_t RR_Prev_GetJitter() const
Returns the jitter value from the second to last report.
Definition: rtpsourcedata.h:337
uint32_t RR_Prev_GetExtendedHighestSequenceNumber() const
Returns the extended highest sequence number contained in the second to last report.
Definition: rtpsourcedata.h:334
bool IsValidated() const
Returns true if the participant is validated, which is the case if a number of consecutive RTP packet...
Definition: rtpsourcedata.h:200
bool INF_HasSentData() const
Returns true if validated RTP packets have been received from this participant.
Definition: rtpsourcedata.h:349
RTPTime INF_GetLastRTPPacketTime() const
Returns the time at which the last RTP packet was received.
Definition: rtpsourcedata.h:367
uint8_t * GetNote(size_t *len) const
Returns the SDES note item and stores its length in len.
Definition: rtcpsdesinfo.h:114
Describes an entry in the RTPSources source table.
Definition: rtpsourcedata.h:167
bool IsRTCPAddressSet() const
Returns true if the address from which this participant's RTCP packets originate has already been set...
Definition: rtpsourcedata.h:223
const RTPAddress * GetRTCPDataAddress() const
Returns the address from which this participant's RTCP packets originate.
Definition: rtpsourcedata.h:237
uint32_t SR_GetRTPTimestamp() const
Returns the RTP timestamp contained in the last sender report.
Definition: rtpsourcedata.h:269
uint32_t INF_GetBaseSequenceNumber() const
Returns the base sequence number of this participant.
Definition: rtpsourcedata.h:355
void SetTimestampUnit(double tsu)
Sets the value for the timestamp unit to be used in jitter calculations for data received from this p...
Definition: rtpsourcedata.h:257
uint8_t * GetBYEReason(size_t *len) const
Returns the reason for leaving contained in the BYE packet of this participant.
Definition: rtpsourcedata.h:246
void FlushPackets()
Clears the participant's RTP packet list.
Definition: rtpsourcedata.h:468
RTPPacket * GetNextPacket()
Extracts the first packet of this participants RTP packet queue.
Definition: rtpsourcedata.h:454
bool SDES_GetNextPrivateValue(uint8_t **prefix, size_t *prefixlen, uint8_t **value, size_t *valuelen)
If available, returns true and stores the next SDES private item prefix in prefix and its length in p...
Definition: rtpsourcedata.h:417
RTPTime INF_GetLastSDESNoteTime() const
Returns the time at which the last SDES NOTE item was received.
Definition: rtpsourcedata.h:387
uint32_t SR_Prev_GetByteCount() const
Returns the octet count contained in the second to last sender report.
Definition: rtpsourcedata.h:293
bool RR_HasInfo() const
Returns true if this participant sent a receiver report with information about the reception of our d...
Definition: rtpsourcedata.h:299
uint32_t SR_Prev_GetPacketCount() const
Returns the packet count contained in the second to last sender report.
Definition: rtpsourcedata.h:290
This class is used to specify wallclock time, delay intervals etc.
Definition: rtptimeutilities.h:80
RTPNTPTime SR_GetNTPTimestamp() const
Returns the NTP timestamp contained in the last sender report.
Definition: rtpsourcedata.h:266
A memory manager.
Definition: rtpmemorymanager.h:147
uint32_t INF_GetNumPacketsReceivedInInterval() const
Returns the number of packets received since a new interval was started with INF_StartNewInterval.
Definition: rtpsourcedata.h:373
double INF_GetEstimatedTimestampUnit() const
Returns the estimated timestamp unit, calculated from two consecutive sender reports.
bool GetNextPrivateValue(uint8_t **prefix, size_t *prefixlen, uint8_t **value, size_t *valuelen)
Returns SDES priv item information.
uint8_t * GetTool(size_t *len) const
Returns the SDES tool item and stores its length in len.
Definition: rtcpsdesinfo.h:111
int32_t RR_Prev_GetPacketsLost() const
Returns the number of lost packets contained in the second to last report.
Definition: rtpsourcedata.h:331
uint32_t RR_GetJitter() const
Returns the jitter value from the last report.
Definition: rtpsourcedata.h:311
RTPTime GetBYETime() const
Returns the time at which the BYE packet was received.
Definition: rtpsourcedata.h:249
bool SR_Prev_HasInfo() const
Returns true if more than one RTCP sender report has been received.
Definition: rtpsourcedata.h:281
const RTPAddress * GetRTPDataAddress() const
Returns the address from which this participant's RTP packets originate.
Definition: rtpsourcedata.h:230
uint8_t * GetEMail(size_t *len) const
Returns the SDES e-mail item and stores its length in len.
Definition: rtcpsdesinfo.h:102
Represents an RTP Packet.
Definition: rtppacket.h:56
uint32_t INF_GetExtendedHighestSequenceNumber() const
Returns the extended highest sequence number received from this participant.
Definition: rtpsourcedata.h:358
uint8_t * SDES_GetPhone(size_t *len) const
Returns a pointer to the SDES phone item of this participant and stores its length in len...
Definition: rtpsourcedata.h:399
bool GetPrivateValue(const uint8_t *prefix, size_t prefixlen, uint8_t **value, size_t *valuelen) const
Returns SDES priv item information.
int32_t INF_GetNumPacketsReceived() const
Returns the total number of received packets from this participant.
Definition: rtpsourcedata.h:352
uint32_t INF_GetJitter() const
Returns the current jitter value for this participant.
Definition: rtpsourcedata.h:361
void SetProcessedInRTCP(bool v)
This function is used by the RTCPPacketBuilder class to mark whether this participant's information h...
Definition: rtpsourcedata.h:208
RTPTime SR_Prev_GetReceiveTime() const
Returns the time at which the second to last sender report was received.
Definition: rtpsourcedata.h:296
bool IsSender() const
Returns true if this member is marked as a sender and false if not.
Definition: rtpsourcedata.h:194
uint8_t * SDES_GetLocation(size_t *len) const
Returns a pointer to the SDES location item of this participant and stores its length in len...
Definition: rtpsourcedata.h:402
RTPTime RR_GetReceiveTime() const
Returns the time at which the last report was received.
Definition: rtpsourcedata.h:320
bool IsRTPAddressSet() const
Returns true if the address from which this participant's RTP packets originate has already been set...
Definition: rtpsourcedata.h:218
uint8_t * SDES_GetCNAME(size_t *len) const
Returns a pointer to the SDES CNAME item of this participant and stores its length in len...
Definition: rtpsourcedata.h:390
bool IsCSRC() const
Returns true if the source identifier is actually a CSRC from an RTP packet.
Definition: rtpsourcedata.h:191
uint32_t SR_Prev_GetRTPTimestamp() const
Returns the RTP timestamp contained in the second to last sender report.
Definition: rtpsourcedata.h:287
void SDES_GotoFirstPrivateValue()
Starts the iteration over the stored SDES private item prefixes and their associated values...
Definition: rtpsourcedata.h:412
uint8_t * GetPhone(size_t *len) const
Returns the SDES phone item and stores its length in len.
Definition: rtcpsdesinfo.h:105
uint8_t * GetName(size_t *len) const
Returns the SDES name item and stores its length in len.
Definition: rtcpsdesinfo.h:99
bool IsActive() const
Returns true if the source was validated and had not yet sent a BYE packet.
Definition: rtpsourcedata.h:203
int32_t RR_GetPacketsLost() const
Returns the number of lost packets contained in the last report.
Definition: rtpsourcedata.h:305