WebRTC接收NACK消息的过程

107 阅读1分钟

接收NACK的调用栈

Call::DeliverPacket 判断数据包

通过DeliverPacket()函数区分出RTP包和RTCP包进入不同的处理流程.

而判断是否RTCP包的核心思想就是: 判断packet的payloadtype

RTCPReceiver::IncomingPacket 解析数据包

  • compound packet : 联合包, 将多个RTP包串起来通过一个UDP包进行传输

  • 通过计算长度进行拆分每一个包, 此逻辑前文中有提及

  • 将解析完的数据保存在packetInformation对象中

OnReceivedNack 重传包

以上几个函数所做的就是将丢包的对列中每一个包从历史记录中找到, 如果这个包还没有被重传过, 那么就会将这个包放入重传队列中进行重传