【音视频第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…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...

label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...

UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...
鸿蒙(HarmonyOS5)实现跳一跳小游戏
下面我将介绍如何使用鸿蒙的ArkUI框架,实现一个简单的跳一跳小游戏。 1. 项目结构 src/main/ets/ ├── MainAbility │ ├── pages │ │ ├── Index.ets // 主页面 │ │ └── GamePage.ets // 游戏页面 │ └── model │ …...

阿里云Ubuntu 22.04 64位搭建Flask流程(亲测)
cd /home 进入home盘 安装虚拟环境: 1、安装virtualenv pip install virtualenv 2.创建新的虚拟环境: virtualenv myenv 3、激活虚拟环境(激活环境可以在当前环境下安装包) source myenv/bin/activate 此时,终端…...

如何在Windows本机安装Python并确保与Python.NET兼容
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...
用 Rust 重写 Linux 内核模块实战:迈向安全内核的新篇章
用 Rust 重写 Linux 内核模块实战:迈向安全内核的新篇章 摘要: 操作系统内核的安全性、稳定性至关重要。传统 Linux 内核模块开发长期依赖于 C 语言,受限于 C 语言本身的内存安全和并发安全问题,开发复杂模块极易引入难以…...