SDRAngel  4.11.5
Developer docs for <a href="https://github.com/f4exb/sdrangel">SDRangel<\a>, an Open Source Qt5 / OpenGL 3.0+ SDR and signal analyzer frontend to various hardware.
Public Member Functions | Private Member Functions | Private Attributes | List of all members
qrtplib::RTCPScheduler Class Reference

#include <rtcpscheduler.h>

+ Collaboration diagram for qrtplib::RTCPScheduler:

Public Member Functions

 RTCPScheduler (RTPSources &sources, RTPRandom &rtprand)
 
 ~RTCPScheduler ()
 
void Reset ()
 
void SetParameters (const RTCPSchedulerParams &params)
 
RTCPSchedulerParams GetParameters () const
 
void SetHeaderOverhead (std::size_t numbytes)
 
std::size_t GetHeaderOverhead () const
 
void AnalyseIncoming (RTCPCompoundPacket &rtcpcomppack)
 
void AnalyseOutgoing (RTCPCompoundPacket &rtcpcomppack)
 
void ActiveMemberDecrease ()
 
void ScheduleBYEPacket (std::size_t packetsize)
 
RTPTime GetTransmissionDelay ()
 
bool IsTime ()
 
RTPTime CalculateDeterministicInterval (bool sender=false)
 

Private Member Functions

void CalculateNextRTCPTime ()
 
void PerformReverseReconsideration ()
 
RTPTime CalculateBYETransmissionInterval ()
 
RTPTime CalculateTransmissionInterval (bool sender)
 

Private Attributes

RTPSourcessources
 
RTCPSchedulerParams schedparams
 
std::size_t headeroverhead
 
std::size_t avgrtcppacksize
 
bool hassentrtcp
 
bool firstcall
 
RTPTime nextrtcptime
 
RTPTime prevrtcptime
 
int pmembers
 
bool byescheduled
 
int byemembers
 
int pbyemembers
 
std::size_t avgbyepacketsize
 
bool sendbyenow
 
RTPRandomrtprand
 

Detailed Description

This class determines when RTCP compound packets should be sent.

Definition at line 125 of file rtcpscheduler.h.

Constructor & Destructor Documentation

◆ RTCPScheduler()

qrtplib::RTCPScheduler::RTCPScheduler ( RTPSources sources,
RTPRandom rtprand 
)

Creates an instance which will use the source table RTPSources to determine when RTCP compound packets should be scheduled. Creates an instance which will use the source table RTPSources to determine when RTCP compound packets should be scheduled. Note that for correct operation the sources instance should have information about the own SSRC (added by RTPSources::CreateOwnSSRC). You must also supply a random number generator rtprand which will be used for adding randomness to the RTCP intervals.

Definition at line 87 of file rtcpscheduler.cpp.

References avgbyepacketsize, byemembers, pbyemembers, pmembers, and Reset().

87  :
88  sources(s), nextrtcptime(0, 0), prevrtcptime(0, 0), rtprand(r)
89 {
90  pmembers = 0;
91  byemembers = 0;
92  pbyemembers = 0;
93  avgbyepacketsize = 0;
94 
95  Reset();
96 
97  //std::cout << (void *)(&rtprand) << std::endl;
98 }
std::size_t avgbyepacketsize
+ Here is the call graph for this function:

◆ ~RTCPScheduler()

qrtplib::RTCPScheduler::~RTCPScheduler ( )

Definition at line 100 of file rtcpscheduler.cpp.

101 {
102 }

Member Function Documentation

◆ ActiveMemberDecrease()

void qrtplib::RTCPScheduler::ActiveMemberDecrease ( )

This function has to be called each time a member times out or sends a BYE packet.

Definition at line 391 of file rtcpscheduler.cpp.

References qrtplib::RTPSources::GetActiveMemberCount(), PerformReverseReconsideration(), pmembers, and sources.

Referenced by qrtplib::RTPSessionSources::OnBYEPacket(), and qrtplib::RTPSessionSources::OnTimeout().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ AnalyseIncoming()

void qrtplib::RTCPScheduler::AnalyseIncoming ( RTCPCompoundPacket rtcpcomppack)

For each incoming RTCP compound packet, this function has to be called for the scheduler to work correctly.

Definition at line 114 of file rtcpscheduler.cpp.

