专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

WebRTC拥塞控制算法

  背景
  网络拥塞是基于IP协议的数据报交换网络中常见的一种网络传输问题,它对网络传输的质量有严重的影响,网络拥塞是导致网络吞吐降低,网络丢包等的主要原因之一,这些问题使得上层应用无法有效的利用网络带宽获得高质量的网络传输效果。特别是在通信领域,网络拥塞导致的丢包,延迟,抖动等问题,严重的影响了通信质量,如果不能很好的解决这些问题,一个通信产品就无法在现实环境中正常使用。丢包带宽估计
  基于丢包的拥塞控制比较简单,其基本思想是根据丢包的多少来判断网络的拥塞程度。丢包越多则认为网络越拥塞,那么我们就要降低发送速率来缓解网络拥塞;如果没有丢包,这说明网络状况很好,这时候就可以提高发送码率,向上探测是否有更多的带宽可用。实现该算法有两点:一是获得接收端的丢包率,一是确定降低码率和提升码率的阈值。
  Ashat(i)Ashat(i1),2丢包率10,保持不变Ashat(i)Ashat(i1)(10。5p),丢包率10,下降,p是丢包率Ashat(i)1。05Ashat(i1),丢包率2,上升
  webrtc中发送端收到RTCPRR报文并解析得到丢包率后,根据下图公式计算发送端码率:当丢包率大于0。1时,说明网络发生拥塞,此时降低发送端码率;当丢包率小于0。02时,说明网络状况良好,此时增大发送端码率;其他情况下,发送端码率保持不变。延迟带宽估计GoogREMB
  基于接收端的延迟算法,利用延迟值,通过卡尔曼滤波器估计出下一时刻的网络带宽趋势,效果的准确性和公平性不如TransportCC,目前已经被webrtc的新版本所淘汰TransportCC
  基于发送端的延迟算法,也是利用区间延迟值,通过TrendLine滤波器(最小二乘法滤波器),通过斜率的增加或者减小来判断当前网络的拥塞状况时延梯度计算
  首先我们通过一张图看下时延梯度的计算:
  对于两个包组:i以及i1,它们的时延梯度:
  在WebRTC中,延迟梯度不是一个个包来计算的,而是通过将包分组,然后计算这些包组之间的延迟,这样做可以减少计算次数,同时减少误差。包组的划分原则为在一个bursttime间隔内的一系列的包构成一个组。建议bursttime为5ms。
  C音视频开发WebRTC学习资料:点击领取音视频开发(资料文档视频教程面试题)(FFmpegWebRTCRTMPRTSPHLSRTP)
  TrendLine滤波器(最小二乘法滤波器)
  使用到了线性回归的方法进行时延趋势预测,通过最小二乘法求得拟合的直线斜率
  对于一堆样本点(x,y),拟合直线方程yaxb的斜率a按如下公式计算
  具体方式就是对距离平方和的最小值,根据求导推出a的值
  代码实现路径,googcctrendlineestimator。cc,实现和上述推导公式一致absl::optionaldoubleLinearFitSlope(conststd::dequeTrendlineEstimator::PacketTimingpackets){RTCDCHECK(packets。size()2);Computethecenterofmass。doublesumx0;doublesumy0;for(constautopacket:packets){计算x,y的总值sumxpacket。arrivaltimems;sumypacket。smootheddelayms;}计算x,y的平均值doublexavgsumxpackets。size();doubleyavgsumypackets。size();Computetheslopeksum(xixavg)(yiyavg)sum(xixavg)2doublenumerator0;doubledenominator0;for(constautopacket:packets){doublexpacket。arrivaltimems;doubleypacket。smootheddelayms;numerator(xxavg)(yyavg);denominator(xxavg)(xxavg);}if(denominator0)returnabsl::nullopt;returnnumeratordenominator;}
  整体调用流程为LinearFitSlopeUpdateTrendlineLinearFitSlopeLinearFitSlopeTrendlineEstimator::DetectTrendlineEstimator::UpdateThresholdUpdateTrendline
  这个方法主要是做一些数据的统计计算之后,调用LinearFitSlope计算斜率voidTrendlineEstimator::UpdateTrendline(doublerecvdeltams,doublesenddeltams,int64tsendtimems,int64tarrivaltimems,sizetpacketsize){时延变化:接收时间差发送时间差constdoubledeltamsrecvdeltamssenddeltams;numofdeltas;numofdeltasstd::min(numofdeltas,kDeltaCounterMax);if(firstarrivaltimems1)firstarrivaltimemsarrivaltimems;Exponentialbackofffilter。accumulateddelaydeltams;BWETESTLOGGINGPLOT(1,accumulateddelayms,arrivaltimems,accumulateddelay);根据1)中的时延累积值计算得到平滑后的时延:smoothingcoef为0。9smootheddelaysmoothingcoefsmootheddelay(1smoothingcoef)accumulateddelay;BWETESTLOGGINGPLOT(1,smootheddelayms,arrivaltimems,smootheddelay);if(delayhist。size()settings。windowsize)delayhist。popfront();Simplelinearregression。doubletrendprevtrend;当队列delayhist大小等于设定的窗口大小时,开始进行时延变化趋势计算,得到直线斜率if(delayhist。size()settings。windowsize){trendLinearFitSlope(delayhist)。valueor(trend);if(settings。enablecap){absl::optionaldoublecapComputeSlopeCap(delayhist,settings);Weonlyusethecaptofilteroutoverusedetections,nottodetectadditionalunderuses。if(trend0cap。hasvalue()trendcap。value()){trendcap。value();}}}BWETESTLOGGINGPLOT(1,trendlineslope,arrivaltimems,trend);传入trend来计算当前网络状态Detect(trend,senddeltams,arrivaltimems);}Detect
  该函数主要根据时延变化增长趋势计算当前网络状态。在Detect函数内部,会根据前面计算得到的斜率得到一个调整后的斜率值:modifiedtrend:
  【小编强力推荐】音视频开发教程视频:【免费】FFmpegWebRTCRTMPNDKAndroid音视频流媒体高级开发学习视频教程腾讯课堂
  C音视频开发WebRTC学习资料:点击领取音视频开发(资料文档视频教程面试题)(FFmpegWebRTCRTMPRTSPHLSRTP)
  voidTrendlineEstimator::Detect(doubletrend,doubletsdelta,int64tnowms){if(numofdeltas2){hypothesisBandwidthUsage::kBwNormal;return;}constdoublemodifiedtrendstd::min(numofdeltas,kMinNumDeltas)trendthresholdgain;prevmodifiedtrendmodifiedtrend;BWETESTLOGGINGPLOT(1,T,nowms,modifiedtrend);BWETESTLOGGINGPLOT(1,threshold,nowms,threshold);1。if(modifiedtrendthreshold){if(timeoverusing1){Initializethetimer。Assumethatwevebeenoverusinghalfofthetimesincetheprevioussample。timeoverusingtsdelta2;}else{Incrementtimertimeoverusingtsdelta;}overusecounter;23if(timeoverusingoverusingtimethresholdoverusecounter1){4if(trendprevtrend){timeoverusing0;overusecounter0;hypothesisBandwidthUsage::kBwOverusing;}}}elseif(modifiedtrendthreshold){timeoverusing1;overusecounter0;hypothesisBandwidthUsage::kBwUnderusing;}else{timeoverusing1;overusecounter0;hypothesisBandwidthUsage::kBwNormal;}prevtrendtrend;UpdateThreshold(modifiedtrend,nowms);}
  constdoublemodifiedtrendstd::min(numofdeltas,kMinNumDeltas)trendthresholdgain;
  numofdeltas表示包组间延迟梯度计算的次数,取值范围是〔2,60〕,thresholdgain是Trendline滤波器的增益参数,其默认值为4,这两个变量都会对延迟梯度趋势值进行放大。这里的关键就在于为何要放大的意义trend在于是一个斜率值,取值范围(1,1),这个值很小,而阈值要跟随的变化而变化,这可能导致很容易的超过从而触发连续的过载信号。放大可以使得算法不会因为的波动而过于敏感。
  判断为过载的条件延迟梯度斜率值当前阈值过载总时长kOverUsingTimeThreshold(10ms)过载次数1当前延迟梯度斜率值上一次的延迟梯度斜率值,即延迟在不断恶化。UpdateThreshold
  阈值threshold动态调整为了改变算法对时延梯度的敏感度。根据主要是,时延梯度是变化的,有时很大,有时很小,如果阈值是固定的,对于时延梯度来说可能太大或者太小,这样就会出现检测不够敏感,无法检测到网络拥塞,或者过于敏感,导致一直检测为网络拥塞;voidTrendlineEstimator::UpdateThreshold(doublemodifiedtrend,int64tnowms){根据斜率上升还是下降定义K系数kdown(0。039)kup(0。0087),constdoublekfabs(modifiedtrend)threshold?kdown:kup;constint64tkMaxTimeDeltaMs100;计算上一次更新time的时间,和100ms取最小值int64ttimedeltamsstd::min(nowmslastupdatems,kMaxTimeDeltaMs);将k和timedeltams,进行计算,更新阈值thresholdk(fabs(modifiedtrend)threshold)timedeltams;thresholdrtc::SafeClamp(threshold,6。f,600。f);lastupdatemsnowms;}

