一种自适应动态调节缓冲区容量的方法和装置制造方法及图纸

技术编号:33836362 阅读:57 留言:0更新日期:2022-06-16 11:53
本发明专利技术公开了一种自适应动态调节缓冲区容量的方法和装置,包括,建立缓冲区环境,包括创建缓冲区和缓冲区容量求解表;生成缓冲区容量求解表数据;计算缓冲区容量求解表连续子序列最小和,根据所述连续子序列最小和调整所述缓冲区容量。通过设置缓冲区最大容量来确保音频数据输出的稳定性。缓冲区容量求解表连续子序列最小和对应于一段时间内数据输出总量和数据输入总量之间的最大差值,以这个最大差值来设置数据缓冲区最大容量,可在统计学意义下保证缓冲结束后一段时间内输出数据不会被取空。将该方法用于音频缓冲时,在保证音频数据输出稳定的前提下,尽可能地保证了数据输出的即时性。即时性。即时性。

【技术实现步骤摘要】
一种自适应动态调节缓冲区容量的方法和装置


[0001]本专利技术涉及计算机及音频处理领域,具体而言,涉及了一种自适应动态调节缓冲区容量的方法和装置。

技术介绍

[0002]在声音处理过程中常常会遇到一类问题:音频数据生产模块产生的数据量和音频数据的消耗模块消耗的数据量虽然在一个比较长的时间段内是基本一致的(可称之为动态平衡),但在一个较短的时间内并不完全一样。如果不使用缓冲器对产生的音频进行缓存,那么如果产生的数据比消耗的数据少时会造成输出的音频缺失,进而导致音频失真;如果产生的数据比消耗的数据多时,又会造成数据冗余、延迟,无法及时输出最新的音频数据。
[0003]因此,尽量多地保留产生的音频数据,同时又要尽量保证数据的即时性是这类缓冲器的共同要求。

技术实现思路

