一种数据处理方法、输出设备和计算机存储介质与流程

文档序号:18525249发布日期:2019-08-24 10:10阅读:179来源:国知局
一种数据处理方法、输出设备和计算机存储介质与流程

本发明涉及数据处理技术,具体涉及一种数据处理方法、输出设备和计算机存储介质。



背景技术:

音频多房间(multroom)系统控制多个设备同步播放同一音频文件。由于多个设备中、设备与设备之间内部硬件的差异,或输出时间基准之间的偏差,会导致主设备和从设备之间、以及从设备与从设备之间音频数据输出频率的偏差,从而会导致在多个设备播放同一音频文件时,出现播放不同步、播放音质效果不佳等问题。



技术实现要素:

为解决现有存在的技术问题,本发明实施例提供了一种数据处理方法、输出设备和计算机存储介质。

为达到上述目的,本发明实施例的技术方案是这样实现的:

本发明实施例提供了一种数据处理方法,应用于输出设备中;所述输出设备包括音频输出缓存区;所述方法包括:

分别获得所述音频输出缓存区输出至少三次数据块的时间参数信息,以及所述音频输出缓存区中每次输出数据块后表征数据存储容量的数据长度信息;

所述音频输出缓存区每次输出数据块后获得待写入所述音频输出缓存区的数据块的标准时间值;

根据获得的至少三个时间参数信息、数据长度信息和标准时间值确定偏移参数或重采样参数;

基于所述偏移参数或重采样参数对待写入所述音频输出缓存区的数据块进行处理,将处理后的所述数据块写入所述音频输出缓冲区。

在一实施例中,所述根据获得的至少三个时间参数信息、数据长度信息和标准时间值确定偏移参数或重采样参数,包括:

根据所述时间参数信息、数据长度信息和标准时间值确定偏移时间参数;

基于确定的至少三个偏移时间参数确定偏移参数或重采样参数。

在一实施例中,所述分别获得所述音频输出缓存区输出至少三次数据块的时间参数信息,以及所述音频输出缓存区中每次输出数据块后表征数据存储容量的数据长度信息,包括:

分别获得所述音频输出缓存区输出三次数据块的第一时间参数信息、第二时间参数信息和第三时间参数信息,以及所述音频输出缓存区中每次输出数据块后表征数据存储容量的第一数据长度信息、第二数据长度信息和第三数据长度信息;

相应的,所述音频输出缓存区每次输出数据块后获得待写入所述音频输出缓存区的数据块的标准时间值,包括:

所述音频输出缓存区每次输出数据块后获得待写入所述音频输出缓存区的数据块的第一标准时间值、第二标准时间值和第三标准时间值。

在一实施例中,所述根据获得的至少三个时间参数信息、数据长度信息和标准时间值确定偏移参数或重采样参数,包括:

根据所述第一标准时间值、所述第一时间参数信息、所述第一数据长度信息确定第一偏移时间值;

根据所述第二标准时间值、所述第二时间参数信息、所述第二数据长度信息确定第二偏移时间值;

根据所述第三标准时间值、所述第三时间参数信息、所述第三数据长度信息确定第三偏移时间值;

根据所述第一偏移时间值、所述第二偏移时间值和所述第三偏移时间值确定偏移参数或重采样参数。

在一实施例中,所述基于所述偏移参数或重采样参数对待写入所述音频输出缓存区的数据块进行处理,包括:

基于所述偏移参数对待写入所述音频输出缓存区的数据块进行增加数据或删除数据处理;或者,

基于所述重采样参数对待写入所述音频输出缓存区的数据块进行重采样处理。

本发明实施例还提供了一种输出设备,所述输出设备包括:输出缓存模块和数据处理模块;其中,

所述输出缓存模块,用于写入/输出数据;

所述数据处理模块,用于分别获得所述输出缓存模块输出至少三次数据块的时间参数信息,以及所述输出缓存模块中每次输出数据块后表征数据存储容量的数据长度信息;所述输出缓存模块每次输出数据块后获得待写入所述输出缓存模块的数据块的标准时间值;根据获得的至少三个时间参数信息、数据长度信息和标准时间值确定偏移参数或重采样参数;基于所述偏移参数或重采样参数对待写入所述输出缓存模块的数据块进行处理,将处理后的所述数据块写入所述音频输出缓冲区。

在一实施例中,所述数据处理模块,用于根据所述时间参数信息、数据长度信息和标准时间值确定偏移时间参数;基于确定的至少三个偏移时间参数确定偏移参数或重采样参数。。

在一实施例中,所述数据处理模块,用于分别获得所述输出缓存模块输出三次数据块的第一时间参数信息、第二时间参数信息和第三时间参数信息,以及所述输出缓存模块中每次输出数据块后表征数据存储容量的第一数据长度信息、第二数据长度信息和第三数据长度信息;所述输出缓存模块每次输出数据块后获得待写入所述输出缓存模块的数据块的第一标准时间值、第二标准时间值和第三标准时间值。

