CN102403008B - 音频播放中数据流断点续接的方法和系统、fifo控制器 - Google Patents
音频播放中数据流断点续接的方法和系统、fifo控制器 Download PDFInfo
- Publication number
- CN102403008B CN102403008B CN201010287038.3A CN201010287038A CN102403008B CN 102403008 B CN102403008 B CN 102403008B CN 201010287038 A CN201010287038 A CN 201010287038A CN 102403008 B CN102403008 B CN 102403008B
- Authority
- CN
- China
- Prior art keywords
- data
- audio data
- audio
- unit
- prediction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 29
- 239000000872 buffer Substances 0.000 claims abstract description 102
- 230000003139 buffering effect Effects 0.000 claims description 8
- 230000003247 decreasing effect Effects 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 7
- 238000013213 extrapolation Methods 0.000 description 4
- 239000013589 supplement Substances 0.000 description 4
- 230000000903 blocking effect Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000009499 grossing Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000001502 supplementing effect Effects 0.000 description 1
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Communication Control (AREA)
Abstract
本发明提供了一种音频播放中数据流断点续接的方法和系统、以及一种FIFO控制器,所述方法包括:将主存中存储的音频数据写入到FIFO缓存单元中;FIFO缓存单元对从主存中写入的音频数据进行缓存,并将音频数据以先入先出队列的形式输入至音频设备;当FIFO缓存单元中缓存的音频数据为空时,根据之前输出的音频数据进行二次曲线预测获得预测数据,并将预测数据输入至音频设备。通过本发明,使得音频播放过程中数据流在中断的情况能够衔接,且输出的数据符合音频的播放规律,解决了卡音现象,提高了音频播放的质量,满足用户的听觉需求。
Description
技术领域
本发明涉及音频数据传输控制技术领域,特别是涉及一种音频播放中数据流断点续接的方法和系统、以及一种FIFO控制器。
背景技术
在实际的音频播放中,通常对应有一个FIFO缓存单元来存储要播放的音频数据,FIFO控制器将缓存的音频数据通过的音频接口(一般是I2S接口)传输到音频设备的声卡上,实现音频数据流的播放。一般的,利用直接存储器访问(DMA,DirectMemoryAccess)控制器或中央处理器(CPU),通过总线仲裁的方式访问主存,将主存中的音频数据写入到FIFO缓存单元中。但是由于主存同时和多个总线主设备(busmaster)相连,各个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是本发明一种音频播放中数据流断点续接的系统实施例二的结构示意图;
图6是本发明一种FIFO控制器实施例的结构示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
本发明的核心构思之一在于:加入了FIFO的容错机制,能够在FIFO缓存单元为空的情况下进行数据传输的有效补充,由于相邻音频数据之间具有曲线平滑规律,因此补充的数据根据之前输出的数据进行二次曲线预测获得,符合音频的播放规律,在保证播放连续的情况下满足用户的听觉需求。
参照图1,示出了本发明一种音频播放中数据流断点续接的方法实施例一的流程图,包括:
步骤101,将主存中存储的音频数据写入到FIFO缓存单元中;
主存中存储有待播放的音频数据,当有播放需求时,先将主存中存储的音频数据写入到FIFO缓存单元。一般的,利用DMA或者CPU通过总线仲裁的方式访问主存,将其存储的音频数据写入到FIFO缓存单元中。
步骤102,FIFO缓存单元对从主存中写入的音频数据进行缓存,并将音频数据以先入先出队列的形式输入至音频设备;
FIFO缓存单元是一种先进先出的双口数据缓存器,第一个进入其内的数据第一个被移出,其中一个存储器的输入口,另一个口是存储器的输出口。它与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单。它只能顺序写入数据,顺序的读出数据,其数据地址由内部读写指针自动加1完成,不能像普通存储器那样可以由地址线决定读取或写入某个指定的地址。
步骤103,当FIFO缓存单元中缓存的音频数据为空时,根据之前输出的音频数据进行二次曲线预测获得预测数据,并将预测数据输入至音频设备。
由于FIFO缓存单元中存储的数据是通过总线从主存内得到的,而其它总线设备的数据获取也来自于主存,它们之间通过总线仲裁竞争对主线的占用。因此,音频数据不一定能够以及写入到FIFO缓存单元中。在本发明实施例中,加入FIFO的容错机制,在FIFO缓存单元为空的情况进行数据有效的补充,由于相邻音频数据之间具有曲线平滑规律,因此补充的数据是根据之前输出的数据进行二次曲线预测得出的。
二次曲线法预测法是研究时间序列观察值数据随时间变动,呈现一种由高到低再到高(或者由低到高再到低)的趋势变化的曲线外推预测方法。由于时间序列观察值的散点图呈现抛物线形状,所以也称之为二次抛物线预测。
具体的,所述二次曲线预测为:将预置数目的输出时刻作为各个X值,将与输出时刻对应的音频数据和/或预测数据作为各个Y值;通过对各个X、Y值进行最小二乘曲线拟合,获得下一输出时刻对应的Y值,作为预测数据。假设曲线趋势外推预测模型为:
Yt=a+bXt+cXt 2+dXt 3+eXt 4+......
式中,Yt为t时刻音频数据的预测值(因变量),Xt为时间变量(自变量),t=1,2,...,n。
当c=d=...=0时,Yt=a+bXt,为线性趋势外推预测法的模型;
当d=e=...=0时,Yt=a+bXt+cXt 2,为二次曲线外推预测法的模型。
如图2所示,为本发明一种二次曲线预测的原理示意图。图(a)和图(b)分别给出了两种预测趋势,一种递趋势,一种递减趋势。从图中可以看出,当需要有数据输出时,根据之前相邻输出时刻输出的音频数据值,依据二次曲线的变化趋势,即可预测到下一时刻输出值。在本发明实施例中,选取之前的三至四个数据进行预测,需要说明的是,预测的参考值的个数可以是多个,本发明对此不做限定。当预置数目多时,预测直较为准确。通过最小二乘曲线拟合确定预测值的具体计算方法是属于现有技术的内容,本发明在此不再赘述。
需要说明的是,上述音频数据的计数是按照声音的类型来得到具体的单位的。如果是16bit的立体声,那么一个音频数据为32bit(对应一个word)的数据;如果是8bit的立体声,则一个音频数据是16bit的数据;如果是8bit的单声道,则一个音频数据为8bit的数据。
通过本发明实施例,解决了传统方法中音频数据流在播放过程中传输中断的现象,使音频在中断的情况能够正常地输出数据,由于输出的数据经过了二次曲线预测获得,能够符合音频的播放规律,能够满足听觉需求。
参照图3,示出了本发明一种音频播放中数据流断点续接的方法实施例二的流程图,包括:
步骤301,将主存中存储的音频数据写入到FIFO缓存单元中;
步骤302,FIFO缓存单元对从主存中写入的音频数据进行缓存,并将音频数据以先入先出队列的形式输入至音频设备;
步骤303,当FIFO缓存单元中缓存的音频数据为空时,根据之前输出的音频数据进行二次曲线预测获得预测数据;
步骤304,将预测数据输入至音频设备,且每输出一个预测数据,计数器的计数累加1;
在本发明实施例二中,通过二次曲线预测将预测数据输入至音频设备后,为了保证主存再次有音频数据写入空的FIFO缓存单元后,FIFO控制器能够正常的输出数据,增加了计数器。计数器的主要目的是记录FIFO缓存数据为空后,FIFO控制器通过趋势预测补充输出给音频设备数据的个数,补充输出一个数据计数器加1。
步骤305,当再次有音频数据写入FIFO缓存单元时,判断计数器的计数是否为零;若否,则执行步骤306;若是,则执行步骤307;
步骤306,写入一个音频数据,相应删除该音频数据并将计数器的计数递减1,直到计数器的计数为零,将FIFO缓存单元中后续的音频数据输入至音频设备;
当计数器的计数不为0时,说明已有预测数据补充输出,补充输出的个数为计数器的计数个数n。如果此时通过DMA或者CPU返回给FIFO缓存单元断点传输的后续音频数据时,就会有多余的数据出现,多余的数据与已经输入至音频设备的预测数据一一对应,因此需要把返回的音频数据删除掉n个。则返回一个音频数据就删除一个,并且计数器的计数减1,直到计数器的计数为0为止。此时,如果计数器为0,再有数据写入FIFO缓存单元中就直接写如FIFO中。
从主存中返回到FIFO缓存单元的数据,以burst进行计算,通常一个burst返回1、2、4或8个word。可以理解的是,通常情况下,FIFO为空后,再次由主存写入FIFO缓存单元的音频数据的个数大于之前预测输出的数据个数时,则能够保证删除相应的音频数据后,FIFO缓存单元中还缓存有能够继续传输的音频数据,以供后续传输给音频设备进行播放。
步骤307,直接将FIFO缓存单元中的音频数据输入至音频设备。
当计数器为0时,表示没有通过二次曲线趋势预测输出数据,或者已经删除了与预测数据一一对应的新写入的音频数据,则当前FIFO缓存单元的状态是正常的,可以直接将FIFO缓存单元中的音频数据以先入先出队列的形式输入至音频设备。
在本发明实施例中,依据计数器的计数,对新写入FIFO缓存单元中的音频数据进行相应的删除,使得传输的数据量保持一致,保证了音乐播放中的连贯性。
需要说明的是,如果新写入FIFO缓存的音频数据的个数小于计数器的个数时,则通过删除FIFO缓存单元中的数据再次为空,按照写入音频数据的个数计数器的计数减少相应的数目,后续的传输还是通过预测进行输出。
则在本发明的另一个优选实施例中,写入一个音频数据,相应删除该音频数据并将计数器的计数递减1后,FIFO缓存单元为空时,根据之前输出的和/或写入的音频数据进行二次曲线预测获得预测数据,并将预测数据输入至音频设备。
例如,当前计数器计数为3,从主存返回FIFO缓存单元两个数据,相应删除所述数据后,计数器为1,此时,没有后续数据再次写入FIFO缓存单元,FIFO再次为空。假设预置通过三个数据进行预测,则依据之前写入的两个音频数据和输出的倒数第三个预测数据进行二次曲线预测,得到下一时刻需要输出的预测数据。也就是说,由于之前输出的数据也为预测数据,为了保证预测的准确性,此时不再按照输出数据进行预测,而是将输出的预测数据结合新写入的音频数据进行预测。可以理解的是,当有足够的音频数据写入FIFO缓存单元中时,可以仅依据写入的音频数据进行预测。例如,计数器为4,从主存返回FIFO缓存单元4个数据,相应删除所述数据后,计数器为0。同样,此时没有后续数据再次写入FIFO缓存单元,FIFO再次为空,则直接依据新写入的最后三个音频数据进行预测。
参照图4,示出了本发明一种音频播放中数据流断点续接的系统实施例一的结构示意图包括:主存41、数据读取控制单元42、FIFO控制器43和音频设备44;其中,
所述主存41,用于存储音频数据;
所述数据读取控制单元42,用于将主存中存储的音频数据写入到FIFO缓存单元中;
所述FIFO控制器43包括:
FIFO缓存单元431,用于对从主存中写入的音频数据进行缓存;
音频数据输出单元432,用于当FIFO缓存单元中缓存的音频数据不为空时,将音频数据以先入先出队列的形式输入至音频设备;
预测数据输出单元433,用于当FIFO缓存单元中缓存的音频数据为空时,根据之前输出的音频数据进行二次曲线预测获得预测数据,并将预测数据输入至音频设备;
所述音频设备44,用于接收FIFO控制器输出的音频数据或预测数据,并进行音频播放。
参照图5,示出了本发明一种音频播放中数据流断点续接的系统实施例二的结构示意图包括:主存51、数据读取控制单元52、FIFO控制器53和音频设备54;其中,
所述主存51,用于存储音频数据;
所述数据读取控制单元52,用于将主存中存储的音频数据写入到FIFO缓存单元中;
所述FIFO控制器53包括:
FIFO缓存单元531,用于对从主存中写入的音频数据进行缓存;
音频数据输出单元532,用于当FIFO缓存单元中缓存的音频数据不为空时,将音频数据以先入先出队列的形式输入至音频设备;
预测数据输出单元533,用于当FIFO缓存单元中缓存的音频数据为空时,根据之前输出的音频数据进行二次曲线预测获得预测数据,并将预测数据输入至音频设备;
所述音频设备54,用于接收FIFO控制器输出的音频数据或预测数据,并进行音频播放。
通常的,所述数据读取控制单元为DMA控制器或者CPU。所述FIFO控制器通过音频接口55将音频数据输入至音频设备的声卡上。
在本发明的一个优选实施例中,参照图5,所述FIFO控制器53还包括:
计数器534,用于每当预测数据输出单元输出一个预测数据时,将计数累加1。计数器的主要目的是记录FIFO缓存数据为空后,FIFO控制器补充输出给音频设备数据的个数,即预测数据输出单元输出预测数据的个数。补充输出一个预测数据,计数器加1,当计数器为0时表示没有通过数据输出单元补充输出数据,也即当前FIFO缓存的状态是正常的。
进一步,所述FIFO控制器53还包括:
判断单元535,用于当再次有音频数据写入FIFO缓存单元时,判断计数器的计数是否为零;若是,则直接触发音频数据输出单元532;若否,则触发数据删除单元536;
数据删除单元536,用于写入一个音频数据,相应删除该音频数据,直到计数器的计数为零,并在FIFO缓存单元不为空时,触发音频数据输出单元;
其中,数据删除单元每删除一个音频数据,计数器的计数递减1。
在本发明的一个优选实施例中,数据删除单元536写入一个音频数据,相应删除该音频数据并将计数器的计数递减1后,在FIFO缓存单元为空时,触发预测数据输出单元533根据之前输出的预测数据和/或写入的音频数据进行二次曲线预测获得预测数据,并将预测数据输入至音频设备。
进一步,所述二次曲线预测为:
将预置数目的输出时刻作为各个X值,将与输出时刻对应的音频数据和/或预测数据作为各个Y值;通过对各个X、Y值进行最小二乘曲线拟合,获得下一输出时刻对应的Y值,作为预测数据。
参照图6,示出了本发明一种FIFO控制器实施例的结构示意图,包括:
FIFO缓存单元61,用于对从主存中写入的音频数据进行缓存;
音频数据输出单元62,用于当FIFO缓存单元中缓存的音频数据不为空时,将音频数据以先入先出队列的形式输入至音频设备;
预测数据输出单元63,用于当FIFO缓存单元中缓存的音频数据为空时,根据之前输出的音频数据进行二次曲线预测获得预测数据,并将预测数据输入至音频设备。
进一步,所述FIFO控制器还包括:
计数器64,用于每当预测数据输出单元输出一个预测数据时,将计数累加1,以及每当数据删除单元删除一个音频数据时,将计数递减1;
判断单元65,用于当再次有音频数据写入FIFO缓存单元时,判断计数器的计数是否为零;若是,则直接触发音频数据输出单元;若否,则触发音频数据输出单元;
数据删除单元66,用于写入一个音频数据,相应删除该音频数据,直到计数器的计数为零,并在FIFO缓存单元不为空时,触发音频数据输出单元。
在本发明的一个优选是实施例中,数据删除单元写入一个音频数据,相应删除该音频数据并将计数器的计数递减1后,在FIFO缓存单元为空时,触发预测数据输出单元根据之前输出的预测数据和/或写入的音频数据进行二次曲线预测获得预测数据,并将预测数据输入至音频设备。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于系统和装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上对本发明所提供的一种音频播放中数据流断点续接的方法和系统、以及一种FIFO控制器,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (8)
1.一种音频播放中数据流断点续接的方法,其特征在于,包括:
将主存中存储的音频数据写入到FIFO缓存单元中;
FIFO缓存单元对从主存中写入的音频数据进行缓存,并将音频数据以先入先出队列的形式输入至音频设备;
当FIFO缓存单元中缓存的音频数据为空时,根据之前输出的音频数据进行二次曲线预测获得预测数据,并将预测数据输入至音频设备;
每输出一个预测数据,计数器的计数累加1;
当再次有音频数据写入FIFO缓存单元,判断计数器的计数是否为零;若是,则直接将FIFO缓存单元中的音频数据输入至音频设备;若否,则写入一个音频数据,相应删除该音频数据并将计数器的计数递减1,直到计数器的计数为零;当FIFO缓存单元不为空时,将FIFO缓存单元中后续的音频数据输入至音频设备。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
写入一个音频数据,相应删除该音频数据并将计数器的计数递减1后,FIFO缓存单元为空时,根据之前输出的预测数据和/或写入的音频数据进行二次曲线预测获得预测数据,并将预测数据输入至音频设备。
3.如权利要求2所述的方法,其特征在于,所述二次曲线预测为:
将预置数目的输出时刻作为各个X值,将与输出时刻对应的音频数据和/或预测数据作为各个Y值;
通过对各个X、Y值进行最小二乘曲线拟合,获得下一输出时刻对应的Y值,作为预测数据。
4.一种音频播放中数据流断点续接的系统,其特征在于,包括:主存、数据读取控制单元、FIFO控制器和音频设备;其中,
所述主存,用于存储音频数据;
所述数据读取控制单元,用于将主存中存储的音频数据写入到FIFO缓存单元中;
所述FIFO控制器包括:
FIFO缓存单元,用于对从主存中写入的音频数据进行缓存;
音频数据输出单元,用于当FIFO缓存单元中缓存的音频数据不为空时,将音频数据以先入先出队列的形式输入至音频设备;
预测数据输出单元,用于当FIFO缓存单元中缓存的音频数据为空时,根据之前输出的音频数据进行二次曲线预测获得预测数据,并将预测数据输入至音频设备;
计数器,用于每当预测数据输出单元输出一个预测数据时,将计数累加1;
判断单元,用于当再次有音频数据写入FIFO缓存单元时,判断计数器的计数是否为零;若是,则直接触发音频数据输出单元;若否,则触发数据删除单元;
数据删除单元,用于写入一个音频数据,相应删除该音频数据,直到计数器的计数为零,并在FIFO缓存单元不为空时,触发音频数据输出单元;其中,数据删除单元每删除一个音频数据,计数器的计数递减1;所述音频设备,用于接收FIFO控制器输出的音频数据或预测数据,并进行音频播放。
5.如权利要求4所述的系统,其特征在于,
数据删除单元写入一个音频数据,相应删除该音频数据并将计数器的计数递减1后,在FIFO缓存单元为空时,触发预测数据输出单元根据之前输出的预测数据和/或写入的音频数据进行二次曲线预测获得预测数据,并将预测数据输入至音频设备。
6.如权利要求5所述的系统,其特征在于,所述二次曲线预测为:
将预置数目的输出时刻作为各个X值,将与输出时刻对应的音频数据和/或预测数据作为各个Y值;
通过对各个X、Y值进行最小二乘曲线拟合,获得下一输出时刻对应的Y值,作为预测数据。
7.一种FIFO控制器,其特征在于,包括:
FIFO缓存单元,用于对从主存中写入的音频数据进行缓存;
音频数据输出单元,用于当FIFO缓存单元中缓存的音频数据不为空时,将音频数据以先入先出队列的形式输入至音频设备;
预测数据输出单元,用于当FIFO缓存单元中缓存的音频数据为空时,根据之前输出的音频数据进行二次曲线预测获得预测数据,并将预测数据输入至音频设备;
计数器,用于每当预测数据输出单元输出一个预测数据时,将计数累加1,以及每当数据删除单元删除一个音频数据时,将计数递减1;
判断单元,用于当再次有音频数据写入FIFO缓存单元时,判断计数器的计数是否为零;若是,则直接触发音频数据输出单元;若否,则触发音频数据删除单元;
数据删除单元,用于写入一个音频数据,相应删除该音频数据,直到计数器的计数为零,并在FIFO缓存单元不为空时,触发音频数据输出单元。
8.如权利要求7所述的FIFO控制器,其特征在于,
数据删除单元写入一个音频数据,相应删除该音频数据并将计数器的计数递减1后,在FIFO缓存单元为空时,触发预测数据输出单元根据之前输出的预测数据和/或写入的音频数据进行二次曲线预测获得预测数据,并将预测数据输入至音频设备。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010287038.3A CN102403008B (zh) | 2010-09-17 | 2010-09-17 | 音频播放中数据流断点续接的方法和系统、fifo控制器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010287038.3A CN102403008B (zh) | 2010-09-17 | 2010-09-17 | 音频播放中数据流断点续接的方法和系统、fifo控制器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102403008A CN102403008A (zh) | 2012-04-04 |
CN102403008B true CN102403008B (zh) | 2015-11-25 |
Family
ID=45885146
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010287038.3A Expired - Fee Related CN102403008B (zh) | 2010-09-17 | 2010-09-17 | 音频播放中数据流断点续接的方法和系统、fifo控制器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102403008B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104219581A (zh) * | 2014-09-01 | 2014-12-17 | 无锡天脉聚源传媒科技有限公司 | 一种更新播放队列的方法及装置 |
CN108459837A (zh) * | 2017-02-22 | 2018-08-28 | 深圳市中兴微电子技术有限公司 | 一种音频数据处理方法和装置 |
CN111885255A (zh) * | 2020-06-30 | 2020-11-03 | 北京小米移动软件有限公司 | 音频播放控制方法、音频播放控制装置及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101175012A (zh) * | 2006-11-01 | 2008-05-07 | 大唐移动通信设备有限公司 | 一种分帧媒体数据传输方法、系统及装置 |
CN101325631A (zh) * | 2007-06-14 | 2008-12-17 | 华为技术有限公司 | 一种实现丢包隐藏的方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006126143A2 (en) * | 2005-05-24 | 2006-11-30 | Koninklijke Philips Electronics N.V. | Caching for low power consumption grid peer-to-peer devices |
-
2010
- 2010-09-17 CN CN201010287038.3A patent/CN102403008B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101175012A (zh) * | 2006-11-01 | 2008-05-07 | 大唐移动通信设备有限公司 | 一种分帧媒体数据传输方法、系统及装置 |
CN101325631A (zh) * | 2007-06-14 | 2008-12-17 | 华为技术有限公司 | 一种实现丢包隐藏的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN102403008A (zh) | 2012-04-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9367499B2 (en) | System on chip for enhancing quality of service and method of controlling the same | |
US10078470B2 (en) | Signal transfer device that maintains order of a read request and write request in posted write memory access | |
US20080077720A1 (en) | Isochronous memory access with variable channel priorities and timers | |
US6845414B2 (en) | Apparatus and method of asynchronous FIFO control | |
US7684884B2 (en) | Audio processor, input/output processing apparatus, and information processing apparatus | |
JP2009540681A (ja) | データ通信フロー制御の装置および方法 | |
JP2010027032A (ja) | Fifo装置及びfifoバッファへのデータ格納方法 | |
US20160196231A1 (en) | System and method for bus bandwidth management in a system on a chip | |
KR102106541B1 (ko) | 공유 리소스 액세스 중재 방법 및 이를 수행하기 위한 공유 리소스 액세스 중재 장치 및 공유 리소스 액세스 중재 시스템 | |
CN102403008B (zh) | 音频播放中数据流断点续接的方法和系统、fifo控制器 | |
US5596725A (en) | Fifo queue having replaceable entries | |
JP6523707B2 (ja) | ラップ読出しから連続読出しを行うメモリサブシステム | |
US6907481B2 (en) | System for bit-rate controlled digital stream playback and method thereof | |
JP2007179496A (ja) | データ記録装置及びfifo機能実現プログラム | |
US7099972B2 (en) | Preemptive round robin arbiter | |
US20200403942A1 (en) | Controller for ordering out-of-order transactions in soc | |
CN103076990A (zh) | 一种基于fifo缓存结构的数据回放装置 | |
US6996640B1 (en) | Method and system for asynchronously transferring data | |
US6094696A (en) | Virtual serial data transfer mechanism | |
CN115934596A (zh) | 一种非并发外设接口直接存储访问的电路及方法 | |
US20040268355A1 (en) | Method of executing concurrent tasks by a subsystem managed by a central processor | |
CN111699468A (zh) | 先入先出存储器的数据存储方法、设备及存储介质 | |
US20240331746A1 (en) | Direct memory access (dma) circuit and operation method thereof | |
KR100484134B1 (ko) | 선입선출기를 이용한 비동기 데이터 인터페이스 장치 | |
US11537544B2 (en) | Communicating non-isochronous data over an isochronous channel |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20151125 Termination date: 20190917 |