发明内容
本发明实施例提供一种传输音频数据的方法,用于实现在不占用额外存储器来存储静音数据的情况下的传输音频数据,从而节约存储空间,并且减轻CPU的负担。
一种传输音频数据的方法,包括以下步骤:
解码器向缓存单元写入音频数据;
在写满一个缓存单元时,解码器判断是否有中断标志;其中,发生音频传输中断后,解码器接收中断模块发送的中断标志;
当判断结果为是时解码器触发DMA传输。
一种传输音频数据的方法,应用于解码器侧,包括以下步骤:
解码器将音频数据写入缓存单元;
当写满一个缓存单元时,解码器判断是否有中断标志;其中,发生音频传输中断后,解码器接收中断模块发送的中断标志;
当判断结果为是时,解码器向DMA模块发送用于启动DMA传输的启动命令。
一种传输音频数据的方法,应用于中断芯片侧,包括以下步骤:
中断模块在DMA传输完毕一个缓存单元时产生DMA中断;
中断模块判断DMA传输完毕的缓存单元的下一个缓存单元中是否有写满的音频数据;
当判断结果为否时,中断模块确定发生音频传输中断,将中断标志发送给解码器。
一种传输音频数据的方法,应用于DMA芯片侧,包括以下步骤:
DMA模块接收解码器发送的包含缓存地址的启动命令;
DMA模块根据启动命令启动DMA传输,并传输所述缓存地址指向的已写满的缓存单元中的音频数据。
一种传输音频数据的装置,包括:
解码器,用于向缓存单元写入音频数据,直至写满,并在写满一个缓存单元时判断是否有中断标志,其中,发生音频传输中断后,解码器接收中断模块发送的中断标志;当判断结果为是时触发DMA传输;
缓存单元,用于存储解码器写入的音频数据;
中断模块,用于当发生音频传输中断时向解码器发送中断标志。
一种解码器,包括:
接收单元,用于在发生音频传输中断后,接收中断模块发送的中断标志;
写单元,用于将音频数据写入缓存单元;
判断单元,用于当写单元写满一个缓存单元时,判断是否有中断标志;
第一发送单元,用于当判断结果为是时,向DMA模块发送启动DMA传输的启动命令。
一种用于传输音频数据的中断芯片,包括:
DMA中断单元,用于在DMA传输完毕一个缓存单元时产生DMA中断,通过DMA中断判断DMA传输完毕的缓存单元的下一个缓存单元中是否有写满的音频数据,当判断结果为否时,确定发生音频传输中断;
第二发送单元,用于当确定发生音频传输中断时,将中断标志发送给解码器。
一种用于传输音频数据的DMA芯片,包括:
接收单元,用于接收解码器发送的启动命令,该启动命令包含缓存地址;
传输单元,用于根据启动命令启动DMA传输,并传输所述缓存地址指向的已写满的缓存单元中的音频数据。
本发明实施例中,解码器向缓存单元写入音频数据;在写满缓存单元时,解码器判断是否有中断标志;其中,发生音频传输中断后,解码器接收中断模块发送的中断标志;当判断结果为是时解码器触发DMA传输。由此可以实现在不占用额外存储器来保存静音数据的情况下的传输音频数据,从而节约存储空间。并且,在发生音频传输中断后,通过解码器来判断是否启动DMA进行传输,由此在DMA传输中断至下一轮DMA传输开始之前,只需要产生一次DMA中断,减轻了CPU的负担。
具体实施方式
本发明实施例中,解码器向缓存单元写入音频数据;在写满缓存单元时,解码器判断是否有中断标志;其中,发生音频传输中断后,解码器接收中断模块发送的中断标志;当判断结果为是时解码器触发DMA传输。由此可以在不占用额外存储器来保存静音数据的情况下实现传输音频数据,从而节约存储空间。并且,通过解码器来判断是否启动DMA进行传输,由此在DMA传输中断至下一轮DMA传输开始之前,只需要产生一次DMA中断,减轻了CPU的负担。
参见图1A,本实施例提供一种传输音频数据的装置,其包括解码器101、缓存模块102和中断模块103。
解码器101,用于向缓存模块102写入音频数据,在写满缓存单元时,判断是否有中断标志,其中,发生音频传输中断后,解码器101接收中断模块103发送的中断标志。当判断结果为是时触发DMA传输。解码器101将缓存模块102中一个缓存单元写满后,判断是否有中断标志,如果有,则判断是否已将需写满的缓存模块102中的缓存单元均写满,如果判断结果为是,则触发DMA模块启动DMA传输;如果没有中断标志,则判断是否有缓存单元需要写入音频数据,如果有,则继续向缓存模块102中的缓存单元写入音频数据,待写满一个缓存单元后再进行是否有中断标志的判断,如果没有,则不做处理,等待下一个任务。其中,解码器101还接收中断模块103发送的缓存地址,接收的缓存地址指向的是缓存模块102中刚进行DMA传输完毕的缓存单元。触发DMA模块时具体触发方式可以是,解码器101将缓存模块102中需写满的缓存单元均写满后,向DMA模块发送启动命令,以触发DMA模块启动DMA传输;或者以其它方式触发DMA模块启动DMA传输。如果传入解码器101的音频数据是经过编码的数据,解码器101向缓存模块102中写入音频数据之前或向缓存模块102中写入音频数据时需对音频数据进行解码。当音频传输连续时,每写满缓存模块102中一个缓存单元,都会判断是否有中断标志。
解码器101可以将每次接收到的由中断模块103发送的缓存地址按照接收时间的先后顺次存储在本地的存储单元中,按照存储顺序依次向缓存地址指向的缓存模块102中的缓存单元写入音频数据。
在本发明实施例中,如果解码器101在写入音频数据的过程中便可知道什么时候已写满,则可以不进行是否已写满的判断。当写满一个缓存单元,判断是否有中断标志,如果有中断标志,确定发生音频传输中断,在需写满的缓存单元均已写满后,触发DMA模块,以启动DMA传输。如果没有中断标志,则判断是否有需要写入的缓存模块102中的缓存单元,如果有,则继续向缓存模块102中的缓存单元写入音频数据。其中,发生音频传输中断后,需写满的缓存模块102中的缓存单元的数量可根据需要设定。
缓存模块102用于存储解码器101写入的音频数据。缓存模块102可以包含第一缓存单元、第二缓存单元等多个缓存单元。其中,一个缓存单元就是一段存储空间,其具体可以由一个存储器来实现,也可以以其它方式实现,此存储空间的大小可根据需要设定。解码器101向缓存模块102中写入音频数据,指的是向缓存模块102中的缓存单元写入音频数据。其中,DMA模块传输缓存模块102的缓存单元中的音频数据时,是按照缓存单元的排列顺序(逻辑顺序或物理顺序)顺次传输,例如,DMA模块刚传输完毕的是缓存模块102中第一缓存单元中的音频数据,则下一轮DMA传输则会传输缓存模块102中第二缓存单元中的音频数据。
中断模块103用于当发生音频传输中断时向解码器101发送中断标志。中断模块103具体用于在DMA模块停止DMA传输后,产生DMA中断,通过DMA中断查询缓存模块102中下一个缓存单元中是否有准备好的音频数据,其中,所述的准备好是指下一个缓存单元中已写满了音频数据。如果有准备好的音频数据,确定音频传输连续,则通过DMA中断将DMA模块刚传输完毕的缓存模块102中缓存单元的缓存地址发送给解码器101,以及,通过DMA中断将缓存模块102中下一个缓存单元的缓存地址发送给DMA模块,DMA模块将传输地址切换为接收到的该缓存单元的缓存地址,并根据该缓存地址指向的缓存单元中存储的音频数据进行DMA传输;如果下一个缓存单元中没有准备好的音频数据,则确定发生音频传输中断,中断模块103通过DMA中断向解码器101发送缓存地址及中断标志,发送方式可以是指令形式,其中,当发送缓存地址及中断标志时,可以是一条指令,包含缓存地址及中断标志,也可以是多条指令,其中分别包含缓存地址及中断标志。其中,该缓存地址指向的是DMA模块刚传输完毕的缓存模块102中的缓存单元。
所述传输音频数据的装置还包括DMA模块104。所述装置还与DAC模块105相连。参见图1B所示。其中,解码器101、缓存模块102、中断模块103和DMA模块104四者之间,每两者都有连接关系。
DMA模块104用于进行DMA传输,即通过DMA的方式传输音频数据。DMA模块104具体用于根据解码器101的启动命令启动DMA传输,将音频数据送入DAC模块105。每传输完缓存模块102中一个缓存单元里的音频数据时,DMA模块104停止DMA传输。
DAC模块105用于接收DMA模块104传输的音频数据,并将接收的数字形式的音频数据转换为模拟信号输出。
参见图2A,为图1A的本实施例传输音频数据装置中解码器101的内部结构示意图。即本实施例中解码器101还包括写单元1011、判断单元1012、第一发送单元1013和接收单元1014。所述解码器101还包括存储单元1015和解码单元1016。
写单元1011,用于将音频数据写入缓存模块102中的缓存单元。写单元1011具体用于根据存储单元1015中存储的缓存地址将音频数据写入缓存模块102中的缓存单元。
判断单元1012,用于判断是否有中断标志。判断单元1012具体用于在写单元1011根据缓存地址写满缓存模块102中的一个缓存单元后判断是否有中断标志,中断标志可以在由接收单元1014接收后存储在存储单元1015中,如果有中断标志,则判断是否已将需写满的缓存模块102中的缓存单元均写满,当判断结果为是时,触发第一发送单元1013向DMA模块104发送启动命令。如果没有中断标志,则判断存储单元1015中是否还有需写入的缓存模块102中的缓存单元的缓存地址,如果有则继续写入,如果没有则不做处理。
第一发送单元1013,用于当判断结果为是时向DMA模块104发送用于启动DMA传输的启动命令。第一发送单元1013具体用于在判断单元1012确定需写满的缓存模块102中的缓存单元均写满后,根据中断标志及判断单元1012的触发向DMA模块104发送启动命令,以启动DMA传输,该启动命令包含缓存地址。其中,该缓存地址是指向缓存模块102中已写满的缓存单元的缓存地址,
接收单元1014,用于接收中断模块103发送的中断标志。接收单元1014还用于接收中断模块103发送的缓存地址。
存储单元1015,用于存储预先设定的需写满的缓存模块102中缓存单元的数量、中断标志和任务列表,任务列表中包括中断模块103发送的缓存地址。
解码单元1016,用于将音频数据进行解码。可以在将音频数据写入缓存模块102之前对音频数据进行解码,也可以在将音频数据写入缓存模块102时对音频数据进行解码。
参见图2B,为图1A的本实施例传输音频数据装置中中断模块103的内部结构示意图。本实施例中中断模块103还包括DMA中断单元1031和第二发送单元1032。
DMA中断单元1031,用于生成DMA中断,通过DMA中断判断DMA传输完毕的缓存单元的下一个缓存单元中是否有写满的音频数据,当没有写满的音频数据时,确定发生音频传输中断。DMA中断单元1031具体用于在DMA模块104停止DMA传输后,生成DMA中断,通过DMA中断判断缓存模块102中下一个缓存单元是否有准备好的音频数据,其中,所述的准备好是指下一个缓存单元中已写满了音频数据。如果有准备好的音频数据,确定音频传输连续,触发第二发送单元1032将DMA模块104刚传输完毕的缓存模块102中缓存单元的缓存地址发送给解码器101,以及,将缓存模块102中下一个缓存单元的缓存地址发送给DMA模块104。如果下一个缓存单元中没有准备好的音频数据,则确定发生音频传输中断,DMA中断单元1031通过DMA中断触发第二发送单元1032向解码器101发送缓存地址及中断标志,其中,该缓存地址指向的是DMA模块104刚传输完毕的缓存模块102中的缓存单元。
第二发送单元1032,用于当发生音频传输中断时,将中断标志发送给解码器101。第二发送单元1032具体用于根据DMA中断单元1031的触发向解码器101发送缓存地址及中断标志。该缓存地址是指向DMA模块104刚传输完毕的缓存模块102中的缓存单元。具体发送方式可以是指令形式,指令是由DMA中断单元1031生成的。其中,发送缓存地址及中断标志时,可以发送一条指令,其中包含缓存地址及中断标志,也可以发送多条指令,其中分别包含缓存地址及中断标志。第二发送单元1032还用于当音频传输连续时,向DMA模块104发送缓存地址,其中,该缓存地址是指向DMA模块104刚传输完毕的缓存模块102中的缓存单元的下一个缓存单元。
参见图2C,为图1B的本实施例传输音频数据装置中DMA模块104的内部结构示意图。本实施例中DMA模块104包括接收单元1041和传输单元1042。
接收单元1041,用于接收解码器101发送的启动命令,该启动命令包含缓存地址。其中,该缓存地址是指向缓存模块102中已写满的缓存单元,接收单元1041还用于当音频传输连续时接收中断模块103发送的缓存地址,该缓存地址是指向DMA模块104刚传输完毕的缓存模块102中的缓存单元的下一个缓存单元。
传输单元1042,用于根据启动命令启动DMA传输,并传输所述缓存地址指向的缓存单元中的音频数据。传输单元1042具体用于将传输地址切换为接收到的缓存地址,以DMA的方式向DAC模块105传输所述缓存地址指向的缓存单元中的音频数据。
下面通过实现流程来介绍传输音频数据的方法。
本发明实施例通过生成并发送中断标志来实现传输音频数据。参见图3所示,传输音频数据的主要方法流程如下:
步骤301:解码器101向缓存单元写入数据。
其中,缓存模块102中包含多个缓存单元。
DMA模块104将中断模块103发送的缓存地址写入存储单元1015,存储方式可以是任务列表形式,也可以是其它形式。解码器101按照存储的先后顺序向缓存地址指向的缓存单元写入音频数据。
步骤302:在写满缓存单元时,解码器101判断是否有中断标志。其中,发生音频传输中断后,解码器101接收中断模块103发送的中断标志。
当缓存模块102中一个缓存单元的音频数据传输完毕后,DMA模块104停止DMA传输,此时如果中断模块103查询到缓存模块102中下一个缓存单元中没有准备好的音频数据,则确定发生音频传输中断。
其中,中断模块103可以通过DMA中断,以发送指令的方式将中断标志发送给解码器101。一并发送的还有缓存地址,该缓存地址指向DMA模块104刚传输完毕的缓存模块102中的缓存单元。
步骤303:当判断结果为是时,解码器101触发DMA传输。
解码器101需写满的可以是缓存模块102中的一个缓存单元,也可以是缓存模块102中多个缓存单元,也可以是缓存模块102中所有的缓存单元。此需写满的缓存单元的数量可根据需要设定。因为存在如以上所述的多种可能的实施方式,所以以下用三个具体实施例来详细介绍实施过程。
本发明实施例中,发生音频传输中断后,设置解码器101需写满缓存模块102中的一个缓存单元,在写满一个缓存单元后即可启动DMA传输。例如,缓存模块102中共有4个缓存单元。DMA模块104刚传输完的是缓存模块102的第一缓存单元中的音频数据。参见图4,详细方法流程如下:
预先设置,当发生音频传输中断后,解码器101需写满缓存模块102中一个缓存单元后即可启动DMA进行传输。
步骤401:DMA模块104传输缓存模块102的第一缓存单元中的音频数据完毕后停止DMA传输。
步骤402:中断模块103产生DMA中断。
步骤403:中断模块103通过DMA中断判断缓存模块102中第二缓存单元是否有准备好的音频数据。如果没有,则确定音频传输中断,继续步骤404,如果有,则确定音频传输连续,继续步骤405和407。其中,准备好的音频数据是指第二缓存单元中写满了音频数据。
步骤404:中断模块103通过DMA中断向解码器101发送指令,该指令包含缓存地址及中断标志。该缓存地址是指向缓存模块102中的第一缓存单元。继续步骤406和408。
步骤405:中断模块103通过DMA中断向解码器101发送指令,该指令包含缓存地址。该缓存地址是指向缓存模块102中的第一缓存单元。继续步骤406和408。
步骤406:解码器101将该缓存地址写入存储单元1015中的任务列表。
步骤407:中断模块103通过DMA中断将下一个缓存单元(即第二缓存单元)的缓存地址发送给DMA模块104。此步骤可以与步骤405同步进行,或以任意先后顺序执行。继续步骤412。
步骤408:解码器101判断是否已写满一个缓存单元。如果是,则继续步骤410,否则继续步骤409。其中,如果解码器101在写入数据的过程中便可知道什么时候已写满,则可以不进行判断,本步骤可以跳过。
步骤409:解码器101根据存储单元1015中的任务列表向缓存模块102中的缓存单元写入音频数据。继续步骤408。
因DMA模块104刚传输完毕的是第一缓存单元,而又获知第二缓存单元中没有音频数据,则可知其后的缓存单元中均没有音频数据。解码器101向缓存单元中写入音频数据时是按顺序写入,因此本步骤中解码器101是向第二缓存单元中写入音频数据。
其中,如果传入解码器101的音频数据是经过编码的音频数据,解码器101向缓存模块102中写入音频数据之前或向缓存模块102中写入音频数据时需对音频数据进行解码。
步骤410:解码器101判断是否有中断标志。如果有,则继续步骤411,如果没有,则继续步骤409。
其中,在没有中断标志、继续步骤409之前,解码器101需判断任务列表中是否有需要写入的缓存单元,如果有,则继续步骤409,向缓存单元中写入音频数据,如果没有,则不做处理。
步骤411:解码器101向DMA模块104发送启动命令。该启动命令包含解码器101刚写满的缓存单元的缓存地址。继续步骤412。
步骤412:DMA模块104将传输地址切换为接收到的缓存地址。
步骤413:DMA模块104启动DMA传输,以传输该缓存地址指向的缓存单元中的音频数据。
在以上实施例中,发生音频中断后,解码器101只需写满一个缓存单元即可进行下一轮DMA传输,音频中断时间不长,等待时间比较短暂。
本发明实施例中,发生音频传输中断后,设置解码器101需要将缓存模块102中所有的缓存单元均写满,方可启动DMA进行传输。例如,缓存模块102中共有4个缓存单元。DMA模块104刚传输完的是缓存模块102中的第一缓存单元中的音频数据。参见图5,详细方法流程如下:
预先设置,当发生音频传输中断后,解码器101需写满缓存模块102中所有4个缓存单元后方可启动DMA进行传输。
步骤501:DMA模块104传输缓存模块102的第一缓存单元中的音频数据完毕后停止DMA传输。
步骤502:中断模块103产生DMA中断。
步骤503:中断模块103通过DMA中断查询第二缓存单元,确定发生音频传输中断。
缓存模块102中第一缓存单元中的音频数据传输完毕后,下一次DMA传输应该传输缓存模块102中第二缓存单元中的音频数据。而此时中断模块103查询到第二缓存单元中没有准备好的音频数据,则确定发生音频传输中断。
步骤504:中断模块103通过DMA中断向解码器101发送指令,该指令包含缓存地址及中断标志。该缓存地址是指向缓存模块102中的第一缓存单元。
步骤505:解码器101将该缓存地址写入存储单元1015中的任务列表。
步骤506:解码器101判断是否已写满一个缓存单元。如果不是,继续步骤507,否则继续步骤508。如果解码器101在写入数据的过程中便可知道什么时候已写满,则可以不进行判断,本步骤可以跳过。
步骤507:解码器101根据任务列表中的缓存地址向缓存模块102中的缓存单元写入音频数据。继续步骤506。
因DMA模块104刚传输完毕的是第一缓存单元,而又获知第二缓存单元中没有音频数据,则可知其后的缓存单元中均没有音频数据。解码器101向缓存单元中写入音频数据时是按顺序写入,因此本步骤中解码器101是向第二缓存单元中写入音频数据。
步骤508:解码器101判断并确定有中断标志。
因为已经发生音频传输中断,中断模块103发送的指令中一定包含中断标志,所以解码器101也一定确定有中断标志。
步骤509:解码器101判断需写满的缓存单元是否均写满。如果不是,继续步骤510,否则继续步骤511。
其中,因需要将缓存模块102中所有缓存单元均写满,预先可以将所有缓存单元的缓存地址依次存储在存储单元1015中,存储形式可以是任务列表形式,解码器101根据存储的缓存地址向缓存模块102中的缓存单元写入音频数据,每写完一个缓存单元,可以从任务列表中将该缓存单元的缓存地址删去。如果以这种方式执行,则解码器101在写入的过程中会知道是否已写满所有的缓存单元,所以本步骤可以跳过。
步骤510:解码器101根据任务列表中的缓存地址向缓存模块102中的缓存单元写入音频数据。继续步骤509。
步骤511:解码器101向DMA模块104发送启动命令。该启动命令包含缓存地址。继续步骤512。
步骤512:DMA模块104将传输地址切换为接收到的缓存地址。
步骤513:DMA模块104根据启动命令启动DMA传输。
以上实施例中,在发生音频中断之后,解码器101需将缓存模块102中所有的缓存单元均写满之后才能启动DMA传输,这样会使音频发生中断的时间间隔延长,减少DMA中断的频繁发生,减轻CPU的负担。
本发明实施例中,设置解码器101需要写满缓存模块102中的三个缓存单元。例如,缓存模块102中共有4个缓存单元。DMA模块104刚传输完的是缓存模块102中的第一缓存单元中的音频数据。参见图6,详细方法流程如下:
用户预先设置,当发生音频传输中断后,解码器101需写满缓存模块102中三个缓存单元后方可启动DMA进行传输。
步骤601:DMA模块104传输缓存模块102的第一缓存单元中的音频数据完毕后停止DMA传输。
步骤602:中断模块103产生DMA中断。
步骤603:中断模块103通过DMA中断查询第二缓存单元,确定发生音频传输中断。
缓存模块102中第一缓存单元中的音频数据传输完毕后,下一次DMA传输应该传输缓存模块102中第二缓存单元中的音频数据。而此时中断模块103查询到第二缓存单元中没有准备好的音频数据,而解码器101向缓存单元中写入音频数据是顺次写入,如果第二缓存单元中没有音频数据,则可以确定其后的缓存单元中均没有音频数据。因此确定发生音频传输中断。
步骤604:中断模块103通过DMA中断向解码器101发送指令,该指令包含缓存地址及中断标志。该缓存地址是指向缓存模块102中的第一缓存单元。
步骤605:解码器101将缓存地址写入存储单元1015中的任务列表。
步骤606:解码器101判断是否已写满一个缓存单元。如果不是,继续步骤607,否则继续步骤608。如果解码器101在写入数据的过程中便可知道什么时候已写满,则可以不进行判断,本步骤可以跳过。
步骤607:解码器101根据任务列表中的缓存地址向缓存模块102中的缓存单元写入音频数据。继续步骤606。
因DMA模块104刚传输完毕的是第一缓存单元,而又获知第二缓存单元中没有音频数据,则可知其后的缓存单元中均没有音频数据。解码器101向缓存单元中写入音频数据时是按顺序写入,因此本步骤中解码器101是向第二缓存单元中写入音频数据。
步骤608:解码器101判断并确定有中断标志。
因为已经发生音频传输中断,中断模块103发送的指令中一定包含中断标志,所以解码器101也一定确定有中断标志。
步骤609:解码器101判断写满的缓存单元的数量是否已达到设定值3。如果不是,继续步骤610,否则继续步骤611。
其中,因为用户已经预先设置,所以解码器101已预先存储需写满的缓存单元的数量。
步骤610:解码器101根据任务列表中的缓存地址向缓存模块102中的缓存单元写入音频数据,并在写满后更新写满的缓存单元的数量。继续步骤609。
步骤611:解码器101向DMA模块104发送启动命令。该启动命令包含缓存地址。继续步骤612。
步骤612:DMA模块104将传输地址切换为接收到的缓存地址。
步骤613:DMA模块104根据启动命令启动DMA传输,将音频数据传送至DAC模块105。
步骤614:DAC模块105将接收到的音频数据进行输出。
其中,在输出之前,DAC模块105需将接收到的数字形式的音频数据转换为模拟信号。
以上实施例中,在发生音频传输中断后,解码器101需写满缓存模块102中三个缓存单元后启动DMA传输,其中,此需写满的缓存单元的数量可根据需要设定,从而可以根据不同需要设定不同的需写满的缓存单元的数量,灵活性更大,更利于实际应用。
本发明实施例中,解码器向缓存单元写入音频数据;在写满缓存单元时,解码器判断是否有中断标志;其中,发生音频传输中断后,解码器接收中断模块发送的中断标志;当判断结果为是时解码器触发DMA传输。由此可以在不占用额外存储器来保存静音数据的情况下实现传输音频数据,从而节约存储空间。并且,通过解码器101来判断是否启动DMA进行传输,由此在DMA传输完毕至下一个DMA传输开始之前,只需要产生一次中断,减轻了CPU的负担。并且,解码器101还接收中断模块103发送的缓存地址,将该缓存地址存入存储单元1015,解码器101按照存储单元1015中存储的缓存地址依次向缓存模块102中的缓存单元写入音频数据。解码器101可以在写满缓存模块102中一个缓存单元后启动DMA传输,音频中断时间不长,等待时间比较短暂;或者在写满缓存模块102中多个缓存单元后启动DMA传输,从而可以根据不同需要设定不同的需写满的缓存单元的数量,灵活性更大,更利于实际应用;或者在写满缓存模块102中所有缓存单元后启动DMA传输,使音频发生中断的时间间隔延长,减少DMA中断的频繁发生,减轻CPU的负担。
用于实现本发明实施例的软件可以存储于软盘、硬盘、光盘和闪存等存储介质。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。