一种缓冲区自适应调整方法、装置、设备及存储介质

文档序号:1904458 发布日期:2021-11-30 浏览:10次 >En<

阅读说明:本技术 一种缓冲区自适应调整方法、装置、设备及存储介质 (Buffer self-adaptive adjusting method, device, equipment and storage medium ) 是由 谭人宽 张康 于 2021-08-04 设计创作,主要内容包括:本申请实施例公开了一种缓冲区自适应调整方法、装置、设备及存储介质。本申请实施例提供的技术方案通过缓冲区的读写周期确定缓冲区进行数据读写时的抖动是否在稳定状态,在缓冲区的抖动处于稳定状态时,根据缓冲区的存储空间大小和缓冲区在读写操作后的剩余数据大小,确定是否对缓冲区的存储空间大小进行调整,在确定对存储空间大小进行调整时,根据剩余数据大小和存储空间大小对缓冲区的存储空间大小进行调整,以对当前设备的缓冲区存储空间大小进行自适应调整,提高缓冲区的自适应调节能力。(The embodiment of the application discloses a buffer self-adaptive adjusting method, a device, equipment and a storage medium. The technical scheme provided by the embodiment of the application determines whether jitter of a buffer area during data reading and writing is in a stable state or not through a reading and writing period of the buffer area, determines whether to adjust the size of the storage space of the buffer area or not according to the size of the storage space of the buffer area and the size of the residual data of the buffer area after the reading and writing operation when the jitter of the buffer area is in the stable state, and adjusts the size of the storage space of the buffer area according to the size of the residual data and the size of the storage space when the size of the storage space is determined to be adjusted so as to perform self-adaptive adjustment on the size of the storage space of the buffer area of the current equipment and improve the self-adaptive adjustment capability of the buffer area.)

一种缓冲区自适应调整方法、装置、设备及存储介质

技术领域

本申请实施例涉及数据处理技术领域,尤其涉及一种缓冲区自适应调整方法、装置、设备及存储介质。

背景技术

随着移动终端上音频处理功能的加强,人们可以利用手机、平板等移动终端进行声音录制,实现人们更多的声音录制要求,例如移动K歌等。同时,在录制或采集声音时,通常会通过耳返技术监听声音是否正常。

在现有的耳返技术中,采集到的音频数据会存放在一个固定大小的缓冲区中,等待播放引擎获取音频数据进行耳返播放。一般情况下,声音的采集和耳返播放是按照一定周期进行的,但是随着用户的使用,由于在声音采集和耳返播放的过程中存在读写的波动,容易出现耳返播空或缓存满载的情况,导致耳返卡顿或延时,影响耳返播放的效果,同时,若通过固定一个较大的缓冲区以覆盖更多的使用场景,将会导致耳返的实时性得不到保证。

发明内容

本申请实施例提供一种缓冲区自适应调整方法、装置、设备及存储介质,以提高缓冲区的自适应调节能力。

在第一方面,本申请实施例提供了一种缓冲区自适应调整方法,包括:

根据缓冲区的数据读写周期确定缓冲区进行数据读写时的抖动是否处于稳定状态;

在缓冲区进行数据读写时的抖动处于稳定状态时,根据缓冲区的存储空间大小,以及在读写操作后的剩余数据大小,确定是否对缓冲区的存储空间大小进行调整;

在确定对缓冲区的存储空间大小进行调整时,根据剩余数据大小和存储空间大小,对缓冲区的存储空间大小进行调整。

在第二方面,本申请实施例提供了一种缓冲区自适应调整装置,包括稳定检测模块、调整判断模块和调整执行模块,其中:

稳定检测模块,用于根据缓冲区的数据读写周期确定缓冲区进行数据读写时的抖动是否处于稳定状态;

调整判断模块,用于在缓冲区进行数据读写时的抖动处于稳定状态时,根据缓冲区的存储空间大小,以及在读写操作后的剩余数据大小,确定是否对缓冲区的存储空间大小进行调整;

调整执行模块,用于在确定对缓冲区的存储空间大小进行调整时,根据剩余数据大小和存储空间大小,对缓冲区的存储空间大小进行调整。

在第三方面,本申请实施例提供了一种缓冲区自适应调整设备,包括:存储器以及一个或多个处理器;

存储器,用于存储一个或多个程序;