References avgbyepacketsize, avgrtcppacksize, qrtplib::RTCPPacket::BYE, byemembers, byescheduled, qrtplib::RTCPCompoundPacket::GetCompoundPacketLength(), qrtplib::RTCPCompoundPacket::GetNextPacket(), qrtplib::RTCPPacket::GetPacketType(), qrtplib::RTCPCompoundPacket::GotoFirstPacket(), and headeroverhead.

Referenced by qrtplib::RTPSessionSources::OnRTCPCompoundPacket().

115 {
116  bool isbye = false;
117  RTCPPacket *p;
118 
119  rtcpcomppack.GotoFirstPacket();
120  while (!isbye && ((p = rtcpcomppack.GetNextPacket()) != 0))
121  {
122  if (p->GetPacketType() == RTCPPacket::BYE)
123  isbye = true;
124  }
125 
126  if (!isbye)
127  {
128  std::size_t packsize = headeroverhead + rtcpcomppack.GetCompoundPacketLength();
129  avgrtcppacksize = (std::size_t)((1.0 / 16.0) * ((double) packsize) + (15.0 / 16.0) * ((double) avgrtcppacksize));
130  }
131  else
132  {
133  if (byescheduled)
134  {
135  std::size_t packsize = headeroverhead + rtcpcomppack.GetCompoundPacketLength();
136  avgbyepacketsize = (std::size_t)((1.0 / 16.0) * ((double) packsize) + (15.0 / 16.0) * ((double) avgbyepacketsize));
137  byemembers++;
138  }
139  }
140 }
std::size_t avgbyepacketsize
std::size_t headeroverhead
std::size_t avgrtcppacksize
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ AnalyseOutgoing()

void qrtplib::RTCPScheduler::AnalyseOutgoing ( RTCPCompoundPacket rtcpcomppack)

For each outgoing RTCP compound packet, this function has to be called for the scheduler to work correctly.

Definition at line 142 of file rtcpscheduler.cpp.

References avgrtcppacksize, qrtplib::RTCPPacket::BYE, qrtplib::RTCPCompoundPacket::GetCompoundPacketLength(), qrtplib::RTCPCompoundPacket::GetNextPacket(), qrtplib::RTCPPacket::GetPacketType(), qrtplib::RTCPCompoundPacket::GotoFirstPacket(), hassentrtcp, and headeroverhead.

Referenced by qrtplib::RTPSession::ProcessPolledData().

143 {
144  bool isbye = false;
145  RTCPPacket *p;
146 
147  rtcpcomppack.GotoFirstPacket();
148  while (!isbye && ((p = rtcpcomppack.GetNextPacket()) != 0))
149  {
150  if (p->GetPacketType() == RTCPPacket::BYE)
151  isbye = true;
152  }
153 
154  if (!isbye)
155  {
156  std::size_t packsize = headeroverhead + rtcpcomppack.GetCompoundPacketLength();
157  avgrtcppacksize = (std::size_t)((1.0 / 16.0) * ((double) packsize) + (15.0 / 16.0) * ((double) avgrtcppacksize));
158  }
159 
160  hassentrtcp = true;
161 }
std::size_t headeroverhead
std::size_t avgrtcppacksize
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ CalculateBYETransmissionInterval()

RTPTime qrtplib::RTCPScheduler::CalculateBYETransmissionInterval ( )
private

Definition at line 397 of file rtcpscheduler.cpp.

References avgbyepacketsize, byemembers, byescheduled, qrtplib::RTPTime::GetDouble(), qrtplib::RTCPSchedulerParams::GetMinimumTransmissionInterval(), qrtplib::RTPRandom::GetRandomDouble(), qrtplib::RTCPSchedulerParams::GetRTCPBandwidth(), qrtplib::RTCPSchedulerParams::GetSenderBandwidthFraction(), qrtplib::RTCPSchedulerParams::GetUseHalfAtStartup(), rtprand, schedparams, and sendbyenow.

Referenced by IsTime(), and ScheduleBYEPacket().

