CN1549536A - 用rtp数据包的时戳进行排序以消除其抖动延时的方法 - Google Patents

用rtp数据包的时戳进行排序以消除其抖动延时的方法 Download PDF

Info

Publication number
CN1549536A
CN1549536A CNA031251080A CN03125108A CN1549536A CN 1549536 A CN1549536 A CN 1549536A CN A031251080 A CNA031251080 A CN A031251080A CN 03125108 A CN03125108 A CN 03125108A CN 1549536 A CN1549536 A CN 1549536A
Authority
CN
China
Prior art keywords
packet
time stamp
time
depth
buffer queue
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.)
Granted
Application number
CNA031251080A
Other languages
English (en)
Other versions
CN100359887C (zh
Inventor
�Ҷ����
叶锦华
白文翔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CNB031251080A priority Critical patent/CN100359887C/zh
Publication of CN1549536A publication Critical patent/CN1549536A/zh
Application granted granted Critical
Publication of CN100359887C publication Critical patent/CN100359887C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明涉及一种用RTP数据包的时戳进行排序以消除其抖动延时的方法,其中采用缓冲存储队列接收RTP数据包,数据入队时先将第一个正常达到的数据包存入缓冲队列的起始地址,并以其时戳作为基准时戳;对于之后收到的每一个数据包,根据其时戳确定其在缓冲队列中的存储地址,并将其存入相应地址。数据出队时,在缓存预定时间后,以基准时戳作为发送时戳,将对应的第一个正常达到的数据包输出到下一接口;然后以发送时戳加上时戳间隔之和作为新的发送时戳,再检查新发送时戳所对应的存储地址中是否有数据包,有则将其中的数据包输出到下一接口。本发明中还根据数据包的抖动延时,对缓冲队列的延时深度进行动态调整。最终可大大提高RTP语音数据包的传输质量。

Description

用RTP数据包的时戳进行排序以消除其抖动延时的方法
技术领域
本发明涉及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包的序号确定其在缓冲队列中的存储位置,再以固定的时间间隔、根据位置的先后顺序输出缓冲队列中的数据包,该方法可以消除乱序的情况。使用这种方法时,可能因远端数据包的序号可能发生较大的跳跃而导致程序出错。另一方面,在语音传输打开了语音活动检测(VAD检测)时,无法准确得到静音时长,从而会影响语音质量。
另一方面,目前的jitter buffer都采用的是固定延时,也就是属于静态的jitterbuffer。但是网络的抖动情况相差很大,如何选取能同时兼顾消除网络抖动和小延时非常困难。在网络情况较好时,如果引入的延时较大,则会影响话音或图象的舒适度;在网络情况较差时,如果引入的延时较小,则不能消除网络侧的延时抖动,很难得到一个经典的延时值。
发明内容
针对现有技术的上述缺陷,本发明要同时解决IP技术中由于网络延时抖动、丢包、乱序、重复包等因素所带来的不利影响,将实时RTP数据包以正确的顺序和均匀的速度传递给下一级的语音或是图象编解码器,以提高RTP语音数据包的传输质量。
本发明解决其技术问题所采用的技术方案是:提供一种消除RTP数据包抖动的方法,其特征在于,采用缓冲存储队列从IP网络中接收RTP数据包,并按预定时钟周期重复执行以下步骤:
(1)数据入队:根据每一个数据包的时戳依次确定其在缓冲队列中的存储地址,并将该数据包存入其存储地址;
(2)数据出队;确定当前缓冲队列中应当被输出的数据包的时戳(min_ts),即当前发送时戳,并检查所述发送时戳所对应的缓冲队列存储地址中是否有数据包,如果有则将其中的数据包输出到下一接口。
在本发明所述方法的数据入队步骤(1)中,具体包括以下步骤:
(1-1)当收到第一个正常达到的数据包之后,将其存入缓冲队列的起始地址,并以该数据包的时戳作为基准时戳,然后在下一时钟周期到达时执行步骤(1-2);
(1-2)检查初始化计数器是否计满到第一预定数值,如果已计满则保持不变,如果未计满则将计数器加1;
(1-3)检查是否又收到一个数据包,是则执行步骤(1-4),否则在下一时钟周期到达时回到步骤(1-2);
(1-4)以该数据包的时戳减去所述基准时戳所得之差值除以时戳间隔,再以所得之商数除以缓冲队列的缓存个数(n),以所得之余数作为该数据包在缓冲队列中的存储地址,将该数据包存入该存储地址,然后在下一时钟周期到达时回到步骤(1-2)。
在本发明所述方法的数据出队步骤(2)中,具体包括以下步骤:
(2-1)检查所述初始化计数器是否计满,如果已计满则以所述基准时戳作为发送时戳,将该发送时戳所对应的缓冲队列起始地址中的第一个正常达到的数据包输出到下一接口,同时将其存储地址的标识位设置为无效,然后在下一时钟周期到达时执行步骤(2-2);;
(2-2)以所述发送时戳加上时戳间隔之和作为新的发送时戳,再检查新发送时戳所对应的缓冲队列存储地址中是否有数据包,是则执行步骤(2-3),否则跳到步骤(2-4);
(2-3)将新发送时戳所对应的缓冲队列存储地址中的数据包输出到下一接口,将其存储地址的标识位设置为无效,同时将丢包计数器清零,然后在下一时钟周期到达时回到步骤(2-2);
(2-4)检查丢包计数器是否计满到第二预定数值,是则执行步骤(2-5),否则跳到步骤(2-6);
(2-5)此时丢包计数器计满,需发送非传输帧指示,然后在下一时钟周期到达时回到步骤(2-2);
(2-6)此时丢包计数器未计满,需发送一个丢包指示,并将丢包计数器加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),相应地,缓冲队列的缓存个数将加1;
检查所述临时延时深度是否小于当前延时深度,是则以所述当前延时深度减去一个数据包的打包时长之差作为缓冲队列的新延时深度,相应地,缓冲队列的缓存个数将减1。
其中,所述第一系数(A)的取值范围为:1/2<=A<1;所述第二系数(B)的取值范围为:0<B<=1/2。
与现有技术相比,本发明的方法中使用数据包的时戳进行排序,通过上述入队及出队处理,可以有效解决网络侧的乱序和重复包两个问题;并可根据网络情况的好坏,自适应调整缓冲队列的延时深度,将延时深度合理化,可兼顾消除网络抖动和小延时深度两方面的要求,最终提高了RTP语音数据包的传输质量。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是缓冲队列接收及发出的数据包的示意图;
图2是本发明一个优选实施例中数据包入队时的流程图;
图3是本发明中与图2配合的数据包出队时的流程图;
图4是本发明中与图2和图3配合的延时深度动态调整的流程图;
图5是本发明另一实施例中数据包出队时的流程图。
具体实施方式
本发明的一个优选实施例如图2、图3和图4所示,主要包括数据包入队、数据包出队、动态调整三大部分。其中,数据入队和出队相互配合,以完成缓冲存储之功能;动态调整则是一个补充部分,可进一步优化本发明的方案,对于缓冲存储功能来说,并不是必须的。在IP技术中,语音数据的打包时长较多,有10ms、20ms、30ms甚至更长,下面以打包时长为10ms的数据包为例进行介绍。由于RTP数据包时戳的单位是1/8ms,那么10ms打包的数据包的时戳间隔就是80,20ms打包数据的时戳间隔是160。
一、数据入队
其流程如图2所示,通道打开后,将第一个正常达到的数据包存入缓冲队列的起始地址(地址0),以该数据包的时戳作为基准时戳(base_ts),并将起始地址标识位设为有效。然后按预定时钟周期重复执行以下步骤,这里的预定时钟周期也就是一个数据包的打包时长,本实施例中为10ms,即每隔10ms执行一次图2中的流程。
完成上述步骤之后,检查初始化计数器是否计满到第一预定数值,如果已计满则保持不变,如果未计满则每循环一次将计数器加1。这里的第一预定数值,也就是缓冲队列在初始状态时可以缓存的数据包个数,例如可设为n=6。在收到第一个正常到达的数据包之后,由于正常情况下每一个时钟会接收一个数据包,而且初始化计数器在计满之前每一个时钟会自动加1,所以当其计满时,就表示正常情况下缓冲队列中应该已存满了数据包,此时第一个正常到达的数据包已达到所有需的缓存时间,需要将其输出。可见设置该计数器为了确定何时启动后面的数据出队步骤。
检查是否又收到一个数据包,如果未收到则在下一时钟周期到达时回到上一步骤。
如果又收到一个数据包,则先检查其合法性,具体方法是用该数据包的时戳减去缓冲队列的当前发送时戳所得的差值再除以时戳间隔,看所得商数是否小于缓冲队列的缓存个数(n);如果是,说明该数据包的时戳是合法的,否则表示该数据包为非法,应将其丢弃。换一种讲法,缓冲队列中可缓存的时戳最大的数据包与最小的数据包之间的时戳差值,应等于其缓存个数乘以时戳间隔,即n*80;从后面的描述中可以看出,当前发送时戳也就是缓冲队列中当前应存储的最小数据包时戳,所以如果某一数据包与当前发送时戳之间的差值大于n*80,则该数据包将被判为非法。假设缓冲队列的缓存个数(即当前可缓存的数据包个数)为6,当前队列中存储的发送时戳为trans_ts,如果接下来收到了一个时戳为ts的数据包,按下式进行计算:
(ts-trans_ts)/80
如果其结果大于6,则可能是产生了较大的乱序或丢包现象,该时戳为ts的数据包将被判为非法而被丢弃。
对于合法的数据包,根据其时戳确定其在缓冲队列中的存储地址,具体做法是以该数据包的时戳减去基准时戳所得之差值除以时戳间隔,再以所得之商除以缓冲队列的缓存个数,以所得之余数作为该数据包在缓冲队列中的存储地址。假设缓冲队列的缓存个数n=6,基准时戳为base_ts,现收到一个时戳为ts的数据包,按下式进行计算:
(ts-base_ts)/80/n
如果所得的余数为0,则将该数据包放入地址0;如果所得的余数为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及其后面的相应步骤。
二、数据出队
其流程如图3所示,先检查上述初始化计数器是否计满,如果未计满继续等待;如果已计满,则以上述基准时戳作为发送时戳,并将第一个正常达到的数据包输出到下一接口。这里的初始化计数器计满,表示如果每个数据包都正常到达,缓冲队列中的n个存储地址中应该都已存储了数据包,实际上可能因发生乱序、丢包而并未全部存储上数据包。初始化计数器所体现的是只一种理想状态,其目的引入一个初始延时深度,让数据包在缓冲队列中缓存一段时间,以消除网路侧的抖动。
然后,以当前发送时戳加上时戳间隔之和(trans_ts+80)作为新的发送时戳。可见,发送时戳是根据之前从缓冲队列中输出的数据包的时戳来确定的,该发送时戳所对应的数据包可能已存储在缓冲队列中,也可能因发生乱序、丢包而未存储在缓冲队列中。假设刚发出一个时戳为trans_ts的数据包,而队列中实际存储的时戳最小的数据包时戳为(trans_ts+160),没有时戳为(trans_ts+80)的数据包,仍然会以(trans_ts+80)作为新的发送时戳。
再检查发送时戳(trans_ts+80)所对应的存储地址的标识位是否为有效,如果为有效,则表示其中有数据包,此时将其中的数据包输出到下一接口,并将该存储地址的标识位设置为无效。
如果存储地址的标识位为无效,则表示其中没有数据包,此时需检查丢包计数器是否计满到第二预定数值(该值与具体的编码解码算法、缓冲队列的缓存个数等有关,本领域的技术人员可根据具体情况得出经验值)。这里的丢包计数器用于对连续发出的丢包指示进行计数,每发出一个丢包指示,计数器加1,本实施例中,所述第二预定数值为4。如果该计数器未计满,则表示发生丢包或乱序,此时需发送一个丢包指示,并将该计数器加1。如果该计数器计满到4,表示已连续发了四个丢包指示,此时将认为网络侧发来的是非传输帧,所以发送非传输帧指示。通过上述步骤,可在后面的数据包到达之前,正确区分出是发生了网络丢包,还中正常的非传输帧。
从图3中可以看出,在将数据包输出到下一接口,并将该存储地址的标识位设置为无效之后,还将丢包计数器清零。从而与上述步骤相配合,保证丢包计数器只对连续的发出的丢包指示进行计数。
从图3中可以看出,第一次循环只执行步骤201和202,此后则是每一个时钟同期重复执行一次步骤203及其后面的相应步骤。
三、动态调整
从图4中可以看出,本发明中动态调整的具体做法是,先检查是否有连续预定个数据包(例如5个)的临时延时深度都大于当前延时深度,如果是,则以当前延时深度加上一个数据包的打包时长(本实施例中为10ms)之和(depth+10ms)作为缓冲队列的新延时深度,即以调大后的新延时深度代替其当前延时深度,相应地,缓冲队列的缓存个数将加1,然后发出一个丢包指示。可见,本发明中,当数据包的抖动延时可能引起缓冲队列延时深度变化时,并不是立即进行调整,而是要等一段时间,持续有这种变化趋势时,才进行调整。其中采用了相应的第三计数器来进行计数,该计数器计到第三预定值为计满,该第三预定值与具体的编码解码算法、缓冲队列的缓存个数等有关,本领域的技术人员可根据具体情况得出经验值。
如果不满足上述条件,则再检查是否有连续预定个数据包(例如5个)的临时延时深度都小于当前延时深度,如果是,则以当前延时深度减去一个数据包的打包时长之差(depth-10ms)作为缓冲队列的新延时深度,即以调小后的新延时深度代替其当前延时深度,相应地,缓冲队列的缓存个数将减1,此时还需要再回到图3中的步骤203,多执行一次203之后的相应后续步骤。从图4中可以看出,其中采用了相应的第四计数器来对临时延时深度都小于当前延时深度的数据包进行连续计数,该计数器计到第四预定值为计满,该第四预定值与具体的编码解码算法、缓冲队列的缓存个数等有关,本领域的技术人员可根据具体情况得出经验值。
上述实施例是以打包时长为10ms的数据包为例进行说明的,对于打包时长为20ms、30ms或更长的数据包,同样可采用上述方法进行处理。例如对于打包时长为20ms的数据包,则时钟周期和时戳间隔将相应地变为20ms、160;对于打包时长为30ms的数据包,则时钟周期和时戳间隔将相应地变为30ms、240。
当然,也可以统一采用10ms为时钟周期,80为时戳间隔,此时,对于打包时长为20ms的数据包,因其时戳间隔为160,所以在数据入队时将间隔排放,假设缓冲队列的全长为32个数据包,则队列中实际最多只能缓冲16个数据包;同时,在数据出队步骤中,如图5所示,需再引入一个计数器,当连续2次检查到发送位置中没有数据包时,再判断丢包计数器是否计满。对于打包时长为30ms的数据包,则依此类推。

