• 媒体数据在收发端的处理速度
• 网络拥塞

## 接收端基于延迟的码率控制

The remote rate controller is a finite state machine in which the state of $σ$ is changed by the signal $s$ produced by the over-use detector based on the output $m({t}_{i})$ of the arrival-time filter. The adaptive threshold block dynamically sets the threshold $γ({t}_{i})$ used by the over-use detector. The REMB Processing decides when to send a REMB message based on the value of the rate ${A}_{r}$. Finally, it is important to notice that ${A}_{r}({t}_{i})$ is upper bounded by 1.5${R}_{r}({t}_{i})$.

### Arrival-time Filter

Arrival-time Filter模块用来计算网络延迟$m({t}_{i})$，GCC算法采用Kalman Filter来估算该值。Kalman Filter采用单程帧间延迟差值${d}_{m}({t}_{i})$，单程帧间延迟差值表示两个数据帧到达接收端的延迟差值。如下图所示：

### Overuse Detector

Overuse Detector根据Arrival-time Filter计算出的网络延时$m({t}_{i})$以及Adaptive Threshold提供的$γ({t}_{i})$值来判断当前网络是否过载，并告知Remote Rate Controller对应的信号$s$——overusenormalunderuse。下图表明Overuse Detector是如何工作的：

• overuse: $m({t}_{i})$ > $γ({t}_{i})$and keep 100ms
• underuse: $m({t}_{i})$ < -$γ({t}_{i})$ and keep 100ms
• normal: -$γ({t}_{i})$ < $m({t}_{i})$ < $γ({t}_{i})$

### Remote Rate Controller

Remote Rate Controller模块根据上文提到的接收端码率计算公式来计算接收端预估码率。该模块是个无线状态机，其状态变动如下图所示：

• s=overuse，预估码率降低为接收码率的85%，处于decrease状态;
• s=underuse，预估码率保持和上次预估码率一样，处于hold状态；
• s=normal，预估码率上升为上次预估码率的105%，处于increase状态。

### Remb Processing

Remb Processing模块用于通知发送端来自接收端预估的码率。该码率通过RTCP REMB报文反馈给发送端。正常情况下，该报文每隔1s发送一次，但如果${A}_{r}({t}_{i})$ < 0.97${A}_{r}({t}_{i-1})$，该报文立马发送。