398 {
399  if (!byescheduled)
400  return RTPTime(0, 0);
401 
402  if (sendbyenow)
403  return RTPTime(0, 0);
404 
405  double C, n;
406 
408  n = (double) byemembers;
409 
411  double tmin = Tmin.GetDouble();
412 
414  tmin /= 2.0;
415 
416  double ntimesC = n * C;
417  double Td = (tmin > ntimesC) ? tmin : ntimesC;
418 
419  double mul = rtprand.GetRandomDouble() + 0.5; // gives random value between 0.5 and 1.5
420  double T = (Td * mul) / 1.21828; // see RFC 3550 p 30
421 
422  return RTPTime(T);
423 }
virtual double GetRandomDouble()=0
double GetDouble() const
std::size_t avgbyepacketsize
double GetRTCPBandwidth() const
Definition: rtcpscheduler.h:66
RTPTime GetMinimumTransmissionInterval() const
Definition: rtcpscheduler.h:84
RTCPSchedulerParams schedparams
double GetSenderBandwidthFraction() const
Definition: rtcpscheduler.h:75
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ CalculateDeterministicInterval()

RTPTime qrtplib::RTCPScheduler::CalculateDeterministicInterval ( bool  sender = false)

Calculates the deterministic interval at this time. Calculates the deterministic interval at this time. This is used - in combination with a certain multiplier - to time out members, senders etc.

Definition at line 253 of file rtcpscheduler.cpp.

References avgrtcppacksize, qrtplib::RTPSources::GetActiveMemberCount(), qrtplib::RTPTime::GetDouble(), qrtplib::RTCPSchedulerParams::GetMinimumTransmissionInterval(), qrtplib::RTCPSchedulerParams::GetRTCPBandwidth(), qrtplib::RTCPSchedulerParams::GetSenderBandwidthFraction(), qrtplib::RTPSources::GetSenderCount(), qrtplib::RTCPSchedulerParams::GetUseHalfAtStartup(), hassentrtcp, schedparams, and sources.

Referenced by CalculateTransmissionInterval(), and qrtplib::RTPSession::ProcessPolledData().

254 {
255  int numsenders = sources.GetSenderCount();
256  int numtotal = sources.GetActiveMemberCount();
257 
258 // std::cout << "CalculateDeterministicInterval" << std::endl;
259 // std::cout << " numsenders: " << numsenders << std::endl;
260 // std::cout << " numtotal: " << numtotal << std::endl;
261 
262  // Try to avoid division by zero:
263  if (numtotal == 0)
264  numtotal++;
265 
266  double sfraction = ((double) numsenders) / ((double) numtotal);
267  double C, n;
268 
269  if (sfraction <= schedparams.GetSenderBandwidthFraction())
270  {
271  if (sender)
272  {
274  n = (double) numsenders;
275  }
276  else
277  {
279  n = (double) (numtotal - numsenders);
280  }
281  }
282  else
283  {
284  C = ((double) avgrtcppacksize) / schedparams.GetRTCPBandwidth();
285  n = (double) numtotal;
286  }
287 
289  double tmin = Tmin.GetDouble();
290 
292  tmin /= 2.0;
293 
294  double ntimesC = n * C;
295  double Td = (tmin > ntimesC) ? tmin : ntimesC;
296 
297  // TODO: for debugging
298 // std::cout << " Td: " << Td << std::endl;
299 
300  return RTPTime(Td);
301 }
int GetSenderCount() const
Definition: rtpsources.h:275
double GetDouble() const
double GetRTCPBandwidth() const
Definition: rtcpscheduler.h:66
RTPTime GetMinimumTransmissionInterval() const
Definition: rtcpscheduler.h:84
int GetActiveMemberCount() const
Definition: rtpsources.h:287
RTCPSchedulerParams schedparams
std::size_t avgrtcppacksize
double GetSenderBandwidthFraction() const
Definition: rtcpscheduler.h:75
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ CalculateNextRTCPTime()

void qrtplib::RTCPScheduler::CalculateNextRTCPTime ( )
private

Definition at line 241 of file rtcpscheduler.cpp.

References CalculateTransmissionInterval(), qrtplib::RTPTime::CurrentTime(), qrtplib::RTPSources::GetOwnSourceInfo(), qrtplib::RTPSourceData::IsSender(), nextrtcptime, and sources.

Referenced by GetTransmissionDelay(), and IsTime().

242 {
243  bool aresender = false;
244  RTPSourceData *srcdat;
245 
246  if ((srcdat = sources.GetOwnSourceInfo()) != 0)
247  aresender = srcdat->IsSender();
248 
251 }
RTPSourceData * GetOwnSourceInfo()
Definition: rtpsources.h:243
RTPTime CalculateTransmissionInterval(bool sender)
static RTPTime CurrentTime()
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ CalculateTransmissionInterval()

RTPTime qrtplib::RTCPScheduler::CalculateTransmissionInterval ( bool  sender)
private

