一、函数调用栈
internal::Call::DeliverRtcp
->RtpVideoSender::DeliverRtcp
->ModuleRtpRtcpImpl2::IncomingRtcpPacket
->RTCPReceiver::IncomingPacket
->RTCPReceiver::IncomingPacket
->RTCPReceiver::TriggerCallbacksFromRtcpPacket(const webrtc::RTCPReceiver::PacketInformation & packet_information)
->RtpTransportControllerSend::OnTransportFeedback(rtcp::TransportFeedback & feedback)
->GoogCcNetworkController::OnTransportPacketsFeedback(TransportPacketsFeedback report)
->DelayBasedBwe::IncomingPacketFeedbackVector(TransportPacketsFeedback & msg, acked_bitrate, probe_bitrate, network_estimate, in_alr)
->DelayBasedBwe::IncomingPacketFeedback(PacketResult & packet_feedback, at_time)
->InterArrival::ComputeDeltas(timestamp, arrival_time_ms, system_time_ms, packet_size, * timestamp_delta, * arrival_time_delta_ms, * packet_size_delta)
二、参数说明
1、packet_feedback.sent_packet.send_time
带TransportSequenceNumber扩展头的rtp报文发送时间。
ProcessThreadImpl::Process()
->PacedSender::Process()
->PacingController::ProcessPackets()
->PacketRouter::SendPacket
->ModuleRtpRtcpImpl2::TrySendPacket
->RtpSenderEgress::SendPacket
->RtpSenderEgress::SendPacketToNetwork
->WebRtcVoiceMediaChannel::SendRtp
->MediaChannel::SendRtp
->MediaChannel::SendPacket
->MediaChannel::DoSendPacket
->BaseChannel::SendPacket
->SrtpTransport::SendRtpPacket
->RtpTransport::SendPacket
->DtlsTransport::SendPacket
->P2PTransportChannel::SendPacket
->ProxyConnection::Send
->UDPPort::SendTo
->AsyncUDPSocket::SendTo---后续一路发送信号量到TransportFeedbackAdapter::ProcessSentPacket<RtpTransportControllerSend::OnSentPacket
发送信号量的调用栈打印如下:
-> OnSentPacket
->P2PTransportChannel::OnSentPacket
-> DtlsTransport::OnSentPacket
-> RtpTransport::OnSentPacket
-> Call::OnSentPacket
-> RtpTransportControllerSend::OnSentPacket
-> TransportFeedbackAdapter::ProcessSentPacket
2、packet_feedback.receive_time
Transport CC反馈的接收端接收时间。
3、at_time处理当前RTCP报文的系统时间