数据包输出处理方法和设备的制作方法

文档序号:7718693阅读:121来源:国知局
专利名称:数据包输出处理方法和设备的制作方法
技术领域
本发明涉及通信技术领域,尤其涉及一种数据包输出处理方法和设备。
背景技术
目前,语音承载因特网协议(Voice over Internet Protocol, VoIP)技术得到了 越来越广泛的应用,VoIP简而言之就是将数据封装成报文的形式在因特网协议(Internet Protocol, IP)网络上做实时传递。和传统的电路语音业务相比,VoIP最大的优势是能广泛 利用IP互联资源,从而提供比传统业务更多、更好的服务。在VoIP的语音通讯应用中,实 时传输协议(Real-time TransportProtocol, RTP)是被广泛采用的一种网络传输技术,它 为语音数据在IP网络中传输提供了实时性保证。 在IP网络中,语音数据通常先封装成RTP报文,RTP报头中提供用于标识装载数据 的标示符PT、序列号SEQ、时戳TS和语音段标识M等特征,再打包成用户数据报协议(User Datagram Protocol,UDP)报文进行传输。由于语音业务的实时性要求强,为了尽量减少时 延,语音数据的打包单元都很短,话音分成若干个RTP数据包进行传输,每个RTP数据包包 含同样长度的语音数据,例如一个典型的RTP数据包通常包含20-40毫秒(ms)的语音数 据。在发送端,RTP数据包的发送时间间隔相等,等于一个RTP数据包所包含语音数据的时 间长度。 语音数据在IP网络中进行传输引入了诸多问题,如抖动(Jitter),即由于网络原 因造成的RTP数据包到达接收端的间隔时间的变化,例如发送端每20ms发出一个RTP数据 包,由于网络原因,这些RTP数据包抵达接收端的时间间隔不是准确的20ms。另外还存在 RTP数据包的乱序和丢包等问题。因此在发送端顺序发送的RTP数据包,在接收端会产生乱 序、重复、丢包和抖动等问题。如果在接收端对接收到的RTP数据包不进行处理,而是直接 输出接收到的RTP数据包,其产生的语音效果将是难以忍受的。 序列号是用于标识RTP数据包顺序的一个属性值,第一个生成的RTP数据包随机 选取一个初始值作为其序列号,后续RTP数据包的序列号按照发送顺序依次递增;时戳是 该时戳所在RTP数据包装载的语音数据的第一个样本的采样时刻标记。RTP接收端根据序 列号和时戳,可以对其收到的RTP数据包进行排序、整理,以确定RTP数据包合适的输出顺 序,确保RTP序列输出的实时性。 而对于消除网络抖动对语音造成的影B向,通常RTP接收端会采用抖动缓冲区 (Jitter Buffer)的方式,通过在接收端延迟输出RTP数据包来消除抖动。在现有的接收端 对RTP数据包的输出方法中,延迟处理分成自适应延迟和固定延迟两种方式。当采用固定 延迟时,典型的延迟输出时间在20 60ms ;自适应延迟则是根据抖动情况实时计算延迟时 间,进而实时调整每包的延迟输出时间。 一般来说,延迟越大,对抖动的平滑效果就越好,但 过长的延迟会导致语音效果变差。在交互式的应用场景中,延迟越小越好。
自适应延迟可以分成逐包调整和逐段调整。逐包调整是将计算得到的延迟时间 应用于每一个RTP数据包,但是这样的抗抖动缓冲会引起语音输出的不连续,导致客户的不满意。通常,在IP网络中传输语音数据包时,会采用话音激活检测(Voice Active Detection, VAD)/不连续发送(Discontin丽sTra固ission, DTX)技术,语音数据在VAD 检测标识为静音期间不进行传输,当VAD检测到有新的语音段激活时,发送端开始发送语 音RTP数据包,并将第一个发送的数据包中的RTP头的M标记置为1。对采用DTX技术传输 的RTP序列,会采用自适应的方式,因为它可以在静音期间进行延迟调整,从而减轻自适应 带来的负面影响,这就是逐段调整,也即是在同一段语音期间的所有RTP数据包采用同一 个延迟时间,也即是其输出保持同一个时间间隔,如果需要调整,在语音段的第一个数据包 进行,也即是RTP数据包头中标识M = 1的包。 在实现本发明的过程中,发明人发现现有技术中存在以下技术问题 现有技术中接收端将接收到的RTP数据包送入输出队列,并在每次的RTP数据包
输出周期到达时,若时戳变量L—TS的值与位于输出队列队首的RTP包的时戳值相等,则将
位于输出队列队首的RTP数据包即最早进入队列的RTP数据包进行输出,并将L_TS的值设
置为输出的该RTP数据包的时戳值加上RTP序列的时戳间隔值AT。 若由于数据包迟到使得输出队列中没有RTP数据包或由于数据包乱序使得L_TS 小于位于输出队列队首的RTP数据包的时戳值,则输出一个补偿数据包,并将L_TS的当前 值加上AT。后续在迟到的RTP数据包或乱序的RTP数据包到达时,L—TS大于该迟到的RTP 数据包或乱序的RTP数据包,说明该RTP数据包已经过期或补偿过,需要丢弃该RTP数据 包。在数据包迟到或乱序较为严重时,会造成接收端大量丢包,影响语音的输出效果。

