CN1277390C - 用rtp数据包的序号进行排序以消除其抖动延时的方法 - Google Patents
用rtp数据包的序号进行排序以消除其抖动延时的方法 Download PDFInfo
- Publication number
- CN1277390C CN1277390C CNB031251072A CN03125107A CN1277390C CN 1277390 C CN1277390 C CN 1277390C CN B031251072 A CNB031251072 A CN B031251072A CN 03125107 A CN03125107 A CN 03125107A CN 1277390 C CN1277390 C CN 1277390C
- Authority
- CN
- China
- Prior art keywords
- packet
- memory address
- buffer queue
- sequence number
- depth
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及一种用RTP数据包的序号进行排序以消除其抖动延时的方法,其中采用缓冲存储队列从IP网络中接收RTP数据包,数据入队时根据数据包序号确定其在缓冲队列中的存储地址并将该数据包存入其存储地址,同时启动对应的计数器;数据出队时,将缓冲队列中各个存有数据包的存储地址对应的计数器分别加1,再检查缓冲队列中当前存储的所有数据包中,是否有一个数据包满足输出条件:timer(i)+seq(i)=min_seq+n,如果有则再检查最小数据包序号所对应的存储地址中是否有数据包,有则将其中的数据包输出到下一接口,并将其所在存储地址对应的计数器清零。本发明中还根据数据包的抖动延时,对缓冲队列的延时深度进行动态调整。最终可大大提高RTP语音数据包的传输质量。
Description
技术领域
本发明涉及IP技术,更具体地说,涉及一种用RTP数据包的序号进行排序以消除其抖动延时的方法。
背景技术
VoIP(Voice Over IP,即IP语音技术)技术的出现给传统的话音业务带来了巨大的冲击,它使得话音可以在基于分组的数据网络上传输,不仅有效地降低了通信双方的费用而且能为用户提供新的应用和服务。但是基于分组的数据网络毕竟不同于传统的PSTN网络,在IP网络中,语音的实时数据都通过封装在UDP(用户数据报协议)数据包中的RTP(Realtime Transport Protocol,实时传输协议)来传输。使用UDP传输数据,就可能产生乱序和收到重复包。为了使语音能在数据网络上有效地传输并保证其通话质量,就必须考虑网络延时、网络延时抖动、丢包、乱序、重复包等因素所带来的不利影响。
除了语音数据以外,图象等实时数据在分组网络上传输时,同样需要去除网络侧带来的抖动。根据模拟网络环境的测试,在抖动较大或是乱序的情况下,语音和图象的质量都有非常明显的下降,甚至使语音或是图象的质量无法容忍。
为了解决网络抖动问题,通常采用jitter buffer(抖动缓冲存储器),并配合适当的方法以消除网络抖动。jitter buffer的实质思想是以在接收端增加延时为代价消除网络侧的抖动,引入延时的大小决定了去除网络抖动的能力。但并不是引入的延时越大越好,这是因为极大的延时会降低电话接听着的舒适度。如图1所示,其中横向表示时间轴,上半部分示出网络侧数据包的到达时间是不均匀的,数据包2的到达时间比正常值略早,而数据包3的到达时间比正常值略晚;下半部分则示出经过jitter buffer处理之后,所有数据包都以固定的间隔向外部发送,相应地的引入了一段延时。可见,在引入jitter buffer之后,即使数据包发生延迟,仍然能够正常地发送给下一处理模块。但是如果数据包的抖动超过了一定时间同样会当作丢包处理,否则在发生了网络丢包或是大延时抖动的情况下,数据的实时性不能保证,这对语音或是图象的传输是致命的。
在抖动缓冲存储器中,目前通常使用先入先出(FIFO)队列或时戳排序队列进行处理。
其中,采用先入先出队列方式时,对所收到的数据包并不进行重新排序,只是让其在按缓冲队列中缓存一段时间之后,再按先入先出方式下发,抖动小的数据包缓存时间较长,抖动大的数据包缓存时间较小,以此实现消除网络抖动的影响。这种方式虽然可以在一定程度上减小网络侧抖动给***带来的影响,但是却无法消除乱序和重复包。
时戳排序的实现相对而言比较复杂,在收到数据包之后,根据RTP数据包的时戳确定入队位置,而不是根据数据包达到的先后顺序进行排序。这样做的好处主要是能够解决数据包乱序和重复包两个问题。这种方式的缺点是无法准确得到静音的时长,无法准确发现丢包。
另一方面,目前的jitter buffer都采用的是固定延时,也就是属于静态的jitterbuffer。但是网络的抖动情况相差很大,如何选取能同时兼顾消除网络抖动和小延时非常困难。在网络情况较好时,如果引入的延时较大,则会影响话音或图象的舒适度;在网络情况较差时,如果引入的延时较小,则不能消除网络侧的延时抖动,很难得到一个经典的延时值。
发明内容
针对现有技术的上述缺陷,本发明要同时解决IP技术中由于网络延时抖动、丢包、乱序、重复包等因素所带来的不利影响,将实时RTP数据包以正确的顺序和均匀的速度传递给下一级的语音或是图象编解码器,以提高RTP语音数据包的传输质量。
本明解决其技术问题所采用的技术方案是:提供一种消除RTP数据包抖动的方法,其中采用缓冲存储队列从IP网络中接收RTP数据包,包括:
(1)按预定时钟周期重复执行的数据入队步骤,其中根据每一个数据包的序号依次确定其在缓冲队列中的存储地址,并将该数据包存入其存储地址,同时启动与其存储地址对应的计数器;
(2)在所述缓冲队列收到第一个正常达到的数据包之后按所述预定时钟周期重复执行的数据出队步骤,其中,先将缓冲队列中各个存有数据包的存储地址对应的计数器分别加1,再检查所述缓冲队列中当前存储的所有数据包中,是否有一个数据包所对应的计数器的当前计数值timer(i)与该数据包的序号seq(i)之和,正好等于该缓冲队列中当前应当存储的序号最小的数据包的序号min_seq与该缓冲队列的缓存个数n之和,即是否满足条件:timer(i)+seq(i)=min_seq+n;如果有则再检查所述最小数据包序号min_seq所对应的缓冲队列存储地址中是否有数据包,如果有则将其中的数据包输出到下一接口,并将其所在存储地址对应的计数器清零。
在本发明所述方法的数据入队步骤中,具体包括以下步骤:
(1-1)当收到第一个正常达到的数据包之后,将其存入缓冲队列的起始地址,并以该数据包的序号作为基准序号base_seq,同时启动与起始地址对应的计数器,然后在下一时钟周期到达时执行步骤(1-2);
(1-2)检查是否又收到一个数据包,是则执行步骤(1-3),否则等待下一个时钟周期;
(1-3)以该数据包的序号seq(i)减去所述基准序号base_seq所得之差值再除以缓冲队列缓存个数n之后所得之余数作为该数据包在缓冲队列中的存储地址,并将该数据包存入该存储地址,然后在下一时钟周期到达时回到步骤(1-2)。
在本发明所述方法的数据出队步骤中,具体包括在所述缓冲队列收到第一个正常达到的数据包并首次执行完所述步骤(1-1)之后开始执行的以下步骤:
(2-1)以所述基准序号作为最小数据包序号,将缓冲队列中各个存有数据包的存储地址对应的计数器分别加1,再检查是否有一个数据包满足所述条件timer(i)+seq(i)=min_seq+n,是则将第一个正常到达的数据包输出到下一接口,将该存储地址的标识位设置为无效,并将该存储地址对应的计数器清零,然后在下一时钟周期到达时执行步骤(2-2);
(2-2)以所述最小数据包序号min_seq加1之和作为新的最小数据包序号,将缓冲队列中各个存有数据包的存储地址对应的计数器分别加1,再检查是否有一个数据包满足所述条件timer(i)+seq(i)=min_seq+n,是则执行步骤(2-3),否则跳到步骤(2-5);
(2-3)检查所述最小数据包序号所对应的缓冲队列存储地址中是否有数据包,是则执行步骤(2-4),否则跳到步骤(2-5);
(2-4)将所述存储地址中的数据包输出到下一接口,并将其所在存储地址对应的计数器清零,将其存储地址的标识位设置为无效,同时将丢包计数器清零,然后在下一时钟周期到达时回到步骤(2-2);
(2-5)检查丢包计数器是否计满到第二预定数值,是则执行步骤(2-6),否则跳到步骤(2-7);
(2-6)此时丢包计数器计满,需发送非传输帧指示,然后在下一时钟周期到达时回到步骤(2-2);
(2-7)此时丢包计数器未计满,需发送一个丢包指示,并将丢包计数器加1,然后在下一时钟周期到达时回到步骤(2-2)。
在本发明所述的方法中,还包括以下动态调整步骤:
根据缓冲队列所收到的每一个数据包的时戳ts和到达时间time,以及第一个正常达到的数据包的时戳base_ts和到达时间base_time,计算出该数据包的抖动延时jitter=abs((time-base_time)-(ts-base_ts));
根据缓冲队列的当前延时深度depth和该数据包的抖动延时jitter,计算出缓冲队列的临时延时深度tem_depth=depth*第一系数A+jitter*第二系数B;
检查所述临时延时深度是否大于当前延时深度,是则以所述当前延时深度加上一个数据包的打包时长之和作为缓冲队列的新延时深度new_depth,相应地,以缓存队列的当前缓存个数n加1作为新的缓存个数;
检查所述临时延时深度是否小于当前延时深度,是则以所述当前延时深度减去一个数据包的打包时长之差作为缓冲队列的新延时深度,相应地,以缓存队列的当前缓存个数n减1作为新的缓存个数。
其中,所述第一系数A的取值范围为:1/2<=A<1;所述第二系数B的取值范围为:0<B<=1/2。
与现有技术相比,本发明的方法中使用数据包的序号进行排序,通过上述入队及出队处理,可以有效解决网络侧的乱序和重复包两个问题;在静音期间引入了适当的处理措施,可以有效克服序号排序所存在的固有缺陷;可根据网络情况的好坏,自适应调整缓冲队列的延时深度,将延时深度合理化,可兼顾消除网络抖动和小延时深度两方面的要求,最终提高了RTP语音数据包的传输质量。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是缓冲队列接收及发出的数据包的示意图;
图2是本发明一个优选实施例中数据包入队时的流程图;
图3是本发明中与图2配合的数据包出队时的流程图;
图4是本发明中与图2和图3配合的延时深度动态调整的流程图。
具体实施方式
本发明的一个优选实施例如图2、图3和图4所示,主要包括数据包入队、数据包出队、动态调整三大部分。其中,数据入队和出队相互配合,以完成缓冲存储之功能;动态调整则是一个补充部分,可进一步优化本发明的方案,对于缓冲存储功能来说,并不是必须的。
一、数据入队
其流程如图2所示,通道打开后,将第一个正常达到的数据包存入缓冲队列的起始地址(地址0),并以该数据包的序号作为基准序号base_seq,并将起始地址标识位设为有效。然后按预定时钟周期重复执行以下步骤,这里的预定时钟周期也就是一个数据包的打包时长,本实施例中为10ms,即每隔10ms执行一次图2中的流程。
完成上述步骤之后,再检查是否又收到一个数据包,如果未收到则等待一下时钟周期。
如果又收到一个数据包,则先检查其合法性,具体方法是用该数据包的序号seq(i)减去该缓冲队列中当前应当存储的序号最小的数据包的序号min_seq,看所得的差值seq(i)-min_seq是否小于缓冲队列的缓存个数n;如果是,说明该数据包的序号是合法的,否则表示该数据包为非法,应将其丢弃。假设缓冲队列的缓存个数(即当前可缓存的数据包个数)n=6,当前队列中存储的最小数据包序号为32,如果接下来收到了一个序号为39的数据包,则可能是产生了较大的乱序或丢包现象,该数据包39将被判为非法而被丢弃。
对于合法的数据包,根据其序号确定其在缓冲队列中的存储地址,具体做法是以每一个数据包的序号减去上述基准序号所得之差值seq(i)-(base_seq)再除以缓冲队列缓存个数n之后所得之余数,作为该数据包在缓冲队列中的存储地址。假设缓冲队列的缓存个数n=6,基准序号为2,现收到一个序号为32的数据包,(32-2)/6的余数为0,所以该数据包应放入地址0;如果数据包的序号为34,(34-2)/6的余数为2,则该数据包应放入地址2。
确定了存储地址之后,还要判断该数据包是否为重复包,具体做法是用存储地址的标识位来表示其中是否有数据包,当标识位为有效时表示有数据包,为无效时则表示其中无数据包;所以在存入前先检查其存储地址的标识位的状态,当标识位为无效时,才将该数据包存入该存储地址,存入之后,再将该存储地址的标识位设置为有效;当标识位为有效时,说明其中已有数据包,则刚收到的这个数据包将被判为重复包而丢弃。在后面的数据出队步骤中,在将数据包输出到下一接口之后,相应设有将该存储地址的标识位设置为无效的步骤。
在将数据包存入其存储地址,并将标识位设置为有效之后,还要启动与其存储地址对应的计数器,该计数器将用于后面的数据出队步骤。
在完成上述步骤之后,还要执行以下操作,以计算出每一个数据包的临时延时深度,为执行后面的动态调整步骤作准备,如果不进行动态调整,则不必执行以下计算步骤。
先根据缓冲队列所收到的每一个数据包的时戳ts和到达时间time,以及第一个正常达到的数据包的时戳base_ts和到达时间base_time,计算出该数据包的抖动延时:
jitter=abs((time-base_time)-(ts-base_ts))
再根据缓冲队列的当前延时深度depth和该数据包的抖动延时jitter,计算出缓冲队列的临时延时深度:
tem_depth=depth*A+jitter*B。
其中,1/2<=A<1;0<B<=1/2。本实施例中可取A=0.8,B=0.4。也就是说,每收到一个数据包,都算出其临时延时深度,以用于后面的动态调整步骤。
从图2中可以看出,第一次循环只执行步骤101和102,此后则是每一个时钟同期重复执行一次步骤103及其后面的相应步骤。
二、数据出队
本发明中,数据出队流程要在缓冲队列收到第一个正常达到的数据包、并完成了图2中的步骤101、102之后开始执行。其流程如图3所示,先以基准序号作为最小数据包序号,将缓冲队列中各个存有数据包的存储地址对应的计数器分别加1(如果某一地址内没有数据包,则其计数器未启动,不会对其进行加1操作),检查是否有一个数据包满足所述条件timer(i)+seq(i)=min_seq+n,是则将第一个正常到达的数据包输出到下一接口,将该存储地址的标识位设置为无效,并将该存储地址对应的计数器清零。
然后,以所述最小数据包序号加1之和min_seq+1作为新的最小数据包序号,将缓冲队列中各个存有数据包的存储地址对应的计数器分别加1,再检查缓冲队列中当前存储的所有数据包中,是否有一个数据包满足条件:
timer(i)+seq(i)=min_seq+n
其中,seq(i)为该数据包的序号,timer(i)为该数据包所在存储地址对应的计数器的当前计算值,n为缓冲队列当前可缓存的数据包个数,min_seq为当前应当存储的序号最小的数据包的序号。由上述说明中可以看出,这里的‘当前应当存储的序号最小的数据包的序号’,是推算出来的,该序号的数据包可能已存储在缓冲队列中,或者因发生乱序、丢包而未存储在缓冲队列中。假设刚发出一个序号为33的数据包,而队列中实际存储的最小序号为数据包35,没有数据包34,仍然会以34作为队列中的最小数据包序号。
从图3中可以看出,只要有一个数据包满足条件:timer(i)+seq(i)=min_seq+n,则再检查该最小数据包序号min_seq所对应的存储地址的标识位是否为有效;如果为有效,则表示其中有数据包,此时将其中的数据包输出到下一接口,并将该存储地址的标识位设置为无效,还要将该存储地址对应的计数器清零,在数据入队步骤中该存储地址再收到一个数据包时,又会启动该计数器。可见,本发明中并不是当某一个数据包的计数器计满时才将其输出,而是用整个缓冲队列中的数据包的计数器的计数值来进行判断。假设缓冲队列的缓存个数为6,某一数据包计数满6之后当然要下发。如果该数据包产生了延时,与其后的数据包同时到来,则经过一段时间之后,两者都计数满5,此时序号最小的数据包并未计满6,但仍然要将其下发,否则下一次就会发现有两个数据包计数满6。
从图3中可以看出,如果没有一个数据包满足条件:timer(i)+seq(i)=min_seq+n,或者虽然满足该条件,但是最小数据包序号min_seq所对应的存储地址的标识位为无效,则需检查丢包计数器是否计满到第二预定数值(该值与具体的编码解码算法、缓冲队列的缓存个数等有关,本领域的技术人员可根据具体情况得出经验值)。这里的丢包计数器用于对连续发出的丢包指示进行计数,每发出一个丢包指示,计数器加1,本实施例中,所述第二预定数值为3。如果该计数器未计满,则表示发生丢包或乱序,此时需发送一个丢包指示,并将该计数器加1。如果该计数器计满到3,表示已连续发了3个丢包指示,此时将认为网络侧发来的是非传输帧,所以发送非传输帧指示。通过上述步骤,可在后面的数据包到达之前,正确区分出是发生了网络丢包,还中正常的非传输帧。
从图3中可以看出,在将数据包输出到下一接口,并将该存储地址的标识位设置为无效之后,同时将该存储地址对应的计数器清零后,还要将丢包计数器清零。从而与上述步骤相配合,保证丢包计数器只对连续的发出的丢包指示进行计数。
从图3中可以看出,第一次循环只执行步骤201、201和203,此后则是每一个时钟同期重复执行一次步骤204及其后面的相应步骤。
三、动态调整
从图4中可以看出,本发明中动态调整的具体做法是,先检查是否有连续预定个数据包(例如5个)的临时延时深度都大于当前延时深度,如果是,则以当前延时深度加上一个数据包的打包时长(本实施例中为10ms)之和depth+10ms作为缓冲队列的新延时深度,即以调大后的新延时深度代替其当前延时深度,相应地,以缓存队列的当前缓存个数n加1作为新的缓存个数,然后发出一个丢包指示。可见,本发明中,当数据包的抖动延时可能引起缓冲队列延时深度变化时,并不是立即进行调整,而是要等一段时间,持续有这种变化趋势时,才进行调整。其中采用了相应的第三计数器来进行计数,该计数器计到第三预定值为计满,该第三预定值与具体的编码解码算法、缓冲队列的缓存个数等有关,本领域的技术人员可根据具体情况得出经验值。
如果不满足上述条件,则再检查是否有连续预定个数据包(例如5个)的临时延时深度都小于当前延时深度,如果是,则以当前延时深度减去一个数据包的打包时长之差depth-10ms作为缓冲队列的新延时深度,即以调小后的新延时深度代替其当前延时深度,相应地,以缓存队列的当前缓存个数n减1作为新的缓存个数,此时还需要再回到图3中的步骤204,多执行一次204之后的相应后续步骤。从图4中可以看出,其中采用了相应的第四计数器来对临时延时深度都小于当前延时深度的数据包进行连续计数,该计数器计到第四预定值为计满,该第四预定值与具体的编码解码算法、缓冲队列的缓存个数等有关,本领域的技术人员可根据具体情况得出经验值。
Claims (9)
1、一种消除RTP数据包抖动的方法,其特征在于,其中采用缓冲存储队列从IP网络中接收RTP数据包,包括:
(1)按预定时钟周期重复执行的数据入队步骤,其中根据每一个数据包的序号依次确定其在缓冲队列中的存储地址,并将该数据包存入其存储地址,同时启动与其存储地址对应的计数器;
(2)在所述缓冲队列收到第一个正常达到的数据包之后按所述预定时钟周期重复执行的数据出队步骤,其中,先将缓冲队列中各个存有数据包的存储地址对应的计数器分别加1,再检查所述缓冲队列中当前存储的所有数据包中,是否有一个数据包所对应的计数器的当前计数值timer(i)与该数据包的序号seq(i)之和,正好等于该缓冲队列中当前应当存储的序号最小的数据包的序号min_seq与该缓冲队列的缓存个数n之和,即是否满足条件:timer(i)+seq(i)=min_seq+n;如果有则再检查所述最小数据包序号min_seq所对应的缓冲队列存储地址中是否有数据包,如果有则将其中的数据包输出到下一接口,并将其所在存储地址对应的计数器清零。
2、根据权利要求1所述的方法,其特征在于,在所述数据入队步骤中,具体包括以下步骤:
(1-1)当收到第一个正常达到的数据包之后,将其存入缓冲队列的起始地址,并以该数据包的序号作为基准序号base_seq,同时启动与起始地址对应的计数器,然后在下一时钟周期到达时执行步骤(1-2);
(1-2)检查是否又收到一个数据包,是则执行步骤(1-3),否则等待下一个时钟周期;
(1-3)以该数据包的序号seq(i)减去所述基准序号base_seq所得之差值再除以缓冲队列缓存个数n之后所得之余数作为该数据包在缓冲队列中的存储地址,并将该数据包存入该存储地址,然后在下一时钟周期到达时回到步骤(1-2)。
3、根据权利要求2所述的方法,其特征在于,
在所述数据入队步骤(1-1)中,在将数据包存入其存储地址之后,还包括将该存储地址的标识位设置为有效的步骤;
在所述数据入队步骤(1-3)中,在将数据包存入其存储地址之前,还包括检查该存储地址的标识位状态的步骤,当标识位为无效时,才将该数据包存入该存储地址;在将数据包存入其存储地址之后,还包括将该存储地址的标识位设置为有效的步骤,然后才在下一时钟周期到达时回到步骤(1-2);
相应地,在所述数据出队步骤中,在将数据包输出到下一接口之后,还包括将其存储地址的标识位设置为无效的步骤。
4、根据权利要求3所述的方法,其特征在于,所述数据入队步骤(1-3)中,还包括判断该数据包的序号seq(i)减去该缓冲队列中当前应当存储的序号最小的数据包的序号min_seq所得的差值是否小于缓冲队列的缓存个数n的步骤,如果是才根据该数据包的序号确定其存储地址,再将该数据包存入其存储地址。
5、根据权利要求1所述的方法,其特征在于,在所述数据出队步骤中,当所述最小数据包序号min_seq所对应的缓冲队列存储地址中没有数据包时,还包括以下步骤:检查是否已连续发送了第二预定数值个丢包指示,是则发送非传输帧指示,否则再发送一个丢包指示。
6、根据权利要求3所述的方法,其特征在于,在所述数据出队步骤中,具体包括在所述缓冲队列收到第一个正常达到的数据包并首次执行完所述步骤(1-1)之后开始执行的以下步骤:
(2-1)以所述基准序号作为最小数据包序号,将缓冲队列中各个存有数据包的存储地址对应的计数器分别加1,再检查是否有一个数据包满足所述条件timer(i)+seq(i)=min_seq+n,是则将第一个正常到达的数据包输出到下一接口,将该存储地址的标识位设置为无效,并将该存储地址对应的计数器清零,然后在下一时钟周期到达时执行步骤(2-2);
(2-2)以所述最小数据包序号min_seq加1之和作为新的最小数据包序号,将缓冲队列中各个存有数据包的存储地址对应的计数器分别加1,再检查是否有一个数据包满足所述条件timer(i)+seq(i)=min_seq+n,是则执行步骤(2-3),否则跳到步骤(2-5);
(2-3)检查所述最小数据包序号所对应的缓冲队列存储地址中是否有数据包,是则执行步骤(2-4),否则跳到步骤(2-5);
(2-4)将所述存储地址中的数据包输出到下一接口,并将其所在存储地址对应的计数器清零,将其存储地址的标识位设置为无效,同时将丢包计数器清零,然后在下一时钟周期到达时回到步骤(2-2);
(2-5)检查丢包计数器是否计满到第二预定数值,是则执行步骤(2-6),否则跳到步骤(2-7);
(2-6)此时丢包计数器计满,需发送非传输帧指示,然后在下一时钟周期到达时回到步骤(2-2);
(2-7)此时丢包计数器未计满,需发送一个丢包指示,并将丢包计数器加1,然后在下一时钟周期到达时回到步骤(2-2)。
7、根据权利要求6所述的方法,其特征在于,还包括以下动态调整步骤:
根据缓冲队列所收到的每一个数据包的时戳ts和到达时间time,以及第一个正常达到的数据包的时戳base_ts和到达时间base-time,计算出该数据包的抖动延时jitter=abs((time-base_time)-(ts-base_ts));
根据缓冲队列的当前延时深度depth和该数据包的抖动延时jitter,计算出缓冲队列的临时延时深度tem_depth=depth*第一系数A+jitter*第二系数B;
检查所述临时延时深度是否大于当前延时深度,是则以所述当前延时深度加上一个数据包的打包时长之和作为缓冲队列的新延时深度new_depth,相应地,以缓存队列的当前缓存个数n加1作为新的缓存个数;
检查所述临时延时深度是否小于当前延时深度,是则以所述当前延时深度减去一个数据包的打包时长之差作为缓冲队列的新延时深度,相应地,以缓存队列的当前缓存个数n减1作为新的缓存个数。
8、根据权利要求7所述的方法,其特征在于,所述第一系数A的取值范围为:1/2<=A<1;所述第二系数B的取值范围为:0<B<=1/2。
9、根据权利要求7所述的方法,其特征在于,在所述动态调整步骤中,
当检查到连续预定个数据包的临时延时深度都大于当前延时深度时,才以缓存队列的当前缓存个数n加1作为新的缓存个数,并发出一个丢包指示;
当检查到连续预定个数据包的临时延时深度都小于当前延时深度时,才以缓存队列的当前缓存个数n减1作为新的缓存个数,并再执行一次步骤(2-2)到(2-6)之间的相应步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB031251072A CN1277390C (zh) | 2003-05-09 | 2003-05-09 | 用rtp数据包的序号进行排序以消除其抖动延时的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB031251072A CN1277390C (zh) | 2003-05-09 | 2003-05-09 | 用rtp数据包的序号进行排序以消除其抖动延时的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1549535A CN1549535A (zh) | 2004-11-24 |
CN1277390C true CN1277390C (zh) | 2006-09-27 |
Family
ID=34321829
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB031251072A Expired - Fee Related CN1277390C (zh) | 2003-05-09 | 2003-05-09 | 用rtp数据包的序号进行排序以消除其抖动延时的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1277390C (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106789917A (zh) * | 2016-11-25 | 2017-05-31 | 北京百家互联科技有限公司 | 数据包处理方法及装置 |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100479425C (zh) * | 2005-07-12 | 2009-04-15 | 中兴通讯股份有限公司 | 一种保护voip数字信号处理通道的方法 |
CN100499578C (zh) * | 2005-08-05 | 2009-06-10 | 中兴通讯股份有限公司 | 一种保证媒体接收端服务质量的方法 |
CN101296173B (zh) * | 2007-04-26 | 2010-08-25 | 宽宇科技有限公司 | 网络分组传送方法 |
CN101488909B (zh) * | 2008-01-17 | 2011-05-04 | 杭州华三通信技术有限公司 | 传输控制方法及同轴线路终端、光网络单元 |
CN101494594B (zh) * | 2008-01-22 | 2011-05-04 | 杭州华三通信技术有限公司 | 传输控制方法、同轴线路终端及光网络单元 |
CN102264104A (zh) * | 2010-05-25 | 2011-11-30 | 中兴通讯股份有限公司 | 一种存储数据包的方法及设备 |
CN103036808B (zh) * | 2012-12-13 | 2015-04-29 | 四川九洲电器集团有限责任公司 | 一种去除网络抖动的方法及*** |
CN103108256A (zh) * | 2013-03-08 | 2013-05-15 | 苏州工业园区云视信息技术有限公司 | 一种接收rtp包时消除抖动乱序重包的方法 |
CN103347004B (zh) * | 2013-06-19 | 2016-08-17 | 深圳市共进电子股份有限公司 | 一种提高vbd数据传输质量的方法 |
CN103744801A (zh) * | 2014-01-24 | 2014-04-23 | 深圳市华宝电子科技有限公司 | 一种实时数据缓存方法及装置 |
CN103825841B (zh) * | 2014-03-19 | 2017-04-05 | 武汉众合德信技术有限公司 | 一种以太网报文排序方法及装置 |
CN109445955B (zh) * | 2018-09-13 | 2020-09-04 | 武汉斗鱼网络科技有限公司 | 一种计数方法及计数*** |
CN109547359A (zh) * | 2018-11-30 | 2019-03-29 | 高新兴科技集团股份有限公司 | Rtp数据包乱序重排方法、装置、存储介质及电子设备 |
CN110149278B (zh) * | 2019-05-22 | 2023-01-17 | 秒针信息技术有限公司 | 一种数据传输方法及装置 |
CN110233706B (zh) * | 2019-06-13 | 2022-02-08 | 北京奇艺世纪科技有限公司 | 一种重复数据包检测方法及装置 |
CN110198321A (zh) * | 2019-06-13 | 2019-09-03 | 北京奇艺世纪科技有限公司 | 一种数据包处理方法、装置、服务器及存储介质 |
CN110912735B (zh) * | 2019-11-13 | 2023-03-24 | 中国联合网络通信集团有限公司 | 一种数据包传输网络的仿真方法及装置 |
CN111131075A (zh) * | 2019-11-21 | 2020-05-08 | 武汉兴图新科电子股份有限公司 | 一种高并发数据包缓冲方法 |
CN112383512B (zh) * | 2020-10-26 | 2023-01-20 | 深圳Tcl新技术有限公司 | Rtp帧序纠错方法、装置、接收端及计算机可读存储介质 |
CN114866524A (zh) * | 2022-05-10 | 2022-08-05 | 中国电子科技集团公司第十研究所 | 一种提高上行话音数据包传输质量的方法及装置 |
CN115499393B (zh) * | 2022-09-02 | 2024-05-07 | 深圳市楠菲微电子有限公司 | 一种基于网络接口芯片的tcp连接报文处理方法 |
-
2003
- 2003-05-09 CN CNB031251072A patent/CN1277390C/zh not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106789917A (zh) * | 2016-11-25 | 2017-05-31 | 北京百家互联科技有限公司 | 数据包处理方法及装置 |
CN106789917B (zh) * | 2016-11-25 | 2019-10-01 | 北京百家互联科技有限公司 | 数据包处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN1549535A (zh) | 2004-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1277390C (zh) | 用rtp数据包的序号进行排序以消除其抖动延时的方法 | |
CN1549536A (zh) | 用rtp数据包的时戳进行排序以消除其抖动延时的方法 | |
CN1163030C (zh) | 实时信息接收装置 | |
CN1320805C (zh) | 一种分组交换网络自适应抖动缓冲区调整方法 | |
KR101590972B1 (ko) | 통신 네트워크에서의 전송 스케줄링 방법, 해당 통신 노드 및 컴퓨터 프로그램 생성물 | |
US7746847B2 (en) | Jitter buffer management in a packet-based network | |
US7054805B2 (en) | Method and system for allocating memory during encoding of a datastream | |
CN101286947B (zh) | 数据输出控制方法和装置 | |
CN1832483B (zh) | 通信***中控制数据传输的方法和*** | |
US20100290454A1 (en) | Play-Out Delay Estimation | |
CN1367971A (zh) | 分组处理器和其上带有分组处理程序的记录媒体 | |
CN1514609A (zh) | 利用多阈值漏桶的基于类别的速率控制 | |
CA2656859A1 (en) | Compressed delay packet transmission scheduling | |
CN1360783A (zh) | 数据包的处理 | |
US20080151765A1 (en) | Enhanced Jitter Buffer | |
GB2525948A (en) | Packet loss and bandwidth coordination | |
CN1812575A (zh) | 流媒体数据的并行传输调度方法 | |
CN109644162A (zh) | 媒体缓冲 | |
CN1401170A (zh) | 模拟信息流 | |
CN101047844A (zh) | 一种控制流媒体播放的方法及装置 | |
CN1339212A (zh) | 重构媒体的方法和装置 | |
CN1601963A (zh) | 基于令牌桶算法的接入速率限制方法 | |
CN1192563C (zh) | 服务于多输出队列的调度方法、程序调度装置及数据交换节点 | |
CN1281036C (zh) | 一种分组交换网络分布式自适应抖动缓冲区调整方法 | |
CN1909500A (zh) | 一种保证媒体接收端服务质量的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20060927 Termination date: 20180509 |
|
CF01 | Termination of patent right due to non-payment of annual fee |