在一实施例中,所述数据处理模块,用于根据所述第一标准时间值、所述第一时间参数信息、所述第一数据长度信息确定第一偏移时间值;根据所述第二标准时间值、所述第二时间参数信息、所述第二数据长度信息确定第二偏移时间值;根据所述第三标准时间值、所述第三时间参数信息、所述第三数据长度信息确定第三偏移时间值;根据所述第一偏移时间值、所述第二偏移时间值和所述第三偏移时间值确定偏移参数或重采样参数。

在一实施例中,所述数据处理模块,用于基于所述偏移参数对待写入所述输出缓存模块的数据块进行增加数据或删除数据处理;或者,基于所述重采样参数对待写入所述输出缓存模块的数据块进行重采样处理。

本发明实施例还提供了一种输出设备,包括:处理器和用于存储能够在处理器上运行的计算机程序的存储器,其中,所述处理器用于运行所述计算机程序时,执行本发明实施例所述方法的步骤。

本发明实施例还提供了一种计算机存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现本发明实施例所述方法的步骤。

本发明实施例提供的数据处理方法、输出设备和计算机存储介质,所述方法应用于输出设备中;所述输出设备包括音频输出缓存区;所述数据处理方法包括:分别获得所述音频输出缓存区输出至少三次数据块的时间参数信息,以及所述音频输出缓存区中每次输出数据块后表征数据存储容量的数据长度信息;所述音频输出缓存区每次输出数据块后获得待写入所述音频输出缓存区的数据块的标准时间值;根据获得的至少三个时间参数信息、数据长度信息和标准时间值确定偏移参数或重采样参数;基于所述偏移参数或重采样参数对待写入所述音频输出缓存区的数据块进行处理,将处理后的所述数据块写入所述音频输出缓冲区。采用本发明实施例的技术方案,通过对写入音频输出缓存区的数据块按照确定的第一偏移参数或第一重采样参数进行调整,消除了多房间系统控制下设备与设备之间由于硬件的差异、或者输出时间基准之间的偏差导致的数据输出的偏差,大大提升了设备间数据输出的同步性和一致性,同时也避免了由于数据输出的不同步导致的播放效果不佳的问题,提升了用户的体验。

附图说明

图1为multroom系统中主设备和从设备的音频数据处理及输出的过程示意图;

图2为本发明实施例的一种数据处理方法的流程示意图;

图3为本发明实施例的另一种数据处理方法的流程示意图;

图4为本发明实施例的输出设备的组成结构示意图;

图5为本发明实施例的输出设备的硬件组成结构示意图。

具体实施方式

在对本发明实施例的数据处理方案进行详细说明之前,首先对主设备和从设备之间、以及从设备与从设备之间音频数据输出频率的偏差的成因进行说明。图1为主设备和从设备的音频数据处理及输出的过程示意图;如图1所示,以multroom系统中包括主设备和从设备、以及主设备和从设备均输出音频数据为例,主设备在待播放音频数据时,需先获得数据源(该数据源可以是主设备中存储的音频数据,也可以是主设备从其他设备获得的音频数据);所获得的数据源可包括数据源1和数据源2(本实施例中以两路数据源为例进行说明,当然,在其他实施方式中可不限于两路数据源),在一种实施方式中,数据源1和数据源2可以理解为处于不同应用的音频数据。以数据源1为例,主设备将数据源1写入对应的音频缓冲区(即数据源1音频缓冲区);主设备的内部处理组件(例如混音器等)将获得的音频数据进行一系列的处理(例如混音处理等),将待输出的音频数据写入音频输出缓冲区;主设备的信号转换器从音频输出缓冲区中获得音频数据并输出,从而实现音频的播放。对应从设备,在进行音频数据输出之前,首先需从主设备同步待输出的数据源;所述从设备获得的数据源可以是与主设备中的数据源相同,也可以是主设备的数据源中的部分数据源,例如仅仅是所述数据源中的数据源1或者数据源2,相当于从设备仅播放数据源中某一应用的音频数据。从设备中对数据源进行处理以及输出音频数据的实现方式与主设备中相同,这里不再赘述。

需要进一步说明的是,一般的音频输出系统中,上述对音频数据的操作都是按照数据块来操作的,即,主设备将数据源1对应的数据块写入数据源1音频缓冲区中;主设备内部处理器件从数据源1音频缓冲区获得待处理的音频数据块并经过相应处理后写入到音频输出缓冲区中;主设备的信号转换器从音频输出缓冲区中获得音频数据块并输出。这里各个阶段的音频数据块大小不尽相同,是按照音频输出系统实际情况来确定的。同样,一般的音频输出系统中,为了保证音频的连续性,数据源1音频缓冲区和音频输出缓冲区都是包含有多个音频数据块的。进一步的,对音频缓冲区中数据块的写入操作是阻塞的,具体的,主设备将数据源1对应的数据块写入数据源1音频缓冲区中时的写入操作、主设备内部处理组件从数据源1音频缓冲区获得待处理的音频数据块并经过相应处理后写入到音频输出缓冲区中的写入操作是阻塞操作,保证数据缓冲区(包括数据源1音频缓冲区、音频输出缓冲区)的读操作时始终有音频数据可读,也就间接保证了音频数据流的连续性。同样,主设备对数据源1数据块处理的数据块大小、主设备内部处理组件写入到音频输出缓冲区中的数据块大小以及主设备的信号转换器从音频输出缓冲区中获得的数据块大小也不尽相同。

