蓝牙音频播放同步的方法、装置及蓝牙音频播放装置
技术领域
本发明涉及数据处理技术领域,尤其涉及一种蓝牙音频播放同步的方法、装置及蓝牙音频播放装置。
背景技术
蓝牙是一种无线技术标准,可实现固定设备、移动设备和个人域网之间的大容量的短距离数据交换。蓝牙音箱就是将蓝牙技术应用在传统数码和多媒体音箱上,让使用者可以免除恼人电线的牵绊,自在地以各种方式聆听音乐。
在通过蓝牙进行数据传输时,可将两个电子设备定义为主从设备,其中一个比如手机、平板电脑等定义为主设备,而另一个装置如蓝牙耳机、蓝牙音箱等可定义为从设备。主从设备通过蓝牙协议配对连接后,可通过无线的方式进行数据传输,其中主设备可将音频数据传输给蓝牙耳机或蓝牙音箱进行播放。
蓝牙音频数据在传输过程中,由于蓝牙主从设备自身的时钟源不一致所以需要同步控制,传统的同步算法都是通过调整相位实现的。另一方面由于蓝牙音频数据的传输是基于无线信号传输的,因为信号干扰或者设备之间的距离太大导致信号不稳定,从而导致蓝牙音箱、蓝牙耳机等蓝牙从设备不能实时接收到主机发送的音频文件,甚至出现丢包,导致传统同步算法相位调整的基准很难确定。
发明内容
基于此,有必要针对传统技术中同步算法相位调整基准难以确定,导致蓝牙设备同步不准确,导致音频播放效果差的问题,提供一种能够更好的对蓝牙音频播放设备进行数据同步的方法、相应的装置及蓝牙音频播放装置、系统。
为实现本发明目的提供的一种蓝牙音频播放同步的方法,从设备通过蓝牙从主设备接收音频数据并进行播放,需要播放的所述音频数据首先存储到第一数据缓存区中,所述第一数据缓存区按数据存储量分为高存储段、中存储段和低存储段,该方法中能够通过数据量标志位判断所述第一数据缓存区中的数据所在的存储段,包括以下步骤:
将从主设备接收到的音频数据存储入第一数据缓存区;
从设备进行音频播放时判断所述数据量标志的位置,得到判断结果;
根据所述判断结果,当所述数据量标志位在所述中存储段时,直接将从所述第一数据缓存区提取出的所述音频数据发送到所述从设备的播放模块进行播放;当所述数据量标志位在所述高存储段时,对从所述第一数据缓存区提取出的所述音频数据进行缩短处理后发送到所述从设备的播放模块进行播放;当所述数据量标志位在所述低存储段时,对从所述第一数据缓存区提取出的所述音频数据进行拉伸处理后发送到所述从设备的播放模块进行播放。
作为一种蓝牙音频播放同步的方法的可实施方式,所述第一数据缓存区中存储的为压缩的音频数据,所述压缩的音频数据经过解码器解码后发送到第二数据缓存区中,所述从设备在进行播放时从所述第二数据缓存区获取解压后的音频数据,并根据所述判断结果进行压缩或者拉伸或者直接进行播放。
作为一种蓝牙音频播放同步的方法的可实施方式,对所述音频数据进行缩短处理包括以下步骤:
对要播放的所述音频数据从所述第二数据缓存区中选取预设长度的参考数据区以及与所述参考数据间隔预设长度的搜索数据区;
将所述参考数据区与所述搜索数据区中相应长度的数据区进行互相关计算,得到所述搜索数据区中与所述参考数据区相关系数最大的连续数据区作为相关数据区;
将所述参考数据区数据与所述相关数据区数据进行第一加权合并输出;
对所述相关数据区后的所述第二数据缓存区中的音频数据直接输出;
所述搜索数据区大于等于所述参考数据区。
作为一种蓝牙音频播放同步的方法的可实施方式,对所述音频数据进行拉伸处理包括以下步骤:
对要播放的所述音频数据从所述第二数据缓存区中选取预设长度的参考数据区以及与所述参考数据间隔预设长度的搜索数据区;
将所述参考数据区与所述搜索数据区中相应长度的数据区进行互相关计算,得到所述搜索数据区中与所述参考数据区相关系数最大的连续数据区作为相关数据区;
将所述相关数据区之前的所述音频数据直接输出;
将所述参考数据区数据和所述相关数据区数据进行第二加权合并输出;
将所述参考数据区后的所述第二数据缓存区中的所述音频数据直接输出。
作为一种蓝牙音频播放同步的方法的可实施方式,将所述参考数据区数据和所述相关数据区数据进行第一加权合并输出,包括以下步骤:
将所述参考数据区中的数据的权值从1均匀变到0;
将所述相关数据区中的数据的权值从0均匀变到1;
将所述参考数据区中的数据及所述相关数据区中的数据分别乘以对应权值后求和得到新的数据,并输出所述新的数据。
作为一种蓝牙音频播放同步的方法的可实施方式,将所述参考数据区数据和所述相关数据区数据进行第二加权合并输出,包括以下步骤:
将所述相关数据区中的数据的权值从1均匀变到0;
将所述参考数据区中的数据的权值从0均匀变到1;
将所述参考数据区中的数据及所述相关数据区中的数据分别乘以对应权值后求和得到新的数据,并输出所述新的数据。
作为一种蓝牙音频播放同步的方法的可实施方式,还包括以下步骤:
所述第一数据缓存区每输出一帧数据,丢帧判断参数增大1;
判断所述丢帧判断参数是否大于等于预设值,若是,则所述从设备进行音频播放时进行所述数据量标志位的判断,并在所述数据量标志位在所述高存储段或者所述低存储段时,清零所述丢帧判断参数,若否,则判定出现丢包或者信号传输异常,所述从设备进行音频播放时不进行所述数据量标志位的判断,也不根据所述数据量标志位的判断结果对要播放的音频数据进行处理。
作为一种蓝牙音频播放同步的方法的可实施方式,还包括以下步骤:
所述第一数据缓存区每输出一帧数据,丢帧判断参数增大1,并在所述丢帧判断参数大于预设值时,令所述丢帧判断参数的值为所述预设值;
判断所述丢帧参数是否等于所述预设值,若是则所述从设备进行音频播放时进行所述数据量标志位的判断,并在所述数据量标志位在所述高存储段或者所述低存储段时,清零所述丢帧判断参数,若否,则判定出现丢包或者信号传输异常,所述从设备进行音频播放时不进行所述数据量标志位的判断,也不根据所述数据量标志位的判断结果对要播放的音频数据进行处理。
作为一种蓝牙音频播放同步的方法的可实施方式,所述预设值为因同步误差需要进行数据同步的最小帧数。
基于同一发明构思的一种蓝牙音频播放同步的装置,包括数据接收模块、第一数据缓存区及同步运算模块;
从设备通过蓝牙从主设备接收音频数据并进行播放,所述数据接收模块被配置以将从主设备接收到的所述音频数据存储入第一数据缓存区;
所述第一数据缓存区按数据存储量分为高存储段、中存储段和低存储段;
所述同步运算模块包括标识位判断子模块和第一处理子模块、第二处理子模块和第三处理子模块;
所述标志位判断子模块,被配置以通过数据量标志位判断所述第一数据缓存区中的数据所在的存储段;
所述第一处理子模块,被配置以根据所述标志位判断子模块的判断结果,当所述数据量标志位在所述中存储段时,直接将从所述第一数据缓存区提取出的所述音频数据发送到所述从设备的播放模块进行播放;
所述第二处理子模块,被配置以根据所述标志位判断子模块的判断结果,当所述数据量标志位在所述高存储段时,对从所述第一数据缓存区提取出的所述音频数据进行缩短处理后发送到所述从设备的播放模块进行播放;
所述第三处理子模块,被配置以根据所述标志位判断子模块的判断结果,当所述数据量标志位在所述低存储段时,对从所述第一数据缓存区提取出的所述音频数据进行拉伸处理后发送到所述从设备的播放模块进行播放。
作为一种蓝牙音频播放同步的装置的可实施方式,还包括第二数据缓存区,所述第一数据缓存区中存储的为压缩的音频数据,所述压缩的音频数据经过解码器解码后发送到第二数据缓存区中,所述从设备在进行播放时从所述第二数据缓存区获取解压后的音频数据,并根据所述判断结果进行压缩或者拉伸或者直接进行播放。
基于同一发明构思的一种蓝牙音频播放装置,包括前述的蓝牙音频播放同步的装置,所述蓝牙音频播放装置从主设备接收的音频数据,并经过所述蓝牙音频播放同步的装置处理后进行音频播放。
基于同一发明构思的一种蓝牙音频播放系统,包括前述的蓝牙音频播放同步的装置和蓝牙音频播放器,
所述蓝牙音频播放同步的装置与所述蓝牙音频播放器通讯连接;
所述蓝牙音频播放同步的装置被配置以从主设备接收音频数据,对所接收的音频数据进行同步处理,并将处理后的数据发送给所述蓝牙音频播放器;
所述蓝牙音频播放器被配置以播放所述蓝牙音频播放同步的装置处理后的音频数据。
本发明的有益效果包括:
本发明提供的一种蓝牙音频播放同步的方法,通过判断缓存区域音频数据剩余量判断从设备与主设备的时钟是否偏移,并在判定发生偏移的后,根据缓存区中数据量的大小对音频数据进行缩短或者拉伸播放,从而对从设备的时钟进行调整。该方法不涉及相位调整,对时钟偏移的判断准确、简便,能够对准确的从设备的时钟进行偏移调整,使主从设备的时钟快速达到一致。同时基于同一发明构思的蓝牙音频播放同步的装置、蓝牙音频播放装置以及蓝牙音频播放系统同样能够起到同步数据,调整时钟源不一致的效果。
附图说明
图1为本发明一种蓝牙音频播放同步的方法的一具体实施例的流程图;
图2为本发明一种蓝牙音频播放同步的方法的一具体实施例中第一数据缓存区的存储段划分示意图;
图3为本发明一种蓝牙音频播放同步的方法的一具体实施例中进行数据同步处理时第二数据缓存区数据区划分示意图;
图4为本发明一种蓝牙音频播放同步的方法的一具体实施例中丢帧判断示意图;
图5为本发明一种蓝牙音频播放同步的装置的一具体实施例的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图对本发明的蓝牙音频播放同步的方法、装置及蓝牙音频播放装置的具体实施方式进行说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明一实施例的蓝牙音频播放同步的方法,适用于一个蓝牙设备从另一个蓝牙设备接收音频数据并进行音频播放。这里将播放设备称为从设备,将存储音频数据的设备称为主设备。从设备通过蓝牙从主设备接收音频数据并进行播放,需要播放的所述音频数据首先存储到第一数据缓存区中,所述第一数据缓存区按数据存储量分为高存储段、中存储段和低存储段。其中,此处所说的第一数据缓存区可以设置在从设备或者主设备中,也可以设置在一个额外的中转设备中。本发明实施例的方法能够通过数据量标志位判断所述第一数据缓存区中的数据所在的存储段,并根据判断结果进行同步处理,如图1所示,具体包括以下步骤:
S100,将从主设备接收到的音频数据存储入第一数据缓存区;
S200,从设备进行音频播放时判断所述数据量标志的位置,得到判断结果;
S300,根据所述判断结果,当所述数据量标志位在所述中存储段时,直接将从所述第一数据缓存区提取出的所述音频数据发送到所述从设备的播放模块进行播放;当所述数据量标志位在所述高存储段时,对从所述第一数据缓存区提取出的所述音频数据进行缩短处理后发送到所述从设备的播放模块进行播放;当所述数据量标志位在所述低存储段时,对从所述第一数据缓存区提取出的所述音频数据进行拉伸处理后发送到所述从设备的播放模块进行播放。
很显然,步骤S300包括三个并列选择的子步骤,可分为S310,当所述数据量标志位在所述中存储段时,直接将从所述第一数据缓存区提取出的所述音频数据发送到所述从设备的播放模块进行播放。S320,当所述数据量标志位在所述高存储段时,对从所述第一数据缓存区提取出的所述音频数据进行缩短处理后发送到所述从设备的播放模块进行播放。S330,当所述数据量标志位在所述低存储段时,对从所述第一数据缓存区提取出的所述音频数据进行拉伸处理后发送到所述从设备的播放模块进行播放。三个步骤根据不同的判断结果执行不同的步骤。
对于第一数据缓存区,高存储段、中存储段和低存储段的分布如图2所示。数据量标志位表征第一数据缓存区中存储数据的多少,当数据量标志位在高存储段时,则低存储段及中存储段中都是存储满数据的,也即数据量标志位以下的区域中都是存储有数据的,此时第一数据缓存区中存储的数据较多。相应的,数据量标志位在中存储段时,第一数据缓存区中存储的数据次多,而数据量标志位在低存储段时,第一数据缓存区中存储的数据则较少。
当数据量标志位在中存储段时,认为蓝牙主从设备的时钟是正常的不需要同步处理,也就是,此时认为从设备和主设备的自身的时钟源是基本一致的。当数据量标志位在高存储段时,可以断定从设备来不及取走数据,即从设备的时钟偏慢。而当数据量标志位在低存储段时,判定从设备从第一数据缓存区中取数据过快,即从设备时钟偏快。从设备通过播放模块进行音频播放,且播放模块可以为喇叭、FM或其他音频输出设备。
本发明实施例的蓝牙音频播放同步的方法,通过判断缓存区域音频数据剩余量判断从设备与主设备的时钟是否偏移,并在判定发生偏移后,根据缓存区中数据量的大小对音频数据进行缩短或者拉伸播放,从而对从设备的时钟进行调整。该方法不涉及相位调整,对时钟偏移的判断准确、简便,能够对准确的从设备的时钟进行偏移调整,使主从设备的时钟快速达到一致。
需要说明的是,第一数据缓存区存储段的划分可根据缓存区的大小及对时钟同步要求的精度进行划分。本领域技术人员可以理解,当中存储段划分较长时,则需要进行同步处理的数据较少,数据处理速度较快,而当中存储段划分较短时,则可更及时的对从设备的时钟进行同步处理。
而从设备中的播放模块一般为DAC播放模块,此时,该方法中还会使用第二数据缓存模块,无线接收模块(蓝牙模块)输出的位流填入第一数据缓存区后,所述第一数据缓存区中存储的为压缩的音频数据,当第二数据缓存区中数据空余空间足够存放一最小单元解码输出数据时,启动解码器,解码器从第一数据缓存区中获取压缩数据作为输入,解码后的数据填充第二数据缓存区。从设备在进行播放时从所述第二数据缓存区获取解压后的音频数据,并根据所述判断结果进行压缩或者拉伸或者直接进行播放。
当数据量标志位在高存储段或者低存储段时,需要进行同步处理,具体包括以下步骤:
S301,对要播放的所述音频数据从所述第二数据缓存区中选取预设长度的参考数据区X以及与所述参考数据间隔预设长度的搜索数据区Y。
如图3所示,参考数据区的初始位置为从设备进行音频播放的第二数据缓存区的当前输出位置。搜索区域与参考数据区之间要间隔一定的长度,参考数据区和搜索数据区之间的数据段可命名为间隔数据区。且参考数据区中的参考数据、间隔数据区中的间隔数据以及搜索数据区中的搜索数据三者为第二数据缓存区中连续的数据。且搜索数据区的长度要大于等于参考数据区的长度。参考数据区、间隔数据区和搜索数据区的长度可根据数据处理量的大小及播放速度进行确定。如可设置参考数据区X的长度为包含2~3毫秒的数据,间隔数据区的长度为10毫秒左右的数据,而相应的搜索数据区Y的长度可设置为包含5~10毫秒的数据。数据区域划分后,继续执行步骤S302。
S302,将所述参考数据区X与所述搜索数据区Y中相应长度的数据区进行互相关计算,得到相关性W(j)。其中j为计算互相关性的搜索数据区中起始的数据点。搜索数据区中所有的数据都进行相关计算后,得到所述搜索数据区中与所述参考数据区相关系数最大的连续数据区作为相关数据区X1。相关数据区X1与参考数据区的长度相等。相关数据区X1的起始数据位为j1。
数据区域划分后,对于数据缩短处理和数据拉伸处理具有不同的处理方式。当数据量标志位在高存储段时,则将X与X1区域的数据进行第一加权合并输出,具体为X区域数据的权值从1均匀变到0,X1区域数据的权值从0均与变到1,从而使数据平滑过渡到X1区域的最后数据位。之后再将相关数据区X1后面的数据正常输出。从而减少了间隔区域及搜索数据区域j1前面数据的输出。
当数据量标志位在低存储段,对所述音频数据进行拉伸处理时,首先将第二数据缓存区中相关数据区X1之前的音频数据直接输出。然后将所述参考数据区数据和所述相关数据区数据进行第二加权合并输出,具体为X1区域数据权值从1均匀变到0,X区域的数据权值从0均匀变到1,从而使输出的数据平滑过渡到参考数据X的最后,之后再将X区域后面的数据正常输出,如此,在从设备时钟偏快时,增加间隔数据区及搜索数据区j1前面数据的输出。当然X1数据区域的数据也多输出了一遍。多输出数据后,从设备的时钟也是进行了调整。
此处需要说明的是,在进行数据缩短或者数据拉伸处理时,第一加权合并和第二加权合并中数据的权值可根据函数进行设定,也可按照需求设定适当的设定。当然前述实施例中采用均与从0过渡到1或者均匀从1过渡到0的方式会使数据的过渡更加平稳。
另外,为了判断从设备进行音频播放时同步问题还是丢包问题,在另一实施例的蓝牙音频播放同步的方法还包括以下步骤:
S011,第一数据缓存区每输出一帧数据,丢帧判断参数N1增大1。
S012,判断所述丢帧判断参数是否大于等于预设值,若是,则所述从设备进行音频播放时执行步骤S200进行所述数据量标志位的判断,并在所述数据量标志位在所述高存储段或者所述低存储段时,启动同步处理模块进行数据同步处理后再进行音频播放,同时令N1=0,重新进行计数。相反,若丢帧判断参数小于等于预设值,则认为是丢包或者信号传输异常导致的问题,则从设备进行音频播放时不再进行所述数据量标志位的判断,也不根据所述数据量标志位的判断结果对要播放的音频数据进行处理。而要针对丢包或者信号传输异常进行相应的处理。
而此处预设值设置为由于同步误差导致需要同步的最小帧M,防止由于丢包或者信号传输异常问题导致数据同步处理不准确。
更佳的,参见图4,可在N1大于M时,令N1等于M,并在N1等于M时进行是否需要同步数据处理的判断,而在N1不等于M时,即使数据量标志位在高存储段或者低存储段时,也不进行数据同步处理,判定为丢包或者信号传输异常导致的问题。
本领域普通技术人员可以理解,实现上述实施例方法中的全部或部分流程可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为只读存储记忆体(Read-OnlyMemory,ROM)或随机存储记忆体(RandomAccessMemory,RAM)等。
基于同一发明构思,本发明还提供一种蓝牙音频播放同步的装置,由于此系统解决问题的原理与前述一种蓝牙音频播放同步的方法相似,因此,该系统的实施可以按照前述方法的具体步骤实现,重复之处不再赘述。
本发明一实施例的蓝牙音频播放同步的装置,如图5所示,包括数据接收模块100、第一数据缓存区200及同步运算模块300。
从设备通过蓝牙从主设备接收音频数据并进行播放,所述数据接收模块100被配置以将从主设备接收到的所述音频数据存储入第一数据缓存区200中。第一数据缓存区按数据存储量分为高存储段、中存储段和低存储段。同步运算模块300包括标识位判断子模块310和第一处理子模块320、第二处理子模块330和第三处理子模块340。标志位判断子模块310,被配置以通过数据量标志位判断所述第一数据缓存区中的数据所在的存储段;第一处理子模块320,被配置以根据所述标志位判断子模块的判断结果,当所述数据量标志位在所述中存储段时,直接将从所述第一数据缓存区提取出的所述音频数据发送到所述从设备的播放模块进行播放;第二处理子模块330,被配置以根据所述标志位判断子模块的判断结果,当所述数据量标志位在所述高存储段时,对从所述第一数据缓存区提取出的所述音频数据进行缩短处理后发送到所述从设备的播放模块进行播放;第三处理子模块340,被配置以根据所述标志位判断子模块的判断结果,当所述数据量标志位在所述低存储段时,对从所述第一数据缓存区提取出的所述音频数据进行拉伸处理后发送到所述从设备的播放模块进行播放。
本发明实施例的蓝牙音频播放同步的装置,通过判断缓存区域音频数据剩余量判断从设备与主设备的时钟是否偏移,并在判定发生偏移之后,根据缓存区中数据量的大小对音频数据进行缩短或者拉伸播放,从而对从设备的时钟进行调整。该方法不涉及相位调整,对时钟偏移的判断准确、简便,能够对准确的从设备的时钟进行偏移调整,使主从设备的时钟快速达到一致。
在另一实施例中,还包括第二数据缓存区,第一数据缓存区中存储的为压缩的音频数据,压缩的音频数据经过解码器解码后发送到第二数据缓存区中,从设备在进行播放时从所述第二数据缓存区获取解压后的音频数据,并根据判断结果进行压缩或者拉伸或者直接进行播放。
所述第二处理子模块包括第一划分单元、第一相关计算单元,第一加权输出单元以及第一直接输出单元。其中:第一划分单元,被配置以对要播放的所述音频数据从所述第二数据缓存区中选取预设长度的参考数据区以及与所述参考数据间隔预设长度的搜索数据区;第一相关计算单元,被配置以将所述参考数据区与所述搜索数据区中相应长度的数据区进行互相关计算,得到所述搜索数据区中与所述参考数据区相关系数最大的连续数据区作为相关数据区;第一加权输出单元,被配置以将所述参考数据区数据与所述相关数据区数据进行第一加权合并输出;第一直接输出单元,被配置以对所述相关数据区后的所述第二数据缓存区中的音频数据直接输出。且搜索数据区大于等于参考数据区。
所述第二处理子模块包括第二划分单元、第二相关计算单元、第二直接输出单元、第二加权输出单元以及第三直接输出单元。其中:第二划分单元,被配置以对要播放的所述音频数据从所述第二数据缓存区中选取预设长度的参考数据区以及与所述参考数据间隔预设长度的搜索数据区;第二相关计算单元,被配置以将所述参考数据区与所述搜索数据区中相应长度的数据区进行互相关计算,得到所述搜索数据区中与所述参考数据区相关系数最大的连续数据区作为相关数据区;第二直接输出单元,被配置以将所述相关数据区之前的所述音频数据直接输出;第二加权输出单元,被配置以将所述参考数据区数据和所述相关数据区数据进行第二加权合并输出;第三输出单元,被配置以将所述参考数据区后的所述第二数据缓存区中的所述音频数据直接输出。
本发明还提供一种蓝牙音频播放装置,其包括前述的蓝牙音频播放同步的装置,所述蓝牙音频播放装置从主设备接收的音频数据,并经过所述蓝牙音频播放同步的装置处理后进行音频播放。此蓝牙音频播放装置内部设置有数据同步处理的装置,能够在蓝牙音频播放装置内部的时钟源与主设备中的时钟源不一致时能够对数据进行同步,以调整时钟。
在一种蓝牙音频播放系统中,包括蓝牙音频播放同步的装置和蓝牙音频播放器,蓝牙音频播放同步的装置与蓝牙音频播放器通讯连接;蓝牙音频播放同步的装置被配置以从主设备接收音频数据,对所接收的音频数据进行同步处理,并将处理后的数据发送给所述蓝牙音频播放器;蓝牙音频播放器被配置以播放所述蓝牙音频播放同步的装置处理后的音频数据。在该系统中,蓝牙音频播放同步的装置设置在单独的设备中,其可与系统中的蓝牙音频播放器配合使用。而蓝牙音频播放器可以为蓝牙音箱、蓝牙耳机等设备。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。