当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现如第一方面的缓冲区自适应调整方法。

在第四方面,本申请实施例提供了一种包含计算机可执行指令的存储介质,计算机可执行指令在由计算机处理器执行时用于执行如第一方面的缓冲区自适应调整方法。

本申请实施例通过缓冲区的读写周期确定缓冲区进行数据读写时的抖动是否在稳定状态,在缓冲区的抖动处于稳定状态时,根据缓冲区的存储空间大小和缓冲区在读写操作后的剩余数据大小,确定是否对缓冲区的存储空间大小进行调整,在确定对存储空间大小进行调整时,根据剩余数据大小和存储空间大小对缓冲区的存储空间大小进行调整,以对当前设备的缓冲区存储空间大小进行自适应调整,提高缓冲区的自适应调节能力。

附图说明

图1是本申请实施例提供的一种缓冲区自适应调整方法的流程图;

图2是本申请实施例提供的一种耳返技术的数据采集及播放的示意图;

图3是本申请实施例提供的另一种缓冲区自适应调整方法的流程图;

图4是本申请实施例提供的一种在理想状态下的数据读写周期的示意图;

图5是本申请实施例提供的一种在抖动状态下的数据读写周期的示意图;

图6是本申请实施例提供的另一种缓冲区自适应调整方法的流程图;

图7是本申请实施例提供的另一种缓冲区自适应调整方法的流程图;

图8是本申请实施例提供的一种缓冲区自适应调整方法的状态转移图;

图9是本申请实施例提供的一种缓冲区自适应调整装置的结构示意图;

图10是本申请实施例提供的一种缓冲区自适应调整设备的结构示意图。

具体实施方式

为了使本申请的目的、技术方案和优点更加清楚,下面结合附图对本申请具体实施例作进一步的详细描述。可以理解的是,此处所描述的具体实施例仅仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部内容。在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。

图1给出了本申请实施例提供的一种缓冲区自适应调整方法的流程图,本申请实施例提供的缓冲区自适应调整方法可以由缓冲区自适应调整装置来执行,该缓冲区自适应调整装置可以通过硬件和/或软件的方式实现,并集成在缓冲区自适应调整设备中。

下述以缓冲区自适应调整装置执行缓冲区自适应调整方法为例进行描述。

参考图1,该缓冲区自适应调整方法包括:

S101:根据缓冲区的数据读写周期确定缓冲区进行数据读写时的抖动是否处于稳定状态。

其中,本实施例提供的缓冲区用于对缓冲区自适应调整装置(以下简称装置)或其他音频采集设备采集的音频数据进行缓存,并等待音频播放引擎获取缓存的音频数据进行播放,以实现对声音采集的耳返播放。

图2为本申请实施例提供的一种耳返技术的数据采集及播放的示意图,例如,在移动K歌中,用户在设备(手机或平板)上接入耳机(有线耳机或蓝牙耳机),通过麦克风采集用户录制的音频数据,并将音频数据写入缓冲区中,音频播放引擎从缓冲区中获取音频数据,将音频数据和伴奏音乐进行混合,并提供给其他用户或设备进行播放,以及通过耳机进行耳返播放,用户可从耳机侧听到麦克风采集到的声音,以监听是否出现走音或走调的情况。其中音频数据可以是通过脉冲编码调制(Pulse Code Modulation,PCM)的方式进行编码,本申请不做限定。

在缓冲区进行音频数据的数据读写时,对缓冲区的数据读写周期进行统计,并根据数据读写周期确定缓冲区进行数据读写时的抖动是否处于稳定状态。在缓冲区进行数据读写时的抖动处于稳定状态时,跳转至步骤S102,进一步判断是否需要对缓冲区的存储空间大小进行调整,而在缓冲区进行数据读写时的抖动未处于稳定状态时,确定不需要对缓冲区的存储空间大小进行调整。

其中,数据读写周期包括数据写入周期和数据读取周期,即将音频数据写入缓冲区的时间周期和音频播放引擎从缓冲区获取音频数据的时间周期,缓冲区进行数据读写的抖动可理解为数据写入周期和数据读取周期之间的波动。在数据写入周期和数据读取周期之间的波动在设定的波动范围内时,认为缓冲区进行数据读写时的抖动处于稳定状态,否则认为缓冲区进行数据读写时的抖动未处于稳定状态。一般的,在数据写入周期和数据读取周期相近且稳定时,缓冲区进行数据读写时的抖动处于稳定状态。