在多房间系统中,为了使主设备和从设备的音频输出同步,通常情况下主设备和从设备会按照同一基准时钟进行音频播放,具体的方法包括:在音频数据源音频数据块中包含有标准时钟相关的时间戳信息,在多房间系统各个设备进行实际音频数据输出时,对比音频数据块包含的时间戳和当前音频播放设备播放参考时钟的时间值以实现多个音频播放设备之间的同步播放。基于同步时钟的同步播放,关键在于各个音频播放设备之间播放参考时钟的同步。一般的,主设备和从设备同步自身音频输出的基准时钟到标准参考时钟。更一般的,主设备会将自身的基准时钟同步至从设备。同步基准时钟的同步播放中,音频数据时间戳可以是音源提供数据时携带,或者主从设备按照标准时钟和音频数据块在音频数据流中的位置计算获得。

多房间系统中,基于时间同步的同步播放主从设备之间存在以下几方面的频率偏差:

第一方面,基准时钟的同步通常是由软件或软硬件配合完成的。以主(从)设备将自身的基准时钟和标准参考时钟同步的一般处理方法来说明:主(从)设备通过主(从)设备和标准时钟受时服务器之间的物理通道,通过信令的方式,周期性的从标准时钟受时服务器获得当前标准时钟的时刻值,主(从)设备依据收到信令报文的时间及其信令包所包含的时刻值以达到和标准时钟同步的目的;而因为周期获得的信令包在传输过程中每次延时的不确定性,势必会使主(从)基准时钟无法和标准时钟达到理论上的完全一致。若主设备相对于标准时钟的时钟频率偏差记为△fclk-m,则从设备相对于标准时钟的时钟频率偏差记为△fclk-c;并且△fclk-c与△fclk-m势必存在一定的时钟频率偏差△fclk。

第二方面,可基于图1中所示,在音频数据输出时,通常在输出侧设置有一些物理器件,该物理器件可以是信号转换器,所述信号转换器例如数字模拟转换器(dac,digitaltoanalogconverter)等等。由于该物理器件中设置有晶振,又由于晶振的固有属性(和标称频率之间存在误差),势必会在主设备中,物理器件的晶振相对于标准时钟存在时钟频率偏差,该时钟频率偏差记为△fh-m;相应的在从设备中,物理器件的晶振相对于标准时钟存在的时钟频率偏差记为△fh-c。并且主设备中的△fh-m和从设备中的△fh-c不完全一致。而在音频数据输出时,如果实际的音频数据消耗是受外围物理器件驱动时,势必会导致主设备和从设备之间的数据消耗频率存在偏差△fh。

综上所述,在所述多房间系统数据处理过程中,是基于同步后的参考时钟频率进行的数据处理;而在数据实际输出阶段,是基于硬件对应的实际时钟频率进行的数据输出;因此,这势必会导致主设备和从设备之间、以及从设备与从设备之间在播放同一音频文件时,出现播放不同步、播放音质效果不佳等问题。需要说明的是,在前面提到的各种频率偏差在实际音频系统中未必是同时存在的。举例说明,当播放时基使用从设备从主设备同步时基时,主设备自身的系统时钟就作为了播放的标准参考时钟,此时主设备和标准时钟是不存在时钟频率偏差△fclk-m的,但是从设备和标准时钟(主设备时钟)偏差△fclk-c是存在的;也就是说主设备和从设备之间的时钟偏差△fclk是存在的。当设备实际的音频数据消耗不是受外围物理器件驱动时,而是受设备自身时钟驱动的,则硬件消耗数据实际时钟和标准时钟的偏差,也就是设备自身播放时基和标准时钟之间的偏差,对于主设备△fh-m和△fclk-m相同,从设备△fh-c和△fclk-c相同;此时主设备和从设备之间的数据消耗频率存在偏差△fh也就是主从设备之间△fclk的偏差。

需要进一步说明的是,前述频率偏差不是恒定不变的,理论上上述偏差在时间轴上是抖动的。

本发明实施例所述的数据处理方法假设上述偏差均存在的情况下,基于上述所列举的偏差进行数据处理,以实现消除上述列举的时钟偏差的目的。

下面结合附图及具体实施例对本发明作进一步详细的说明。

实施例一

本发明实施例提供了一种数据处理方法,应用于输出设备中,所述输出设备具体为音频输出设备,音频输出设备可以是音箱;输出设备包括音频输出缓存区,所述音频输出缓存区用于输出数据块以实现输出设备的音频数据的播放。图2为本发明实施例的数据处理方法的流程示意图;如图2所示,所述方法包括:

步骤101:分别获得所述音频输出缓存区输出至少三次数据块的时间参数信息,以及所述音频输出缓存区中每次输出数据块后表征数据存储容量的数据长度信息。

步骤102:所述音频输出缓存区每次输出数据块后获得待写入所述音频输出缓存区的数据块的标准时间值。