[0004]为了解决现有语音缓冲区调节语音时效性和延迟性的矛盾,本专利技术提出了一种自适应动态调节缓冲区容量的方法和装置。在保证缓冲语音的稳定性的前提下,也尽量地保证了最小的延迟性。最大满足人类听觉感受的舒适性。
[0005]为了实现上述目的,本专利技术提供了一种自适应动态调节缓冲区容量的方法,包括:
[0006]建立缓冲区环境,包括创建缓冲区和缓冲区容量求解表;
[0007]生成缓冲区容量求解表数据;
[0008]计算缓冲区容量求解表连续子序列最小和,根据连续子序列最小和调整缓冲区容量。
[0009]在生成缓冲区容量求解表数据前,包括:
[0010]响应数据写入请求,执行缓冲区数据写入操作;
[0011]计算累计写入数据量,操作缓冲容量求解表;
[0012]响应数据读取请求,执行缓冲区数据读取操作;
[0013]计算累计读取数据量,操作缓冲容量求解表。
[0014]其中,缓冲区容量求解表包括缓冲区读写标识变量,用于控制操作缓冲容量求解表状态。
[0015]执行计算累计写入数据量,操作缓冲容量求解表时,写入缓冲容量求解表的数值为正数;
[0016]执行计算累计读取数据量,操作缓冲容量求解表时,写入缓冲容量求解表的数值为负数。
[0017]其中,缓冲区和缓冲区容量求解表采用先入先出队列实现。
[0018]计算缓冲区容量求解表连续子序列最小和,并调整缓冲区容量,通过计算缓冲区容量求解表的连续子序列最小和,得到最大缓冲区长度;
[0019]其中,连续子序列最小和,是通过动态规划法求解得到。
[0020]另一方面,本专利技术还提供一种自适应动态调节缓冲区容量的装置,包括:
[0021]数据组件模块,用于响应写缓冲区或读缓冲区请求;
[0022]控制器组件模块,用于调整缓冲区最大容量。
[0023]其中,控制器组件模块,包括:
[0024]建立缓冲区环境子模块,作用是建立缓冲区和缓冲区容量求解表;
[0025]获取缓冲区容量求解表连续子序列最小和子模块,作用是当读或写缓冲区时获取缓冲区容量求解表的连续子序列最小和;
[0026]根据连续子序列最小和调整缓冲区最大容量子模块,作用是根据缓冲区容量求解表的连续子序列最小和数据调整缓冲区最大容量。
[0027]其中,获取缓冲区容量求解表连续子序列最小和子模块,读缓冲数据用正数标识,写缓冲数据用负数标识。
[0028]所述根据连续子序列最小和调整缓冲区最大容量子模块,其中,连续子序列最小和计算,是通过动态规划法求解得到。
[0029]本专利技术提供的一种自适应动态调节缓冲区容量的方法,通过设置缓冲区最大容量来保证音频数据输出的稳定性,缓冲区最大容量采用一段时间内数据输出总量和数据输入总量之间的最大差值来计算,以确保这个缓冲值对于过去这段时间内的数据输入和输出之间的不平衡的上限有准确的评估。其用于音频网络传输时,既能保证音频数据传输的完整性,又能保证数据传输的时效性。
附图说明
[0030]图1是根据本专利技术实施例提供的一种自适应动态调节缓冲区容量的方法的步骤流程图;
[0031]图2是根据本专利技术实施例提供的一种自适应动态调节缓冲区容量的方法的缓冲区容量求解步骤图;
[0032]图3是根据本专利技术实施例提供的一种自适应动态调节缓冲区容量的方法的存储方法示意图;
[0033]图4是根据本专利技术实施例提供的一种自适应动态调节缓冲区容量的装置结构图;
具体实施方式
[0034]下面结合说明书附图对本专利技术的具体实现方式做详细描述。
[0035]互联网上进行音频数据传输,或客户端本地进行音频数据传递时都需要开辟音频缓冲区,用于平衡音频数据的输入和输出。如果空间开辟太大,设备资源占用太多,同时音频数据积压太多,具体表现是语音数据延迟大,时效性不能保证;空间开辟太小,缓冲数据太少,数据丢弃太多,音频数据完整性不能保证,具体表现是语音完整性缺失,语音不连贯。
[0036]本专利技术提出的一种自适应动态调节缓冲区容量的方法,通过计算缓冲区最大容量来保证音频数据缓冲的稳定性。缓冲区最大容量采用一段时间内数据输出总量和数据输入总量之间的最大差值来计算,以确保这个缓冲值对于过去这段时间内的数据输入和输出之间的不平衡的上限有准确的评估。其用于音频缓冲时,既能保证音频数据传输的完整性,又
能保证数据传输的时效性。
[0037]如图1所示,本专利技术提供的自适应动态调节缓冲区容量的方法分为两个部分内容,包括:第一部分,生成缓冲区容量求解表,并将收集的数据放置到缓冲区容量求解表;第二部分,计算缓冲区容量求解表“连续子序列最小和”,并以此调整缓冲区最大容量。
[0038]S100:建立缓冲区环境:
[0039]本实例中,在内存创建先进先出队列以实现创建缓冲区和缓冲区容量求解表,同时定义缓冲区读写标识变量,进行S120。
[0040]S120:生成缓冲区容量求解表数据。
[0041]如图1所示,包括以下步骤(S121至S124):
[0042]S121:响应数据写入请求,执行缓冲区数据写入操作:如果缓冲区尚未达到最大容量,则将数据写入缓冲区尾部,否则先将缓冲区头部的数据删除一部分,以腾出足够的空间再将本次要写入的数据写入缓冲区尾部;
[0043]S122:检查当前缓冲区的读写标识,如果是读标识,就将“累计的数据读取量”以负数的形式插入缓冲区容量求解表的尾部,并将读标识改为写标识,将“累计数据写入量”的值设置为本次写入的数据量;如果是写标识,就把本次写入的数据量累加到“累计数据写入量”中;
[0044]S123:响应数据读取请求,执行缓冲区数据读取操作:如果缓冲区中数据足够,就从缓冲区头部取出本次欲读取的数据;如果缓冲区中数据不够,就向发起读取操作的模块报告错误。
[0045]S124:检查当前缓冲区的读写标识,如果是写标识,就将“累计的数据写入量”以正数的形式插入缓冲区容量求解表的尾部,并将写标识改为读标识,将“累计数据读取量”的值设置为本次欲读取的数据量;本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种自适应动态调节缓冲区容量的方法,其特征在于,包括:建立缓冲区环境,包括创建缓冲区和缓冲区容量求解表;生成缓冲区容量求解表数据;计算缓冲区容量求解表连续子序列最小和,根据所述连续子序列最小和调整所述缓冲区容量。2.根据权利要求1所述的自适应动态调节缓冲区容量的方法,其特征在于,在所述生成缓冲区容量求解表数据前,包括:响应数据写入请求,执行缓冲区数据写入操作;计算累计写入数据量,操作缓冲容量求解表;响应数据读取请求,执行缓冲区数据读取操作;计算累计读取数据量,操作缓冲容量求解表。3.根据权利要求2所述的自适应动态调节缓冲区容量的方法,其特征在于,所述缓冲区容量求解表包括缓冲区读写标识变量,用于控制操作缓冲容量求解表状态。4.根据权利要求2所述的自适应动态调节缓冲区容量的方法,其特征在于,执行所述计算累计写入数据量,操作缓冲容量求解表时,写入所述缓冲容量求解表的数值为正数;执行所述计算累计读取数据量,操作缓冲容量求解表时,写入所述缓冲容量求解表的数值为负数。5.根据权利要求1所述的自适应动态调节缓冲区容量的方法,其特征在于,所述缓冲区和缓冲区容量求解表采用先入先出队列实现。6.根据权利要求1所述的自适应动态调节缓冲区容量的方法,其特征在于,所述计...

【专利技术属性】
技术研发人员:胡海周平王恒晏利平
申请(专利权)人:贵阳朗玛信息技术股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1