S102:在缓冲区进行数据读写时的抖动处于稳定状态时,根据缓冲区的存储空间大小,以及在读写操作后的剩余数据大小,确定是否对缓冲区的存储空间大小进行调整。

需要进行解释的是,在缓冲区进行数据读写时的抖动未处于稳定状态时,由于此时数据写入周期和数据读取周期之间的波动不稳定,若此时判断是否需要对缓冲区的存储空间大小进行调整,此时调整得到的存储空间大小与设备是不适配的,并且会出现频繁调整缓冲区的情况,容易受到非音频播放引擎系统方面导致的波动。本方案通过数据读写周期确定数据读写时的抖动,由于该抖动是由音频播放引擎系统方面所引起的波动,其反映的是音频自身的导致的抖动,有效排除非音频播放引擎系统方面导致的波动。

示例性的,在确定缓冲区进行数据读写时的抖动处于稳定状态时,获取缓冲区在进行读写操作后的剩余数据大小,将缓冲区的存储空间大小以及在读写操作后的剩余数据大小进行比较,并根据比较结果确定是否需要对缓冲区的存储空间大小进行调整。

可以理解的是,缓冲区进行数据读写是依据设定的读写帧数长度(包括写入帧数长度和读取帧数长度,即向缓冲区写入一帧数据的长度,以及音频播放引擎从缓冲区读取一帧数据的长度)进行的,在缓冲区在进行读写操作后的剩余数据大小小于存储空间大小时,存在音频播放引擎获取到的音频数据的大小小于读写帧数长度的情况,此时音频播放引擎将会为音频数据中空余的部分进行填充,导致出现耳返播空的情况;而在缓冲区在进行读写操作后的剩余数据大小大于存储空间大小时,存在音频播放引擎获取音频数据后,缓冲区中仍有音频数据剩余,此时出现缓存满载的情况。可以理解的是,在缓冲区进行数据读写时的抖动处于稳定状态时,耳返播空和缓存满载是交替存在的,此时缓冲区的存储空间大小均无法覆盖缓冲区进行数据读写时的抖动,需要增大存储空间大小。

S103:在确定对缓冲区的存储空间大小进行调整时,根据剩余数据大小和存储空间大小,对缓冲区的存储空间大小进行调整。

示例性的,在确定对缓冲区的存储空间大小进行调整时,根据在读写操作后的剩余数据大小和当前存储空间大小确定对存储空间大小的调整幅度(例如将剩余数据大小作为调整幅度),并依据该调整幅度对缓冲区的存储空间大小进行调整,以将缓冲区的存储空间大小增大到可覆盖缓冲区进行数据读写时的抖动的程度,实现对缓冲区的自适应调整。

在一个可能的实施例中,在对缓冲区的存储空间大小进行调整后,可记录调整后的存储空间大小,在下次开启耳返功能时,将沿用先前调整后的存储空间大小。在一个可能的实施例中,在对缓冲区的存储空间大小进行调整,并关闭耳返功能后,不需要记录调整后的存储空间大小,在下次开启耳返功能时,将使用默认的存储空间大小。

上述,通过缓冲区的读写周期确定缓冲区进行数据读写时的抖动是否在稳定状态,在缓冲区的抖动处于稳定状态时,根据缓冲区的存储空间大小和缓冲区在读写操作后的剩余数据大小,确定是否对缓冲区的存储空间大小进行调整,在确定对存储空间大小进行调整时,根据剩余数据大小和存储空间大小对缓冲区的存储空间大小进行调整,以对当前设备的缓冲区存储空间大小进行自适应调整,降低耳返播放的卡顿率和延时,减少出现耳返播空或缓存满载的情况,提高缓冲区的自适应调节能力,保证耳返实时性能,优化耳返播放效果。

在上述实施例的基础上,图3给出了本申请实施例提供的另一种缓冲区自适应调整方法的流程图,该缓冲区自适应调整方法是对上述缓冲区自适应调整方法的具体化。参考图3,该缓冲区自适应调整方法包括:

S201:根据缓冲区的数据读写周期确定缓冲区进行数据读写时的平均写入周期、写入周期方差、平均读取周期和读取周期方差。