步骤103:根据获得的至少三个时间参数信息、数据长度信息和标准时间值确定偏移参数或重采样参数。

步骤104:基于所述偏移参数或重采样参数对待写入所述音频输出缓存区的数据块进行处理,将处理后的所述数据块写入所述音频输出缓冲区。

在一实施例中,所述根据获得的至少三个时间参数信息、数据长度信息和标准时间值确定偏移参数或重采样参数,包括:根据所述时间参数信息、数据长度信息和标准时间值确定偏移时间参数;基于确定的至少三个偏移时间参数确定偏移参数或重采样参数。

具体的,图3为本发明实施例的另一种数据处理方法的流程示意图;结合图1、图3所示,所述方法包括:

步骤201:获得音频输出缓存区输出第一数据块的第一时间参数信息,以及所述音频输出缓存区中表征数据存储容量的第一数据长度信息。

这里,当信号转换器输出音频输出缓存区的第一数据块时,获得输出所述第一数据块输出时的第一时间参数信息,以及所述音频输出缓存区中表征数据存储容量的第一数据长度信息。

步骤202:获得待写入所述音频输出缓存区的第二数据块的第一标准时间值。

这里,当所述内部处理组件写入所述音频输出缓冲区第二数据块时(假定音频输出缓冲区包含内部处理组件可操作的数据块有三个,由于数据块写入操作是阻塞的,所以当前写入的数据块可以为内部处理组件可操作的第四个数据块,这里记为第二数据块)。其中,可基于标准参考时钟获得写入所述音频输出缓存区的第二数据块的第一标准时间值,或者基于存储的音频数据块对应的已有的标准时间值,获得所述第二数据块对应的第一标准时间值;并将第二数据块写入输出存储模块。

步骤203:获得所述音频输出缓存区输出的第三数据块的第二时间参数信息,以及所述音频输出缓存区中表征数据存储容量的第二数据长度信息。

这里,当信号转换器输出音频输出缓存区的第三数据块时,获得输出所述第三数据块输出时的第二时间参数信息,以及所述音频输出缓存区中表征数据存储容量的第二数据长度信息。

步骤204:获得待写入所述音频输出缓存区的第四数据块的第二标准时间值。

这里,当内部处理组件写入所述音频输出缓冲区第四数据块时(假定音频输出缓冲区包含内部处理组件可操作的数据块有三个,基于前述步骤202中写入音频输出缓存区第二数据块,步骤203中音频输出缓存区输出第三数据块,这里音频输出缓存区中可被内部处理组件操作的数据块依然有三个)。其中,可基于标准参考时钟获得写入所述音频输出缓存区的第四数据块的第二标准时间值,或者基于存储的音频数据块对应的已有的标准时间值,获得所述第四数据块对应的第二标标准时间值。

步骤205:获得所述音频输出缓存区输出的第五数据块的第三时间参数信息,以及所述音频输出缓存区中表征数据存储容量的第三数据长度信息。

这里,当信号转换器输出音频输出缓存区的第五数据块时,获得输出所述第五数据块输出时的第三时间参数信息,以及所述音频输出缓存区中表征数据存储容量的第三数据长度信息。

步骤206:获得待写入所述音频输出缓存区的第六数据块的第三标准时间值。

这里,当所述内部处理组件写入所述音频输出缓冲区第六数据块时(假定音频输出缓冲区包含内部处理组件可操作的数据块有三个)。其中,可基于标准参考时钟获得写入所述音频输出缓存区的第六数据块的第三标准时间值,或者基于存储的音频数据块对应的已有的标准时间值,获得所述第六数据块对应的第三标标准时间值。

步骤207:根据所述第一时间参数信息、第一数据长度信息、第一标准时间值、第二时间参数信息、第二数据长度信息、第二标准时间值、第三时间参数信息、第三数据长度信息和第三标准时间值确定偏移参数或重采样参数。

步骤208:基于所述偏移参数或重采样参数对所述第六数据块进行数据处理,将处理后的所述第六数据块写入所述音频输出缓冲区。

本发明实施例的数据处理方法可应用在输出设备中,所述输出设备为多房间系统控制下的一输出设备。可以理解为,多房间系统可控制多个输出设备,则所述输出设备可以是所述多个输出设备中的任一输出设备。在一种实施方式中,所述多个输出设备中可包括主输出设备和从输出设备;所述主输出设备可将待输出的数据源同步至从输出设备;待输出的数据源可以是所述主输出设备中存储的数据,也可以是由其他设备传输至所述主输出设备的数据。其中,所述输出设备具体可以为音频输出设备或视频输出设备;以所述输出设备为音频输出设备为例,则多房间控制下的所述输出设备具体可参照图1所示,所述输出设备可包括输出缓存模块(如图1中所示的音频输出缓冲区),当然,所述输出设备中还包括输入缓存模块(如图1中所示的数据源1音频缓冲区和数据源2音频缓冲区;当然,图1中所示的示例是以两路数据源为例进行说明,在其他实施方式中不限于是两路数据源,也即在其他实施方式中设备中可包括不限于是两个音频输出缓冲区)。所述设备中还包括用于数据输出的物理硬件模块(例如图1中所示的信号转换器,所述信号转换器具体可以为dac)。由于本发明实施例的数据处理方法是针对音频输出缓存区的数据写入或数据输出进行处理,则本数据处理方法可应用在图1所示的内部处理组件中,或者,本数据处理方法可应用在用于输出数据块至音频输出缓存区的内部处理组件中。若设备中混音模块在对数据进行混音处理后,将处理后的数据直接写入音频输出缓冲区,则本发明实施例的数据处理方法还可应用在混音模块中。

