WebRTC之RateStatistics

RateStatistics就是一个用于计算最近一段时间内(max_window_size_ms)的带宽,scale是对带宽进行缩放,目的是为了得到bits/s为单位的带宽。例如max_window_size_ms是1000,那么scale就是8000

|bucket1|bucket2|bucket3|bucket4...
  1. Update更新数据,数据第一次进来(大小和时间戳),那么记录此时的时间作为最老的时间oldest_time_,第一个数据就存放在第一个桶里面
  2. Update更新数据,之后进来的数据减去oldest_time_得到一个偏移(桶的索引值),直接存放在对应的索引值的桶里面
  3. Update更新数据,当进来的数据时间戳相对于oldest_time_时间戳大于桶的个数时,移除最前面的数据,更新oldest_time_
  4. Rate获取当前带宽,根据当前的时间戳统计max_window_size_ms内的带宽
  5. SetWindowSize设置最小一段时间内能统计的带宽current_window_size_ms_,也就是说要达到这样的条件:now-oldest_time_>=current_window_size_ms_

你可能感兴趣的:(WebRTC之RateStatistics)