音频播放中数据流断点续接的方法和系统、FIFO控制器技术方案

技术编号:7272230 阅读:232 留言:0更新日期:2012-04-15 19:47
本发明专利技术提供了一种音频播放中数据流断点续接的方法和系统、以及一种FIFO控制器,所述方法包括:将主存中存储的音频数据写入到FIFO缓存单元中;FIFO缓存单元对从主存中写入的音频数据进行缓存,并将音频数据以先入先出队列的形式输入至音频设备;当FIFO缓存单元中缓存的音频数据为空时,根据之前输出的音频数据进行二次曲线预测获得预测数据,并将预测数据输入至音频设备。通过本发明专利技术,使得音频播放过程中数据流在中断的情况能够衔接,且输出的数据符合音频的播放规律,解决了卡音现象,提高了音频播放的质量,满足用户的听觉需求。

【技术实现步骤摘要】

本专利技术涉及音频数据传输控制
,特别是涉及一种音频播放中数据流断点续接的方法和系统、以及一种FIFO控制器。
技术介绍
在实际的音频播放中,通常对应有一个FIFO缓存单元来存储要播放的音频数据, FIFO控制器将缓存的音频数据通过的音频接口(一般是I2S接口)传输到音频设备的声卡上,实现音频数据流的播放。一般的,利用直接存储器访问(DMA,Direct Memory Access) 控制器或中央处理器(CPU),通过总线仲裁的方式访问主存,将主存中的音频数据写入到 FIFO缓存单元中。但是由于主存同时和多个总线主设备(bus master)相连,各个master 通过总线从主存获取相应的数据,通过总线仲裁竞争对主线的占用。因为访问优先级、传输带宽、DMA或者CPU的延时等原因,音频数据不一定能够及时读到FIFO中,因此就会出现 FIFO缓存为空的可能,一旦FIFO缓存为空,音频接口上输出的数据为空,音频流会被中断, 表现为声音播放中的卡音现象的出现。当再次有数据流输入至FIFO缓存中,后续的音频播放会将原本的播放时间拉长。通常的,现有技术的解决方法是增大FIFO缓存的容量,一次请求多个数据进行大量数据的缓存,保证有足够的数据量传输给音频设备。单纯的增大请求量和FIFO缓存空间,当访问主存等待较长的时间时,也会出现FIFO缓存数据量为空的情况,同样会产生数据流中断的现象。总之,需要本领域技术人员迫切解决的一个技术问题就是如何能够提供一种音频播放中数据流中断的处理方法,解决音频播放中的卡音现象,以提高音频播放的质量。
技术实现思路
本专利技术所要解决的技术问题是提供一种音频播放中数据流断点续接的方法和系统、以及一种FIFO控制器,解决音频播放中的卡音现象,以提高音频播放的质量。为了解决上述问题,本专利技术公开了一种音频播放中数据流断点续接的方法,包括将主存中存储的音频数据写入到FIFO缓存单元中;FIFO缓存单元对从主存中写入的音频数据进行缓存,并将音频数据以先入先出队列的形式输入至音频设备;当FIFO缓存单元中缓存的音频数据为空时,根据之前输出的音频数据进行二次曲线预测获得预测数据,并将预测数据输入至音频设备。优选的,所述方法还包括每输出一个预测数据,计数器的计数累加1。优选的,所述方法还包括当再次有音频数据写入FIFO缓存单元,判断计数器的计数是否为零;若是,则直接将FIFO缓存单元中的音频数据输入至音频设备;若否,则写入一个音频数据,相应删除该音频数据并将计数器的计数递减1,直到计数器的计数为零;当FIFO缓存单元不为空时,将FIFO缓存单元中后续的音频数据输入至音频设备。优选的,所述方法还包括写入一个音频数据,相应删除该音频数据并将计数器的计数递减1后,FIFO缓存单元为空时,根据之前输出的预测数据和/或写入的音频数据进行二次曲线预测获得预测数据,并将预测数据输入至音频设备。优选的,所述二次曲线预测为将预置数目的输出时刻作为各个X值,将与输出时刻对应的音频数据和/或预测数据作为各个Y值;通过对各个X、Y值进行最小二乘曲线拟合,获得下一输出时刻对应的Y值,作为预测数据。相应的,本专利技术还公开了一种音频播放中数据流断点续接的系统,包括主存、数据读取控制单元、FIFO控制器和音频设备;其中,所述主存,用于存储音频数据;所述数据读取控制单元,用于将主存中存储的音频数据写入到FIFO缓存单元中;所述FIFO控制器包括FIFO缓存单元,用于对从主存中写入的音频数据进行缓存;音频数据输出单元,用于当FIFO缓存单元中缓存的音频数据不为空时,将音频数据以先入先出队列的形式输入至音频设备;预测数据输出单元,用于当FIFO缓存单元中缓存的音频数据为空时,根据之前输出的音频数据进行二次曲线预测获得预测数据,并将预测数据输入至音频设备;所述音频设备,用于接收FIFO控制器输出的音频数据或预测数据,并进行音频播放。优选的,所述FIFO控制器还包括计数器,用于每当预测数据输出单元输出一个预测数据时,将计数累加1。优选的,所述FIFO控制器还包括判断单元,用于当再次有音频数据写入FIFO缓存单元时,判断计数器的计数是否为零;若是,则直接触发音频数据输出单元;若否,则触发数据删除单元;数据删除单元,用于写入一个音频数据,相应删除该音频数据,直到计数器的计数为零,并在FIFO缓存单元不为空时,触发音频数据输出单元;其中,数据删除单元每删除一个音频数据,计数器的计数递减1。优选的,数据删除单元写入一个音频数据,相应删除该音频数据并将计数器的计数递减1后,在FIFO缓存单元为空时,触发预测数据输出单元根据之前输出的预测数据和 /或写入的音频数据进行二次曲线预测获得预测数据,并将预测数据输入至音频设备。优选的,所述二次曲线预测为将预置数目的输出时刻作为各个X值,将与输出时刻对应的音频数据和/或预测数据作为各个Y值;通过对各个X、Y值进行最小二乘曲线拟合,获得下一输出时刻对应的Y值,作为预测数据。此外,本专利技术还公开了一种FIFO控制器,包括FIFO缓存单元,用于对从主存中写入的音频数据进行缓存;音频数据输出单元,用于当FIFO缓存单元中缓存的音频数据不为空时,将音频数据以先入先出队列的形式输入至音频设备;预测数据输出单元,用于当FIFO缓存单元中缓存的音频数据为空时,根据之前输出的音频数据进行二次曲线预测获得预测数据,并将预测数据输入至音频设备。优选的,所述FIFO控制器还包括计数器,用于每当预测数据输出单元输出一个预测数据时,将计数累加1,以及每当数据删除单元删除一个音频数据时,将计数递减1 ;判断单元,用于当再次有音频数据写入FIFO缓存单元时,判断计数器的计数是否为零;若是,则直接触发音频数据输出单元;若否,则触发音频数据输出单元;数据删除单元,用于写入一个音频数据,相应删除该音频数据,直到计数器的计数为零,并在FIFO缓存单元不为空时,触发音频数据输出单元。优选的,数据删除单元写入一个音频数据,相应删除该音频数据并将计数器的计数递减1后,在FIFO缓存单元为空时,触发预测数据输出单元根据之前输出的预测数据和 /或写入的音频数据进行二次曲线预测获得预测数据,并将预测数据输入至音频设备。与现有技术相比,本专利技术具有以下优点本专利技术在FIFO缓存单元不为空的情况下直接将音频数据以先入先出队列的形式输入至音频设备;在FIFO缓存单元为空的情况下进行数据传输的有效补充,由于相邻音频数据之间具有曲线平滑规律,因此补充的数据根据之前输出的数据进行二次曲线预测获得。通过预测数据使得数据流在中断的情况能够衔接,解决了音频播放中的卡音现象,以提高音频播放的质量。并且,由于输出的预测数据符合音频的播放规律,在保证播放连续的情况下不影响用户的听觉需求。进一步,本专利技术通过计数器记录输出预测数据的个数,对新写入FIFO缓存单元中的音频数据按计数进行相应的删除,使得传输的数据量保持一致,保证了音乐播放中的连贯性。附图说明图1是本专利技术一种音频播放中数据流断点续接的方法实施例一的流程图;图2是本专利技术一种二次曲线预测的原理示意图;图3是本专利技术一种音频播放中数据流断点续接的方法实施例二的流程图;图4是本专利技术一种音频播放中数据流断点续接的系统实施例一的结构示意图;图5本文档来自技高网...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:艾国
申请(专利权)人:北京中星微电子有限公司
类型:发明
国别省市:

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

1
相关领域技术