JRTPLIB  3.9.0
rtpsourcedata.h
Go to the documentation of this file.
1 /*
2 
3  This file is a part of JRTPLIB
4  Copyright (c) 1999-2011 Jori Liesenborgs
5 
6  Contact: jori.liesenborgs@gmail.com
7 
8  This library was developed at the Expertise Centre for Digital Media
9  (http://www.edm.uhasselt.be), a research center of the Hasselt University
10  (http://www.uhasselt.be). The library is based upon work done for
11  my thesis at the School for Knowledge Technology (Belgium/The Netherlands).
12 
13  Permission is hereby granted, free of charge, to any person obtaining a
14  copy of this software and associated documentation files (the "Software"),
15  to deal in the Software without restriction, including without limitation
16  the rights to use, copy, modify, merge, publish, distribute, sublicense,
17  and/or sell copies of the Software, and to permit persons to whom the
18  Software is furnished to do so, subject to the following conditions:
19 
20  The above copyright notice and this permission notice shall be included
21  in all copies or substantial portions of the Software.
22 
23  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
24  OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
25  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
26  THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
27  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
28  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
29  IN THE SOFTWARE.
30 
31 */
32 
37 #ifndef RTPSOURCEDATA_H
38 
39 #define RTPSOURCEDATA_H
40 
41 #include "rtpconfig.h"
42 #include "rtptimeutilities.h"
43 #include "rtppacket.h"
44 #include "rtcpsdesinfo.h"
45 #include "rtptypes.h"
46 #include "rtpsources.h"
47 #include "rtpmemoryobject.h"
48 #include <list>
49 
50 namespace jrtplib
51 {
52 
53 class RTPAddress;
54 
55 class RTCPSenderReportInfo
56 {
57 public:
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; }
61 
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; }
68 private:
69  bool hasinfo;
70  RTPNTPTime ntptimestamp;
71  uint32_t rtptimestamp;
72  uint32_t packetcount;
73  uint32_t bytecount;
74  RTPTime receivetime;
75 };
76 
77 class RTCPReceiverReportInfo
78 {
79 public:
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; }
83 
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; }
92 private:
93  bool hasinfo;
94  double fractionlost;
95  int32_t packetslost;
96  uint32_t exthighseqnr;
97  uint32_t jitter;
98  uint32_t lsr;
99  uint32_t dlsr;
100  RTPTime receivetime;
101 };
102 
103 class RTPSourceStats
104 {
105 public:
106  RTPSourceStats();
107  void ProcessPacket(RTPPacket *pack,const RTPTime &receivetime,double tsunit,bool ownpacket,bool *accept,bool applyprobation,bool *onprobation);
108 
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; }
114 
115  int32_t GetNumPacketsReceivedInInterval() const { return numnewpackets; }
116  uint32_t GetSavedExtendedSequenceNumber() const { return savedextseqnr; }
117  void StartNewInterval() { numnewpackets = 0; savedextseqnr = exthighseqnr; }
118 
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; }
123 
124  void SetLastNoteTime(const RTPTime &t) { lastnotetime = t; }
125  RTPTime GetLastNoteTime() const { return lastnotetime; }
126 private:
127  bool sentdata;
128  uint32_t packetsreceived;
129  uint32_t numcycles; // shifted left 16 bits
130  uint32_t baseseqnr;
131  uint32_t exthighseqnr,prevexthighseqnr;
132  uint32_t jitter,prevtimestamp;
133  double djitter;
134  RTPTime prevpacktime;
135  RTPTime lastmsgtime;
136  RTPTime lastrtptime;
137  RTPTime lastnotetime;
138  uint32_t numnewpackets;
139  uint32_t savedextseqnr;
140 #ifdef RTP_SUPPORT_PROBATION
141  uint16_t prevseqnr;
142  int probation;
143  RTPSources::ProbationType probationtype;
144 #endif // RTP_SUPPORT_PROBATION
145 };
146 
147 inline RTPSourceStats::RTPSourceStats():prevpacktime(0,0),lastmsgtime(0,0),lastrtptime(0,0),lastnotetime(0,0)
148 {
149  sentdata = false;
150  packetsreceived = 0;
151  baseseqnr = 0;
152  exthighseqnr = 0;
153  prevexthighseqnr = 0;
154  jitter = 0;
155  numcycles = 0;
156  numnewpackets = 0;
157  prevtimestamp = 0;
158  djitter = 0;
159  savedextseqnr = 0;
160 #ifdef RTP_SUPPORT_PROBATION
161  probation = 0;
162  prevseqnr = 0;
163 #endif // RTP_SUPPORT_PROBATION
164 }
165 
167 class RTPSourceData : public RTPMemoryObject
168 {
169 protected:
170  RTPSourceData(uint32_t ssrc, RTPMemoryManager *mgr = 0);
171  virtual ~RTPSourceData();
172 public:
175 
177  void FlushPackets();
178 
180  bool HasData() const { if (!validated) return false; return packetlist.empty()?false:true; }
181 
183  uint32_t GetSSRC() const { return ssrc; }
184 
188  bool IsOwnSSRC() const { return ownssrc; }
189 
191  bool IsCSRC() const { return iscsrc; }
192 
194  bool IsSender() const { return issender; }
195 
200  bool IsValidated() const { return validated; }
201 
203  bool IsActive() const { if (!validated) return false; if (receivedbye) return false; return true; }
204 
208  void SetProcessedInRTCP(bool v) { processedinrtcp = v; }
209 
213  bool IsProcessedInRTCP() const { return processedinrtcp; }
214 
218  bool IsRTPAddressSet() const { return isrtpaddrset; }
219 
223  bool IsRTCPAddressSet() const { return isrtcpaddrset; }
224 
230  const RTPAddress *GetRTPDataAddress() const { return rtpaddr; }
231 
237  const RTPAddress *GetRTCPDataAddress() const { return rtcpaddr; }
238 
240  bool ReceivedBYE() const { return receivedbye; }
241 
246  uint8_t *GetBYEReason(size_t *len) const { *len = byereasonlen; return byereason; }
247 
249  RTPTime GetBYETime() const { return byetime; }
250 
257  void SetTimestampUnit(double tsu) { timestampunit = tsu; }
258 
260  double GetTimestampUnit() const { return timestampunit; }
261 
263  bool SR_HasInfo() const { return SRinf.HasInfo(); }
264 
266  RTPNTPTime SR_GetNTPTimestamp() const { return SRinf.GetNTPTimestamp(); }
267 
269  uint32_t SR_GetRTPTimestamp() const { return SRinf.GetRTPTimestamp(); }
270 
272  uint32_t SR_GetPacketCount() const { return SRinf.GetPacketCount(); }
273 
275  uint32_t SR_GetByteCount() const { return SRinf.GetByteCount(); }
276 
278  RTPTime SR_GetReceiveTime() const { return SRinf.GetReceiveTime(); }
279 
281  bool SR_Prev_HasInfo() const { return SRprevinf.HasInfo(); }
282 
284  RTPNTPTime SR_Prev_GetNTPTimestamp() const { return SRprevinf.GetNTPTimestamp(); }
285 
287  uint32_t SR_Prev_GetRTPTimestamp() const { return SRprevinf.GetRTPTimestamp(); }
288 
290  uint32_t SR_Prev_GetPacketCount() const { return SRprevinf.GetPacketCount(); }
291 
293  uint32_t SR_Prev_GetByteCount() const { return SRprevinf.GetByteCount(); }
294 
296  RTPTime SR_Prev_GetReceiveTime() const { return SRprevinf.GetReceiveTime(); }
297 
299  bool RR_HasInfo() const { return RRinf.HasInfo(); }
300 
302  double RR_GetFractionLost() const { return RRinf.GetFractionLost(); }
303 
305  int32_t RR_GetPacketsLost() const { return RRinf.GetPacketsLost(); }
306 
308  uint32_t RR_GetExtendedHighestSequenceNumber() const { return RRinf.GetExtendedHighestSequenceNumber(); }
309 
311  uint32_t RR_GetJitter() const { return RRinf.GetJitter(); }
312 
314  uint32_t RR_GetLastSRTimestamp() const { return RRinf.GetLastSRTimestamp(); }
315 
317  uint32_t RR_GetDelaySinceLastSR() const { return RRinf.GetDelaySinceLastSR(); }
318 
320  RTPTime RR_GetReceiveTime() const { return RRinf.GetReceiveTime(); }
321 
325  bool RR_Prev_HasInfo() const { return RRprevinf.HasInfo(); }
326 
328  double RR_Prev_GetFractionLost() const { return RRprevinf.GetFractionLost(); }
329 
331  int32_t RR_Prev_GetPacketsLost() const { return RRprevinf.GetPacketsLost(); }
332 
334  uint32_t RR_Prev_GetExtendedHighestSequenceNumber() const { return RRprevinf.GetExtendedHighestSequenceNumber(); }
335 
337  uint32_t RR_Prev_GetJitter() const { return RRprevinf.GetJitter(); }
338 
340  uint32_t RR_Prev_GetLastSRTimestamp() const { return RRprevinf.GetLastSRTimestamp(); }
341 
343  uint32_t RR_Prev_GetDelaySinceLastSR() const { return RRprevinf.GetDelaySinceLastSR(); }
344 
346  RTPTime RR_Prev_GetReceiveTime() const { return RRprevinf.GetReceiveTime(); }
347 
349  bool INF_HasSentData() const { return stats.HasSentData(); }
350 
352  int32_t INF_GetNumPacketsReceived() const { return stats.GetNumPacketsReceived(); }
353 
355  uint32_t INF_GetBaseSequenceNumber() const { return stats.GetBaseSequenceNumber(); }
356 
358  uint32_t INF_GetExtendedHighestSequenceNumber() const { return stats.GetExtendedHighestSequenceNumber(); }
359 
361  uint32_t INF_GetJitter() const { return stats.GetJitter(); }
362 
364  RTPTime INF_GetLastMessageTime() const { return stats.GetLastMessageTime(); }
365 
367  RTPTime INF_GetLastRTPPacketTime() const { return stats.GetLastRTPPacketTime(); }
368 
370  double INF_GetEstimatedTimestampUnit() const;
371 
373  uint32_t INF_GetNumPacketsReceivedInInterval() const { return stats.GetNumPacketsReceivedInInterval(); }
374 
376  uint32_t INF_GetSavedExtendedSequenceNumber() const { return stats.GetSavedExtendedSequenceNumber(); }
377 
381  void INF_StartNewInterval() { stats.StartNewInterval(); }
382 
385 
387  RTPTime INF_GetLastSDESNoteTime() const { return stats.GetLastNoteTime(); }
388 
390  uint8_t *SDES_GetCNAME(size_t *len) const { return SDESinf.GetCNAME(len); }
391 
393  uint8_t *SDES_GetName(size_t *len) const { return SDESinf.GetName(len); }
394 
396  uint8_t *SDES_GetEMail(size_t *len) const { return SDESinf.GetEMail(len); }
397 
399  uint8_t *SDES_GetPhone(size_t *len) const { return SDESinf.GetPhone(len); }
400 
402  uint8_t *SDES_GetLocation(size_t *len) const { return SDESinf.GetLocation(len); }
403 
405  uint8_t *SDES_GetTool(size_t *len) const { return SDESinf.GetTool(len); }
406 
408  uint8_t *SDES_GetNote(size_t *len) const { return SDESinf.GetNote(len); }
409 
410 #ifdef RTP_SUPPORT_SDESPRIV
411 
413 
417  bool SDES_GetNextPrivateValue(uint8_t **prefix,size_t *prefixlen,uint8_t **value,size_t *valuelen) { return SDESinf.GetNextPrivateValue(prefix,prefixlen,value,valuelen); }
418 
423  bool SDES_GetPrivateValue(uint8_t *prefix,size_t prefixlen,uint8_t **value,size_t *valuelen) const { return SDESinf.GetPrivateValue(prefix,prefixlen,value,valuelen); }
424 #endif // RTP_SUPPORT_SDESPRIV
425 
426 #ifdef RTPDEBUG
427  virtual void Dump();
428 #endif // RTPDEBUG
429 protected:
430  std::list<RTPPacket *> packetlist;
431 
432  uint32_t ssrc;
433  bool ownssrc;
434  bool iscsrc;
435  double timestampunit;
436  bool receivedbye;
437  bool validated;
438  bool processedinrtcp;
439  bool issender;
440 
441  RTCPSenderReportInfo SRinf,SRprevinf;
442  RTCPReceiverReportInfo RRinf,RRprevinf;
443  RTPSourceStats stats;
444  RTCPSDESInfo SDESinf;
445 
446  bool isrtpaddrset,isrtcpaddrset;
447  RTPAddress *rtpaddr,*rtcpaddr;
448 
449  RTPTime byetime;
450  uint8_t *byereason;
451  size_t byereasonlen;
452 };
453 
455 {
456  if (!validated)
457  return 0;
458 
459  RTPPacket *p;
460 
461  if (packetlist.empty())
462  return 0;
463  p = *(packetlist.begin());
464  packetlist.pop_front();
465  return p;
466 }
467 
469 {
470  std::list<RTPPacket *>::const_iterator it;
471 
472  for (it = packetlist.begin() ; it != packetlist.end() ; ++it)
473  RTPDelete(*it,GetMemoryManager());
474  packetlist.clear();
475 }
476 
477 } // end namespace
478 
479 #endif // RTPSOURCEDATA_H
480 
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