发明内容
本发明实施例提供一种数据包输出处理方法和设备,用于降低接收端的丢包率。
—种数据包输出处理方法,该方法包括 A、接收端确定连续输出的补偿数据包的个数是否超过预先设定的门限值,该门限 值为正整数; B、在确定所述补偿数据包的个数超过预先设定的门限值时,确定当前最早接收到
的、并且还未输出的实时传输协议RTP数据包是否为待调整数据包;所述待调整数据包是
指所述RTP数据包是未按照预先设定的时间顺序到达的数据包; C、在确定所述RTP数据包为待调整数据包时,输出所述RTP数据包。 —种数据包输出处理设备,该设备包括 门限确定单元,用于确定连续输出的补偿数据包数是否超过预先设定的门限值, 该门限值为正整数; 调整确定单元,用于在所述门限确定单元确定所述补偿数据包数超过预先设定的 门限值时,确定当前最早接收到的、并且还未输出的RTP数据包是否为待调整数据包;所述 待调整数据包是指所述RTP数据包是未按照预先设定的时间顺序到达的数据包;
数据包输出单元,用于在所述调整确定单元确定所述RTP数据包为待调整数据包 时,输出所述RTP数据包。 本发明中,在接收端输出的补偿数据包的个数超过预先设定的门限值时,若当前 接收端最早接收到的、并且还未输出的RTP数据包,是未按照预先设定的时间顺序到达的 数据包,则选择输出该RTP数据包,而不是丢弃该RTP数据包或输出补偿数据包,能够有效的降低接收端的丢包率。


