webrtc代码走读二十一(InterArrival::ComputeDeltas)
一、函数调用栈
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报文的系统时间
webrtc代码走读二十一(InterArrival::ComputeDeltas)相关推荐
- webrtc代码走读四(rtp包格式)
一.rtp包头格式 V:版本号,必须为2 P:填充位 X:扩展位,标志是否存在扩展 CC:CSRC个数 M:Mark标志位,标志是否是一帧的结束,音频帧几乎每个包都是一个完整的帧,所以M一般情况都等于 ...
- webrtc代码走读五(JitterBuffer)
一. 什么是JitterBuffer Jitter Buffer也叫做抖动缓冲区,它是实时音视频里面的一个重要模块,它对数据包丢失.乱序.延迟到达等情况进行处理,平滑的向解码模块输出数据包/帧,抵抗各 ...
- X264代码走读二(intra_refresh实现)
一.RTC遇到问题 实时音视频传输对延时要求很严苛,I P size大小不均是引入延时的主要原因之一.尤其Pacer模块要平滑发送视频数据,超大I帧必然引入比较大的传输延时.<Motion Ad ...
- webrtc代码走读七(rtp包格式)
一.rtp包头格式 V:版本号,必须为2 P:填充位 X:扩展位,标志是否存在扩展 CC:CSRC个数 M:Mark标志位,标志是否是一帧的结束,音频帧几乎每个包都是一个完整的帧,所以M一般情况都等于 ...
- webrtc 代码走读六
一.呼叫流程图 webrtc的ICE符合rfc5245标准协议.该协议的链接为:https://tools.ietf.org/html/rfc5245 每个终端都有一系列传输地址(包括传输协议.IP地 ...
- TI单芯片毫米波雷达代码走读(十一)—— 距离维(1D)处理之直流去除
chirp内处理void MmwDemo_interChirpProcessing()函数最后有这样两行代码: if(obj->cliCfg->calibDcRangeSigCfg.ena ...
- ex.php,Exphp代码走读(二)
1 <?php2 namespace System\Core;3 use System\Driver;4 5 classApp{6 public $DB;7 public $Cache;8 pu ...
- webrtc代码走读:发送端NACK和FEC的packet压到队列走读
一.NACK发送端packet data和FEC的packet data push到packet队列函数调用栈 PacingController::ProcessPackets() ->Pack ...
- webrtc QOS方法二.3(FEC冗余度配置)
一.概述 webrtc的FEC冗余度配置整体思想是: 1.接收端根据收到报文情况计算一个丢包率,通过RTCP_RR报文反馈给发送端. 接收端丢包率计算代码走读请参见:<webrtc代码走读十一( ...
最新文章
- bash . dot using
- Kali Linux 2020.1修改root用户密码
- C# string.Format谨慎使用
- 链表python笔试题目_python经典面试算法题1.4:如何对链表进行重新排序
- VTK:数据集表面用法实战
- c语言链表复数实验,数据结构实验—复数计算器 大神提意见
- PHP+MySQL 手工注入语句大全 推荐
- Flash AS3获取PHP数据(ActionScript3 + php + email)送ActionScript2
- mysql 准则 杂谈
- objective 修改plist文件
- cisco ios cookbook
- Android中需要了解的数据结构(一)
- python游戏程序代码大全_python小游戏代码,python小游戏代码大全打枪
- win10任务栏图标空白的解决方案
- QT之TreeWidgetItem基本使用
- 一对一高清直播系统解决方案
- Java云同桌学习系列(十五)——MySQL数据库
- unity无光照着色器(顶点片元着色器)使用TAA抗锯齿后角色移动时模糊(虚影)解决方案
- windows server 2012 r2 搭建企业文件共享存储
- 程序员的跳槽人生(跳槽攻略)