webrtc-MedianSlopeEstimator

本文介绍Webrtc中的网络排队预测机制,使用趋势中值算法(MedianSlopeEstimator)来估算网络延迟趋势。该算法通过计算斜率变化来评估网络状况,并采用固定窗口大小的数据结构维护历史记录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

webrtc中网络排队,基于趋势中值算法(MedianSlopeEstimator),用于推测网络的延迟趋势,延迟值。
用于计算直线 y=ax+b

  1. 创建对象

// window_size:窗口大小,最多这多点
// threshold_gain:

MedianSlopeEstimator(size_t window_size, double threshold_gain):median_filter_(0.5){

 </br>// [PercentileFilter类](https://mp.youkuaiyun.com/postedit/88687629 "PercentileFilter")
 </br>// median_filter_(0.5)用于获取列表中数据的中值

}

2.添加点
// 2个包间接收时刻差值
// 2个包间发送时刻差值
// 接收时间点

void Update(double recv_delta_ms,double send_delta_ms,int64_t arrival_time_ms){

 	//delta_ms:传输延迟增长值,随着网络排队的加重值会越来越大,反之会越来越小
	//  delta_ms:可能>0  , =0 ,<0
  const double delta_ms = recv_delta_ms - send_delta_ms;
  ++num_of_deltas_;
  if (num_of_deltas_ kDeltaCounterMax)
      num_of_deltas_ = kDeltaCounterMax;>     

  //累积的延迟增长值
  accumulated_delay_ += delta_ms;
  //
  //  删除最早进来的老数据,维护一个固定窗口大小列表
  if (delay_hist_.size() == window_size_) {
     for (double slope : delay_hist_.front().slopes) {
          const bool success = median_filter_.Erase(slope);>           
     }
     delay_hist_.pop_front();
  }

  for (auto& old_delay : delay_hist_) {
     if (arrival_time_ms - old_delay.time != 0) {>     
		//
		//  跟历史上的所有点计算一下斜率变化,如果增加表示网络排队情况加重,
		//  =0表示没什么变化  , <0 表示网络正在恢复
		//
       double slope = (accumulated_delay_ - old_delay.delay) /
       static_cast<double>(arrival_time_ms - old_delay.time);
       //插入取中值列表中
       **median_filter_.Insert(slope);**     
   	//  记录一下,用于数据过期后进行的删除操作
       old_delay.slopes.push_back(slope);
     }
  }

  //
  // 类似push_back,但是直接通过参数进行构造的,不会进行对象的copy,性能更好一点
  delay_hist_.emplace_back(arrival_time_ms, accumulated_delay_, window_size_ - 1);
  if (delay_hist_.size() == window_size_){
     //计算出中值
     trendline_ = median_filter_.GetPercentileValue();
  }
}
  1. 获取 斜率*threshold_gain_
double trendline_slope() const { 
   return trendline_ * threshold_gain_;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值