图1为本发明实施例提供的方法流程示意图;
图2为本发明实施例中的状态转换示意图; 图3为本发明实施例中的初始状态到正常状态的转换流程示意图;
图4为本发明实施例中的正常状态到静音状态的转换流程示意图;
图5为本发明实施例中的静音状态到正常状态的转换流程示意图;
图6为本发明实施例提供的设备结构示意图。
具体实施例方式
为了降低接收端的丢包率,本发明实施例提供一种数据包输出处理方法,本方法
中,在接收端连续输出的补偿数据包的个数超过预先设定的门限值时,若当前接收端最早
接收到的、并且还未输出的RTP数据包是未在正常到达时间到达接收端的待调整数据包,
则选择输出该RTP数据包,而不是丢弃该RTP数据包或输出补偿数据包。 参见图l,本发明实施例提供的数据包输出处理方法,具体包括以下步骤 步骤10 :确定接收端输出的补偿数据包的个数是否超过预先设定的门限值,该门
限值为正整数,补偿数据包是指包含静音数据的数据包; 步骤11 :在确定接收端输出的补偿数据包的个数超过预先设定的门限值时,确定 当前接收端最早接收到的、并且还未输出的RTP数据包是否为待调整数据包;待调整数据 包是指RTP数据包是未按照预先设定的时间顺序到达接收端的数据包; 步骤12 :在确定当前接收端最早接收到的、并且还未输出的RTP数据包为待调整 数据包时,输出该RTP数据包。 本发明中未按照预先设定的时间顺序到达接收端的RTP数据包,是指在晚于或早 于该RTP数据包的正常到达时间的时间到达接收端的RTP数据包,该RTP数据包的正常到 达时间根据发送端发送该RTP数据包的时间确定,例如,发送端发送第一个RTP数据包的 时间为Oms,发送端发送RTP数据包的时间间隔为20ms,发送端与接收端之间的传输时延 为5ms,则发送端发出的第一个RTP数据包的正常到达时间为0+5 = 5ms,第二个RTP数据 包的正常到达时间为5+20 = 25ms,第三个RTP数据包的正常到达时间为25+20 = 45ms,后 续RTP数据包的正常到达时间以此类推;当然,发送端与接收端之间的传输时延可以忽略 为0,则发送端发出的第一个RTP数据包的正常到达时间为Oms,第二个RTP数据包的正常 到达时间为0+20 = 20ms,第三个RTP数据包的正常到达时间为20+20 = 40ms,后续RTP数 据包的正常到达时间以此类推。
在步骤10之前,可以包括以下步骤 步骤IOO :在数据包输出周期到达时,若当前接收端不存在未被输出的RTP数据 包,或者当前接收端最早接收到的、并且还未输出的RTP数据包携带的时戳值大于预先设 定的时戳变量的当前值,则输出补偿数据包,并到步骤10。 本发明中,时戳变量的取值按照如下方法设置接收端每输出一个RTP数据包后 将所述时戳变量的值设置为输出的该RTP数据包携带的时戳值加上RTP序列的时戳间隔值,接收端每输出一个补偿数据包后将所述时戳变量的值加上RTP序列的时戳间隔值。
本发明中,数据包输出周期的时间大小可以等于发送端发送RTP数据包的时间间
隔大小。 步骤11中确定RTP数据包是否为待调整数据包的具体方法可以如下 首先,将当前接收端最早接收到的、并且还未输出的RTP数据包携带的时戳值与
预先设定的时戳变量的当前值进行比较; 然后,在比较结果为时戳变量的当前值与RTP数据包携带的时戳值不一致时,确 定当前接收端最早接收到的、并且还未输出的RTP数据包为待调整数据包;具体的,若比较 结果为时戳变量的当前值大于RTP数据包携带的时戳值,说明该RTP数据包为迟到的数据 包,若比较结果为时戳变量的当前值小于RTP数据包携带的时戳值,说明该RTP数据包为早 到的数据包。 在比较结果为时戳变量的当前值小于RTP数据包携带的时戳值时,可以进一步判 断当前接收端接收到的、并且还未输出的RTP数据包的数目是否小于预先设定的抗抖动缓 冲最小深度值,该抗抖动缓冲最小深度值为正整数;并在判断为否时,确定当前接收端最早 接收到的、并且还未输出的RTP数据包为待调整数据包。在判断为是时,可以输出补偿数据 包,并将时戳变量的当前值加上RTP序列的时戳间隔值。 步骤12中在输出RTP数据包之后,还可以包括以下按照正常方式处理数据包的步 骤 步骤13 :在数据包输出周期到达时,若判断当前接收端不存在未被输出的RTP数 据包,或者当前接收端最早接收到的、并且还未输出的RTP数据包携带的时戳值大于时戳 变量的当前值,则输出补偿数据包,并将时戳变量的当前值加上RTP序列的时戳间隔值;若
判断当前接收端最早接收到的、并且还未输出的RTP数据包携带的时戳值等于时戳变量的 当前值,则输出该RTP数据包,并将时戳变量的值设置为输出的该RTP数据包的时戳值加上 RTP序列的时戳间隔值;若当前接收端最早接收到的、并且还未输出的RTP数据包携带的时 戳值小于时戳变量的当前值,则丢弃该RTP数据包。 在步骤100之前,还可以包括以下接收端初始延迟输出数据包以消除抖动的步 骤 步骤1000 :在预先设定的周期定时器到时时,判断接收端接收到的、并且还未输 出的RTP数据包的数目是否超过预先设定的抗抖动缓冲最小深度值,该抗抖动缓冲最小深 度值为正整数;若是,则到步骤1001 ;否则,返回步骤1000 ;周期定时器的定时时长小于发 送端发送RTP数据包的时间间隔; 步骤IOOI :输出接收端最早接收到的、并且还未输出的RTP数据包,并到步骤100。
本发明中,若接收端将接收到的RTP数据包保存在遵循先进先出原则的队列中 时,接收端最早接收到的、并且还未输出的RTP数据包,是指位于该队列队首的RTP数据包。
下面以具体实施例对本发明进行具体说明
本发明实施例的实现包括以下步骤 步骤SOl :初始化系统参数设置。具体内容主要包括以下八点第一,设置抗抖动缓冲最小深度常量MIN_DEPTH。 MIN_DEPTH越小延迟越小,可以
要求MIN—DEPTH > 1。
第二,设置周期定时器Tl,以ms为单位。T1越小延迟越小,设RTP序列输出时间 间隔为t ms,则Tl需要能被t整除,且最大不超过t。 第三,上述两个步骤设定后,RTP序列起始语音帧的固定延迟等于tX (MIN_ DEPTH-1) (tX (MIN—DEPTH-l)+Tl)ms,一个语音帧期间所有RTP数据包的输出时间间隔 均为t ms。 第四,设置循环计数器C,初始化C = 0,在Tl到时时C加1,直到C = t/Tl时计数 器复位,重新开始计数。当Tl二t ms时,C二Tl,不需要单独设置。后面都用C复位描述。
第五,预先设置时戳变量L—TS ;设置常量AT,其取值为RTP序列的时戳间隔值,如 8k采样率时A T = 160, 16k采样率时A T = 320。 第六,预先设置变量Lost为丢包或静音而连续输出的补偿数据包数,Lost初始化 为0。当Lost > MIN_DEPTH时,认为连续输出的补偿数据包的数目较多,系统输出已经保持 一段静音期,可能是累积的RTP数据包迟到或者抖动增大,此时在输出下一个收到的RTP数 据包时,可以考虑进行时戳调整。 第七,设置状态机,共三个处理状态,S_INIT、 S—N0RMAL和S_SILENCE。 S_INIT为 初始状态,S_N0RMAL为RTP输出的常规处理状态,S_SILENCE为静音期输出RTP处理状态。 图2为状态机的状态迁移图。 第八,设置接收RTP数据包的缓冲区队列Q_BUF,用于接收RTP数据包。Q_BUF队 列中,队首的RTP数据包的时戳最小,前MIN_DEPTH个RTP数据包的序列号连续,称为有效 的RTP数据包。 步骤S02 :激活定时器Tl,状态机进入S_INIT。 步骤S03 :S_INIT状态下,Tl到时时,判断Q_BUF中有效RTP数据包的个数是否大 于等于MIN_DEPTH ; 若判断为是,则输出队首RTP数据包,队列首指针指向下一个RYP数据包,并设置 L_TS = TS0+AT, TSO为队首RTP数据包的时戳。同时启动计数器C(若C = Tl,不需要重 新启动),状态机进入S—NORMAL,在下一次计数器C复位时跳到步骤S04 ;
若判断为否,返回步骤S03。 步骤S04 :S_N0RMAL状态下,具体包括以下子步骤 步骤41 :判断Q—BUF队列是否为空;若为空,则输出一个补偿数据包,设置1^15+ =AT, 1^)"++,跳到步骤42 ;否则跳到步骤43。 步骤42 :若Lost > MIN_DEPTH,状态机进入S_SILENCE,在下一次计数器C复位时 跳到步骤S05 ;否则,等待下一次C复位时,跳到步骤S04。 步骤43 :比较L_TS和TSO的值,若L_TS = TSO,输出队首的RTP数据包,队列首指 针指向下一个包,并设置L—TS+二 AT, Lost二0,等待下一次C复位时,跳到步骤S04;若 L—TS < TSO,跳到步骤44 ;若L—TS > TSO,跳到步骤45。 步骤44 :输出一个补偿数据包,并设置1^_15+= AT, 1^0"++,跳到步骤42。
步骤45 :该RTP数据包已过期或补偿过,丢弃该RTP数据包,队列首指针指向下一 个RTP数据包,回到步骤S04。 步骤S05 :S_SILENCE状态下,具体包括以下步骤 步骤51 :判断9_8^队列是否为空,若为空,则输出一个补偿数据包,并设置1^_15+=AT,等待下一次C复位时,跳到步骤S05 ;否则,跳到步骤52 ; 步骤52 :比较L_TS和TS0的值,若L_TS > = TSO,则跳到步骤53 ;若L_TS < TSO, 且Q_BUF中的RTP数据包数大于等于MIN_DEPTH,则跳到步骤53 ;否则跳到步骤54 ;
步骤53 :输出Q_BUF的队首RTP数据包,队列首指针指向下一个RTP数据包,并设 置L_TS = TSO+ A T, Lost = 0,状态机回到S_N0RMAL,等待下一次C复位时,跳到步骤S04。
步骤54 :输出一个补偿数据包,并设置L—TS+二 A T,等待下一次C复位时,跳到步 骤S05。 本发明提供的方法对抖动消除采取的是固定延迟加静音期自适应调整的方式,其
中涉及到对静音期的判断和处理。通过累计连续输出的补偿数据包数达到一定门限的方
式,使得当DTX期不发送语音包或因连续丢包补偿而产生静音时,系统都可以获得调整输
出时戳的机会,从而对网络抖动达到自适应效果,对于因网络延迟造成累积包迟到又一起
到达的情况,能有效降低RTP接收端的丢包率。本发明提供的方法以固定延迟为基础,只需
要设置一个固定周期计数,实现简单,特别对于在硬件平台上处理多通道RTP序列时,操作
维护都很便捷,同时又兼具了抗抖动自适应的效果,提高了系统处理效率。 为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步
地详细描述。 以t = 20ms语音数据打包的RTP序列为例,语音样本采样率为8k, RTP序列的时 戳间隔值AT为160,接收端需要每20ms输出一个RTP数据包。 在接收端涉及到一个缓冲区队列Q_BUF,用于存储排好序的RTP数据包。在实现本 发明提供的方法时,接收端只需要保证队首的RTP数据包携带的时戳TSO最小,入队时的前 MIN_DEPTH个RTP数据包的序列号连续。 本发明实现的方法需要配置一个抗抖动缓冲最小深度常量MIN_DEPTH,要求MIN_ DEPTH> l,它代表了 RTP序列初始输出时延迟的包数,属于确定初始固定延迟的主体部分。
本发明实现的方法还需要配置一个定时器Tl, 一个计数器C。定时器Tl以ms为 单位,必须能被RTP数据包输出时间间隔t整除,且最大不超过t。它代表了 RTP序列初始 输出延迟的实时性,属于确定初始固定延迟的附加部分。定时器Tl和计数器C 一起,共同 完成实时输出RTP数据包的周期计数,T1XC二 t。 如实例中t = 20ms,选择MIN—DEPTH = 2, Tl = 10ms, C = 2,则RTP的初始延迟为 20-30ms ;若T1 = 20ms,C = l,由于Tl = t,可以不再单独设置计数器C, C复位即是Tl到 时,这时RTP的初始延迟为20-40ms。 本发明实现的方法还需要配置一个状态机,用于实时输出RTP数据包,并处理丢 包、静音期间的延迟自适应。 系统初始化时,状态机处于S—INIT态,如附图2所示,启动定时器T1,按如下步骤 进行处理 步骤201 :等待定时器Tl到时,进入步骤202 ; 步骤202 :如果Q_BUF中的有效RTP数据包数目大于等于MIN_DEPTH,进入步骤
203 ;否则回到步骤201 ; 步骤203 :记L_TS = TSO+ A T,输出队首RTP数据包,启动计数器C,状态机进入S_ NORMAL状态。
10
在步骤203处,如果定时器Tl = t,不需要启动计数器C。 若实例中设置Tl = 10ms,MIN_DEPTH = 2,系统初始化时,Q_BUF为空。每次Tl到 时,检查Q_BUF,如果发现Q_BUF中的RTP数据包数大于等于2,且前2个RTP数据包的序列 号连续,即可以输出队首的RTP数据包,记录本地维护的时戳常量L_TS为输出RTP数据包 的时戳号加上160。此时状态机进入S—N0RMAL状态,表示RTP输出进入正常处理中,并启动 计数器C。 状态机进入S_NORMAL状态,如附图3所示,按如下步骤进行处理 步骤301 :等待计数器C复位,进入步骤302 ; 步骤302 :如果Q_BUF不为空,进入步骤303 ;否则跳到步骤306 ; 步骤303 :比较L—TS和TSO的值,如果L—TS = TSO,进入步骤304 ;如果L—TS >
TSO,跳到步骤305 ;如果L—TS < TSO,跳到步骤306 ; 步骤304 :设置LJS = TSO+AT,输出队首RTP数据包,设置Lost = 0,回到步骤
301 ; 步骤305 :丢弃队首RTP数据包,跳到步骤302 ; 步骤306 :输出补偿一个补偿数据包,设置L_TS+ = A T, Lost++,进入步骤307 ;
步骤307 :如果Lost大于MIN_DEPTH,状态机进入S_SILENCE状态;否则回到步骤 301。 在正常处理状态下,计数器每复位一次,出队一包,也即是按RTP数据包的输出时 间间隔出队,如果Q—BUF为空,则补偿一包。如实例中每20ms输出一个RTP数据包,Tl = lOms,计数器的值就置为2。每次定时器到时,计数器减l,计数器C = 0时,就是复位的时候。 每次出队时,按照时戳号顺序进行,保证实时输出RTP数据包。以SJNIT状态下 出队的第一个RTP数据包的时戳号为基准,每输出一个包,即是时间过了 20ms,时戳号就加 上160,以此作为下一个应该输出RTP数据包的时戳号L—TS,输出过程中时戳不进行调整。 如果此时Q_BUF中没有包,或者因为乱序,队首RTP数据包的时戳号TSO大于L_TS,则补偿 一个包输出,并且记录下来连续补偿的包数Lost。在实例中,当Lost大于2时,表示当前已 经连续补偿的包数达到了需要调整时戳的门限,输出端已经产生了一段静音,则状态机进 入S_SILENCE状态去处理。反之,如果TSO小于L_TS,表示间歇性丢包,并且已经采取了补 偿措施进行处理,那么这一包已经过期,就被直接丢弃了。时戳等于L—TS的包,正常输出, 在MIN_DEPTH选取适当,网络抖动正常时,这个应该是大部分的处理情况。
状态机进入S_SILENCE状态,如附图4所示,按如下步骤进行处理
步骤401 :等待计数器C复位,进入步骤402 ; 步骤402 :如果Q_BUF不为空,进入步骤403 ;否则,跳到步骤406 ; 步骤403 :比较L_TS和TSO的值,如果L_TS < TSO,进入步骤404 ;如果L_
TS > TS0,跳到步骤405 ; 步骤404 :如果Q—BUF中的RTP数据包数大于等于MIN—DEPTH,进入步骤405 ;否则, 跳到步骤406 ; 步骤405 :设置LJS = TSO+AT,输出队首RTP数据包,设置Lost = O,状态机进 入S—NO薩L状态;
步骤406 :输出一个补偿数据包,设置1^_15+= AT,回到步骤401。
状态机处于S_SILENCE状态,表示输出端处于静音状态,最短持续了 MIN_ DEPTHX t时间,在实例中就是40ms,此时标明某种异常,可能是抖动突然变大,可能是某种 原因网络中有累积的包一起迟到,对于这两种情况,要进行时戳调整,否则会造成接收端大 量丢包。还有一种可能是DTX期间不发送语音包,对于这种情况,一般不需要调整时戳,当 DTX期结束时状态机会自动回到正常状态处理。在这个状态,仍然是计数器复位一次,出队 一包,如果Q_BUF中没有包,或者包数小于MIN_DEPTH且L_TS小于TS0,就进行补偿,直到 队首时戳小于等于L_TS。 一般来说,时戳小于L_TS的包已经补偿过应该丢弃,但是在S_ SILENCE状态下,因为之前是补偿的静音输出,可以将输出时戳L_TS调整为TS0,输出队首 RTP数据包,这样,起到了增大延迟的效果,既不会影响前后RTP数据包的正常输出,同时有 效降低了丢包率。当L_TS小于TSO而Q_BUF中的包数大于等于MIN_DEPTH时,认为此时RTP 输出端的延时过大,可以将输出时戳调整为TSO,输出队首RTP数据包,这样,起到了减小延 迟的效果,使得RTP数据包能够得到及时输出,队列中可以保存更多RTP数据包,减少丢包 数,并与上述的增大延迟起到了互相补偿的作用,将输出端的延迟调整到了同S—INIT初始 状态的延迟效果,以实现接收端稳定输出RTP数据包。 在状态机的整个运转过程中,RTP出队由定时器加计数器驱动,实现很简单,即是 要操作多个RTP序列,也可以采用相同的计数周期。 参见图6,本发明实施例还提供一种数据包输出处理设备,该设备包括 门限确定单元60,用于确定连续输出的补偿数据包的个数是否超过预先设定的门
限值,该门限值为正整数; 调整确定单元61,用于在所述门限确定单元确定所述补偿数据包的个数超过预先 设定的门限值时,确定当前最早接收到的、并且还未输出的实时传输协议RTP数据包是否 为待调整数据包;所述待调整数据包是指未按照预先设定的时间顺序到达的数据包;
数据包输出单元62,用于在所述调整确定单元确定所述RTP数据包为待调整数据 包时,输出所述RTP数据包。
该设备还包括 数据包补偿单元63,用于在数据包输出周期到达时,若当前不存在未被输出的 RTP数据包,或者当前最早接收到的、并且还未输出的RTP数据包携带的时戳值大于预先设 定的时戳变量的当前值,则输出补偿数据包;所述时戳变量的取值按照以下方法动态调整 每输出一个RTP数据包后将所述时戳变量的值设置为输出的该RTP数据包的时戳值加上 RTP序列的时戳间隔值,每输出一个补偿数据包后将所述时戳变量的值加上RTP序列的时 戳间隔值。 所述调整确定单元61包括 时戳比较单元,用于将当前最早接收到的、并且还未输出的RTP数据包携带的时 戳值与预先设定的时戳变量的当前值进行比较; 结果确定单元,用于在比较结果为所述时戳变量的当前值与所述RTP数据包携带 的时戳值不一致时,确定当前最早接收到的、并且还未输出的RTP数据包为待调整的数据 包;所述时戳变量的取值按照以下方法动态调整每输出一个RTP数据包后将所述时戳变 量的值设置为输出的该RTP数据包的携带的时戳值加上RTP序列的时戳间隔值,每输出一个补偿数据包后将所述时戳变量的值加上RTP序列的时戳间隔值。
所述调整确定单元61还包括 判断单元,用于在所述调整确定单元的比较结果为所述时戳变量的当前值小于所 述RTP数据包携带的时戳值时,判断当前接收到的、并且还未输出的RTP数据包的数目是否 小于预先设定的抗抖动缓冲最小深度值,该抗抖动缓冲最小深度值为正整数;
相应的,所述结果确定单元用于 在所述判断单元判断当前接收到的、并且还未输出的RTP数据包的数目不小于所 述抗抖动缓冲最小深度值时,确定当前最早接收到的、并且还未输出的RTP数据包为待调 整数据包。 所述数据包输出单元62还用于 在所述判断单元判断当前接收到的、并且还未输出的RTP数据包的数目小于所述
抗抖动缓冲最小深度值时,输出补偿数据包。
该设备还包括 后续数据包处理单元64,用于在所述数据包输出单元输出所述RTP数据包之后, 数据包输出周期到达时,若判断当前不存在未被输出的RTP数据包,或者当前最早接收到 的、并且还未输出的RTP数据包携带的时戳值大于所述时戳变量的当前值,则输出补偿数 据包;若判断当前最早接收到的、并且还未输出的RTP数据包携带的时戳值等于所述时戳 变量的当前值,则输出该RTP数据包;若当前最早接收到的、并且还未输出的RTP数据包携 带的时戳值小于所述时戳变量的当前值,则丢弃该RTP数据包。 该设备还包括 初始数据包输出单元65,用于在预先设定的周期定时器到时时,判断接收到的、并 且还未输出的RTP数据包的数目是否超过预先设定的抗抖动缓冲最小深度值,该抗抖动缓 冲最小深度值为正整数;若是,则输出最早接收到的、并且还未输出的RTP数据包,并触发 所述数据包补偿单元;否则,继续触发本初始数据包输出单元;所述周期定时器的定时时 长小于发送端发送RTP数据包的时间间隔。
综上,本发明的有益效果包括 本发明实施例提供的方案中,在接收端输出的补偿数据包数超过预先设定的门限 值时,若当前接收端最早接收到的、并且还未输出的RTP数据包是未按照预先设定的时间 顺序到达接收端的待调整数据包,则选择输出该RTP数据包,而不是丢弃该RTP数据包或输 出补偿数据包,从而有效的降低了接收端的丢包率,提高了语音输出效果。分析如下待调 整的数据包包括迟到(或乱序)和早到的数据包,调整迟到的数据包能降低丢包率;调整早 到的数据包,能调整输出时间,从大的来说可以降低后续的丢包率,这两种都能提高语音输 出效果。 本发明提供的方案使RTP数据包输出对网络抖动和延迟具有一定自适应性,在保 证RTP实时性特征的同时,降低了 RTP接收端的丢包率,并且操作实现简单。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精 神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围 之内,则本发明也意图包含这些改动和变型在内。
权利要求
一种数据包输出处理方法,其特征在于,该方法包括A、接收端确定连续输出的补偿数据包的个数是否超过预先设定的门限值,该门限值为正整数;B、在确定所述补偿数据包的个数超过预先设定的门限值时,确定当前最早接收到的、并且还未输出的实时传输协议RTP数据包是否为待调整数据包;所述待调整数据包是指所述RTP数据包是未按照预先设定的时间顺序到达的数据包;C、在确定所述RTP数据包为待调整数据包时,输出所述RTP数据包。
2. 如权利要求1所述的方法,其特征在于,在步骤A之前,该方法进一步包括D、 在数据包输出周期到达时,若当前接收端不存在未被输出的RTP数据包,或者当前接收端最早接收到的、并且还未输出的RTP数据包携带的时戳值大于预先设定的时戳变量的当前值,则输出补偿数据包;所述时戳变量的取值按照以下方法动态调整接收端每输出一个RTP数据包后将所述时戳变量的值设置为输出的该RTP数据包的时戳值加上RTP序列的时戳间隔值,接收端每输出一个补偿数据包后将所述时戳变量的值加上RTP序列的时戳间隔值;记录接收端连续输出的补偿数据包的个数。
3. 如权利要求1所述的方法,其特征在于,步骤B中确定当前最早接收到的、并且还未输出的RTP数据包是否为待调整数据包包括将当前接收端最早接收到的、并且还未输出的RTP数据包携带的时戳值与预先设定的时戳变量的当前值进行比较;在比较结果为所述时戳变量的当前值与所述RTP数据包携带的时戳值不一致时,确定当前接收端最早接收到的、并且还未输出的RTP数据包为待调整数据包;所述时戳变量的取值按照以下方法动态调整接收端每输出一个RTP数据包后将所述时戳变量的值设置为输出的该RTP数据包的时戳值加上RTP序列的时戳间隔值,接收端每输出一个补偿数据包后将所述时戳变量的值加上RTP序列的时戳间隔值。
4. 如权利要求3所述的方法,其特征在于,在比较结果为所述时戳变量的当前值小于所述RTP数据包携带的时戳值时,该方法进一步包括判断当前接收端接收到的、并且还未输出的RTP数据包的数目是否小于预先设定的抗抖动缓冲最小深度值,该抗抖动缓冲最小深度值为正整数;所述确定当前接收端最早接收到的、并且还未输出的RTP数据包为待调整数据包包括在判断当前接收端接收到的、并且还未输出的RTP数据包的数目不小于所述抗抖动缓冲最小深度值时,确定当前接收端最早接收到的、并且还未输出的RTP数据包为待调整数据包。
5. 如权利要求4所述的方法,其特征在于,在判断当前接收端接收到的、并且还未输出的RTP数据包的数目小于所述抗抖动缓冲最小深度值时,该方法进一步包括输出补偿数据包。
6. 如权利要求3所述的方法,其特征在于,在步骤C中在输出所述RTP数据包之后,该方法进一步包括 E、 在数据包输出周期到达时,若判断当前接收端不存在未被输出的RTP数据包,或者当前接收端最早接收到的、并且还未输出的RTP数据包携带的时戳值大于所述时戳变量的 当前值,则输出补偿数据包;若判断当前接收端最早接收到的、并且还未输出的RTP数据包 携带的时戳值等于所述时戳变量的当前值,则输出该RTP数据包;若当前接收端最早接收 到的、并且还未输出的RTP数据包携带的时戳值小于所述时戳变量的当前值,则丢弃该RTP 数据包。
7. 如权利要求2所述的方法,其特征在于,在步骤D之前,该方法进一步包括F、 在预先设定的周期定时器到时时,判断接收端接收到的、并且还未输出的RTP数据 包的数目是否超过预先设定的抗抖动缓冲最小深度值,该抗抖动缓冲最小深度值为正整数;若是,则到步骤G ;否则,返回步骤F ;所述周期定时器的定时时长小于发送端发送RTP 数据包的时间间隔;G、 输出接收端最早接收到的、并且还未输出的RTP数据包,并到步骤D。
8. —种数据包输出处理设备,其特征在于,该设备包括门限确定单元,用于确定连续输出的补偿数据包数是否超过预先设定的门限值,该门 限值为正整数;调整确定单元,用于在所述门限确定单元确定所述补偿数据包数超过预先设定的门限 值时,确定当前最早接收到的、并且还未输出的RTP数据包是否为待调整数据包;所述待调 整数据包是指所述RTP数据包是未按照预先设定的时间顺序到达的数据包;数据包输出单元,用于在所述调整确定单元确定所述RTP数据包为待调整数据包时, 输出所述RTP数据包。
9. 如权利要求8所述的设备,其特征在于,该设备还包括数据包补偿单元,用于在数据包输出周期到达时,若当前不存在未被输出的RTP数据 包,或者当前最早接收到的、并且还未输出的RTP数据包携带的时戳值大于预先设定的时戳变量的当前值,则输出补偿数据包;所述时戳变量的取值按照以下方法动态调整接收端每输出一个RTP数据包后将所述时戳变量的值设置为输出的该RTP数据包的时戳值加上 RTP序列的时戳间隔值,接收端每输出一个补偿数据包后将所述时戳变量的值加上RTP序 列的时戳间隔值;记录连续输出的补偿数据包的个数。
10. 如权利要求8所述的设备,其特征在于,所述调整确定单元包括 时戳比较单元,用于将当前最早接收到的、并且还未输出的RTP数据包携带的时戳值与预先设定的时戳变量的当前值进行比较;结果确定单元,用于在比较结果为所述时戳变量的当前值与所述RTP数据包携带的时 戳值不一致时,确定当前最早接收到的、并且还未输出的RTP数据包为待调整的数据包;所述时戳变量的取值按照以下方法动态调整接收端每输出一个RTP数据包后将所述时戳变量的值设置为输出的该RTP数据包的时戳值加上RTP序列的时戳间隔值,接收端每输出一 个补偿数据包后将所述时戳变量的值加上RTP序列的时戳间隔值。
11. 如权利要求10所述的设备,其特征在于,所述调整确定单元还包括 判断单元,用于在所述调整确定单元的比较结果为所述时戳变量的当前值小于所述RTP数据包携带的时戳值时,判断当前接收到的、并且还未输出的RTP数据包的数目是否小 于预先设定的抗抖动缓冲最小深度值,该抗抖动缓冲最小深度值为正整数;所述结果确定单元用于在所述判断单元判断当前接收到的、并且还未输出的RTP数据包的数目不小于所述抗抖动缓冲最小深度值时,确定当前最早接收到的、并且还未输出的RTP数据包为待调整数据包。
12. 如权利要求11所述的设备,其特征在于,所述数据包输出单元还用于在所述判断单元判断当前接收到的、并且还未输出的RTP数据包的数目小于所述抗抖动缓冲最小深度值时,输出补偿数据包。
13. 如权利要求IO所述的设备,其特征在于,该设备还包括后续数据包处理单元,用于在所述数据包输出单元输出所述RTP数据包之后,数据包输出周期到达时,若判断当前不存在未被输出的RTP数据包,或者当前最早接收到的、并且还未输出的RTP数据包携带的时戳值大于所述时戳变量的当前值,则输出补偿数据包;若判断当前最早接收到的、并且还未输出的RTP数据包携带的时戳值等于所述时戳变量的当前值,则输出该RTP数据包;若当前最早接收到的、并且还未输出的RTP数据包携带的时戳值小于所述时戳变量的当前值,则丢弃该RTP数据包。
14. 如权利要求9所述的设备,其特征在于,该设备还包括初始数据包输出单元,用于在预先设定的周期定时器到时时,判断接收到的、并且还未输出的RTP数据包的数目是否超过预先设定的抗抖动缓冲最小深度值,该抗抖动缓冲最小深度值为正整数;若是,则输出最早接收到的、并且还未输出的RTP数据包,并触发所述数据包补偿单元;否则,继续触发本初始数据包输出单元;所述周期定时器的定时时长小于发送端发送RTP数据包的时间间隔。
全文摘要
本发明实施例公开了一种数据包输出处理方法,该方法为接收端确定连续输出的补偿数据包数是否超过预先设定的门限值;在确定所述补偿数据包数超过预先设定的门限值时,确定当前最早接收到的、并且还未输出的RTP数据包是否为待调整数据包;所述待调整数据包是指所述RTP数据包是未按照预先设定的时间顺序到达的数据包;在确定所述RTP数据包为待调整数据包时,输出所述RTP数据包。本发明实施例还公开了一种数据包输出处理设备。采用本发明,能够有效降低接收端的丢包率。
文档编号H04L12/56GK101719808SQ20091022294
公开日2010年6月2日 申请日期2009年11月23日 优先权日2009年11月23日
发明者曾永慧 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1