为什么很多程序员会鄙视MATLAB?用MATLAB的人,绝大多数都是做科学计算工程理论计算数值分析金融分析用的,用户群主要是科学家工程总师数学建模金融投资决策班子等等,其中不乏院士博士,普通程序员就仰望吧,哪里能鄙视4S店未来会消失吗?我们先看看什么是4S店,4S其实是四个英文单词的首字母,Sale销售,Service服务,零配件SparePart和信息反馈Survey。它代表的是售前和售后一体化的服务。这个模式重点高中尖子学生,放在普通高中读书,会考取名牌大学吗?我觉得把重点高中尖子生放在普通高中,将来不一定能够考上名牌大学,除非学生自制力比较强自学能力比较强。师资普通高中的师资没有重点高中的强,即使是尖子生在这样的师资下可能也学不好,毕竟晚上失眠怎么办?先眠有啥办法呢,我本人几十年来很少有先眠,我认为人活在世上心态好,心态好了心情也跟着好了,多跟朋友或者同事聊聊交流。有不顺心的事也可交流,通过交流勾通思想也就慢慢开朗了。还有白天工34岁IT男换工作,有年薪80万不带团队的技术岗位和薪水低一些的管理岗,选哪个比较好?看到问题的一刹那,还以为是我问的。半年前,我选了技术岗,没后悔过,只是犹豫过。当时咨询了不少业内人士,包括猎头和HR。我不想长篇大论地分析,只提一下我自己的感受。技术岗虽然拿高薪,老话说棍棒底下出孝子,现在的子女教育还适合这种方式吗?谢邀!你小孩是天生的造反派吗?他会在五岁时就把收废品的一车纸板箱烧了吗?很不幸的是,我大儿子就是这样的人。这样的孩子不打不骂你教得好吗?假如长大了还是无法无天坐了牢怎么办?或者仅仅倚天屠龙记中玄冥二老实力如何?谢谢邀请。玄冥二老是倚天屠龙记里的大高手,也是金庸小说里最奇怪的一个组合。为何说玄冥二老奇怪呢,首先来说,金庸武侠小说里的大高手是极少愿意为官府卖命的,即使有如金轮法王那种,也是类绝地求生中你有满配sks,遇到空投中的mk14,你会换吗?关注夜色不迷路,夜色带你上高速。这里是解说夜色,一个对游戏认真的答主。在绝地求生中连狙一直是玩家们最喜爱的枪械类型之一,绝大部分玩家在看到连狙后连栓狙都扔了。因为在现在的绝地求生中CBA20212022赛季,哪个球队会成为广东队最大拦路虎?10月16日,新赛季CBA联赛大幕就将开启,赛会制加外援模式基本已定,由于阿联复出,小将徐昕与张明池上调,11冠王广东队如今兵强马壮,比上赛季有过之而无不及,总经理朱芳雨更是谦虚地如果你找老婆,博士硕士本科专业,你希望找哪种学历的女生?我不想找高学历的,有个高中文化就行。因为1找老婆与学历没有必然的关系,学历只是一个人知识高低的证明,而找老婆找的是感觉,是两情相悦,爱情是两颗心碰撞的火花,能够成为老婆的人,都是认作为一个老师,面对整个班学生都睡觉,不愿听课,你怎么办?常言说的好只有不合格的教师,没有不合格的学生!从教育到教学再到教师是一部高级艺术的三步曲,别讲你的学历有多高,学生的认同和认可才是你教学的最高境界!!!农村中小学分层教学后,低层次
不住在三亚,怎么才能上三亚车牌?大家好!我是普通男人,海南的一名普通男人。楼主这个问题我来回答,可以明确告诉楼主,不管你户口在哪里,哪怕是在外省,在海口或者三亚买的车照样能上三亚的车牌!但是有个条件,必须拥有三亚山东原来每个县都有酒厂,能说一下各县区的品牌酒吗?县县有酒厂,人人能喝酒,这句话大概说的就是山东。山东是白酒生产大省,同时也是白酒消费大省,以至于江湖中一直流传着关于山东人酒量的传说灵光一闪捂脸捂脸酒厂众多也造成了鲁酒过于分散偏居盘点那些电视播音主持人失误的瞬间有哪些?我们对播音主持人一直都喜爱溢于言表,特别是央视的主持人,专业的素养和文字功底能力,更是让我们赞叹不已。今天我们就来盘点一下播音主持人偶然的失误,看能否给大家带来夏日的清爽。我们没有为什么大部分程序员的工资比其他行业高那么多?我用事实回答这个问题。年前去看孙女,疫情让我留在孩子家半年,真真切切看到了程序员工作是啥样。一般行业八小时工作,可程序员工作没有点。疫情让他们改在网上办公,我在家里就看到了他们工作研究生毕业后薪酬如何?读研值吗?感谢悟空小秘书头条教育联盟的邀请。2019年2月15日,小西看到不少朋友晒出的10年考研成绩,有280多分担心单科不过线的,也有402分问题不大的。在看抖音视频时,刷出一个学生查成怀孕期间我一直都在抽烟,而且烟量一天一包,这样的孩子可以要吗?不明白你为什么知道自己怀孕了,还无法控制自己的烟瘾,每天一包的量,说是个老烟民也不为过,不为你自己考虑,难道也不为肚子里的宝宝考虑吗?吸烟对腹中胎儿的影响1。吸烟可能会导致孩子畸形10岁男孩说想跳楼,我该怎么做?这背后或许要有深层的原因,如果背后的原因不了解清楚,你永远不知道为什么十岁的孩子有跳楼这种想法。你说孩子学习成绩有点糟糕,这样孩子本身在学校就会有点自卑,那如果老师再批评,同学嘲讽以前老辈人说过的哪些话,现在都应验了?大约在上世纪六七十年代,我们这里一个老市委书记,修了一条连接主城区到另外一个区的公路,由于这条路修的太宽了,从当时的角度来看确实太宽了,双向至少六车道以上,甚至,个别路段达到了双向王者荣耀国际版里面的英雄与国服版比较,造型起名和操作有哪些不同?刚刚得到好消息,老帅所在的中国队在亚运会王者荣耀国际版比赛项目中,20轻松战胜韩国队,进入胜者组!两局比赛,老帅两局MVP,真的是为国争光!借着这个机会,小编带领各位玩家认识一下王肌酐115严重吗?人体的大部分血中的肌酐是通过肾脏排出的,肌酐是人体的一种最为常见的尿毒症毒素。如果肾脏受损出了问题尤其是慢性肾功能衰竭尿毒症期,血中的肌酐通过肾脏的排出减少或者无法通过肾脏排出,肌首钢对辽篮CBA第2阶段第一场比赛,有人说辽篮会放水可信吗?输了就是故意放水,赢了就是实力碾压,反正只有两种可能性,咋都行大金牙我也看到了有关辽蓝对北京首钢第二阶段首场比放水的说法,应该说辽蓝原本不会这么做,但是,由于辽蓝有四名国手参加了世
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网