【音视频第10天】GCC论文阅读(1)
A Google Congestion Control Algorithm for Real-Time Communication draft-alvestrand-rmcat-congestion-03论文理解
看中文的GCC算法一脸懵。看一看英文版的,找一找感觉。
目录
- Abstract
- 1. Introduction
- 1.1 Mathematical notation conventions
- 2. System model
- 3.Feedback and extensions
- 4. Delay-based control
- 4.1 Arrival-time model
Abstract
本文档介绍了适用于webRTC两种拥塞控制算法。一种是== 基于时延(delay-based)== 一种是== 基于损失(loss-based)==。
1. Introduction
带宽变化很大,媒体的编码形式不能快速改变以适应变化的带宽。
编码对丢包是很敏感的,然而,媒体流出于实时性的要求会减少包的重传。
1.1 Mathematical notation conventions
略
2. System model
- RTP packet - an RTP packet containing media data.
- Packet group - 发送方发送的一组RTP包,由组出发时间和组到达时间(absolute send time)唯一标识。这些包可以是视频包、音频包或音频和视频包的混合。
- Incoming media stream - a stream of frames(帧) consisting of RTP packets.
- RTP sender - sends the RTP stream over the network to the RTP receiver. It generates the RTP timestamp and the abs-send-time header extension
- RTP receiver - receives the RTP stream, marks the time of arrival.
- RTP接收方的RTCP发送方–发送接收方报告、REMB消息和全运输范围的RTCP反馈消息。
- RTP发送方的RTCP接收方–接收接收方报告和REMB消息以及整个运输范围内的RTCP反馈消息,将这些报告给发送方控制器。
- RTP接收方的RTCP接收器,从发送方接收发送方报告。
- Loss-based controller - 测量损失率、往返时间和REMB信息,并计算出目标发送比特率。
- Delay-based controller - 从RTP接收方或RTP发送方收到的反馈中获取数据包到达信息,并计算出最大比特率,将其传递给loss-based的控制器。
3.Feedback and extensions
有两种方法来实现提出的算法,一种是两个控制器都在发送端运行,另一种是delay-based控制器在接收端运行,loss-based控制器在发送端运行。
第一种:RTP receiver会记录到达时间和每个收到的包的transport-wide sequence number,这些东西用transport-wide feedback message会定期发给发送端。【反馈的时间:时间每接收一次视频帧就反馈一次,如果只有音频或多流,至少每30毫秒一次反馈一次。如果反馈开销需要被限制,这个间隔可以增加到100ms。】RTP sender 把接收到的{序列号,到达时间}映射到“反馈报告所涵盖的每个包的发送时间”,并将这些时间戳提供给delay-based的控制器。它还会根据反馈信息中的序列号计算出一个损失率。
第二种:接收端的delay-based控制器,用来监控和处理到达时间和入包大小。发送方使用abs-send-time RTP报头扩展使接收者能够计算组间延迟变化。从delay-based controller输出的是一个比特率,它将用REMB feedback message传给回发送者。丢包率通过RTCP接收器报告发送回来。
在发送端 REMB消息中的比特率和数据包的百分比损耗被输入loss-based控制器,该控制器输出一个终值目标比特率。当检测到拥塞时建议尽快发送REMB消息,或者至少每秒一次。
4. Delay-based control
基于延迟的控制算法可以进一步分解为三部分:到达时间过滤器(an arrival-time filter)、过度使用检测器(an over-use detector)和速率控制器(a rate controller)
4.1 Arrival-time model
本节介绍了一个自适应滤波器(an adaptive filter),它根据接收到的数据包的时间持续更新网络参数的估计值。
到达间隔时间inter-arrival time, t(i) - t(i-1):表示两个包或者两组包的到达时间不同. t(i)是对应于组中最后一个包被接收的时间。
出发间隔时间inter-departure time,T(i) - T(i-1):作为两个包或两组的出发时间的不同。其中T(i)是当前包组中最后一个包的出发时间戳
组间延迟变化inter-group delay variation,d(i):d(i) = t(i) - t(i-1) - (T(i) - T(i-1))
在接收端,我们观察一组一组的传入数据包,其中一组包定义如下:在burst_time间隔内发送的包序列组成一个小组。burst_time的建议值为5ms。此外,如果其inter-arrival time小于burst_time并且d(i)<0的数据包也被认为是当前组的一部分。 将这些数据包纳入组内的原因是为了更好地处理由"因与拥堵无关的原因,数据包排队"引起的延迟瞬变。任何无序接收的数据包都被Arrival-time model忽略。
t(i) - t(i-1) > T(i) - T(i-1) 网络有拥塞
由于在一条容量为C的路径上发送一组大小为L的数据包的时间ts大致为 ts = L/C
我们可以将组间延迟变化建模为:
d(i) = L(i)/C(i) - L(i-1)/C(i-1) + w(i) L(i)-L(i-1)= -------------- + w(i) = dL(i)/C(i) + w(i)C(i)
这里,w(i)是随机过程W的一个样本,它是容量C(i)、当前交叉流量和当前发送比特率的一个函数。 C被建模为常数,因为我们希望它比这个模型的其他参数变化更慢。 我们将W建模为一个白高斯过程。 如果我们过度使用信道,我们希望w(i)的平均值增加,如果网络路径上的队列被清空,w(i)的平均值将减少;否则w(i)的平均值将为零。
相关文章:
【音视频第10天】GCC论文阅读(1)
A Google Congestion Control Algorithm for Real-Time Communication draft-alvestrand-rmcat-congestion-03论文理解 看中文的GCC算法一脸懵。看一看英文版的,找一找感觉。 目录Abstract1. Introduction1.1 Mathematical notation conventions2. System model3.Fe…...
如何进行移动设备资产管理
随着越来越多的移动设备进入和访问组织的企业资源,管理员必须监视和控制对企业数据的访问。与传统工作站不同,传统工作站位于企业的物理工作区内,移动设备从多个位置使用,从而使移动资产管理过程更加复杂。 什么是移动资产管理 …...
使用国密SSL证书,实现SSL/TLS传输层国密改造
密码是保障网络空间安全可信的核心技术和基础支撑,通过自主可控的国产密码技术保护重要数据的安全,是有效提升我国信息安全保障水平的重要举措。因此,我国高度重视商用密码算法的应用并出台相关政策法规,大力推动国产商用密码算法…...
Oracle之增删改(六)
1、插入语句 insert into 表名(列名1,列名2,…) values(值,值,…) insert into 关键字 列名(要插入数据的列),可以省略,省略时表示给表中的每个字段都插入数据 value 赋值关键字 使用这种语法一…...
OJ练习第81题——岛屿数量
岛屿数量 力扣链接:200. 岛屿数量 题目描述 给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向…...
remote gdb 操作流程
进行gdb调试时,tui可以方便地显示源代码、汇编和寄存器文本窗口。在进入gdb界面后,使用TUI快捷键(ctrlXA)可以打开/关闭tui。 出现"找不到源码"的提示时,可以通过dir加源码路径来设置源码查找路径ÿ…...
STM32基础代码学习G070CB串口透传调试(出厂默认)代码
先下载 一定记得回车换行勾选 可以参考“Quectel_BC260Y-CN_AT命令手册_V1.0.pdf” ATCGMI 查询制造商信息 ATCGMM 查询模块型号 ATCSQ 上报信号质量 ATCGATT? PS 域附着或去附着查看板子是否正常 再激活 ATQIACT1,最后查询ATQIACT? 配置阿里云mqtt atqmtc…...
介绍一款idea神级插件【Bito-ChatGPT】
什么是Bito? Bito是一款在IntelliJ IDEA编辑器中的插件,Bito插件是由ChatGPT团队开发的,它是ChatGPT团队为了提高开发效率而开发的一款工具。ChatGPT团队是一支专注于自然语言处理技术的团队,他们开发了一款基于GPT的自然语言处理…...
pycharm 2021.2.2 版本之前试用期过了怎么办
pycharm 2021.2.2 版本之前试用期过了怎么办 虽然 jetbrains 的产品是商业收费,而且价格不菲,但官方还是为免费使用留下的空间,实在良心。 收费版可以免费试用30天,问题是30天试用期过后,怎么办,可以再次试…...
【通世智库】宁晓红:医疗更完整的样子
2022年的10月,北京协和医院缓和医学中心成立了,这是巨大的好消息!北京协和医院连续13年蝉联中国医院排行榜榜首,它率先成立了缓和医学中心,可见缓和医疗在医学领域的重要地位和不可估量的价值。【作者:宁晓…...
AD20打开PCB后找不到
如出现下图情况 方法1 长按ctrl且滚轮下滑 方法2 依次点击视图 适合文件...
RTC 基础
简单的一个框架 一、上行 1.音频 音频采集->3A处理->混合(麦克风bgm自定义音频)->编码->fec->打网络包(UDT/QUIC/SRT)->加密->socket发送 2.视频 视频采集->编码->切片->fec->打网络包(UDT/QUIC/SRC)->加密->socket发送 二、下行…...
Quaternion插值方法
介绍 unity,四元数Quaternion插值方法介绍 方法 线性插值(Lerp): 适用范围:适用于需要简单平滑地过渡的情况,比如物体的位置、大小等。 优点:计算简单,效率高。 缺点:不…...
如何配置Stash以便与4EVERLAND一起使用
What is Stash? AppsCode的Stash是一个可靠的工具,用于备份和恢复Kubernetes卷和应用程序。有了Stash,你可以通过定期备份和在数据丢失或系统故障时恢复这些数据来轻松保护你的宝贵数据。Stash功能多样,可用于备份各种Kubernetes资源的数据…...
webpack plugin源码解析(四) HashedModuleIdsPlugin
文章目录作用涉及 webpack API获取chunkGraph获取当前编译过程中被使用过的 module id:compilation.usedModuleIds获取当前编译过程中所有的模块对象:compilation.modules判断 module 是否需要生成 id:module.needId获取指定module 的 module…...
pytorch | 使用vmap对自定义函数进行并行化/ 向量化的执行
0. 参考 pytorch官方文档:https://pytorch.org/docs/stable/generated/torch.func.vmap.html#torch-func-vmap关于if语句如何执行:https://github.com/pytorch/functorch/issues/257 1. 问题背景 笔者现在需要执行如下的功能: root_ls [fu…...
Docker部署RabbitMQ(单机,集群,仲裁队列)
RabbitMQ部署指南 1.单机部署 我们在Centos7虚拟机中使用Docker来安装。 1.1.下载镜像 方式一:在线拉取 docker pull rabbitmq:3-management方式二:从本地加载 在课前资料已经提供了镜像包: 上传到虚拟机中后,使用命令加载镜…...
生活污水处理设备选购指南
生活污水中含有大量的有机物(如蛋白质、碳水化合物、脂肪、尿素、氨氮等)及大量的病原微生物,可导致传染病蔓延流行。因此,生活污水在排放前,需要进行处理。那么如何正确的选择生活污水处理设备呢? 一、生活…...
奥威BI数据可视化大屏分享|多场景、多风格
数据可视化大屏一般应用在品牌推广展示、商务交流、数据分析决策、数据监控等场景,由此催生出各种不同风格的BI数据可视化大屏设计。下面就从奥威BI软件的BI报表模板中截取几个有着不同风格,起着不同作用的BI数据可视化大屏报表,一起来了解一…...
超越时空:加速预训练语言模型的训练
超越时空:加速预训练语言模型的训练 随着自然语言处理(NLP)领域的快速发展,预训练语言模型(PTLM)已成为许多NLP任务的重要基石,如文本生成、情感分析、文本分类等。然而,传统的PTLM…...
Excel MCP Server 完全指南:无需安装Excel的自动化处理方案
Excel MCP Server 完全指南:无需安装Excel的自动化处理方案 【免费下载链接】excel-mcp-server A Model Context Protocol server for Excel file manipulation 项目地址: https://gitcode.com/gh_mirrors/ex/excel-mcp-server Excel MCP Server 是一个基于模…...
SAP SD新手避坑指南:交货工厂和装运点配置错了,小心订单发不出去!
SAP SD配置实战:交货工厂与装运点配置错误的深度排查手册 当销售订单在SAP系统中卡在发货环节时,背后往往隐藏着交货工厂(Plant)与装运点(Shipping Point)的配置逻辑问题。这类错误不仅会导致业务流程中断&…...
百万WordPress站点告急!Avada Builder插件曝高危漏洞,你的后台还安全吗?
最近WordPress圈子里又炸开了锅。一款装机量突破百万的网红插件——Avada Builder,被安全团队揪出了两个致命漏洞。这事儿要是处理不及时,轻则数据库密码泄露,重则整个站点被人翻个底朝天。更扎心的是,攻击门槛低到离谱࿰…...
Python DXF文件处理终极指南:使用ezdxf库快速掌握CAD数据操作
Python DXF文件处理终极指南:使用ezdxf库快速掌握CAD数据操作 【免费下载链接】ezdxf Python interface to DXF 项目地址: https://gitcode.com/gh_mirrors/ez/ezdxf Python DXF文件处理在现代工程设计和自动化流程中扮演着重要角色,而ezdxf库正是…...
使用Taotoken聚合端点一个月,我的API调用延迟与稳定性观察记录
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 使用Taotoken聚合端点一个月,我的API调用延迟与稳定性观察记录 1. 项目背景与接入动机 我最近的一个个人项目需要持续…...
告别‘Requirement already satisfied’:精准定位Python环境,让pip install不再迷茫
1. 为什么pip总是说"已经安装好了"? 每次看到"Requirement already satisfied"这个提示,我都想对着屏幕大喊:"不!它根本没装在我想要的地方!"这种抓狂的感觉,相信很多Python…...
从Caffeine源码到实战:手把手教你用Checker Framework给Java代码做‘体检’
从Caffeine源码到实战:手把手教你用Checker Framework给Java代码做‘体检’ 在阅读Caffeine这样的高质量开源项目时,细心的开发者常会注意到一些独特的编译注解——比如Nullable、GuardedBy这类标记。这些看似简单的注解背后,其实隐藏着一个强…...
Claude Mythos出笼!AI猛兽秒破人类一年无解漏洞,GPT-5.5直接被按在地上摩擦
前言各位码农老铁、安全圈大佬、以及正在用CtrlC/V续命的程序员朋友们,请放下你手里的咖啡——别洒了,因为接下来的消息,可能会让你惊得连键盘都按歪!最近AI圈炸了锅,不是因为谁又调参调出了花,而是Anthrop…...
MCP39F501电能计量芯片:高精度单相计量方案与工程实践详解
1. 项目概述:为什么我们需要一颗专用的电能计量芯片?在智能家居、工业物联网和新能源领域,精确测量交流电(AC)的用电参数——比如电压、电流、功率、电能——是底层最核心的需求之一。你可能觉得,用个高精度…...
软硬一体赋能企业守护力,可穿戴手环构建员工数字健康管理新范式
在数字化转型深入推进的当下,员工健康已成为企业安全生产、高效运营的核心基石。传统健康管理模式存在数据零散、监测滞后、人工成本高、风险预警不及时等痛点,尤其铁路、港口、政企单位、生产型企业,一线员工高强度作业、慢病高发、突发健康…...