Definition at line 303 of file rtcpscheduler.cpp.

References CalculateDeterministicInterval(), qrtplib::RTPTime::GetDouble(), qrtplib::RTPRandom::GetRandomDouble(), and rtprand.

Referenced by CalculateNextRTCPTime(), and IsTime().

304 {
305  RTPTime Td = CalculateDeterministicInterval(sender);
306  double td, mul, T;
307 
308 // std::cout << "CalculateTransmissionInterval" << std::endl;
309 
310  td = Td.GetDouble();
311  mul = rtprand.GetRandomDouble() + 0.5; // gives random value between 0.5 and 1.5
312  T = (td * mul) / 1.21828; // see RFC 3550 p 30
313 
314 // std::cout << " Td: " << td << std::endl;
315 // std::cout << " mul: " << mul << std::endl;
316 // std::cout << " T: " << T << std::endl;
317 
318  return RTPTime(T);
319 }
virtual double GetRandomDouble()=0
RTPTime CalculateDeterministicInterval(bool sender=false)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ GetHeaderOverhead()

std::size_t qrtplib::RTCPScheduler::GetHeaderOverhead ( ) const
inline

Returns the currently used header overhead.

Definition at line 160 of file rtcpscheduler.h.

161  {
162  return headeroverhead;
163  }
std::size_t headeroverhead

◆ GetParameters()

RTCPSchedulerParams qrtplib::RTCPScheduler::GetParameters ( ) const
inline

Returns the currently used scheduler parameters.

Definition at line 148 of file rtcpscheduler.h.

Referenced by qrtplib::RTPSession::SetSessionBandwidth().

149  {
150  return schedparams;
151  }
RTCPSchedulerParams schedparams
+ Here is the caller graph for this function:

◆ GetTransmissionDelay()

RTPTime qrtplib::RTCPScheduler::GetTransmissionDelay ( )

Returns the delay after which an RTCP compound will possibly have to be sent. Returns the delay after which an RTCP compound will possibly have to be sent. The IsTime member function should be called afterwards to make sure that it actually is time to send an RTCP compound packet.

Definition at line 163 of file rtcpscheduler.cpp.

References CalculateNextRTCPTime(), qrtplib::RTPTime::CurrentTime(), firstcall, qrtplib::RTPSources::GetActiveMemberCount(), nextrtcptime, pmembers, prevrtcptime, and sources.

Referenced by qrtplib::RTPSession::GetRTCPDelay().

164 {
165  if (firstcall)
166  {
167  firstcall = false;
171  }
172 
173  RTPTime curtime = RTPTime::CurrentTime();
174 
175  if (curtime > nextrtcptime) // packet should be sent
176  return RTPTime(0, 0);
177 
178  RTPTime diff = nextrtcptime;
179  diff -= curtime;
180 
181  return diff;
182 }
int GetActiveMemberCount() const
Definition: rtpsources.h:287
static RTPTime CurrentTime()
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ IsTime()

bool qrtplib::RTCPScheduler::IsTime ( )

This function returns true if it's time to send an RTCP compound packet and false otherwise. This function returns true if it's time to send an RTCP compound packet and false otherwise. If the function returns true, it will also have calculated the next time at which a packet should be sent, so if it is called again right away, it will return false.

Definition at line 184 of file rtcpscheduler.cpp.

References byescheduled, CalculateBYETransmissionInterval(), CalculateNextRTCPTime(), CalculateTransmissionInterval(), qrtplib::RTPTime::CurrentTime(), firstcall, qrtplib::RTPSources::GetActiveMemberCount(), qrtplib::RTPSources::GetOwnSourceInfo(), qrtplib::RTPSourceData::IsSender(), nextrtcptime, pmembers, prevrtcptime, and sources.

Referenced by qrtplib::RTPSession::BYEDestroy(), and qrtplib::RTPSession::ProcessPolledData().

