webrtc QOS方法之FEC实现(待续)

一、概述

webrtc冗余打包方式有四种:Red(rfc2198)、Ulpfec(rfc5109)、Flexfec(草案)。其中Red和Ulpfec要成对使用。

二、RedFEC

简单将old报文打包到新包上。

三、UlpFEC

将old报文异或新包后,打包新包上。

四、FlexFEC

将old报文异或新包后,打包新包上。

五、使能FEC

webrtc默认使能Red+Ulp的FEC。Flex仅在实验阶段,还不能正式使用。

webrtc QOS方法之FEC实现(待续)

六、封装FEC

1、发送冗余报文处理

RTPSenderVideo::SendVideo。当编码器支持时间分层,可以仅冗余level 0的视频数据。否则,就要冗余所有视频数据。冗余度是根据Send Side BWE动态调整。

webrtc QOS方法之FEC实现(待续)

2、冗余报文个数确定

ForwardErrorCorrection::NumFecPackets 存储媒体报文数*保护因子。

webrtc QOS方法之FEC实现(待续)

3、根据码率动态调整冗余度

ProtectionBitrateCalculator::SetTargetRates

webrtc QOS方法之FEC实现(待续)

 

参考

https://webrtcglossary.com/red/

https://webrtcglossary.com/ulpfec/

https://www.cnblogs.com/x_wukong/p/8193290.html