本实施例提供的缓冲区依据设定的数据读写周期进行数据读写,其中,数据读写周期包括缓冲区进行数据写入的数据写入周期和缓冲区进行数据读取(音频播放引擎从缓冲区读取数据)的数据读取周期。

在耳返播放过程中,对时间长度内缓冲区的数据读写周期进行记录,并根据该时间长度内的数据读写周期确定缓冲区进行数据读写时的平均写入周期、写入周期方差、平均读取周期和读取周期方差。具体的,根据该设定时间长度内缓冲区进行数据写入的数据写入周期,计算缓冲区进行数据写入时的平均写入周期和写入周期方差,根据该设定时间长度内缓冲区进行数据读取(音频播放引擎从缓冲区读取数据)的数据读取周期,计算缓冲区进行数据读取时的平均读取周期和读取周期方差。

S202:根据平均写入周期、写入周期方差、平均读取周期和读取周期方差,确定缓冲区进行数据读写时的抖动是否处于稳定状态。

根据上述确定的平均写入周期、写入周期方差、平均读取周期和读取周期方差,确定缓冲区进行数据读写时的抖动是否处于稳定状态,若处于稳定状态,则跳转至步骤S203,以确定是否需要对缓冲区的存储空间大小进行调整,否则不调整缓冲区的存储空间大小。

具体的,本实施例在根据平均写入周期、写入周期方差、平均读取周期和读取周期方差,确定缓冲区进行数据读写时的抖动是否处于稳定状态时,包括步骤S2021-S2023:

S2021:根据平均写入周期和平均读取周期,确定缓冲区的读写抖动值。

具体的,将平均写入周期和平均读取周期进行比较,并将比较结果作为缓冲区的读写抖动值。例如将平均写入周期和平均读取周期之间的差的绝对值作为缓冲区的读写抖动值。

可以理解的是,读写抖动值反映了数据采集和耳返播放之间的时延。在一个可能的实施例中,在读写抖动值不断增大时,发出性能异常提示,以提示音频采集端或音频播放端出现性能问题导致数据处理不及时。

S2022:根据写入周期方差和读取周期方差,确定缓冲区的方差波动趋势。

具体的,根据写入周期方差和读取周期方差,确定缓冲区的方差波动趋势,该方差波动趋势反映了写入周期方差和读取周期方差的变化趋势。本实施例提供的方差波动趋势包括根据写入周期方差确定的写入方差波动趋势,和根据读取周期方差确定的读取方差波动趋势。

在写入方差波动趋势和读取方差波动趋势均为非递增趋势(即写入周期方差和读取周期方差不会一直增大)时,缓冲区的方差波动趋势为非递增趋势,否则认为缓冲区的方差波动趋势为递增趋势(此时写入方差波动趋势和读取方差波动趋势中的至少一个为递增趋势,此时缓冲区的数据读写处在不平衡或者是无规律的状态,不适用于对缓冲区进行调整)。

S2023:在读写抖动值小于设定抖动阈值,并且缓冲区的方差波动趋势为非递增趋势时,确定缓冲区的读写周期抖动处于稳定状态。

具体的,在读写抖动值小于设定抖动阈值,并且缓冲区的方差波动趋势为非递增趋势时,此时可认为缓冲区的数据读写是平衡的,数据写入周期和数据读取周期之间的波动处于稳定的状态,则确定缓冲区的读写周期抖动处于稳定状态。其中,设定抖动阈值可根据实际进行设置。例如,将设定抖动阈值设置为0,在读写抖动值为0或约等于0时,可认为读写抖动值小于设定抖动阈值,此时平均写入周期和平均读取周期相近。

图4是本申请实施例提供的一种在理想状态下的数据读写周期的示意图,图5是本申请实施例提供的一种在抖动状态下的数据读写周期的示意图。如图4和图5所示,在理想状态下,音频的采集和播放都是以相同的周期来进行的,此时数据写入周期和数据读取周期相同,此时缓冲区进行数据读写未发生抖动的情况,从图4中的回调时间线可知,音频数据的数据采集和耳返播放都是依据周期T在缓冲区中回调读写音频数据的,那么在一段时间中,平均的数据读写周期为T。而在实际的应用场景中,从图5中的回调时间线可知,数据读写的回调周期是不固定的,例如前后两次的数据读写周期分别为T1和T2,其中T1小于T2,并且T1+T2=2T,虽然在一段时间中平均的数据读写周期也是T,但此时缓冲区是以不同的时间间隔来读写数据的,原先固定大小的缓冲区会存在无法覆盖缓冲区进行数据读写时的抖动的情况,并且对于不同的机型,读写的抖动是不同的,这就需要引入对抖动缓冲,根据抖动缓冲自适应调整缓冲区的存储空间大小,提高对移动耳返的通用性。