Claims (9)

1、一种消除RTP数据包抖动的方法,其特征在于,采用缓冲存储队列从IP网络中接收RTP数据包,并按预定时钟周期重复执行以下步骤:
(1)数据入队:根据每一个数据包的时戳依次确定其在缓冲队列中的存储地址,并将该数据包存入其存储地址;
(2)数据出队;确定当前缓冲队列中应当被输出的数据包的时戳(min_ts),即当前发送时戳,并检查所述发送时戳所对应的缓冲队列存储地址中是否有数据包,如果有则将其中的数据包输出到下一接口。
2、根据权利要求1所述的方法,其特征在于,在所述数据入队步骤(1)中,具体包括以下步骤:
(1-1)当收到第一个正常达到的数据包之后,将其存入缓冲队列的起始地址,并以该数据包的时戳作为基准时戳,然后在下一时钟周期到达时执行步骤(1-2);
(1-2)检查初始化计数器是否计满到第一预定数值,如果已计满则保持不变,如果未计满则将计数器加1;
(1-3)检查是否又收到一个数据包,是则执行步骤(1-4),否则在下一时钟周期到达时回到步骤(1-2);
(1-4)以该数据包的时戳减去所述基准时戳所得之差值除以时戳间隔,再以所得之商数除以缓冲队列的缓存个数(n),以所得之余数作为该数据包在缓冲队列中的存储地址,将该数据包存入该存储地址,然后在下一时钟周期到达时回到步骤(1-2)。
3、根据权利要求2所述的方法,其特征在于,
在所述数据入队步骤(1-1)中,在将数据包存入其存储地址之后,还包括将该存储地址的标识位设置为有效的步骤,然后才在下一时钟周期到达时执行步骤(1-2);
在所述数据入队步骤(1-4)中,在将数据包存入其存储地址之前,还包括检查该存储地址的标识位状态的步骤,当标识位为无效时,才将该数据包存入该存储地址;在将数据包存入其存储地址之后,还包括将该存储地址的标识位设置为有效的步骤,然后才在下一时钟周期到达时回到步骤(1-2);
相应地,在所述数据出队步骤(2)中,在将数据包输出到下一接口之后,还包括将其存储地址的标识位设置为无效的步骤。
4、根据权利要求3所述的方法,其特征在于,所述数据入队步骤(1-4)中,还包括检查该数据包的时戳减去缓冲队列的当前发送时戳所得的差值再除以时戳间隔所得商数是否小于缓冲队列的缓存个数(n)的步骤,如果是,才根据该数据包的时戳与所述基准时戳的关系确定其存储地址,再将该数据包存入其存储地址。
5、根据权利要求1所述的方法,其特征在于,在所述数据出队步骤(2)中,
当对应的缓冲队列存储地址中没有数据包时,还包括以下步骤:检查是否已连续发送了第二预定数值个丢包指示,是则发送非传输帧指示,否则再发送一个丢包指示。
6、根据权利要求3所述的方法,其特征在于,在所述数据出队步骤(2)中,具体包括以下步骤:
(2-1)检查所述初始化计数器是否计满,如果已计满则以所述基准时戳作为发送时戳,将该发送时戳所对应的缓冲队列起始地址中的第一个正常达到的数据包输出到下一接口,同时将其存储地址的标识位设置为无效,然后在下一时钟周期到达时执行步骤(2-2);;
(2-2)以所述发送时戳加上时戳间隔之和作为新的发送时戳,再检查新发送时戳所对应的缓冲队列存储地址中是否有数据包,是则执行步骤(2-3),否则跳到步骤(2-4);
(2-3)将新发送时戳所对应的缓冲队列存储地址中的数据包输出到下一接口,将其存储地址的标识位设置为无效,同时将丢包计数器清零,然后在下一时钟周期到达时回到步骤(2-2);
(2-4)检查丢包计数器是否计满到第二预定数值,是则执行步骤(2-5),否则跳到步骤(2-6);
(2-5)此时丢包计数器计满,需发送非传输帧指示,然后在下一时钟周期到达时回到步骤(2-2);
(2-6)此时丢包计数器未计满,需发送一个丢包指示,并将丢包计数器加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),相应地,缓冲队列的缓存个数将加1;
检查所述临时延时深度是否小于当前延时深度,是则以所述当前延时深度减去一个数据包的打包时长之差作为缓冲队列的新延时深度,相应地,缓冲队列的缓存个数将减1。
8、根据权利要求7所述的方法,其特征在于,所述第一系数(A)的取值范围为:1/2<=A<1;所述第二系数(B)的取值范围为:0<B<=1/2。
9、根据权利要求7所述的方法,其特征在于,在所述动态调整步骤中,
当检查到连续预定个数据包的临时延时深度都大于当前延时深度时,才将缓冲队列的缓存个数加1,并发出一个丢包指示;
当检查到连续预定个数据包的临时延时深度都小于当前延时深度时,才将缓冲队列的缓存个数减1,并再执行一次步骤(2-2)到(2-6)之间的相应步骤。
CNB031251080A 2003-05-09 2003-05-09 用rtp数据包的时戳进行排序以消除其抖动延时的方法 Expired - Fee Related CN100359887C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB031251080A CN100359887C (zh) 2003-05-09 2003-05-09 用rtp数据包的时戳进行排序以消除其抖动延时的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB031251080A CN100359887C (zh) 2003-05-09 2003-05-09 用rtp数据包的时戳进行排序以消除其抖动延时的方法

