37 #ifndef RTPSOURCEDATA_H 39 #define RTPSOURCEDATA_H 41 #include "rtpconfig.h" 55 class JRTPLIB_IMPORTEXPORT 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 JRTPLIB_IMPORTEXPORT 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;
103 class JRTPLIB_IMPORTEXPORT RTPSourceStats
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 143 #endif // RTP_SUPPORT_PROBATION 146 inline RTPSourceStats::RTPSourceStats():prevpacktime(0,0),lastmsgtime(0,0),lastrtptime(0,0),lastnotetime(0,0)
152 prevexthighseqnr = 0;
159 #ifdef RTP_SUPPORT_PROBATION 162 #endif // RTP_SUPPORT_PROBATION 179 bool HasData()
const {
if (!validated)
return false;
return packetlist.empty()?
false:
true; }
202 bool IsActive()
const {
if (!validated)
return false;
if (receivedbye)
return false;
return true; }
245 uint8_t *
GetBYEReason(
size_t *len)
const { *len = byereasonlen;
return byereason; }
369 double INF_GetEstimatedTimestampUnit()
const;
383 RTPTime INF_GetRoundtripTime()
const;
392 uint8_t *
SDES_GetName(
size_t *len)
const {
return SDESinf.GetName(len); }
404 uint8_t *
SDES_GetTool(
size_t *len)
const {
return SDESinf.GetTool(len); }
407 uint8_t *
SDES_GetNote(
size_t *len)
const {
return SDESinf.GetNote(len); }
409 #ifdef RTP_SUPPORT_SDESPRIV 416 bool SDES_GetNextPrivateValue(uint8_t **prefix,
size_t *prefixlen,uint8_t **value,
size_t *valuelen) {
return SDESinf.GetNextPrivateValue(prefix,prefixlen,value,valuelen); }
422 bool SDES_GetPrivateValue(uint8_t *prefix,
size_t prefixlen,uint8_t **value,
size_t *valuelen)
const {
return SDESinf.GetPrivateValue(prefix,prefixlen,value,valuelen); }
423 #endif // RTP_SUPPORT_SDESPRIV 429 std::list<RTPPacket *> packetlist;
434 double timestampunit;
437 bool processedinrtcp;
440 RTCPSenderReportInfo SRinf,SRprevinf;
441 RTCPReceiverReportInfo RRinf,RRprevinf;
442 RTPSourceStats stats;
445 bool isrtpaddrset,isrtcpaddrset;
460 if (packetlist.empty())
462 p = *(packetlist.begin());
463 packetlist.pop_front();
469 std::list<RTPPacket *>::const_iterator it;
471 for (it = packetlist.begin() ; it != packetlist.end() ; ++it)
472 RTPDelete(*it,GetMemoryManager());
478 #endif // RTPSOURCEDATA_H double RR_GetFractionLost() const
Returns the fraction lost value from the last report.
Definition: rtpsourcedata.h:301
double GetTimestampUnit() const
Returns the timestamp unit used for this participant.
Definition: rtpsourcedata.h:259
bool IsOwnSSRC() const
Returns true if the participant was added using the RTPSources member function CreateOwnSSRC and retu...
Definition: rtpsourcedata.h:187
void INF_StartNewInterval()
Starts a new interval to count received packets in; this also stores the current extended highest seq...
Definition: rtpsourcedata.h:380
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:395
uint32_t SR_GetPacketCount() const
Returns the packet count contained in the last sender report.
Definition: rtpsourcedata.h:271
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:274
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:407
bool RR_Prev_HasInfo() const
Returns true if this participant sent more than one receiver report with information about the recept...
Definition: rtpsourcedata.h:324
uint32_t RR_GetExtendedHighestSequenceNumber() const
Returns the extended highest sequence number contained in the last report.
Definition: rtpsourcedata.h:307
RTPNTPTime SR_Prev_GetNTPTimestamp() const
Returns the NTP timestamp contained in the second to last sender report.
Definition: rtpsourcedata.h:283
uint32_t GetSSRC() const
Returns the SSRC identifier for this member.
Definition: rtpsourcedata.h:182
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:404
uint32_t RR_Prev_GetDelaySinceLastSR() const
Returns the DLSR value from the second to last report.
Definition: rtpsourcedata.h:342
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:422
RTPTime RR_Prev_GetReceiveTime() const
Returns the time at which the second to last report was received.
Definition: rtpsourcedata.h:345
RTPTime SR_GetReceiveTime() const
Returns the time at which the last sender report was received.
Definition: rtpsourcedata.h:277
bool HasData() const
Returns true if there are RTP packets which can be extracted.
Definition: rtpsourcedata.h:179
bool SR_HasInfo() const
Returns true if an RTCP sender report has been received from this participant.
Definition: rtpsourcedata.h:262
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:392
RTPTime INF_GetLastMessageTime() const
Returns the time at which something was last heard from this member.
Definition: rtpsourcedata.h:363
double RR_Prev_GetFractionLost() const
Returns the fraction lost value from the second to last report.
Definition: rtpsourcedata.h:327
uint32_t RR_GetDelaySinceLastSR() const
Returns the DLSR value from the last report.
Definition: rtpsourcedata.h:316
This is a simple wrapper for the most significant word (MSW) and least significant word (LSW) of an N...
Definition: rtptimeutilities.h:65
bool ReceivedBYE() const
Returns true if we received a BYE message for this participant and false otherwise.
Definition: rtpsourcedata.h:239
uint32_t RR_GetLastSRTimestamp() const
Returns the LSR value from the last report.
Definition: rtpsourcedata.h:313
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:212
uint32_t INF_GetSavedExtendedSequenceNumber() const
Returns the extended sequence number which was stored by the INF_StartNewInterval call...
Definition: rtpsourcedata.h:375
uint32_t RR_Prev_GetLastSRTimestamp() const
Returns the LSR value from the second to last report.
Definition: rtpsourcedata.h:339
uint32_t RR_Prev_GetJitter() const
Returns the jitter value from the second to last report.
Definition: rtpsourcedata.h:336
uint32_t RR_Prev_GetExtendedHighestSequenceNumber() const
Returns the extended highest sequence number contained in the second to last report.
Definition: rtpsourcedata.h:333
bool IsValidated() const
Returns true if the participant is validated, which is the case if a number of consecutive RTP packet...
Definition: rtpsourcedata.h:199
bool INF_HasSentData() const
Returns true if validated RTP packets have been received from this participant.
Definition: rtpsourcedata.h:348
RTPTime INF_GetLastRTPPacketTime() const
Returns the time at which the last RTP packet was received.
Definition: rtpsourcedata.h:366
Describes an entry in the RTPSources source table.
Definition: rtpsourcedata.h:166
bool IsRTCPAddressSet() const
Returns true if the address from which this participant's RTCP packets originate has already been set...
Definition: rtpsourcedata.h:222
const RTPAddress * GetRTCPDataAddress() const
Returns the address from which this participant's RTCP packets originate.
Definition: rtpsourcedata.h:236
uint32_t SR_GetRTPTimestamp() const
Returns the RTP timestamp contained in the last sender report.
Definition: rtpsourcedata.h:268
uint32_t INF_GetBaseSequenceNumber() const
Returns the base sequence number of this participant.
Definition: rtpsourcedata.h:354
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:256
uint8_t * GetBYEReason(size_t *len) const
Returns the reason for leaving contained in the BYE packet of this participant.
Definition: rtpsourcedata.h:245
void FlushPackets()
Clears the participant's RTP packet list.
Definition: rtpsourcedata.h:467
RTPPacket * GetNextPacket()
Extracts the first packet of this participants RTP packet queue.
Definition: rtpsourcedata.h:453
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:416
RTPTime INF_GetLastSDESNoteTime() const
Returns the time at which the last SDES NOTE item was received.
Definition: rtpsourcedata.h:386
uint32_t SR_Prev_GetByteCount() const
Returns the octet count contained in the second to last sender report.
Definition: rtpsourcedata.h:292
Definition: rtpfaketransmitter.h:64
bool RR_HasInfo() const
Returns true if this participant sent a receiver report with information about the reception of our d...
Definition: rtpsourcedata.h:298
uint32_t SR_Prev_GetPacketCount() const
Returns the packet count contained in the second to last sender report.
Definition: rtpsourcedata.h:289
This class is used to specify wallclock time, delay intervals etc.
Definition: rtptimeutilities.h:84
RTPNTPTime SR_GetNTPTimestamp() const
Returns the NTP timestamp contained in the last sender report.
Definition: rtpsourcedata.h:265
A memory manager.
Definition: rtpmemorymanager.h:150
uint32_t INF_GetNumPacketsReceivedInInterval() const
Returns the number of packets received since a new interval was started with INF_StartNewInterval.
Definition: rtpsourcedata.h:372
int32_t RR_Prev_GetPacketsLost() const
Returns the number of lost packets contained in the second to last report.
Definition: rtpsourcedata.h:330
uint32_t RR_GetJitter() const
Returns the jitter value from the last report.
Definition: rtpsourcedata.h:310
RTPTime GetBYETime() const
Returns the time at which the BYE packet was received.
Definition: rtpsourcedata.h:248
bool SR_Prev_HasInfo() const
Returns true if more than one RTCP sender report has been received.
Definition: rtpsourcedata.h:280
const RTPAddress * GetRTPDataAddress() const
Returns the address from which this participant's RTP packets originate.
Definition: rtpsourcedata.h:229
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:357
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:398
int32_t INF_GetNumPacketsReceived() const
Returns the total number of received packets from this participant.
Definition: rtpsourcedata.h:351
uint32_t INF_GetJitter() const
Returns the current jitter value for this participant.
Definition: rtpsourcedata.h:360
void SetProcessedInRTCP(bool v)
This function is used by the RTCPPacketBuilder class to mark whether this participant's information h...
Definition: rtpsourcedata.h:207
RTPTime SR_Prev_GetReceiveTime() const
Returns the time at which the second to last sender report was received.
Definition: rtpsourcedata.h:295
bool IsSender() const
Returns true if this member is marked as a sender and false if not.
Definition: rtpsourcedata.h:193
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:401
RTPTime RR_GetReceiveTime() const
Returns the time at which the last report was received.
Definition: rtpsourcedata.h:319
bool IsRTPAddressSet() const
Returns true if the address from which this participant's RTP packets originate has already been set...
Definition: rtpsourcedata.h:217
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:389
bool IsCSRC() const
Returns true if the source identifier is actually a CSRC from an RTP packet.
Definition: rtpsourcedata.h:190
uint32_t SR_Prev_GetRTPTimestamp() const
Returns the RTP timestamp contained in the second to last sender report.
Definition: rtpsourcedata.h:286
void SDES_GotoFirstPrivateValue()
Starts the iteration over the stored SDES private item prefixes and their associated values...
Definition: rtpsourcedata.h:411
bool IsActive() const
Returns true if the source was validated and had not yet sent a BYE packet.
Definition: rtpsourcedata.h:202
int32_t RR_GetPacketsLost() const
Returns the number of lost packets contained in the last report.
Definition: rtpsourcedata.h:304