Archive


Category: Uncategorized

  • WebRTC congestion control v1

    Class Responsibility Collaborators Comments TrendlineEstimator Estimate bandwidth usage as trendline TrendlineEstimatorSettings implement interface DelayIncreaseDetectorInterface DelayBasedBwe Estimate bandwidth based on delay AimdRateControl A rate control implementation based on additive increases of bitrate when no over-use is detected and multiplicative decreases when over-uses are detected. When we think the available bandwidth has changes or is unknown, we […]

  • Janus gateway 架构分析

    It is a draft and not been done… 主要流程 启动 Janus 启动线程池,来处理来自客户端的请求和数据 加载事件处理器 加载所有插件 加载所有传输 配置文件 .jcfg 是一种传统的 .ini 增强版的格式 libconfig format Plugin Plugin initiatialization init() destroy() get_name() get_version() Plugin Session management create_session() handle_message() handle_admin_message() setup_media() incoming_rtp() incoming_rtcp() incoming_data() slow_link() hangup_media() query_session() destroy_session() Plugin interact with core push_event() relay_rtp() relay_rtcp() relay_data() close_pc() end_session() event_is_enabled() notify_event() […]

  • SFrame

    There are two layers of encryptions and authentication are required: 1. Hop-by-hop (HBH) encryption of media, metadata, and feedback messages between the the endpoints and SFU 2. End-to-end (E2E) encryption of media between the endpoints While DTLS-SRTP can be used as an efficient HBH mechanism, it is inherently point-to-point and therefore not suitable for a […]

  • In me, past, present, future meet

    引用自 "陈诚. 萨松名诗余光中译本之证伪及重译. 上海理工大学学报, 2019, 41(1): 23-29." 原诗 In me, past, present, future meet To hold long chiding conference. My lusts usurp the present tense And strangle Reason in his seat. My loves leap through the future’s fence To dance with dream-enfranchised feet. In me the cave-man clasps the seer, And garlanded Apollo goes Chanting […]

  • Auguries of Innocence

    BY WILLIAM BLAKE To see a World in a Grain of SandAnd a Heaven in a Wild Flower Hold Infinity in the palm of your hand And Eternity in an hourA Robin Red breast in a CagePuts all Heaven in a Rage A Dove house filld with Doves & PigeonsShudders Hell thr’ all its regions A dog starvd at his […]

  • network simulator 3

    NS-3 is a network simulator tool An open source discrete event simulator Event model packet transmission , receipt , timers etc. Future events maintained in sorted Event List Processing events results in zero or more new events Written in C++Extensive use of Templates , Smart Pointers, Callbacks C++ namespace (ns3) Simulation programs are C++ executables […]

  • GCC Implementation in WebRTC

    Overview RTP header extension RTCP feedback extension ProbeBitrateEstimator : 根据feedback计算探测码率,PacingController中会将包按照cluster进行划分,transport-CC报文能得到包所属的cluster以及发送和接收信息,通过发送和接收的数据大小比判断是否到达链路上限从而进行带宽探测 AcknowledgedBitrateEstimator : 估算当前的吞吐量 BitrateEstimator :使用滑动窗口 + 卡尔曼滤波计算当前发送吞吐量 DelayBasedBwe : 基于延迟预估码率 TrendlineEstimator : 使用线性回归计算当前网络拥堵情况 AimdRateControl : 通过TrendLine预测出来的网络状态对码率进行aimd方式调整 SendSideBandwidthEstimation : 基于丢包计算预估码率,结合延迟预估码率,得到最终的目标码率 ProbeController : 探测控制器,通过目标码率判断下次是否探测,探测码率大小 CongestionWindowPushbackController : 基于当前的rtt设置一个时间窗口,同时基于当前的码率设置当前时间窗口下的数据量,通过判断当前窗口的使用量,如果使用量过大的时候,降低编码时使用的目标码率,加速窗口消退,减少延迟 AlrDetector : 应用(码率)受限检测,检测当前的发送码率是否和目标码率由于编码器等原因相差过大受限了,受限情况下会触发带宽预测过程的特殊处理 NetworkStateEstimator 、 NetworkStatePredictor : 此两者属于待开发类,还没用上. Protocol 参考协议 https://datatracker.ietf.org/doc/html/draft-holmer-rmcat-transport-wide-cc-extensions-01 https://datatracker.ietf.org/doc/html/draft-ietf-rmcat-gcc-02 参考实现 https://webrtc.googlesource.com/src/+/refs/heads/main/docs/native-code/rtp-hdrext/transport-wide-cc-02/ Transport-wide Sequence Number 在每个要发送的 RTP 包中添加一个扩展头,包含 16 bits 的序号 sequence number. 在同一个传输通道中,每发一个 RTP 包,这个序号就加一 0 1 […]

  • 工程师都是福尔摩斯

    碰到难啃的骨头,头脑首先要清楚,解决问题就象破案 : 1. 把问题写下来:已知线索写下来,未知的东西有哪些,能不能重现,重现步骤有哪些 2. 把过程记下来:尝试了哪些方法,还有哪些方法可以用,还有哪些资源可以利用 3. 把原因搞清楚:可能的原因,根本的原因,直接的原因,间接的原因 4. 把方案写明白:有几种解决或预防方案,是临时措施,还是根本措施,是短期方案,还是长期方案,各有什么优劣,最好列个上中下三策, 5. 把计划做出来:采用哪个方案,如何落实,若可能还有类似问题发生,如何预防,如何应对