S203:在缓冲区进行数据读写时的抖动处于稳定状态时,根据缓冲区的存储空间大小,以及在读写操作后的剩余数据大小,确定是否对缓冲区的存储空间大小进行调整。

S204:在确定对缓冲区的存储空间大小进行调整时,根据剩余数据大小和存储空间大小,对缓冲区的存储空间大小进行调整。

上述,通过缓冲区的读写周期确定缓冲区进行数据读写时的抖动是否在稳定状态,在缓冲区的抖动处于稳定状态时,根据缓冲区的存储空间大小和缓冲区在读写操作后的剩余数据大小,确定是否对缓冲区的存储空间大小进行调整,在确定对存储空间大小进行调整时,根据剩余数据大小和存储空间大小对缓冲区的存储空间大小进行调整,以对当前设备的缓冲区存储空间大小进行自适应调整,降低耳返播放的卡顿率和延时,减少出现耳返播空或缓存满载的情况,提高缓冲区的自适应调节能力,保证耳返实时性能,优化耳返播放效果。并通过缓冲区进行数据读写时的平均写入周期、写入周期方差、平均读取周期和读取周期方差,确定缓冲区进行数据读写时的抖动是否处于稳定状态,从缓冲区进行数据读写(音频播放引擎从缓冲区读取数据)的维度,计算数据采集和耳返播放的抖动,判断数据写入周期和数据读取周期之间的波动是处于稳定状态还是无规律的状态,有效排除非音频播放引擎系统对缓冲区引起的波动。并且在准确判断缓冲区的读写周期抖动处于稳定状态时,才对缓冲区的存储空间大小进行调整,以防止出现频繁调整缓冲区的存储空间大小的情况,保证音频播放引擎系统的正常工作。

在上述实施例的基础上,图6给出了本申请实施例提供的另一种缓冲区自适应调整方法的流程图,该缓冲区自适应调整方法是对上述缓冲区自适应调整方法的具体化。参考图6,该缓冲区自适应调整方法包括:

S301:根据缓冲区的数据读写周期确定缓冲区进行数据读写时的抖动是否处于稳定状态。

S302:依据设定检测周期,获取缓冲区在每次读写操作后的剩余数据大小,设定检测周期大于数据读写周期。

具体的,依据设定检测周期,获取并记录缓冲区在每次读写操作后的剩余数据大小,并且设定检测周期大于数据读写周期。其中读写操作包括数据写入操作和数据写入操作,对应的,本实施例提供的剩余数据包括数据写入操作后的剩余数据大小和数据写入操作后的剩余数据大小。基于此,本实施例中获取缓冲区在每次读写操作后的剩余数据大小,具体包括步骤S3021-S3022:

S3021:将缓冲区在每次数据写入操作后的缓存剩余数据长度和设定的读写帧数长度的和,作为数据写入操作后的剩余数据大小。

具体的,在缓冲区在每次进行数据写入操作后,确定缓冲区内的缓存剩余数据长度(数据写入操作后缓冲区实际的剩余数据的长度),并计算缓存剩余数据长度和设定的读写帧数长度的和,将求和结果作为数据写入操作后的剩余数据大小。

S3022:将缓冲区在每次数据读取操作后的缓存剩余数据长度与设定的读写帧数长度的差,作为数据写入操作后的剩余数据大小。

具体的,在缓冲区在每次进行数据读取操作后,确定缓冲区内的缓存剩余数据长度(数据读取操作后缓冲区实际的剩余数据的长度),并计算缓存剩余数据长度和设定的读写帧数长度的差,将求差结果作为数据读取操作后的剩余数据大小。

例如,假设数据读写周期为20ms,设定检测周期为2s,即缓冲区每20毫秒进行一次数据读写操作,那么在设定检测周期内共进行100次数据写入操作和100次数据读取操作,对应的,分别记录有100的数据写入操作后的剩余数据大小和100次的数据写入操作后的剩余数据大小,即在设定检测周期内将记录有200次缓冲区在数据读写操作后的剩余数据大小。