Publications (2)

Publication Number Publication Date
CN1549536A true CN1549536A (zh) 2004-11-24
CN100359887C CN100359887C (zh) 2008-01-02

Family

ID=34321830

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB031251080A Expired - Fee Related CN100359887C (zh) 2003-05-09 2003-05-09 用rtp数据包的时戳进行排序以消除其抖动延时的方法

Country Status (1)

Country Link
CN (1) CN100359887C (zh)

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007006185A1 (fr) * 2005-07-12 2007-01-18 Zte Corporation Procédé de protection du canal du traitement du signal numérique voip
CN100499578C (zh) * 2005-08-05 2009-06-10 中兴通讯股份有限公司 一种保证媒体接收端服务质量的方法
CN102123073A (zh) * 2010-01-07 2011-07-13 华为技术有限公司 数据包重排序方法及装置
CN101901193B (zh) * 2009-05-27 2012-07-18 北京启明星辰信息技术股份有限公司 一种数据的缓冲方法和缓冲装置
CN101331738B (zh) * 2005-10-27 2012-12-19 高通股份有限公司 用于改进稳健标头压缩效率的系统和方法
CN102916938A (zh) * 2012-09-08 2013-02-06 佳都新太科技股份有限公司 一种基于rtp协议多路语音合成的方法
CN101719808B (zh) * 2009-11-23 2013-02-13 中兴通讯股份有限公司 数据包输出处理方法和设备
CN103905444A (zh) * 2014-03-31 2014-07-02 深圳市邦彦信息技术有限公司 一种综合业务通信指挥系统
CN105848011A (zh) * 2016-03-31 2016-08-10 乐视控股(北京)有限公司 一种视频直播方法及装置
CN108508850A (zh) * 2017-02-28 2018-09-07 Sap欧洲公司 制造过程数据收集和分析
CN108933786A (zh) * 2018-07-03 2018-12-04 公安部第研究所 用于改善无线数字通信系统接收方密文语音质量的方法
CN108989138A (zh) * 2017-05-31 2018-12-11 中兴通讯股份有限公司 数据传输方法、装置、系统及网关
CN111025068A (zh) * 2019-12-24 2020-04-17 宁波三星医疗电气股份有限公司 电表负荷曲线数据抄读方法、装置和电子设备
CN111327386A (zh) * 2018-12-14 2020-06-23 深圳市中兴微电子技术有限公司 一种延时抖动补偿方法、装置及计算机存储介质
CN113141239A (zh) * 2021-04-26 2021-07-20 广州市百果园网络科技有限公司 一种数据重传的方法、装置、设备和存储介质
CN114866859A (zh) * 2022-05-10 2022-08-05 福州大学 基于时间戳和丢包检测的实时视频传输动态延时控制系统
CN114866524A (zh) * 2022-05-10 2022-08-05 中国电子科技集团公司第十研究所 一种提高上行话音数据包传输质量的方法及装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE68920748T2 (de) * 1989-08-09 1995-06-29 Alcatel Nv Sequentielle rückordnung für einen vermittlungsknoten.
JP2964968B2 (ja) * 1996-12-06 1999-10-18 日本電気株式会社 シェーピング処理装置およびシェーピング処理方法
FI104671B (fi) * 1997-07-14 2000-04-14 Nokia Networks Oy Kytkentäkenttäjärjestely
US6452950B1 (en) * 1999-01-14 2002-09-17 Telefonaktiebolaget Lm Ericsson (Publ) Adaptive jitter buffering
EP1047282A1 (en) * 1999-04-16 2000-10-25 Alcatel Resequencing method