参照图1所示的示例,在数据源产生数据的时钟就是标准时钟的情况下,当所述输出设备为主设备时,在上述数据处理过程中,信号转换器按照fh-m输出音频数据,在其从音频输出缓冲区获得其操作的第一数据块时,获得输出所述第一数据块时的基于自身播放参考时钟的第一时间参数信息t0clk-m,以及所述音频输出缓存区中表征数据存储容量的第一数据长度信息l0h-m。当内部处理组件写入所述音频输出缓冲区第二数据块时,基于标准参考时钟获得当前待写入所述音频输出缓存区的第二数据块的第一标准时间值t0clk;并将第二数据块写入所述音频输出缓存区。当信号转换器输出音频输出缓存区的第三数据块时,获得输出所述第三数据块的基于自身播放参考时钟的第二时间参数信息t1clk-m,以及所述音频输出缓存区中表征数据存储容量的第二数据长度信息l1h-m。当所述内部处理器件写入所述音频输出缓冲区的第四数据块时,基于标准参考时钟获得当前待写入所述音频输出缓存区的第四数据块的第二标准时间值t1clk。

具体的,依据写入所述音频输出缓存区的第一标准时间戳t0clk、从所述音频输出缓存区输出的播放参考时钟的第一时间参数信息t0clk-m以及第一数据长度信息l0h-m可以得出t0clk对应数据块的第一偏移时间值△t0,第一偏移时间值△t0满足以下公式(1):

△t0=t’0clk–t0clk(1)

其中,t’0clk=t0clk-m+l0h-m/fclk。

相应的,依据写入所述音频输出缓存区的第二标准时间戳t1clk、从所述音频输出缓存区输出的播放参考时钟的第二时间参数信息t1clk-m以及第二数据长度信息l1h-m可以得出t1clk-m对应数据块的第二偏移时间值△t1,第二偏移时间值△t1满足以下公式(2):

△t1=t’1clk–t1clk(2)

其中,t’1clk=t1clk-m+l1h-m/fclk。

相应的,依据写入所述音频输出缓存区的第三标准时间戳t2clk、从所述音频输出缓存区输出的播放参考时钟的第三时间参数信息t2clk-m以及第三数据长度信息l2h-m可以得出t2clk-m对应数据块的第三偏移时间值△t2,第三偏移时间值△t2满足以下公式(3):

△t2=t’2clk–t2clk(3)

其中,t’2clk=t2clk-m+l2h-m/fclk。

则偏移参数△d和重采样参数△fclk分别满足以下公式(4)和公式(5):

△d=(param2-param1)*fclk(4)

△fclk=n/(param2-param1)(5)

其中,param1=△t1-△t0;param2=△t2-△t1。

其中,n表示数据源在标准时钟区间t1clk-t0clk、t2clk–t1clk消耗的数据量,这个是已知且固定的。

综上,依据第一时间参数信息t0clk-m、第一数据长度信息l0h-m、第一标准时间值t0clk、第二时间参数信息t1clk-m、第二数据长度信息l1h-m、第二标准时间值t1clk、第三时间参数信息t2clk-m、第三数据长度信息l2h-m、第三标准时间戳t2clk和参考频率fclk信息是可以确定出偏移参数△d或重采样参数△fclk。

下面再针对以上公式,进一步解释说明是如何吸收前述fclk-m、fh-m频率偏差的。首先,(param2-param1)表示△t的变化趋势,也就是计算得到的相对时间t’clk相对于标准时间tclk的偏移时间△t的变化趋势。进一步的,t’0clk、t’1clk、t’2clk分别表示在标准时间t0clk、t1clk、t2clk时刻的数据块计算得到的相对时间,该相对时间是由以下公式(6)得到:

t’clk=tclk-m+lh-m/fclk(6)