S303:确定剩余数据大小中的最大剩余数据大小和最小剩余数据大小。

具体的,对于每个设定检测周期,确定所有剩余数据大小的中最大值和最小值,将最小的剩余数据大小确定为最小剩余数据大小,并将最大的剩余数据大小确定为最大剩余数据大小。

S304:在缓冲区进行数据读写时的抖动处于稳定状态时,根据缓冲区的存储空间大小、最大剩余数据大小和最小剩余数据大小,确定是否满足耳返播空模式或缓存满载模式。

在缓冲区进行数据读写时的抖动处于稳定状态时,根据缓冲区的存储空间大小、最大剩余数据大小和最小剩余数据大小,确定是否满足耳返播空模式或缓存满载模式。其中,耳返播空模式可理解为音频播放引擎从缓冲区获取音频数据时,缓冲区提供的数据大小小于进行耳返播放时的单帧数据长度时,音频播放音频自动对音频数据进行填充播放的模式。缓存满载模式可理解为数据采集的音频数据大小大于存储空间大小的模式。可以理解的是,在满足耳返播空模式和缓存满载模式时,缓冲区的存储空间大小无法覆盖数据读写时的抖动。

具体的,本实施例中根据缓冲区的存储空间大小、最大剩余数据大小和最小剩余数据大小,确定是否满足耳返播空模式或缓存满载模式,具体包括步骤S3041-S3042:

S3041:在最小剩余数据大小小于设定播空判断阈值时,确定满足耳返播空模式。

具体的,将最小剩余数据大小和设定播空判断阈值进行比较,在最小剩余数据大小小于设定播空判断阈值时,确定满足耳返播空模式。本实施例将设定播空判断阈值设定为0,即最小剩余数据大小小于0时,确定满足耳返播空模式。而在剩余数据大小大于等于设定播空判断阈值(即最小剩余数据大小大于等于0)时,确定不满足耳返播空模式,即在设定检测周期内未出现耳返播空的情况。

S3042:在最大剩余数据大小大于缓冲区的存储空间大小时,确定满足缓存满载模式。

具体的,将最大剩余数据大小和当前缓冲区的存储空间大小进行比较,在最大剩余数据大小大于缓冲区的存储空间大小时,确定满足缓存满载模式,而在最大剩余数据大小小于等于缓冲区的存储空间大小时,确定不满足缓存满载模式,即在设定检测周期内未出现缓存满载的情况。

S305:在满足耳返播空模式或缓存满载模式时,对缓冲区的存储空间大小进行调整,否则保持缓冲区的存储空间大小不变。

在确定满足耳返播空模式或缓存满载模式时,可确定此时缓冲区的存储空间大小无法覆盖数据读写时的抖动,则确定需要对缓冲区的存储空间大小进行调整。而在不满足耳返播空模式以及缓存满载模式时,可确定此时缓冲区已覆盖数据读写时的抖动,则保持缓冲区的存储空间大小不变。

S306:在确定对缓冲区的存储空间大小进行调整时,根据剩余数据大小和存储空间大小,对缓冲区的存储空间大小进行调整。

上述,通过缓冲区的读写周期确定缓冲区进行数据读写时的抖动是否在稳定状态,在缓冲区的抖动处于稳定状态时,根据缓冲区的存储空间大小和缓冲区在读写操作后的剩余数据大小,确定是否对缓冲区的存储空间大小进行调整,在确定对存储空间大小进行调整时,根据剩余数据大小和存储空间大小对缓冲区的存储空间大小进行调整,以对当前设备的缓冲区存储空间大小进行自适应调整,降低耳返播放的卡顿率和延时,减少出现耳返播空或缓存满载的情况,提高缓冲区的自适应调节能力,保证耳返实时性能,优化耳返播放效果。并依据设定检测周期内缓冲区在每次读写操作后的剩余数据大小,确定出最大剩余数据大小和最小剩余数据大小,根据最大剩余数据大小和最小剩余数据大小判断是否满足耳返播空模式或缓存满载模式,准确判断当前缓冲区存储空间大小时都能覆盖数据读写时的抖动,更精确的进行缓冲区存储空间大小的调整。

