Outline
Bandwidth Estimation
Delay Based Control
Loss Based Control
Error Concealment
RTP Retransmission(NACK)
FEC
PLI/SLI/RPSI
Packet Arrival Model
Group of Packets, merge together the packets arrived in a burst.
Using Abstract Send Time – RTP Head Extension.
T(i) – T(i-1) means the difference of the departure time of packet group i and i-1.
t(i) – t(i-1) means the difference of the arrival time of the packet group i and i-1
The difference of delay between the packet group i and i-1 is defined as d(i) = t(i) – t(i-1) – (T(i) – T(i-1))
Model the d(i) as stochastic process w: d(i) = w(i) = m(i) + v(i), m(i) is the mean of stochastic process w, v(i) is the noise.
Arrival Time Filter
Model the m(i+1) = m(i) + u(i), u(i) is the Gaussion statistic with the zero mean and variance q(i), q(i) is RECOMMANDED equal to 10^-3.
d(i) = m(i) + v(i), v(i) is zero mean white noise var_v = E{v(i)^2}.
z(i) = d(i) – m_hat(i), where m_hat(i) is the estimation of m(i).
m_hat(i) = m_hat(i-1) + z(i) * k(i)
k(i) = (e(i-1) + q(i))/(var_v_hat(i) + e(i-1) + q(i))
e(i) = (1-k(i))*(e(i-1)+q(i))
var_v_hat(i) = max(alpha*var_v_hat(i-1) + (1-alpha)*z(i)^2, 1)
alpha = (1-chi)^(30/1000*f_max), where f_max = max{1/(T(j) – T(j-1)} for j in i-K+1, … , i, chi is the filter coefficient, typically choose as a number in [0.001, 0.1].
Over-use Detector
The output of Arrival Time Filter is the delay estimation m(i).
m(i) is compared with the threshold del_var_th(i), An estimate above the threshold is considered as an indication of over-use, but over-use will be signaled only if over-use has been detected for at least overuse_time_th milliseconds, however, if m(i) less than m(i-1), overuse will not be signaled. Similarly, the underuse is detected when m(i) less than -del_var_th(i). If neigher overuse or underuse is detected, the detector will be in normal state.
del_var_th(i) = del_var_th(i) + (t(i)-t(i-1))*K(i)*(|m(i)| - del_var_th(i-1)), where del_var_th(is) is RECOMMANDED to clamp to the range [6, 600].
Rate Control
Delay Based Estimation
R_hat_delay(i) = 1/T * sum(L(j)) for j from 1 to N(i)
A_hat_delay(i) = A_hat_delay(i-1) + max(1000, alpha*expected_packet_size_bits) if under-use
A_hat_delay(i) = beta*R_hat_delay(i), beta is RECOMMANDED to 0.85 if over-use
Loss Based Estimation
Do nothing if loss between 2% ~ 10%
R_hat_loss(i) = R_hat(i-1)*(1 – 0.5*lossRate) if loss is more than 10%
R_hat_lss(i) = R_hat(i-1)*(1+0.08) if loss is less than 2%
Combined Rate Control
R_hat = min(R_hat_loss, A_hat_delay)
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2|P| FMT=15 | PT=206 | length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SSRC of packet sender |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SSRC of media source |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Unique identifier ’R’ ’E’ ’M’ ’B’ |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Num SSRC | BR Exp | BR Mantissa |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SSRC feedback |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
FMT = 15, Application Layer Message.
PT = 206, Payload Specific Feedback Message
Retransmission and FEC Combined Error Concealment
FEC – Forward Error Correction
RFC 5109 XOR FEC, [m, 1] Pattern, 1 redundant packet for 1 packets group.
RTP Retransmission
Retrasmission plays key roles in lossy network as our test.
How to build NACK feedback, dependent on Video Jitter Buffer Status.
Sender/Receiver Delay Control, lots of accuracy control here.
PLI/SLI/RPSI
To re-sync decoder with encoder.
Reference:
Draft-ietf-rmcat-gcc-02
Draft-ietf-rtcweb-rtp-usage-26
Draft-alverstrand-rmcat-remb-03
RFC 3550 RTP
RFC 4584 Extended RTP Profile
RFC 5104 Codec Control Message in the RTP AVPF
Official Site: www.webrtc.org