WebRTC研究:rrt 时间计算 之 接收 SR / RR 包

一、当 sender / receiver 收到一个 RTCP 包时,会根据包类型调用分别调用不同的处理函数。对于 SR 和 RR 包,都会交由 HandleSenderReceiverReport() 处理:

int32_t ModuleRtpRtcpImpl::IncomingRtcpPacket(const uint8_t* rtcp_packet, const size_t length) --------- rtp_rtcp_impl.cc

int32_t RTCPReceiver::IncomingRTCPPacket(RTCPPacketInformation& rtcpPacketInformation, RTCPUtility::RTCPParserV2* rtcpParser) --------- rtp_rtcp_impl.cc

int32_t
RTCPReceiver::IncomingRTCPPacket(RTCPPacketInformation& rtcpPacketInformation,
                                 RTCPUtility::RTCPParserV2* rtcpParser)
{
   
  ...
  ...
  ...
  while (pktType != RTCPPacketTypes::kInvalid) 
  {
   
        // Each "case" is responsible for iterate the parser to the
        // next top level packet.
        switch (pktType)
        {
   
        case RTCPPacketTypes::kSr:
        case RTCPPacketTypes::kRr:
            HandleSenderReceiverReport(*rtcpParser, rtcpPacketInformation);
            break;
        ...
        ...
        ...
        }
        pktType = rtcpParser->PacketType();
  }
  ...
  ...
  ...
}

二、对于 SR 包,receiver 会保留包内所携带的 NTP 时间戳,并记录当前 NTP 时间戳:

void
RTCPReceiver::HandleSenderReceiverReport(RTCPUtility::RTCPParserV2& rtcpParser,
                                         RTCPPacketInformation& rtcpPacketInformation)
{
   
    RTCPUtility::RTCPPacketTypes rtcpPacketType = rtcpParser.PacketType(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值