接收NACK的调用栈
Call::DeliverPacket 判断数据包
通过DeliverPacket()函数区分出RTP包和RTCP包进入不同的处理流程.
而判断是否RTCP包的核心思想就是: 判断packet的payloadtype
RTCPReceiver::IncomingPacket 解析数据包
-
compound packet : 联合包, 将多个RTP包串起来通过一个UDP包进行传输
-
通过计算长度进行拆分每一个包, 此逻辑前文中有提及
-
将解析完的数据保存在packetInformation对象中
OnReceivedNack 重传包
以上几个函数所做的就是将丢包的对列中每一个包从历史记录中找到, 如果这个包还没有被重传过, 那么就会将这个包放入重传队列中进行重传