其中,该相对时间t’clk表示待写入音频输出缓冲区的基于标准时间tclk的数据块、基于fclk-m、fh-m的信号转换器操作该数据块的相对时间;又因为tclk-m是主设备基于标准时钟同步后的播放时钟的值,也即是基于fclk-m的,因此tclk-m的变化趋势是随着fclk-m的变化而变化的;进一步的,主设备通过时间同步等方式试图使tclk-m和tclk完全同步,但因为时间同步精度的影响,tclk-m和tclk势必存在偏差;而公式(6)直接基于tclk-m计算得到标准时间tclk数据块的相对时间,该相对时间t’clk和标准时间tclk的偏差也就直接反映了tclk-m和该时刻对应的标准时间的偏差。进一步的,lh-m是基于fh-m的,lh-m的值的变化趋势是随着fclk-m的变化而变化的,公式(6)直接基于lh-m计算得到标准时间tclk数据块的相对时间,又因为lh-m=th-m*fh-m,所以该相对时间t’clk和标准时间tclk的偏差也就直接反映了th-m和该时刻对应的标准时间的偏差。进一步的,tclk-m和该时刻对应的标准时间的偏差是由fclk-m和fclk偏差累积产生的,th-m和该时刻对应的标准时间的偏差是由fh-m和fclk偏差累积产生的;则相对时间t’clk和标准时间tclk的偏差的变化趋势也就直接反应了相对频率和标准频率的偏差;而公式(4)和公式(5)中的(param2-param1)表示的就是相对时间t’clk和标准时间tclk的偏差的变化趋势,又加之△fclk=n/△t;所以公式(4)和公式(5)是成立的。其中△fclk表示重采样参数,△d表示偏移参数。

以上只是针对主设备而言的,同样,在从设备也同理可得出公式(4)和公式(5)能够有效的吸收fclk-c、fh-c和标准时钟fclk的偏差;在此就不重复累述。

这里,如前文所述fclk-m、fh-m所引入得偏差并不是固定不变的,而是在时间轴上抖动变化的;并且fclk-m、fh-m所引入得偏差方向并不是完全一致的,比如,在某一段时间fclk-m大于fclk,而fh-m小于fclk;而利用公式(4)和公式(5)得到重采样参数或偏移参数,都能完好的解决这些问题。公式(4)和公式(5)是根据相对时间和标准时间的变化趋势得到重采样参数△fclk和偏移参数△d的,其变化趋势是依据固定数据消耗而计算得到的,是随着数据消耗而自身不断变化,随着数据消耗不断变化也就是对前述频率偏差抖动的一个直接反应;利用公式(6)得到相对时间t’clk,该相对时间计算时同时考虑了fclk-m和fh-m对其的影响,那么这就很好的在计算过程中使的时钟偏移方向不同的部分互相抵消而使得所得到的偏移参数或重采样参数直接可靠。

如前文所述,得到偏移参数或重采样参数后,可以依据偏移参数或重采样参数对待写入数据块进行相应操作。

具体的,当所述第一偏移参数表明待写入所述音频输出缓存区的数据块相对于所述音频输出缓存区输出的数据块的相对偏移量为正时,即输出的数据量大于待写入的数据量时,也即表明实际输出的数据相对于理想情况下输出的数据快时,确定所述第一偏移参数表示待删除的数据数量,以消除由正向的第一偏移参数导致数据输出过快。当所述第一偏移参数表明待写入所述音频输出缓存区的数据相对于所述音频输出缓存区输出的数据的相对偏移量为负时,即输出的数据量小于待写入的数据量时,也即表明实际输出的数据相对于理想情况下输出的数据慢时,确定所述第一偏移参数表示待增加的数据数量,以消除由负向的第一偏移参数导致数据输出过慢。

基于此,基于所述第一偏移参数对所述第四数据块进行处理,包括:基于所述第一偏移参数对所述第四数据块进行数据增加或删除处理。具体的,基于所述第一偏移参数确定增加的第一数据数量,将所述第一数据数量的数据添加至所述第四数据块中的第一预设位置,或者,基于所述第一偏移参数确定删除的第二数据数量,从所述第四数据块的第二预设位置删除所述第二数据数量的数据。

其中,所述第一预设位置或所述第二预设位置可以是所述第四数据块中的任意位置,例如所述第四数据块的头部、尾部等等,当然不限于是第四数据块的头部、尾部。增加或删除的数据具体可以是任何数据。作为一种实施方式,增加或删除的数据可以是参数为零的数据,以数据为音频数据为例,则增加或删除的数据可以是空数据,即输出后无法被察觉到或者检测到的数据。作为其他实施方式,增加的数据可以是所述第一预设位置之前或之后的数据,即增加的数据与所述第一预设位置之前或之后的数据相同;相应的,删除的数据可以是所述第二预设位置之前或之后的数据,即删除的数据与所述第二预设位置之前或之后的数据相同。

本实施例中,所述第一重采样参数表征所述第四数据块的缩放程度。例如,在当前的输出设备中,原本预设每单位时间输出44.1k的采样点,实际输出44.11k或者44.09k个采样点等等。因此,在本实施方式中,将待写入所述音频输出缓存区的第四数据块按照所述第一重采样参数进行重采样处理,使之在当前的输出环境中,每单位时间输出的数据量与标准频率信息对应的输出数据量能够一致,从而消除由于硬件差异以及数据源输入时之间的偏差导致的数据输出的误差。

实施例二

本发明实施例还提供了一种输出设备。图4为本发明实施例的输出设备的组成结构示意图;如图4所示,所述输出设备包括:输出缓存模块32和数据处理模块31;其中,

所述输出缓存模块32,用于写入/输出数据;