185 {
186  if (firstcall)
187  {
188  firstcall = false;
192  return false;
193  }
194 
195  RTPTime currenttime = RTPTime::CurrentTime();
196 
197 // // TODO: for debugging
198 // double diff = nextrtcptime.GetDouble() - currenttime.GetDouble();
199 //
200 // std::cout << "Delay till next RTCP interval: " << diff << std::endl;
201 
202  if (currenttime < nextrtcptime) // timer has not yet expired
203  return false;
204 
205  RTPTime checktime(0, 0);
206 
207  if (!byescheduled)
208  {
209  bool aresender = false;
210  RTPSourceData *srcdat;
211 
212  if ((srcdat = sources.GetOwnSourceInfo()) != 0)
213  aresender = srcdat->IsSender();
214 
215  checktime = CalculateTransmissionInterval(aresender);
216  }
217  else
218  checktime = CalculateBYETransmissionInterval();
219 
220 // std::cout << "Calculated checktime: " << checktime.GetDouble() << std::endl;
221 
222  checktime += prevrtcptime;
223 
224  if (checktime <= currenttime) // Okay
225  {
226  byescheduled = false;
227  prevrtcptime = currenttime;
230  return true;
231  }
232 
233 // std::cout << "New delay: " << nextrtcptime.GetDouble() - currenttime.GetDouble() << std::endl;
234 
235  nextrtcptime = checktime;
237 
238  return false;
239 }
RTPSourceData * GetOwnSourceInfo()
Definition: rtpsources.h:243
RTPTime CalculateBYETransmissionInterval()
int GetActiveMemberCount() const
Definition: rtpsources.h:287
RTPTime CalculateTransmissionInterval(bool sender)
static RTPTime CurrentTime()
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ PerformReverseReconsideration()

void qrtplib::RTCPScheduler::PerformReverseReconsideration ( )
private

Definition at line 321 of file rtcpscheduler.cpp.

References qrtplib::RTPTime::CurrentTime(), firstcall, qrtplib::RTPSources::GetActiveMemberCount(), qrtplib::RTPTime::GetDouble(), nextrtcptime, pmembers, prevrtcptime, and sources.

Referenced by ActiveMemberDecrease().

322 {
323  if (firstcall)
324  return;
325 
326  double diff1, diff2;
327  int members = sources.GetActiveMemberCount();
328 
329  RTPTime tc = RTPTime::CurrentTime();
330  RTPTime tn_min_tc = nextrtcptime;
331 
332  if (tn_min_tc > tc)
333  tn_min_tc -= tc;
334  else
335  tn_min_tc = RTPTime(0, 0);
336 
337 // std::cout << "+tn_min_tc0 " << nextrtcptime.GetDouble()-tc.GetDouble() << std::endl;
338 // std::cout << "-tn_min_tc0 " << -nextrtcptime.GetDouble()+tc.GetDouble() << std::endl;
339 // std::cout << "tn_min_tc " << tn_min_tc.GetDouble() << std::endl;
340 
341  RTPTime tc_min_tp = tc;
342 
343  if (tc_min_tp > prevrtcptime)
344  tc_min_tp -= prevrtcptime;
345  else
346  tc_min_tp = 0;
347 
348  if (pmembers == 0) // avoid division by zero
349  pmembers++;
350 
351  diff1 = (((double) members) / ((double) pmembers)) * tn_min_tc.GetDouble();
352  diff2 = (((double) members) / ((double) pmembers)) * tc_min_tp.GetDouble();
353 
354  nextrtcptime = tc;
355  prevrtcptime = tc;
356  nextrtcptime += RTPTime(diff1);
357  prevrtcptime -= RTPTime(diff2);
358 
359  pmembers = members;
360 }
int GetActiveMemberCount() const
Definition: rtpsources.h:287
static RTPTime CurrentTime()
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Reset()

void qrtplib::RTCPScheduler::Reset ( )

Resets the scheduler.

Definition at line 104 of file rtcpscheduler.cpp.

References avgrtcppacksize, byescheduled, firstcall, hassentrtcp, headeroverhead, and sendbyenow.

Referenced by qrtplib::RTPSession::BYEDestroy(), qrtplib::RTPSession::Destroy(), qrtplib::RTPSession::InternalCreate(), and RTCPScheduler().

105 {
106  headeroverhead = 0; // user has to set this to an appropriate value
107  hassentrtcp = false;
108  firstcall = true;
109  avgrtcppacksize = 1000; // TODO: what is a good value for this?
110  byescheduled = false;
111  sendbyenow = false;
112 }
std::size_t headeroverhead
std::size_t avgrtcppacksize
+ Here is the caller graph for this function:

◆ ScheduleBYEPacket()

void qrtplib::RTCPScheduler::ScheduleBYEPacket ( std::size_t  packetsize)

Asks the scheduler to schedule an RTCP compound packet containing a BYE packetl; the compound packet has size packetsize.

Definition at line 362 of file rtcpscheduler.cpp.