Cited By (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007006185A1 (fr) * 2005-07-12 2007-01-18 Zte Corporation Procédé de protection du canal du traitement du signal numérique voip
CN100499578C (zh) * 2005-08-05 2009-06-10 中兴通讯股份有限公司 一种保证媒体接收端服务质量的方法
CN101331738B (zh) * 2005-10-27 2012-12-19 高通股份有限公司 用于改进稳健标头压缩效率的系统和方法
CN101901193B (zh) * 2009-05-27 2012-07-18 北京启明星辰信息技术股份有限公司 一种数据的缓冲方法和缓冲装置
CN101719808B (zh) * 2009-11-23 2013-02-13 中兴通讯股份有限公司 数据包输出处理方法和设备
CN102123073A (zh) * 2010-01-07 2011-07-13 华为技术有限公司 数据包重排序方法及装置
CN102123073B (zh) * 2010-01-07 2014-10-08 华为技术有限公司 数据包重排序方法及装置
CN102916938A (zh) * 2012-09-08 2013-02-06 佳都新太科技股份有限公司 一种基于rtp协议多路语音合成的方法
CN102916938B (zh) * 2012-09-08 2015-11-25 佳都新太科技股份有限公司 一种基于rtp协议多路语音合成的方法
CN103905444A (zh) * 2014-03-31 2014-07-02 深圳市邦彦信息技术有限公司 一种综合业务通信指挥系统
CN105848011A (zh) * 2016-03-31 2016-08-10 乐视控股(北京)有限公司 一种视频直播方法及装置
CN108508850A (zh) * 2017-02-28 2018-09-07 Sap欧洲公司 制造过程数据收集和分析
US11307561B2 (en) 2017-02-28 2022-04-19 Sap Se Manufacturing process data collection and analytics
CN108989138A (zh) * 2017-05-31 2018-12-11 中兴通讯股份有限公司 数据传输方法、装置、系统及网关
CN108933786A (zh) * 2018-07-03 2018-12-04 公安部第研究所 用于改善无线数字通信系统接收方密文语音质量的方法
CN108933786B (zh) * 2018-07-03 2021-04-09 公安部第一研究所 用于改善无线数字通信系统接收方密文语音质量的方法
CN111327386A (zh) * 2018-12-14 2020-06-23 深圳市中兴微电子技术有限公司 一种延时抖动补偿方法、装置及计算机存储介质
CN111327386B (zh) * 2018-12-14 2023-08-08 深圳市中兴微电子技术有限公司 一种延时抖动补偿方法、装置及计算机存储介质
CN111025068A (zh) * 2019-12-24 2020-04-17 宁波三星医疗电气股份有限公司 电表负荷曲线数据抄读方法、装置和电子设备
CN113141239A (zh) * 2021-04-26 2021-07-20 广州市百果园网络科技有限公司 一种数据重传的方法、装置、设备和存储介质
CN113141239B (zh) * 2021-04-26 2022-02-22 广州市百果园网络科技有限公司 一种数据重传的方法、装置、设备和存储介质
CN114866859A (zh) * 2022-05-10 2022-08-05 福州大学 基于时间戳和丢包检测的实时视频传输动态延时控制系统
CN114866524A (zh) * 2022-05-10 2022-08-05 中国电子科技集团公司第十研究所 一种提高上行话音数据包传输质量的方法及装置

Also Published As

Publication number Publication date
CN100359887C (zh) 2008-01-02

Similar Documents

Publication Publication Date Title
CN1277390C (zh) 用rtp数据包的序号进行排序以消除其抖动延时的方法
CN1549536A (zh) 用rtp数据包的时戳进行排序以消除其抖动延时的方法
CN1320805C (zh) 一种分组交换网络自适应抖动缓冲区调整方法
CN1340954A (zh) 实时信息接收装置
CN1305276C (zh) 一种快速处理实时媒体流数据包的方法及其系统
CN1832483B (zh) 通信系统中控制数据传输的方法和系统
CN1208935C (zh) 数据包的处理
US20030112758A1 (en) Methods and systems for managing variable delays in packet transmission
US7746847B2 (en) Jitter buffer management in a packet-based network
US7251246B2 (en) Selective packet processing in a packet based media processor for latency reduction
KR101590972B1 (ko) 통신 네트워크에서의 전송 스케줄링 방법, 해당 통신 노드 및 컴퓨터 프로그램 생성물
CN102761468B (zh) 一种自适应调整语音抖动缓存区的方法及系统
CN109479032A (zh) 网络设备中的拥塞避免
WO2002069535A1 (en) Minimizing latency with content-based adaptive buffering
CN1790969A (zh) 在发射服务器的应用层使网络传输减速的方法和系统
CN109644162A (zh) 媒体缓冲
CN101175104B (zh) 一种抖动缓存装置和抖动缓存管理方法
CN1531276A (zh) 用于消除ip语音数据抖动的自适应抖动缓存实现方法
CN101047844A (zh) 一种控制流媒体播放的方法及装置
CN100518037C (zh) 基于消息的可靠传输层的并包发送和自适应窗口缩放方法
CN1192563C (zh) 服务于多输出队列的调度方法、程序调度装置及数据交换节点
CN1607767A (zh) 基于网络处理器的流量控制方法
CN1855824A (zh) 用于流式处理数据的方法和设备
US7362770B2 (en) Method and apparatus for using and combining sub-frame processing and adaptive jitter-buffers for improved voice quality in voice-over-packet networks
WO2009064823A1 (en) Method and apparatus for controlling a voice over internet protocol (voip) decoder with an adaptive jitter buffer

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: 20080102

Termination date: 20180509

CF01 Termination of patent right due to non-payment of annual fee