
webrtc
傲然君
这个作者很懒,什么都没留下…
展开
-
WebRTC研究:丢包与抖动
1、累计收包、重传包等信息,并计算抖动:void StreamStatisticianImpl::UpdateCounters(const RTPHeader& header, size_t packet_length, ...原创 2020-04-07 15:39:10 · 1306 阅读 · 0 评论 -
WebRTC研究:rrt 时间 之 CallStats
在之前的文章:WebRTC研究:rrt 时间 之 再次处理以供重传等功能使用 中讲到,ModuleRtpRtcpImpl::Process() 会将 RRT 时间与当前时间一起存入 CallStats 对象的 reports_ 集合中,然后由 CallStats.Process() 计算出重传等应用中所使用到的 avg_rtt_ms_ 与 max_rtt_ms_,那么本篇文章将会介绍此部分计算逻辑...原创 2020-04-02 14:14:05 · 644 阅读 · 0 评论 -
WebRTC研究:rrt 时间 之 再次处理以供重传等功能使用
在之前的文章:WebRTC研究:rrt 时间计算 之 接收 SR / RR 包 中讲到,sender 在接收到 RR 包后,会根据包体所携带的 DelayLastSR / LastSR 计算出 RRT 时间,但这个 RRT 时间并不能直接应用到重传等功能中,必须经过二次处理。二次处理在 ModuleRtpRtcpImpl::Process() 中完成,这个函数在之前的文章:WebRTC研究:rr...原创 2020-04-02 13:11:43 · 1101 阅读 · 0 评论 -
WebRTC研究:rrt 时间计算 之 发送 SR / RR 包
一、ModuleRtpRtcpImpl::Process() 会定时处理 SR/RR 包发送、bitrate、rrt 等事宜,处理时间间隔为 5 ms:int64_t ModuleRtpRtcpImpl::TimeUntilNextProcess() { /* last_process_time_:上次调用 Process() 的开始时间 理论上是,在本次调用 Pro...原创 2020-04-01 22:45:53 · 1835 阅读 · 0 评论 -
WebRTC研究:rrt 时间计算 之 接收 SR / RR 包
一、当客户端收到一个 RTCP 包时,会根据包类型调用分别调用不同的处理函数。对于 SR 和 RR 包,都会交由 HandleSenderReceiverReport() 处理:int32_t ModuleRtpRtcpImpl::IncomingRtcpPacket(const uint8_t* rtcp_packet, const size_t length) --------- rtp_r...原创 2020-04-01 21:36:31 · 1552 阅读 · 0 评论 -
WebRTC研究:audio 如何发送需要重传的数据
当 WebRTC 收到一个 RTP 包重传请求(一个请求中可能包含多个要重传的 seq)时: 首先,判断是否有足够的带宽来发送需要重传的包,是的话,则直接拒绝本次重传。判断依据:最近 1s 内且最近 60次 (即默认以最近 1s 为参考对象,若最近 1s 内有 60 或以上次数的重传,则以最近 60 次为参考对象)发送的总位数 是否小于 目标比特率(target_bitrate)* 时间长度...原创 2020-03-30 21:17:40 · 332 阅读 · 0 评论 -
WebRTC研究:audio 重传
一、获取需要重传的包序列号std::vector<uint16_t> NackTracker::GetNackList(int64_t round_trip_time_ms) const { RTC_DCHECK_GE(round_trip_time_ms, 0); std::vector<uint16_t> sequence_numbers; for (N...原创 2020-03-28 12:01:32 · 397 阅读 · 0 评论 -
WebRTC研究:audio 丢包判断
当收到一个包时,丢包判断原理:1、将 当前收包序列号:sequence_number 从丢包集合 nack_list_ 中剔除;2、将 sequence_number 与 最近收到的新包:sequence_num_last_received_rtp_ 对比,判断当前包是否为重传或乱序包。如若是的话,直接终止判断,否则继续;3、对比 当前包 与 最新收到的包 的序列号与时间戳,更新每个包的样本...原创 2020-03-27 16:40:26 · 506 阅读 · 0 评论 -
WebRTC研究:视频丢包判断
/*sequence_number:当前收到的包序列号*/bool VCMJitterBuffer::UpdateNackList(uint16_t sequence_number) { if (nack_mode_ == kNoNack) { return true; } // Make sure we don't add packets which are alre...原创 2020-03-24 20:50:26 · 1103 阅读 · 0 评论