References avgbyepacketsize, byemembers, byescheduled, CalculateBYETransmissionInterval(), qrtplib::RTPTime::CurrentTime(), firstcall, qrtplib::RTPSources::GetActiveMemberCount(), qrtplib::RTCPSchedulerParams::GetRequestImmediateBYE(), headeroverhead, nextrtcptime, pbyemembers, pmembers, prevrtcptime, schedparams, sendbyenow, and sources.

Referenced by qrtplib::RTPSession::BYEDestroy(), and qrtplib::RTPSession::ProcessPolledData().

363 {
364  if (byescheduled)
365  return;
366 
367  if (firstcall)
368  {
369  firstcall = false;
371  }
372 
373  byescheduled = true;
374  avgbyepacketsize = packetsize + headeroverhead;
375 
376  // For now, we will always use the BYE backoff algorithm as described in rfc 3550 p 33
377 
378  byemembers = 1;
379  pbyemembers = 1;
380 
381  if (schedparams.GetRequestImmediateBYE() && sources.GetActiveMemberCount() < 50) // p 34 (top)
382  sendbyenow = true;
383  else
384  sendbyenow = false;
385 
389 }
std::size_t avgbyepacketsize
RTPTime CalculateBYETransmissionInterval()
std::size_t headeroverhead
int GetActiveMemberCount() const
Definition: rtpsources.h:287
RTCPSchedulerParams schedparams
static RTPTime CurrentTime()
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SetHeaderOverhead()

void qrtplib::RTCPScheduler::SetHeaderOverhead ( std::size_t  numbytes)
inline

Sets the header overhead from underlying protocols (for example UDP and IP) to numbytes.

Definition at line 154 of file rtcpscheduler.h.

Referenced by qrtplib::RTPSession::InternalCreate().

155  {
156  headeroverhead = numbytes;
157  }
std::size_t headeroverhead
+ Here is the caller graph for this function:

◆ SetParameters()

void qrtplib::RTCPScheduler::SetParameters ( const RTCPSchedulerParams params)
inline

Sets the scheduler parameters to be used to params.

Definition at line 142 of file rtcpscheduler.h.

Referenced by qrtplib::RTPSession::InternalCreate(), and qrtplib::RTPSession::SetSessionBandwidth().

143  {
144  schedparams = params;
145  }
RTCPSchedulerParams schedparams
+ Here is the caller graph for this function:

Member Data Documentation

◆ avgbyepacketsize

std::size_t qrtplib::RTCPScheduler::avgbyepacketsize
private

◆ avgrtcppacksize

std::size_t qrtplib::RTCPScheduler::avgrtcppacksize
private

◆ byemembers

int qrtplib::RTCPScheduler::byemembers
private

◆ byescheduled

bool qrtplib::RTCPScheduler::byescheduled
private

◆ firstcall

bool qrtplib::RTCPScheduler::firstcall
private

◆ hassentrtcp

bool qrtplib::RTCPScheduler::hassentrtcp
private

Definition at line 207 of file rtcpscheduler.h.

Referenced by AnalyseOutgoing(), CalculateDeterministicInterval(), and Reset().

◆ headeroverhead

std::size_t qrtplib::RTCPScheduler::headeroverhead
private

Definition at line 205 of file rtcpscheduler.h.

Referenced by AnalyseIncoming(), AnalyseOutgoing(), Reset(), and ScheduleBYEPacket().

◆ nextrtcptime

RTPTime qrtplib::RTCPScheduler::nextrtcptime
private

◆ pbyemembers

int qrtplib::RTCPScheduler::pbyemembers
private

Definition at line 215 of file rtcpscheduler.h.

Referenced by RTCPScheduler(), and ScheduleBYEPacket().

◆ pmembers

int qrtplib::RTCPScheduler::pmembers
private

◆ prevrtcptime

RTPTime qrtplib::RTCPScheduler::prevrtcptime
private

◆ rtprand

RTPRandom& qrtplib::RTCPScheduler::rtprand
private

◆ schedparams

RTCPSchedulerParams qrtplib::RTCPScheduler::schedparams
private

◆ sendbyenow

bool qrtplib::RTCPScheduler::sendbyenow
private

Definition at line 217 of file rtcpscheduler.h.

Referenced by CalculateBYETransmissionInterval(), Reset(), and ScheduleBYEPacket().

◆ sources

RTPSources& qrtplib::RTCPScheduler::sources
private

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