CN102739503B - VoIP去抖动缓冲区的处理方法 - Google Patents
VoIP去抖动缓冲区的处理方法 Download PDFInfo
- Publication number
- CN102739503B CN102739503B CN201110082510.4A CN201110082510A CN102739503B CN 102739503 B CN102739503 B CN 102739503B CN 201110082510 A CN201110082510 A CN 201110082510A CN 102739503 B CN102739503 B CN 102739503B
- Authority
- CN
- China
- Prior art keywords
- burst
- buffer
- jitter
- level
- grade
- 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.)
- Active
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Telephonic Communication Services (AREA)
Abstract
本发明提供一种VoIP去抖动缓冲区的处理方法,包括:初始化去抖动缓冲区;执行音频数据帧的保存操作;更新突发等级状态;执行音频数据帧的读取操作;更新突发等级状态;根据对去抖动缓冲区中音频数据帧进行的保存操作和读取操作以及突发等级,计算出当前的有效突发等级;根据计算得到的当前的有效突发等级,调整去抖动缓冲区的大小。相较于现有技术,本发明基于缓冲区数据的存取操作和突发等级状态来计算抖动突发等级,通过对突发等级状态参数的不断更新,根据有效突发等级的变化来调整去抖动缓冲区,以达到更低的延时和尽量大的自适应去抖动能力,降低丢包的数量,提高音频的质量,具有实现难度较低,可靠性较高的优点。
Description
技术领域
本发明涉及一种VoIP去抖动缓冲区的处理方法。
背景技术
目前,VoIP(Voice over Internet Protocol)在Internet各类应用中占据越来越大的比重,VoIP是一种以IP电话为主,并推出相应的增值业务的技术。它以IP分组交换网络为传输平台,对模拟的语音信号进行压缩、打包等一系列的特殊处理,使之可以采用无连接的UDP(UserDatagram Protocol,用户数据报协议)进行传输,其最大的优势是能广泛地采用Internet和全球IP互连的环境,提供比传统业务更多、更好的服务。VoIP可以在IP网络上传送语音、传真、视频和数据等业务,如统一消息、虚拟电话、虚拟语音/传真邮箱、查号业务、Internet呼叫中心、Internet呼叫管理、电视会议、电子商务、传真存储转发和各种信息的存储转发等。VoIP的广泛应用,其服务质量保证的问题也日益为业界所关注。VoIP是典型的实时性业务,对于QoS(服务质量)有很高的要求。
VoIP的实现是基于IP网络的,IP网络可以是企业内部的局域网或者是互联网,IP网络是基于尽力而为的服务体系结构,当网络负载小时服务质量相对较高,反之负载过高时必然会出现网络的丢包和延时抖动等问题。
对于延时抖动而言,在实时的VoIP语音网络会议中,语音数据是经过压缩打包后传输的。每个数据包都包含压缩后的语音数据以及目地IP地址信息,虽然语音包在发送端是按一定间隔有序发送的,但是由于网络传输路径可能不同,不同的数据包到达接收端的时间间隔并不一致。另外,在采用UDP进行语音数据实时传输时,到达接收端的语音次序也有可能发生错乱。这两个现象就是我们通常说的抖动。当网络抖动严重的时候,某些数据包迟到达后将被丢弃,也存在等待一段时间中没有任何数据到达,然后突然接受到很多个数据包,同时会覆盖掉之前的数据也会造成需要播放的数据不连续,导致语音回放的失真断续。例如在一个由多人参加的VoIP音频网络会议中,剧烈的数据包抖动会导致语音时断时续,严重影响参会者的语音实时交流。对于一般的数据业务,丢失和传输延时都可以通过重传或等待来弥补,然而在音频通话之类的实时业务中,对时延和抖动等有着更为苛刻的要求,所以对于实时性业务必须保障音频数据的实时接收和回放。那么时延抖动也成为了影响VoIP的最为重要的QoS的指标之一。
为了有效的解决抖动问题,通常在接收端会引入抖动缓冲区技术来消除抖动的影响。
抖动缓冲区(Jitter Buffer),也叫做de-Jitter Buffer,被用于计算时延抖动,由分组网络引进,所以一个音频(或视频)传输通过网络的连续播放能够被保证。最大量的抖动能够被一个抖动缓冲区计算,等同于这个缓冲延迟在开始播放这个媒体流之前被引进。
在网络电话中,抖动缓冲区(Jitter Buffer)是一个共享的数据区域,在这个数据区域中,每隔一段均匀的间隔,音频包会被收集,存储并发到音频处理器。包到达时间的变化,称作抖动,这个是由于网络拥塞,定时漂移或路由变更而产生的。抖动缓冲区放置在音频连接的接收端,有意地延迟到达的包,这样终端用户就会感受到一个清晰的,没有什么语音失真的连接。
常见的去抖动缓冲方法有两种:静态去抖动缓冲控制算法的和动态自适应去抖动缓冲控制算法。
1)、静态去抖动缓冲控制算法:设立固定长度的抖动缓冲区。在解码和播放语音数据包之前,放入一个固定长度缓冲区,也就是缓冲内的语音包个数是固定不变的,对于超出缓冲区范围的数据将会丢弃。。这个算法的特点是:该类算法实现简单,运算复杂度小,可靠性高;但是网络抖动较大时,丢包数量也很高,网络抖动小时,也存在固定的和较大的语音延时,导致了语音质量下降。
2)、自适应去抖动缓冲控制算法:设立的抖动缓冲区中的长度是可变的,即抖动缓冲区的长度根据当前网络状况快速自适应调整。当网络抖动剧烈时,通过插入静音包来增加缓冲区长度;当网络条件趋向于畅通时,通过删除缓冲区中最老的包来实现减小缓冲区长度的目的。在一定范围内更好的解决抖动延时的问题,降低丢包的数量,提高音频的质量,并且在网络抖动较小的时候提供更低的延迟。该类算法的实现难度较高,可靠性也相对会低。
发明内容
本发明的目的在于提供一种去抖动缓冲方法,用于解决去抖动缓冲技术中实现复杂度高、可靠性和稳定性较弱的问题。
本发明提供一种VoIP去抖动缓冲区的处理方法,包括:初始化去抖动缓冲区;执行音频数据帧的保存操作,将接收自远端传输过来的新的音频数据帧保存至去抖动缓冲区中;更新突发等级;执行音频数据帧的读取操作,从去抖动缓冲区中将音频数据帧读取出;更新突发等级;根据对去抖动缓冲区中音频数据帧进行的保存操作和读取操作以及突发等级,计算出当前的有效突发等级;根据计算得到的当前的有效突发等级,调整去抖动缓冲区的大小。
可选地,所述初始化去抖动缓冲区包括:初始化包括缓冲能力Buff_CAP、最大突发等级Burst_Level_Max、读取最大次数Get_Count_Max、稳定状态次数Stable_Count_Max在内的常量参数设置;初始化去抖动缓冲区中音频数据帧列表,设置音频数据帧单位长度;清空去抖动缓冲区中音频数据帧列表,设置去抖动缓冲区的操作状态为Status_Initailizing,突发等级Burst_Level的初始化状态为0。
可选地,所述执行音频数据帧的保存操作包括:接收来自远端传输过来的新的音频数据帧,计算当前去抖动缓冲区的已使用长度BufferCountUsed;判断去抖动缓冲区的状态是否为Status_Processing,并在判断得到去抖动缓冲区的状态是Status_Processing时,执行音频数据帧的保存;判断保存的音频数据帧是否超出设置的缓冲能力,若没有超出缓冲能力,则成功将当前音频数据帧保存到去抖动缓冲区中;若超出缓冲能力,则将去抖动缓冲区的音频数据帧列表中位于最前面的对应长度的音频数据帧予以删除,然后将当前音频数据帧保存到去抖动缓冲区中;计算存储当前的音频数据帧后去抖动缓冲区的当前有效帧数量,更新突发等级Burst_Level。
可选地,所述执行音频数据帧的保存操作还包括:在判断得到去抖动缓冲区的状态不是Status_Processing时,通过去抖动缓冲区的已使用长度BufferCountUsed和突发等级Burst_Level来计算丢帧间隔Discard_Interval,并在当前帧间隔大于等于所述计算得到的丢帧间隔Discard_Interval时,将当前的音频数据帧丢弃。
可选地,通过去抖动缓冲区的已使用长度BufferCountUsed和突发等级Burst_Level来计算丢帧间隔Discard_Interval包括:Level_tmp=MAX(Burst_Level,Eff_Level),即取两者中的较大值;Factor=BufferCountUsed/Burst_Level;(当Burst_Level小于等于5且Factor小于3,则Factor设置为0;)若Factor等于0,则丢帧间隔Discard_Interval为0;若Factor等于1,则丢帧间隔Discard_Interval为7;若Factor等于2,则丢帧间隔Discard_Interval则为5;否则,丢帧间隔Discard_Interval则默认为4。
可选地,更新保存操作的突发等级包括:计算去抖动缓冲区的当前有效帧数量,根据如下计算公式更新突发等级Burst_Level:Burst_Level+=1;或Burst_Level+=(当前有效数量-存储前数量)。
可选地,更新读取操作的突发等级包括:根据如下计算公式更新突发等级Burst_Level:Burst_Level+=1。
可选地,根据对去抖动缓冲区中音频数据帧进行的保存操作和读取操作以及突发等级以计算出当前的有效突发等级包括:将去抖动缓冲区的状态改为Status_Processing,统计突发等级的最大值Burst_Level_Max;根据有效突发等级Eff_Level和突发等级Burst_Level重新计算得到当前的有效突发等级Eff_Level。
可选地,根据有效突发等级和突发等级的大小重新计算得到当前的有效突发等级包括:若突发等级Burst_Level大于有效突发等级Eff_Level,表示抖动突然增大,则当前的有效突发等级Eff_Level根据如下公式得到:Eff_Level=MIN(Burst_Level_Max,Buff_CAP*4/5),即取两者中的较小值;若突发等级Burst_Level等于有效突发等级Eff_Level,表示抖动没有改变,不作计算处理;若突发等级Burst_Level小于有效突发等级Eff_Level,表示抖动突然降低,则统计当前稳定状态次数Stable_Count,若当前稳定状态次数Stable_Count小于所允许的最大稳定状态次数Stable_Count_Max时,则不作处理;若当前稳定状态次数Stable_Count大于等于所允许的最大稳定状态次数Stable_Count_Max时,根据一个参考值来计算新的有效突发等级。
可选地,根据一个参考值来计算新的有效突发等级包括:设置最大稳定状态次数Stable_Count_Max为0;计算得到一个参考值AVG,计算公式为:AVG=(Eff_Level-Burst_Level_Max)/3;所述参考值AVG为大于等于1的常数;根据参考值AVG,计算得到新的有效突发等级Eff_Level,计算公式为:Eff_Level=Eff_Level-AVG。
相较于现有技术,本发明基于去抖动缓冲区数据的存取操作和突发等级来计算抖动突发等级,通过对突发等级参数的不断更新,根据有效突发等级的变化来调整去抖动缓冲区,以达到更低的延时和尽量大的自适应去抖动能力,不仅可以降低丢包的数量,提高音频的质量,更具有实现难度较低,可靠性较高的优点。
附图说明
图1为模拟实际的IP网络中音频包的时延抖动示意图;
图2为本发明VoIP去抖动缓冲区的处理方法的流程示意图;
图3为本发明去抖动缓冲区的处理方法中音频数据帧的保存操作的流程示意图;
图4为本发明去抖动缓冲区的处理方法中音频数据帧的读取操作以及当前有效突发等级的计算的流程示意图;
图5为采用固定长度去抖动缓冲算法的输出结果;
图6为采用本发明去抖动缓冲区的处理方法的输出结果。
具体实施方式
请参阅图1,其显示了模拟实际的IP网络中音频包的时延抖动示意图;如图1所示,由于数据包需在传输介质中进行传输,因此发送的数据包与接收的数据包之间存在一定的时延抖动。
在传统的自适应去抖动缓冲方法中,RTP(Real-time Transport Protocol,实时传输协议)头部的时间戳提供了一种传递音频流平滑信息的手段。如果不存在抖动现象,则只用RTP头部的时间戳就可以重现音频流。当存在抖动现象而需要进行抖动缓冲设计时,则应采用如下三种时间戳:RTP头部中的时间戳、本地的到达时间戳和本地的播放时间戳。
此外,应该注意网络抖动有可能突变。一个抖动突变意味网络延迟的突然增加,增加的延迟可以是100ms或更长。抖动突变的结果是一系列的数据包几乎同时到达。为了处理抖动突变,抖动缓冲区大小一定可以是非常快地增加以适应突然出现的大的抖动。针对网络抖动的突变性问题,同时更大的避免自适应去抖动缓冲方法的实现复杂和稳定性的等一系列问题,本发明采用了一种基于对去抖动缓冲区中数据存取的统计和突发等级的计算结合的方法来更有效控制抖动缓冲区,以达到更低的延时和尽量大的自适应去抖动能力。
请参阅图2,其显示了本发明VoIP去抖动缓冲区的处理方法的流程示意图。如图2所示,本发明VoIP去抖动缓冲区的处理方法包括:
初始化去抖动缓冲区;
执行音频数据帧的保存操作,将接收自远端传输过来的新的音频数据帧保存至去抖动缓冲区中;
执行音频数据帧的读取操作,从去抖动缓冲区中将音频数据帧读取出;
根据对去抖动缓冲区中音频数据帧进行的保存操作和读取操作以及突发等级,计算出当前的有效突发等级;
根据计算得到的当前的有效突发等级,调整去抖动缓冲区的大小。
下面对上述各个步骤进行详细描述。
首先,初始化去抖动缓冲区。
步骤1-1,初始化包括缓冲能力Buff_Cap、最大突发等级Burst_Level_Max、读取最大次数Get_Count_Max、稳定状态次数Stable_Count_Max在内的常量参数设置;
在本实施例中,设置读取最大次数Get_Count_Max为常数25,稳定状态次数Stable_Count_Max为常数20。
步骤1-2,初始化去抖动缓冲区中音频数据帧列表,设置音频数据帧单位长度;
步骤1-3,清空去抖动缓冲区中音频数据帧列表,设置去抖动缓冲区的操作状态为Status_Initailizing,突发等级Burst_Level的初始化状态为0。
在本实施例中,去抖动缓冲区的操作状态包括Status_Initailizing(初始化状态)和Status_Processing(处理状态)。
然后,执行音频数据帧的保存操作,将接收自远端传输过来的新的音频数据帧保存至去抖动缓冲区中。图3即显示了本发明去抖动缓冲区的处理方法中音频数据帧的保存操作的流程示意图。
如图3所示,在去抖动缓冲区执行完初始化操作(具体详见前述的步骤1-1至步骤1-4的内容)后,处于初始化状态。
步骤2-1,判断是否有新的音频数据帧需要保存,若是有新的音频数据帧,则进至步骤2-2;反之,若没有新的音频数据帧,则空闲等待。
步骤2-2,计算当前去抖动缓冲区的已使用长度BufferCountUsed;
步骤2-3,判断去抖动缓冲区的状态是否为Status_Processing,若判断得到去抖动缓冲区的状态是Status_Processing时,则进至步骤2-4,开始执行音频数据帧的保存;反之,若判断得到去抖动缓冲区的状态不是Status_Processing时,则进至步骤2-5;
步骤2-5,计算丢帧间隔Discard_Interval。在本实施例中,是利用去抖动缓冲区的已使用长度BufferCountUsed和突发等级Burst_Level来计算丢帧间隔Discard_Interval。具体地,计算方法如下公式:
Level_tmp=MAX(Burst_Level,Eff_Level),即取两者中的较大值;
Factor=BufferCountUsed/Burst_Level;(当Burst_Level小于等于5且Factor小于3,则Factor设置为0;)
若Factor等于0,则丢帧间隔Discard_Interval为0;
若Factor等于1,则丢帧间隔Discard_Interval为7;
若Factor等于2,则丢帧间隔Discard_Interval则为5;
否则,丢帧间隔Discard_Interval则默认为4。
步骤2-6,判断是否需要丢帧,即:当前帧间隔delta等于当前帧序号(cur_frame_index)减去上一次丢包的帧序号(last_discard_index),若丢帧间隔Discard_Interval不等于0,且当前帧间隔delta大于等于丢帧间隔Discard_Interval时,则认为当前帧必须丢弃。
若判断需要丢帧,则进至步骤2-7,丢弃当前音频数据帧,并设置当前音频数据帧为丢弃音频数据帧类型Discarded_Frame_Type;反之,若判断不需要丢帧,则进至步骤2-4,开始执行音频数据帧的保存。
步骤2-8,判断需要保存的当前音频数据帧是否超出设置的去抖动缓冲区的缓冲能力,若没有超出去抖动缓冲区的缓冲能力,则进至步骤2-9,成功将当前音频数据帧保存到去抖动缓冲区中,设置当前音频数据帧为正常音频数据帧类型Normal_Frame_Type;若超出去抖动缓冲区的缓冲能力,则进至步骤2-10。
步骤2-10,计算超出缓冲区上限的帧数量,并进至步骤2-11。
步骤2-11,则将去抖动缓冲区的音频数据帧列表中位于最前面的对应长度的音频数据帧予以删除,然后将当前音频数据帧保存到去抖动缓冲区中。
步骤2-12,计算去抖动缓冲区的当前有效帧数量,更新突发等级Burst_Level。Burst_Level+=1;或Burst_Level+=(当前有效数量-存储前数量)
步骤2-13,判断Last_OP是否等于Put_OP,若Last_OP等于Put_OP,于步骤2-14,将突发等级Burst_Level设置为0;若Last_OP不等于Put_OP,于步骤2-15,设置Last_OP等于Put_OP,将突发等级Burst_Level设置为0。
后续,继续执行下一帧音频数据的处理。
接着,执行音频数据帧的读取操作,从去抖动缓冲区中将音频数据帧读取出;根据对去抖动缓冲区中音频数据帧进行的保存操作和读取操作以及突发等级,计算出当前的有效突发等级。
图4即显示了本发明去抖动缓冲区的处理方法中音频数据帧的读取操作以及当前有效突发等级的计算的流程示意图。
如图4所示,在去抖动缓冲区执行完初始化操作(具体详见前述的步骤1-1至步骤1-4的内容)后,处于初始化状态。
步骤3-1,判断是否有新的音频数据帧需要保存,若是有新的音频数据帧,则进至步骤3-2;反之,若没有新的音频数据帧,则播放静音数据。
步骤3-2,从去抖动缓冲区音频数据帧列表中读取一帧音频数据,计算当前去抖动缓冲区的已使用长度BufferCountUsed;
步骤3-3,判断音频数据帧读取是否成功,若读取失败,则进至步骤3-4,将当前音频数据帧类型设置为空音频数据帧类型Empty_Frame_Type,并设置数据长度为0;若读取成功,则进至步骤3-5。
步骤3-5,读取得到一帧音频数据,确定当前音频数据帧的类型;
步骤3-6,更新突发等级Burst_Level,其中,Burst_Level+=1。
步骤3-7,判断下述各条件是否符合:Last_OP是否等于Get_OP,缓冲区操作状态是否为初始化状态Status_Initializing,读取次数GetCount是否大于等于最大读取次数Get_Count_Max。若不符合上述条件,则进至步骤3-8,设置Last_OP等于Get_OP,将突发等级Burst_Level设置为0;若符合上述条件,进至步骤3-9,将去抖动缓冲区操作状态改为运行状态Status_Processing,统计突发等级的最大值Burst_Level_Max。
步骤3-10,根据有效突发等级Eff_Level和突发等级Burst_Level重新计算得到当前的有效突发等级Eff_Level。
在步骤3-10中,当前的有效突发等级Eff_Level的计算包括:
a)、若突发等级Burst_Level大于有效突发等级Eff_Level,表示抖动突然增大,则当前的有效突发等级Eff_Level根据如下公式得到:
Eff_Level=MIN(Burst_Level_Max,Buff_CAP*4/5),即取两者中的较小值;
b)、若突发等级Burst_Level等于有效突发等级Eff_Level,表示抖动没有改变,不作计算处理;
c)、若突发等级Burst_Level小于有效突发等级Eff_Level,表示抖动突然降低,则统计当前稳定状态次数Stable_Count,若当前稳定状态次数Stable_Count小于所允许的最大稳定状态次数Stable_Count_Max时,则不作处理;若当前稳定状态次数Stable_Count大于等于所允许的最大稳定状态次数Stable_Count_Max时,根据一个参考值来计算新的有效突发等级Eff_Level。
具体地:设置最大稳定状态次数Stable_Count_Max为0;
根据公式:AVG=(Eff_Level-Burst_Level_Max)/3,计算得到一个参考值AVG,所述参考值AVG为大于等于1的常数;
根据参考值AVG,计算得到新的有效突发等级Eff_Level,计算公式为:
Eff_Level=Eff_Level-AVG。
步骤3-11,判断读取出的音频数据帧类型是否为正常音频数据帧类型Normal_Frame_Type,若是正常音频数据帧类型Normal_Frame_Type,将当前音频数据帧予以播放;若不是正常音频数据帧类型Normal_Frame_Type,则继续读取下一帧音频数据。
请再参阅图5和图6,其中图5为采用固定长度去抖动缓冲算法的输出结果,图6为采用本发明去抖动缓冲区的处理方法的输出结果。两相对照,可以发现,通过直观的对比输出文件波形,可以清楚看到本发明的方法输出的波形更加完整,丢帧数量更少,并且输出的延时相对更短。
上述实施例仅列示性说明本发明的原理及功效,而非用于限制本发明。任何熟悉此项技术的人员均可在不违背本发明的精神及范围下,对上述实施例进行修改。因此,本发明的权利保护范围,应如权利要求书所列。
Claims (6)
1.一种VoIP去抖动缓冲区的处理方法,其特征在于,包括:
初始化去抖动缓冲区;
执行音频数据帧的保存操作,将接收自远端传输过来的新的音频数据帧保存至去抖动缓冲区中;更新保存操作的突发等级;其中,所述执行音频数据帧的保存操作包括:接收来自远端传输过来的新的音频数据帧,计算当前去抖动缓冲区的已使用长度BufferCountUsed;判断去抖动缓冲区的状态是否为Status_Processing,并在判断得到去抖动缓冲区的状态是Status_Processing时,执行音频数据帧的保存;判断保存的音频数据帧是否超出设置的缓冲能力,若没有超出缓冲能力,则成功将当前音频数据帧保存到去抖动缓冲区中;若超出缓冲能力,则将去抖动缓冲区的音频数据帧列表中位于最前面的对应长度的音频数据帧予以删除,然后将当前音频数据帧保存到去抖动缓冲区中;计算存储当前的音频数据帧后去抖动缓冲区的当前有效帧数量,更新突发等级Burst_Level;
其中,所述初始化去抖动缓冲区包括:初始化包括缓冲能力Buff_Cap、最大突发等级Burst_Level_Max、读取最大次数Get_Count_Max、稳定状态次数Stable_Count_Max在内的常量参数设置;初始化去抖动缓冲区中音频数据帧列表,设置音频数据帧单位长度;清空去抖动缓冲区中音频数据帧列表,设置去抖动缓冲区的操作状态为Status_Initailizing,突发等级Burst_Level的初始化状态为0;
执行音频数据帧的读取操作,从去抖动缓冲区中将音频数据帧读取出;更新读取操作的突发等级;
根据对去抖动缓冲区中音频数据帧进行的保存操作和读取操作以及突发等级,计算出当前的有效突发等级,包括:将去抖动缓冲区的状态改为Status_Processing,统计突发等级的最大值Burst_Level_Max;根据有效突发等级Eff_Level和突发等级Burst_Level重新计算得到当前的有效突发等级Eff_Level;
其中,所述根据有效突发等级Eff_Level和突发等级Burst_Level重新计算得到当前的有效突发等级Eff_Level包括:若突发等级Burst_Level大于有效突发等级Eff_Level,表示抖动突然增大,则当前的有效突发等级Eff_Level根据如下公式得到:Eff_Level=MIN(Burst_Level_Max,Buff_CAP*4/5),即取两者中的较小值;若突发等级Burst_Level等于有效突发等级Eff_Level,表示抖动没有改变,不作计算处理;若突发等级Burst_Level小于有效突发等级Eff_Level,表示抖动突然降低,则统计当前稳定状态次数Stable_Count,若当前稳定状态次数Stable_Count小于所允许的最大稳定状态次数Stable_Count_Max时,则不作处理;若当前稳定状态次数Stable_Count大于等于所允许的最大稳定状态次数Stable_Count_Max时,根据一个参考值来计算新的有效突发等级;
根据计算得到的当前的有效突发等级,调整去抖动缓冲区的大小。
2.根据权利要求1所述的VoIP去抖动缓冲区的处理方法,其特征在于,所述执行音频数据帧的保存操作还包括:在判断得到去抖动缓冲区的状态不是Status_Processing时,通过去抖动缓冲区的已使用长度BufferCountUsed和突发等级Burst_Level来计算丢帧间隔Discard_Interval,并在当前帧间隔大于等于所述计算得到的丢帧间隔Discard_Interval时,将当前的音频数据帧丢弃。
3.根据权利要求2所述的VoIP去抖动缓冲区的处理方法,其特征在于,通过去抖动缓冲区的已使用长度BufferCountUsed和突发等级Burst_Level来计算丢帧间隔Discard_Interval包括:
Level_tmp=MAX(Burst_Level,Eff_Level),即取两者中的较大值;
Factor=BufferCountUsed/Burst_Level;当Burst_Level小于等于5且Factor小于3,则Factor设置为0;
若Factor等于0,则丢帧间隔Discard_Interval为0;
若Factor等于1,则丢帧间隔Discard_Interval为7;
若Factor等于2,则丢帧间隔Discard_Interval则为5;
否则,丢帧间隔Discard_Interval则默认为4。
4.根据权利要求1所述的VoIP去抖动缓冲区的处理方法,其特征在于,更新保存操作的突发等级包括:
计算去抖动缓冲区的当前有效帧数量,根据如下计算公式更新突发等级Burst_Level:
Burst_Level+=1;或Burst_Level+=(当前有效数量-存储前数量)。
5.根据权利要求1所述的VoIP去抖动缓冲区的处理方法,其特征在于,更新读取操作的突发等级包括:
根据如下计算公式更新突发等级Burst_Level:
Burst_Level+=1。
6.根据权利要求1所述的VoIP去抖动缓冲区的处理方法,其特征在于,根据一个参考值来计算新的有效突发等级包括:
设置最大稳定状态次数Stable_Count_Max为0;
计算得到一个参考值AVG,计算公式为:
AVG=(Eff_Level-Burst_Level_Max)/3;所述参考值AVG为大于等于1的常数;
根据参考值AVG,计算得到新的有效突发等级Eff_Level,计算公式为:
Eff_Level=Eff_Level-AVG。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110082510.4A CN102739503B (zh) | 2011-04-01 | 2011-04-01 | VoIP去抖动缓冲区的处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110082510.4A CN102739503B (zh) | 2011-04-01 | 2011-04-01 | VoIP去抖动缓冲区的处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102739503A CN102739503A (zh) | 2012-10-17 |
CN102739503B true CN102739503B (zh) | 2014-12-03 |
Family
ID=46994322
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110082510.4A Active CN102739503B (zh) | 2011-04-01 | 2011-04-01 | VoIP去抖动缓冲区的处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102739503B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103259803B (zh) * | 2013-06-04 | 2016-01-27 | 腾讯科技(深圳)有限公司 | 一种音频回放方法、装置和系统 |
US9313250B2 (en) | 2013-06-04 | 2016-04-12 | Tencent Technology (Shenzhen) Company Limited | Audio playback method, apparatus and system |
CN104113777B (zh) * | 2014-08-01 | 2018-06-05 | 广州猎豹网络科技有限公司 | 一种音频流解码方法及装置 |
CN104618106A (zh) * | 2014-12-29 | 2015-05-13 | 芜湖乐锐思信息咨询有限公司 | 一种安全可靠的互联网在线交易系统 |
DE102015104407B4 (de) * | 2015-03-24 | 2023-02-23 | Apple Inc. | Verfahren und Vorrichtungen zum Steuern der Sprachqualität |
CN105142002B (zh) * | 2015-08-07 | 2018-06-22 | 广州博冠信息科技有限公司 | 音/视频直播方法、装置及控制方法、装置 |
CN107770124A (zh) * | 2016-08-15 | 2018-03-06 | 北京信威通信技术股份有限公司 | 一种ip语音缓冲区的动态控制方法及装置 |
CN106656649B (zh) * | 2016-09-14 | 2021-01-01 | 腾讯科技(深圳)有限公司 | 一种实时通话过程中基于测速的通道切换方法、客户端与服务器 |
CN107885484B (zh) * | 2017-12-08 | 2021-07-16 | 北京酷我科技有限公司 | 一种全景音效的缓存设定方法 |
CN110351201B (zh) | 2018-04-04 | 2021-09-14 | 华为技术有限公司 | 一种数据处理方法及装置 |
CN113722245B (zh) * | 2021-08-04 | 2023-12-12 | 广州市百果园信息技术有限公司 | 一种缓冲区自适应调整方法、装置、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1350682A (zh) * | 1999-03-15 | 2002-05-22 | 声音技术通讯有限公司 | 抖动缓冲器及其用于控制它的方法 |
CN1756230A (zh) * | 2004-09-30 | 2006-04-05 | 华为技术有限公司 | 降低实时业务时延及时延抖动的方法 |
CN101926134A (zh) * | 2008-01-25 | 2010-12-22 | 艾利森电话股份有限公司 | 用于网络节点的简单适配抖动缓冲器算法 |
-
2011
- 2011-04-01 CN CN201110082510.4A patent/CN102739503B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1350682A (zh) * | 1999-03-15 | 2002-05-22 | 声音技术通讯有限公司 | 抖动缓冲器及其用于控制它的方法 |
CN1756230A (zh) * | 2004-09-30 | 2006-04-05 | 华为技术有限公司 | 降低实时业务时延及时延抖动的方法 |
CN101926134A (zh) * | 2008-01-25 | 2010-12-22 | 艾利森电话股份有限公司 | 用于网络节点的简单适配抖动缓冲器算法 |
Also Published As
Publication number | Publication date |
---|---|
CN102739503A (zh) | 2012-10-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102739503B (zh) | VoIP去抖动缓冲区的处理方法 | |
CN101834879B (zh) | 一种适应不同网络环境的智能高效视音频数据传输方法 | |
US8520519B2 (en) | External jitter buffer in a packet voice system | |
US10659380B2 (en) | Media buffering | |
JP5049298B2 (ja) | 適応型音声パケット化 | |
CN101523822B (zh) | 语音传输装置 | |
CN105142002B (zh) | 音/视频直播方法、装置及控制方法、装置 | |
EP1889427A4 (en) | PROACTIVE CONVERSION PROCEDURE FOR VOIP TRANSPORT ON IP ROUTERS | |
WO2014190642A1 (zh) | 一种媒体数据的传输方法、装置和系统 | |
CN103259945A (zh) | 在voip通话中根据网络状况实现语音编码动态切换的方法 | |
US10382155B2 (en) | Data processing | |
CN111614509B (zh) | 丢包统计方法、装置及可读存储介质 | |
CN106790576B (zh) | 一种互动桌面同步方法 | |
JP2014160911A (ja) | パケット処理装置、方法及びプログラム | |
US7830920B2 (en) | System and method for enhancing audio quality for IP based systems using an AMR payload format | |
US20160227030A1 (en) | System and method for playing buffered audio of a dropped telephone call | |
CN104702807B (zh) | 一种VoIP通信系统 | |
CN102104909B (zh) | 数据处理方法及装置 | |
CN109802949A (zh) | 一种超短延时语音传输装置、方法、电子设备及存储介质 | |
WO2023045815A1 (zh) | 传输方法、电子设备及计算机可读存储介质 | |
Chakraborty et al. | QoS Enhancement Using an Adaptive Jitter Buffer Algorithm with Variable Window Size | |
WO2024066652A1 (zh) | 数据传输方法、装置、计算机可读介质及电子设备 | |
DE VRIES et al. | Improving reliability of streaming radio |
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 |