在上述实施例的基础上,图7给出了本申请实施例提供的另一种缓冲区自适应调整方法的流程图,该缓冲区自适应调整方法是对上述缓冲区自适应调整方法的具体化。参考图7,该缓冲区自适应调整方法包括:

S401:根据缓冲区的数据读写周期确定缓冲区进行数据读写时的抖动是否处于稳定状态。

S402:依据设定检测周期,获取缓冲区在每次读写操作后的剩余数据大小,设定检测周期大于数据读写周期。

S403:确定剩余数据大小中的最大剩余数据大小和最小剩余数据大小。

S404:在缓冲区进行数据读写时的抖动处于稳定状态时,根据缓冲区的存储空间大小、最大剩余数据大小和最小剩余数据大小,确定是否满足耳返播空模式或缓存满载模式。

S405:在满足耳返播空模式或缓存满载模式时,对缓冲区的存储空间大小进行调整,否则保持缓冲区的存储空间大小不变。

S406:在确定对缓冲区的存储空间大小进行调整时,根据剩余数据大小和存储空间大小,对缓冲区的存储空间大小进行调整。

S407:在剩余数据大小大于设定的合帧长度阈值时,对缓冲区中的音频数据进行合帧处理。

具体的,在确定缓冲区进行数据读写时的抖动处于稳定状态时,若缓冲区的剩余数据大小大于设定的合帧长度阈值,此时在设定检测周期内有较多的音频数据滞留,需要加快对音频数据的播放速度,传统的加速方式是直接进行丢帧处理,但是这种方式容易造成音频播放时的卡顿感。本实施例在剩余数据大小大于设定的合帧长度阈值时,对缓冲区中的音频数据进行合帧处理,例如将缓冲区中的两帧或多帧音频数据叠加合成为一帧音频数据,音频播放引擎获取的将是合帧后的音频数据,实现对音频数据的变速播放,以在保证声音的完整的情况下,实现低时延的耳返播放效果。

其中,合帧长度阈值可根据实际情况进行设定,本实施例将合帧长度阈值设定为一帧的读写帧数长度,基于此,本实施例在剩余数据大小大于设定的合帧长度阈值时,对缓冲区中的音频数据进行合帧处理,包括:在最小剩余数据大小大于一帧的读写帧数长度时,对缓冲区中的音频数据进行合帧处理。

具体的,将最小剩余数据大小与读写帧数长度进行比较,在最小剩余数据大小大于(或远大于)读写帧数长度时,对缓冲区中的音频数据进行合帧处理。其中,对缓冲区中的音频数据进行合帧处理可以是基于汉明窗口进行,还可以是基于时域压扩(变速不变调)算法进行,本申请不做限定。

上述,通过缓冲区的读写周期确定缓冲区进行数据读写时的抖动是否在稳定状态,在缓冲区的抖动处于稳定状态时,根据缓冲区的存储空间大小和缓冲区在读写操作后的剩余数据大小,确定是否对缓冲区的存储空间大小进行调整,在确定对存储空间大小进行调整时,根据剩余数据大小和存储空间大小对缓冲区的存储空间大小进行调整,以对当前设备的缓冲区存储空间大小进行自适应调整,降低耳返播放的卡顿率和延时,减少出现耳返播空或缓存满载的情况,提高缓冲区的自适应调节能力,保证耳返实时性能,优化耳返播放效果。同时,在剩余数据大小大于设定的合帧长度阈值时,对缓冲区中的音频数据进行合帧处理,减少缓冲区内的音频数据的滞留,在保证声音的完整的情况下,实现低时延的耳返播放效果。

图8给出了本申请实施例提供的一种缓冲区自适应调整方法的状态转移图,如图8,结合上述实施例提供的缓冲区自适应调整方法,在缓冲区进行数据读写时的抖动未处于稳定状态(图8中状态A)时,对缓冲区的处理方式是保持现状,即保持缓冲区的存储空间大小不变。

在缓冲区进行数据读写时的抖动处于稳定状态时,若满足耳返播空模式或缓存满载模式(图8中状态B)时,对缓冲区的处理方式是调整缓冲区,即根据剩余数据大小和存储空间大小,对缓冲区的存储空间大小进行调整。而在不满足耳返播空模式以及缓存满载模式(图8中状态C)时,对缓冲区的处理方式是保持现状。

