3.2.18 RTPCollisionList
---------------------------------------------------------------------------头文件:rtpcollisionlist.h
类代表一个SSRC冲突检测到的一个地址列表。接口如下:
void Clear()
-----清除地址列表。
int UpdateAddress(const RTPAddress *addr, const RTPTime &receivetime, bool *created)
-----更新在receivetime时刻检测到的由addr指出的一个冲突的(相关)项,如果没有该项则created将被设为true,否则设为false。
bool HasAddress(const RTPAddress *addr) const
-----如果addr在地址列表中则返回true。
void Timeout(const RTPTime ¤ttime, const RTPTime &timeoutdelay)
-----假设当前时间由currenttime给出,函数将timeoutdelay指定的上个时间间隔中没有更新的项设为超时。
3.2.19 RTCPScheduler
---------------------------------------------------------------------------头文件:rtcpscheduler.h
该类决定何时应该发送一个RTCP复合数据包,类接口如下:
RTCPScheduler(RTPSources &sources)
-----使用源表RTPSources创建一个(调度器)对象来决策什么时候应该调度一个RTCP复合数据包。为正确保证执行(创建)动作sources对象应该有关于自己的SSRC的信息(通过CreateOwnSSRC加入的)。
void Reset()
-----重置调度器。
void SetParameters(const RTCPSchedulerParams ¶ms)
-----将调度参数设为params,RTCPSchedulerParams类将在后面介绍。
RTCPSchedulerParams GetParameters() const
-----返回当前使用的调度参数。
void SetHeaderOverhead(size_t numbytes)
-----将底层协议头开销设为numbytes(例如UDP 和IP)【译注:原文Set the header overhead from underlying protocols to numbytes.】。
size t GetHeaderOverhead() const
-----返回当前头开销。
void AnalyseIncoming(RTCPCompoundPacket &rtcpcomppack)
-----对于每一个接收到的RTCP复合数据包,为使调度器正常工作都要调用该函数。
void AnalyseOutgoing(RTCPCompoundPacket &rtcpcomppack)
-----对于每一个发送的RTCP复合数据包,为使调度器正常工作都要调用该函数。
void ActiveMemberDecrease()
-----每次有成员超时或者发送了BYE数据包都要调用该函数。
void ScheduleBYEPacket(size_t packetsize)
-----请求调度器调度一个包含BYE包的RTCP复合数据包,复合数据包长度为packetsize。
RTPTime GetTransmissionDelay()
-----返回一个RTCP复合包应该被发送后的延迟,IsTime成员函数需要随后调用,以确保确实是发送一个RTCP复合包的时候到了。
bool IsTime()
-----当确实是应该发送一个RTCP复合包时函数返回true,否则返回false。如何返回true则下一次一个包应该发送的时间也已经计算好了,所以如果函数又被立刻调用则返回false。
RTPTime CalculateDeterministicInterval(bool sender = false)
-----计算此时决定性的时间间隔,这将和一个乘数一起被用来作为成员,发送器等的超时(标准)。
RTCPSchedulerParams
--------------------------------------------------------------------------头文件:rtcpscheduler.h
类RTCPSchedulerParams描述了被调度器使用的参数,接口如下:
int SetRTCPBandwidth(double bw)
------将RTCP使用的带宽设为bw(单位为比特每秒)。
double GetRTCPBandwidth() const
-----返回以比特每秒为单位的RTCP当前使用的带宽。
int SetSenderBandwidthFraction(double fraction)
-----将RTCP为发送器保留的带宽比率设为fraction
double GetSenderBandwidthFraction() const
-----返回RTCP为发送器保留的带宽比率。
int SetMinimumTransmissionInterval(const RTPTime &t)
-----设置两个RTCP复合包的最小(决定性的)时间间隔为t。
RTPTime GetMinimumTransmissionInterval() const
-----返回两个RTCP复合包的最小时间间隔。
void SetUseHalfAtStartup(bool usehalf)
-----如果usehalf为true,则在发送第一个RTCP复合包之前只使用一半的最小间隔。
bool GetUseHalfAtStartup() const
-----返回在发送第一个RTCP复合包之前是否只使用一半的最小间隔。
void SetRequestImmediateBYE(bool v)
-----如果v为true,则调度器将在允许时立刻调度一个BYE包发送。
bool GetRequestImmediateBYE()
-----如果调度器在允许时立刻调度一个BYE包发送则返回true。
参数的默认值为:
RTCP带宽:1000字节每秒。
发送器带宽比率:25%。
最小时间间隔:5秒。
在开始时使用半个最小间隔:是。
允许时立刻发送BYE包:是。
【to be continued!】