所述数据处理模块31,用于分别获得所述输出缓存模块32输出至少三次数据块的时间参数信息,以及所述输出缓存模块32中每次输出数据块后表征数据存储容量的数据长度信息;所述输出缓存模块32每次输出数据块后获得待写入所述输出缓存模块32的数据块的标准时间值;根据获得的至少三个时间参数信息、数据长度信息和标准时间值确定偏移参数或重采样参数;基于所述偏移参数或重采样参数对待写入所述输出缓存模块32的数据块进行处理,将处理后的所述数据块写入所述音频输出缓冲区。

作为一种实施方式,所述数据处理模块31,用于根据所述时间参数信息、数据长度信息和标准时间值确定偏移时间参数;基于确定的至少三个偏移时间参数确定偏移参数或重采样参数。

在一实施例中,所述数据处理模块31,用于分别获得所述输出缓存模块32输出三次数据块的第一时间参数信息、第二时间参数信息和第三时间参数信息,以及所述输出缓存模块32中每次输出数据块后表征数据存储容量的第一数据长度信息、第二数据长度信息和第三数据长度信息;所述输出缓存模块32每次输出数据块后获得待写入所述输出缓存模块32的数据块的第一标准时间值、第二标准时间值和第三标准时间值。

进一步地,所述数据处理模块31,用于根据所述第一标准时间值、所述第一时间参数信息、所述第一数据长度信息确定第一偏移时间值;根据所述第二标准时间值、所述第二时间参数信息、所述第二数据长度信息确定第二偏移时间值;根据所述第三标准时间值、所述第三时间参数信息、所述第三数据长度信息确定第三偏移时间值;根据所述第一偏移时间值、所述第二偏移时间值和所述第三偏移时间值确定偏移参数或重采样参数。

作为另一种实施方式,所述数据处理模块31,用于基于所述偏移参数对待写入所述输出缓存模块32的数据块进行增加数据或删除数据处理;或者,基于所述重采样参数对待写入所述输出缓存模块32的数据块进行重采样处理。

本发明实施例中,所述输出设备中的数据处理模块31,在实际应用中可由所述设备中的中央处理器(cpu,centralprocessingunit)、数字信号处理器(dsp,digitalsignalprocessor)、微控制单元(mcu,microcontrollerunit)或可编程门阵列(fpga,field-programmablegatearray)实现;所述设备中的输出缓存模块32,在实际应用中可通过存储器实现。

需要说明的是:上述实施例提供的输出设备在进行数据处理时,仅以上述各程序模块的划分进行举例说明,实际应用中,可以根据需要而将上述处理分配由不同的程序模块完成,即将输出设备的内部结构划分成不同的程序模块,以完成以上描述的全部或者部分处理。另外,上述实施例提供的输出设备与数据处理方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

实施例三

本发明实施例还提供了一种输出设备,图5为本发明实施例的输出设备的硬件组成结构示意图,如图5所示,输出设备包括:处理器41和用于存储能够在处理器41上运行的计算机程序的存储器42,其中,所述处理器41用于运行所述计算机程序时,执行:分别获得所述音频输出缓存区输出至少三次数据块的时间参数信息,以及所述音频输出缓存区中每次输出数据块后表征数据存储容量的数据长度信息;所述音频输出缓存区每次输出数据块后获得待写入所述音频输出缓存区的数据块的标准时间值;根据获得的至少三个时间参数信息、数据长度信息和标准时间值确定偏移参数或重采样参数;基于所述偏移参数或重采样参数对待写入所述音频输出缓存区的数据块进行处理,将处理后的所述数据块写入所述音频输出缓冲区。

在一实施例中,所述处理器41用于运行所述计算机程序时,执行:根据所述时间参数信息、数据长度信息和标准时间值确定偏移时间参数;基于确定的至少三个偏移时间参数确定偏移参数或重采样参数。

在一实施例中,所述处理器41用于运行所述计算机程序时,执行:分别获得所述音频输出缓存区输出三次数据块的第一时间参数信息、第二时间参数信息和第三时间参数信息,以及所述音频输出缓存区中每次输出数据块后表征数据存储容量的第一数据长度信息、第二数据长度信息和第三数据长度信息;所述音频输出缓存区每次输出数据块后获得待写入所述音频输出缓存区的数据块的第一标准时间值、第二标准时间值和第三标准时间值。

在一实施例中,所述处理器41用于运行所述计算机程序时,执行:根据所述第一标准时间值、所述第一时间参数信息、所述第一数据长度信息确定第一偏移时间值;根据所述第二标准时间值、所述第二时间参数信息、所述第二数据长度信息确定第二偏移时间值;根据所述第三标准时间值、所述第三时间参数信息、所述第三数据长度信息确定第三偏移时间值;根据所述第一偏移时间值、所述第二偏移时间值和所述第三偏移时间值确定偏移参数或重采样参数。

在一实施例中,所述处理器41用于运行所述计算机程序时,执行:基于所述偏移参数对待写入所述音频输出缓存区的数据块进行增加数据或删除数据处理;或者,基于所述重采样参数对待写入所述音频输出缓存区的数据块进行重采样处理。

