Ulpfec
将一组M个报文进行异或,生成N(N就是FEC的冗余度)个FEC报文,打包出去。这组报文任意丢其中的N个,都可以通过这组(M-N)个报文+FEC冗余包恢复回来
利用原理:XOR(异或算法)
WebRTC里面默认使用Red+ulp的FEC
构建流程
SendVideoPacketAsRedMaybeWithUlpfec()函数完成下列四件事情
1.把本rtp数据包【需要保护的packet】送入UlpfecGenerator,并尝试构造FEC包;
使用的是ForwardErrorCorrection对象 fec_ 来实现
通过fec_调用EncodeFec函数构造FEC
int EncodeFec(const PacketList& media_packets,//媒体包必须属于同一媒体
uint8_t protection_factor,//保护因子
int num_important_packets,//本帧中重要的包(这个与后面的掩码表设定相关)