在剩余数据大小大于设定的合帧长度阈值(图中状态D)时,对缓冲区的处理方式是合帧加速,即对缓冲区中的音频数据进行合帧处理。而在剩余数据大小不大于设定的合帧长度阈值(图中状态E)时,对缓冲区的处理方式是保持现状。

上述,在缓冲区进行数据读写时的抖动未处于稳定状态、抖动处于稳定状态但不满足耳返播空模式以及缓存满载模式或者是抖动处于稳定状态但剩余数据大小不大于设定的合帧长度阈值时,保持缓冲区的存储空间大小不变,在抖动处于稳定状态并且满足耳返播空模式或缓存满载模式时,增大缓冲区的存储空间大小,在抖动处于稳定状态并且剩余数据大小大于设定的合帧长度阈值时,对缓冲区中的音频数据进行合帧处理,对当前设备的缓冲区存储空间大小进行自适应调整,降低耳返播放的卡顿率和延时,并减少缓冲区内的音频数据的滞留,在保证声音的完整的情况下,实现低时延的耳返播放效果。

图9是本申请实施例提供的一种缓冲区自适应调整装置的结构示意图。参考图9,该缓冲区自适应调整装置包括稳定检测模块31、调整判断模块32和调整执行模块33。

其中,稳定检测模块31,用于根据缓冲区的数据读写周期确定缓冲区进行数据读写时的抖动是否处于稳定状态;调整判断模块32,用于在缓冲区进行数据读写时的抖动处于稳定状态时,根据缓冲区的存储空间大小,以及在读写操作后的剩余数据大小,确定是否对缓冲区的存储空间大小进行调整;调整执行模块33,用于在确定对缓冲区的存储空间大小进行调整时,根据剩余数据大小和存储空间大小,对缓冲区的存储空间大小进行调整。

上述,通过缓冲区的读写周期确定缓冲区进行数据读写时的抖动是否在稳定状态,在缓冲区的抖动处于稳定状态时,根据缓冲区的存储空间大小和缓冲区在读写操作后的剩余数据大小,确定是否对缓冲区的存储空间大小进行调整,在确定对存储空间大小进行调整时,根据剩余数据大小和存储空间大小对缓冲区的存储空间大小进行调整,以对当前设备的缓冲区存储空间大小进行自适应调整,降低耳返播放的卡顿率和延时,减少出现耳返播空或缓存满载的情况,提高缓冲区的自适应调节能力,保证耳返实时性能,优化耳返播放效果。

本申请实施例还提供了一种缓冲区自适应调整设备,该缓冲区自适应调整设备可集成本申请实施例提供的缓冲区自适应调整装置。图10是本申请实施例提供的一种缓冲区自适应调整设备的结构示意图。参考图10,该缓冲区自适应调整设备包括:输入装置43、输出装置44、存储器42以及一个或多个处理器41;存储器42,用于存储一个或多个程序;当一个或多个程序被一个或多个处理器41执行,使得一个或多个处理器41实现如上述实施例提供的缓冲区自适应调整方法。上述提供的缓冲区自适应调整装置、设备和计算机可用于执行上述任意实施例提供的缓冲区自适应调整方法,具备相应的功能和有益效果。

本申请实施例还提供一种包含计算机可执行指令的存储介质,计算机可执行指令在由计算机处理器执行时用于执行如上述实施例提供的缓冲区自适应调整方法。当然,本申请实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上的缓冲区自适应调整方法,还可以执行本申请任意实施例所提供的缓冲区自适应调整方法中的相关操作。上述实施例中提供的缓冲区自适应调整装置、设备及存储介质可执行本申请任意实施例所提供的缓冲区自适应调整方法,未在上述实施例中详尽描述的技术细节,可参见本申请任意实施例所提供的缓冲区自适应调整方法。

上述仅为本申请的较佳实施例及所运用的技术原理。本申请不限于这里的特定实施例,对本领域技术人员来说能够进行的各种明显变化、重新调整及替代均不会脱离本申请的保护范围。因此,虽然通过以上实施例对本申请进行了较为详细的说明,但是本申请不仅仅限于以上实施例,在不脱离本申请构思的情况下,还可以包括更多其他等效实施例,而本申请的范围由权利要求的范围决定。

19页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:处理器中物理内存保护机制的实现方法及装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类