在一实施例中,输出设备中还包括音频组件43和通信接口44。音频组件43用于输出和/或输入音频信号。例如,音频组件43可包括麦克风(mic,microphone),在一些实施例中,音频组件43还可以包括一个扬声器,用于输出音频信号。音频信号可以被进一步存储在存储器42或经由通信接口44发送。

可以理解输出设备中的各个组件通过总线系统45耦合在一起。可理解,总线系统45用于实现这些组件之间的连接通信。总线系统45除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图5中将各种总线都标为总线系统45。

可以理解,存储器42可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(rom,readonlymemory)、可编程只读存储器(prom,programmableread-onlymemory)、可擦除可编程只读存储器(eprom,erasableprogrammableread-onlymemory)、电可擦除可编程只读存储器(eeprom,electricallyerasableprogrammableread-onlymemory)、磁性随机存取存储器(fram,ferromagneticrandomaccessmemory)、快闪存储器(flashmemory)、磁表面存储器、光盘、或只读光盘(cd-rom,compactdiscread-onlymemory);磁表面存储器可以是磁盘存储器或磁带存储器。易失性存储器可以是随机存取存储器(ram,randomaccessmemory),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(sram,staticrandomaccessmemory)、同步静态随机存取存储器(ssram,synchronousstaticrandomaccessmemory)、动态随机存取存储器(dram,dynamicrandomaccessmemory)、同步动态随机存取存储器(sdram,synchronousdynamicrandomaccessmemory)、双倍数据速率同步动态随机存取存储器(ddrsdram,doubledataratesynchronousdynamicrandomaccessmemory)、增强型同步动态随机存取存储器(esdram,enhancedsynchronousdynamicrandomaccessmemory)、同步连接动态随机存取存储器(sldram,synclinkdynamicrandomaccessmemory)、直接内存总线随机存取存储器(drram,directrambusrandomaccessmemory)。本发明实施例描述的存储器42旨在包括但不限于这些和任意其它适合类型的存储器。

上述本发明实施例揭示的方法可以应用于处理器41中,或者由处理器41实现。处理器41可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器41中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器41可以是通用处理器、dsp,或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器41可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本发明实施例所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器42,处理器41读取存储器42中的信息,结合其硬件完成前述方法的步骤。

在示例性实施例中,输出设备可以被一个或多个应用专用集成电路(asic,applicationspecificintegratedcircuit)、dsp、可编程逻辑器件(pld,programmablelogicdevice)、复杂可编程逻辑器件(cpld,complexprogrammablelogicdevice)、fpga、通用处理器、控制器、mcu、微处理器(microprocessor)、或其他电子元件实现,用于执行前述方法。

实施例四

在示例性实施例中,本发明实施例还提供了一种计算机存储介质,例如包括计算机程序的存储器42,上述计算机程序可由输出设备的处理器41执行,以完成前述方法所述步骤。计算机存储介质可以是fram、rom、prom、eprom、eeprom、flashmemory、磁表面存储器、光盘、或cd-rom等存储器;也可以是包括上述存储器之一或任意组合的各种设备。

本发明实施例提供的计算机存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现:分别获得所述音频输出缓存区输出至少三次数据块的时间参数信息,以及所述音频输出缓存区中每次输出数据块后表征数据存储容量的数据长度信息;所述音频输出缓存区每次输出数据块后获得待写入所述音频输出缓存区的数据块的标准时间值;根据获得的至少三个时间参数信息、数据长度信息和标准时间值确定偏移参数或重采样参数;基于所述偏移参数或重采样参数对待写入所述音频输出缓存区的数据块进行处理,将处理后的所述数据块写入所述音频输出缓冲区。

在一实施例中,该计算机程序被处理器执行时实现:根据所述时间参数信息、数据长度信息和标准时间值确定偏移时间参数;基于确定的至少三个偏移时间参数确定偏移参数或重采样参数。

在一实施例中,该计算机程序被处理器执行时实现:分别获得所述音频输出缓存区输出三次数据块的第一时间参数信息、第二时间参数信息和第三时间参数信息,以及所述音频输出缓存区中每次输出数据块后表征数据存储容量的第一数据长度信息、第二数据长度信息和第三数据长度信息;所述音频输出缓存区每次输出数据块后获得待写入所述音频输出缓存区的数据块的第一标准时间值、第二标准时间值和第三标准时间值。

在一实施例中,该计算机程序被处理器执行时实现:根据所述第一标准时间值、所述第一时间参数信息、所述第一数据长度信息确定第一偏移时间值;根据所述第二标准时间值、所述第二时间参数信息、所述第二数据长度信息确定第二偏移时间值;根据所述第三标准时间值、所述第三时间参数信息、所述第三数据长度信息确定第三偏移时间值;根据所述第一偏移时间值、所述第二偏移时间值和所述第三偏移时间值确定偏移参数或重采样参数。

在一实施例中,该计算机程序被处理器执行时实现:基于所述偏移参数对待写入所述音频输出缓存区的数据块进行增加数据或删除数据处理;或者,基于所述重采样参数对待写入所述音频输出缓存区的数据块进行重采样处理。

在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。

上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。

另外,在本发明各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1