国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種音頻輸出方法及系統(tǒng)的制作方法

      文檔序號(hào):6777628閱讀:157來源:國知局
      專利名稱:一種音頻輸出方法及系統(tǒng)的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及語音通信技術(shù)領(lǐng)域,尤其涉及一種音頻輸出方法及系統(tǒng)。
      背景技術(shù)
      現(xiàn)有技術(shù)在實(shí)現(xiàn)音頻解碼輸出時(shí),一般由中央處理單元(CPU,CentralProcessing Unit)/數(shù)字信號(hào)處理器(DSP,Digital Signal Processor)將解碼后左右聲道的數(shù)字音頻信號(hào)(PCM,Pulse Code Modulation)進(jìn)行交錯(cuò)后寫入輸出緩沖單元,然后由直接內(nèi)存訪問單元(DMA,Direct Memory Access)將其讀出,并發(fā)送給音頻數(shù)字/模擬轉(zhuǎn)換器(Audio DAC,Audio Digital/Analog Converter),由Audio DAC將所述PCM數(shù)據(jù)轉(zhuǎn)換為音頻模擬信號(hào),再通過揚(yáng)聲器輸出給用戶。
      現(xiàn)有技術(shù)音頻解碼輸出過程中,如對(duì)音頻格式為WMA(Windows MediaAudio)的音頻解碼輸出,由于對(duì)WMA格式的當(dāng)前幀編碼數(shù)據(jù)進(jìn)行解碼輸出時(shí),DMA需要始終從輸出緩沖單元讀取前一幀數(shù)據(jù),因此,為CPU控制簡便的目的,一般使用回轉(zhuǎn)式緩沖單元(Ping-Pong Buffer)。該回轉(zhuǎn)型緩沖單元共有兩個(gè)緩沖單元,分別為輸出緩沖單元0(Buffer 0)和輸出緩沖單元1(Buffer1),當(dāng)輸出緩沖單元0中存放了由CPU寫入的第一幀雙聲道PCM數(shù)據(jù)后,DMA從輸出緩沖單元0中讀取數(shù)據(jù),發(fā)送給Audio DAC,Audio DAC完成數(shù)字/模擬(D/A)轉(zhuǎn)換,獲得音頻模擬信號(hào),該音頻模擬信號(hào)經(jīng)過功率放大后由揚(yáng)聲器輸出給用戶,而此時(shí)CPU正在對(duì)第二幀音頻壓縮碼流數(shù)據(jù)進(jìn)行解碼,獲得所述第二幀的PCM數(shù)據(jù),并將該數(shù)據(jù)從工作緩沖單元(Working Buffer)中讀出,進(jìn)行雙聲道交錯(cuò)后發(fā)送到輸出緩沖單元1中,當(dāng)所述DMA將輸出緩沖單元0中的數(shù)據(jù)讀取完以后,將立刻開始從輸出緩沖單元1中讀取數(shù)據(jù),以保證揚(yáng)聲器播放聲音的連貫性,此時(shí),CPU可以開始對(duì)第三幀音頻壓縮碼流數(shù)據(jù)進(jìn)行解碼,獲得所述第三幀的PCM數(shù)據(jù),并將該數(shù)據(jù)從工作緩沖單元(WorkingBuffer)中讀出,進(jìn)行雙聲道交錯(cuò)后發(fā)送到輸出緩沖單元0中,當(dāng)DMA從輸出緩沖單元1讀取數(shù)據(jù)完畢后,再從輸出緩沖單元0開始讀取數(shù)據(jù),也就是說,在WMA軟件解碼過程中,所有交錯(cuò)后奇數(shù)幀的雙聲道PCM數(shù)據(jù)都存放在輸出緩沖單元0中,所有交錯(cuò)后偶數(shù)幀的雙聲道PCM數(shù)據(jù)都存放在輸出緩沖單元1中,DMA交替地從輸出緩沖單元0和輸出緩沖單元1中讀取數(shù)據(jù),CPU和DMA只能對(duì)不同的輸出緩沖單元進(jìn)行操作,而不會(huì)在某個(gè)時(shí)刻同時(shí)對(duì)輸出緩沖單元0或輸出緩沖單元1進(jìn)行操作。
      這種回轉(zhuǎn)式緩沖單元的結(jié)構(gòu)雖然簡單,但輸出緩沖單元0和輸出緩沖單元1的長度都需要為一幀雙聲道PCM數(shù)據(jù)的長度,對(duì)于雙聲道音頻數(shù)據(jù),一個(gè)聲道最大的幀長為2048點(diǎn),那么,一個(gè)輸出緩沖單元就需要容納4096PCM采樣點(diǎn),回轉(zhuǎn)式緩沖單元就需要容納8192PCM采樣點(diǎn),在16位的處理模式下,需要占用內(nèi)存16KB,對(duì)于更高精度的24位的處理模式,則需要占用內(nèi)存24KB。因此,現(xiàn)有音頻解碼輸出系統(tǒng),無法通過減小音頻解碼時(shí)所占用的輸出緩沖單元來降低系統(tǒng)成本。
      綜上,現(xiàn)有技術(shù)在實(shí)現(xiàn)音頻輸出過程中,占用輸出緩沖單元過大,系統(tǒng)成本較高。

      發(fā)明內(nèi)容
      本發(fā)明提供一種音頻輸出方法及系統(tǒng),用以解決現(xiàn)有技術(shù)實(shí)現(xiàn)音頻輸出過程中,占用輸出緩沖單元過大以及系統(tǒng)成本較高的問題。
      本發(fā)明方法包括A.將數(shù)字音頻信號(hào)數(shù)據(jù)寫入輸出緩沖單元;B.從所述輸出緩沖單元中交錯(cuò)讀取同一幀的第一聲道和第二聲道的數(shù)字音頻信號(hào)數(shù)據(jù),將該數(shù)字音頻信號(hào)數(shù)據(jù)輸出。
      所述步驟A包括將第一幀數(shù)字音頻信號(hào)數(shù)據(jù)寫入輸出緩沖單元,從第二幀數(shù)字音頻信號(hào)數(shù)據(jù)開始,根據(jù)所述輸出緩沖單元中的數(shù)據(jù)被讀取的數(shù)據(jù)量,將每幀數(shù)字音頻信號(hào)數(shù)據(jù)寫入輸出緩沖單元。
      所述輸出緩沖單元包括第一輸出緩沖單元和第二輸出緩沖單元;則,步驟A中所述將第一幀數(shù)字音頻信號(hào)數(shù)據(jù)寫入輸出緩沖單元的步驟為將第一幀第一聲道的數(shù)字音頻信號(hào)數(shù)據(jù)寫入第一輸出緩沖單元,將所述第一幀第二聲道的數(shù)字音頻信號(hào)數(shù)據(jù)寫入第二輸出緩沖單元;所述第一輸出緩沖單元和第二輸出緩沖單元中的每一輸出緩沖單元只能緩沖一幀數(shù)字音頻信號(hào)中的一個(gè)聲道的數(shù)據(jù)量。
      從第二幀數(shù)字音頻信號(hào)數(shù)據(jù)開始,所述步驟A包括A1、當(dāng)所述第一輸出緩沖單元和第二輸出緩沖單元的前半個(gè)區(qū)間的數(shù)據(jù)已全部被讀取時(shí),將一幀第一聲道的前半部分和后半部分?jǐn)?shù)字音頻信號(hào)數(shù)據(jù)分別寫入所述第一輸出緩沖單元和第二輸出緩沖單元的前半個(gè)區(qū)間;A2、根據(jù)所述第一輸出緩沖單元的后半個(gè)區(qū)間中的數(shù)據(jù)已被讀取的數(shù)據(jù)量,將所述一幀第二聲道的前半部分?jǐn)?shù)字音頻信號(hào)數(shù)據(jù)寫入所述第一輸出緩沖單元的后半個(gè)區(qū)間;A3、當(dāng)所述第二輸出緩沖單元的后半個(gè)區(qū)間中的數(shù)據(jù)已全部被讀取時(shí),將所述第二聲道的后半部分?jǐn)?shù)字音頻信號(hào)數(shù)據(jù)寫入所述第二輸出緩沖單元的后半個(gè)區(qū)間;A4、當(dāng)所述第一輸出緩沖單元中的數(shù)據(jù)全部被讀取時(shí),將下一幀第一聲道的數(shù)字音頻信號(hào)數(shù)據(jù)寫入所述第一輸出緩沖單元中;A5、根據(jù)所述第二輸出緩沖單元中的數(shù)據(jù)已被讀取的數(shù)據(jù)量,將所述下一幀第二聲道的數(shù)字音頻信號(hào)數(shù)據(jù)寫入所述第二輸出緩沖單元中。
      預(yù)先設(shè)置兩個(gè)指針,用于指向所述輸出緩沖單元中讀取數(shù)據(jù)的位置,所述指針的值為所述讀取數(shù)據(jù)的地址;所述步驟B中,通過預(yù)先設(shè)置的第一指針從所述輸出緩沖單元中讀取同一幀第一聲道的數(shù)字音頻信號(hào)數(shù)據(jù),通過預(yù)先設(shè)置的第二指針從所述輸出緩沖單元中讀取所述同一幀第二聲道的數(shù)字音頻信號(hào)數(shù)據(jù),其中,所述第一指針和所述第二指針交替讀取數(shù)字音頻信號(hào)數(shù)據(jù)。
      所述步驟A2包括A21、根據(jù)當(dāng)前所述第一指針的值,獲得當(dāng)前需要寫入所述第一輸出緩沖單元中的所述一幀第二聲道的前半部分?jǐn)?shù)字音頻信號(hào)數(shù)據(jù)的數(shù)據(jù)量;A22、根據(jù)所述數(shù)據(jù)量將所述一幀第二聲道的前半部分?jǐn)?shù)字音頻信號(hào)數(shù)據(jù)寫入所述第一輸出緩沖單元的后半個(gè)區(qū)間,并重復(fù)步驟A21,直到所述一幀第二聲道的前半部分?jǐn)?shù)字音頻信號(hào)數(shù)據(jù)全部寫入所述第一輸出緩沖單元的后半個(gè)區(qū)間。
      所述步驟A5包括A51、根據(jù)當(dāng)前所述第一指針的值,獲得當(dāng)前需要寫入所述第二輸出緩沖單元中的所述下一幀第二聲道的數(shù)字音頻信號(hào)數(shù)據(jù)的數(shù)據(jù)量;A52、根據(jù)所述數(shù)據(jù)量將所述下一幀第二聲道的數(shù)字音頻信號(hào)數(shù)據(jù)寫入所述第二輸出緩沖單元中,并重復(fù)步驟A51,直到當(dāng)所述第一指針的值為所述第一輸出緩沖單元的首地址時(shí),將所述下一幀第二聲道的數(shù)字音頻信號(hào)數(shù)據(jù)全部寫入所述第二輸出緩沖單元中。
      本發(fā)明系統(tǒng),包括中央處理單元、輸出緩沖單元和直接內(nèi)存訪問單元,所述中央處理單元,用于將數(shù)字音頻信號(hào)數(shù)據(jù)寫入所述輸出緩沖單元;所述直接內(nèi)存訪問單元,用于從所述輸出緩沖單元中交錯(cuò)讀取同一幀的第一聲道和第二聲道的數(shù)字音頻信號(hào)數(shù)據(jù),將該數(shù)字音頻信號(hào)數(shù)據(jù)輸出。
      所述中央處理單元包括第一處理單元,用于將第一幀數(shù)字音頻信號(hào)數(shù)據(jù)寫入所述輸出緩沖單元;第二處理單元,用于從第二幀數(shù)字音頻信號(hào)數(shù)據(jù)開始,根據(jù)所述輸出緩沖單元中的數(shù)據(jù)被讀取的數(shù)據(jù)量,將每幀數(shù)字音頻信號(hào)數(shù)據(jù)寫入所述輸出緩沖單元。
      所述輸出緩沖單元包括第一輸出緩沖單元和第二輸出緩沖單元;則,所述第一處理單元包括第一幀第一聲道數(shù)據(jù)寫入單元,用于將所述第一幀第一聲道的數(shù)字音頻信號(hào)數(shù)據(jù)寫入所述第一輸出緩沖單元;第一幀第二聲道數(shù)據(jù)寫入單元,用于將所述第一幀第二聲道的數(shù)字音頻信號(hào)數(shù)據(jù)寫入所述第二輸出緩沖單元;所述第一輸出緩沖單元和第二輸出緩沖單元中的每一輸出緩沖單元只能緩沖一幀數(shù)字音頻信號(hào)中的一個(gè)聲道的數(shù)據(jù)量。
      所述第二處理單元包括第一單元,用于當(dāng)所述第一輸出緩沖單元和第二輸出緩沖單元的前半個(gè)區(qū)間的數(shù)據(jù)已全部被讀取時(shí),將一幀第一聲道的前半部分和后半部分?jǐn)?shù)字音頻信號(hào)數(shù)據(jù)分別寫入所述第一輸出緩沖單元和第二輸出緩沖單元的前半個(gè)區(qū)間;第二單元,用于根據(jù)所述第一輸出緩沖單元的后半個(gè)區(qū)間中的數(shù)據(jù)已被讀取的數(shù)據(jù)量,將所述一幀第二聲道的前半部分?jǐn)?shù)字音頻信號(hào)數(shù)據(jù)寫入所述第一輸出緩沖單元的后半個(gè)區(qū)間;第三單元,用于當(dāng)所述第二輸出緩沖單元的后半個(gè)區(qū)間中的數(shù)據(jù)已全部被讀取時(shí),將所述第二聲道的后半部分?jǐn)?shù)字音頻信號(hào)數(shù)據(jù)寫入所述第二輸出緩沖單元的后半個(gè)區(qū)間;第四單元,用于當(dāng)所述第一輸出緩沖單元中的數(shù)據(jù)全部被讀取時(shí),將下一幀第一聲道的數(shù)字音頻信號(hào)數(shù)據(jù)寫入所述第一輸出緩沖單元中;第五單元,用于根據(jù)所述第二輸出緩沖單元中的數(shù)據(jù)已被讀取的數(shù)據(jù)量,將所述下一幀第二聲道的數(shù)字音頻信號(hào)數(shù)據(jù)寫入所述第二輸出緩沖單元中。
      在所述直接內(nèi)存訪問單元中預(yù)先設(shè)置兩個(gè)指針,用于指向所述輸出緩沖單元中讀取數(shù)據(jù)的位置,所述指針的值為所述讀取數(shù)據(jù)的地址;
      則,所述直接內(nèi)存訪問單元包括第一指針單元,用于讀取一幀第一聲道的一個(gè)數(shù)字音頻信號(hào)樣本數(shù)據(jù),并觸發(fā)第二指針單元;第二指針單元,用于讀取所述一幀第二聲道的一個(gè)數(shù)字音頻信號(hào)樣本數(shù)據(jù),并觸發(fā)第一指針單元。
      所述第二單元包括第一獲得數(shù)據(jù)量單元,用于根據(jù)當(dāng)前所述第一指針的值,獲得當(dāng)前需要寫入所述第一輸出緩沖單元中的所述一幀第二聲道的前半部分?jǐn)?shù)字音頻信號(hào)數(shù)據(jù)的數(shù)據(jù)量;第一寫入數(shù)據(jù)單元,用于根據(jù)所述數(shù)據(jù)量將所述一幀第二聲道的前半部分?jǐn)?shù)字音頻信號(hào)數(shù)據(jù)寫入所述第一輸出緩沖單元的后半個(gè)區(qū)間,并觸發(fā)所述第一獲得數(shù)據(jù)量單元,直到所述一幀第二聲道的前半部分?jǐn)?shù)字音頻信號(hào)數(shù)據(jù)全部寫入所述第一輸出緩沖單元的后半個(gè)區(qū)間。
      所述第五單元包括第二獲得數(shù)據(jù)量單元,用于根據(jù)當(dāng)前所述第一指針的值,獲得當(dāng)前需要寫入所述第二輸出緩沖單元中的所述下一幀第二聲道的數(shù)字音頻信號(hào)數(shù)據(jù)的數(shù)據(jù)量;第二寫入數(shù)據(jù)單元,用于根據(jù)所述數(shù)據(jù)量將所述下一幀第二聲道的數(shù)字音頻信號(hào)數(shù)據(jù)寫入所述第二輸出緩沖單元中,并觸發(fā)所述第二獲得數(shù)據(jù)量單元,直到當(dāng)所述第一指針的值為所述第一輸出緩沖單元的首地址時(shí),將所述下一幀第二聲道的數(shù)字音頻信號(hào)數(shù)據(jù)全部寫入所述第二輸出緩沖單元中。
      本發(fā)明通過將數(shù)字音頻信號(hào)數(shù)據(jù)寫入輸出緩沖單元,從所述輸出緩沖單元中交錯(cuò)讀取同一幀的第一聲道和第二聲道的數(shù)字音頻信號(hào)數(shù)據(jù),將該數(shù)字音頻信號(hào)數(shù)據(jù)輸出的技術(shù)方案,解決了現(xiàn)有技術(shù)實(shí)現(xiàn)音頻輸出過程中,占用輸出緩沖單元過大以及系統(tǒng)成本較高的問題,使得在音頻輸出過程中所占用的輸出緩沖單元,比現(xiàn)有技術(shù)音頻輸出過程中所占用的輸出緩沖單元減小了一半,降低了音頻解碼系統(tǒng)的成本。


      圖1為本發(fā)明方法的流程示意圖;圖2為本發(fā)明方法具體實(shí)施例的流程示意圖;圖3為本發(fā)明方法具體實(shí)施例中輸出緩沖單元0和輸出緩沖單元1存儲(chǔ)初始幀的PCM數(shù)據(jù)的示意圖;圖4為本發(fā)明方法具體實(shí)施例中輸出緩沖單元0和輸出緩沖單元1存儲(chǔ)每個(gè)循環(huán)周期中的第一幀的PCM數(shù)據(jù)的示意圖;圖5為本發(fā)明方法具體實(shí)施例中輸出緩沖單元0和輸出緩沖單元1存儲(chǔ)每個(gè)循環(huán)周期中的第二幀的PCM數(shù)據(jù)的示意圖;圖6為本發(fā)明系統(tǒng)的結(jié)構(gòu)示意圖。
      具體實(shí)施例方式
      本發(fā)明的核心思想為CPU將數(shù)字音頻信號(hào)數(shù)據(jù)寫入輸出緩沖單元,DMA從所述輸出緩沖單元中交錯(cuò)讀取同一幀的第一聲道和第二聲道的數(shù)字音頻信號(hào)數(shù)據(jù),將該數(shù)字音頻信號(hào)數(shù)據(jù)輸出,使得在音頻輸出過程中所占用的輸出緩沖單元,比現(xiàn)有技術(shù)音頻輸出過程中所占用的輸出緩沖單元減小了一半,從而降低了音頻解碼系統(tǒng)的成本。
      參見圖1,本發(fā)明方法包括步驟S101、CPU/DSP將數(shù)字音頻信號(hào)數(shù)據(jù)寫入輸出緩沖單元;CPU/DSP將第一幀數(shù)字音頻信號(hào)數(shù)據(jù)寫入輸出緩沖單元,從第二幀數(shù)字音頻信號(hào)數(shù)據(jù)開始,根據(jù)所述輸出緩沖單元中的數(shù)據(jù)被讀取的數(shù)據(jù)量,將每幀數(shù)字音頻信號(hào)數(shù)據(jù)寫入輸出緩沖單元;其中,所述輸出緩沖單元包括第一輸出緩沖單元和第二輸出緩沖單元;所述CPU將所述第一幀第一聲道的PCM數(shù)據(jù)寫入第一輸出緩沖單元,將所述第一幀第二聲道的PCM數(shù)據(jù)寫入第二輸出緩沖單元;所述第一輸出緩沖單元和第二輸出緩沖單元中的每一輸出緩沖單元只能緩沖一幀數(shù)字音頻信號(hào)中的一個(gè)聲道的數(shù)據(jù)量;從第二幀數(shù)字音頻信號(hào)數(shù)據(jù)開始,CPU將每幀數(shù)字音頻信號(hào)數(shù)據(jù)寫入輸出緩沖單元的步驟包括步驟一當(dāng)所述第一輸出緩沖單元和第二輸出緩沖單元的前半個(gè)區(qū)間的數(shù)據(jù)已全部被讀取時(shí),將一幀第一聲道的前半部分和后半部分?jǐn)?shù)字音頻信號(hào)數(shù)據(jù)分別寫入所述第一輸出緩沖單元和第二輸出緩沖單元的前半個(gè)區(qū)間;步驟二根據(jù)所述第一輸出緩沖單元的后半個(gè)區(qū)間中的數(shù)據(jù)已被讀取的數(shù)據(jù)量,將所述一幀第二聲道的前半部分?jǐn)?shù)字音頻信號(hào)數(shù)據(jù)寫入所述第一輸出緩沖單元的后半個(gè)區(qū)間;步驟三當(dāng)所述第二輸出緩沖單元的后半個(gè)區(qū)間中的數(shù)據(jù)已全部被讀取時(shí),將所述第二聲道的后半部分?jǐn)?shù)字音頻信號(hào)數(shù)據(jù)寫入所述第二輸出緩沖單元的后半個(gè)區(qū)間;步驟四當(dāng)所述第一輸出緩沖單元中的數(shù)據(jù)全部被讀取時(shí),將下一幀第一聲道的數(shù)字音頻信號(hào)數(shù)據(jù)寫入所述第一輸出緩沖單元中;步驟五根據(jù)所述第二輸出緩沖單元中的數(shù)據(jù)已被讀取的數(shù)據(jù)量,將所述下一幀第二聲道的數(shù)字音頻信號(hào)數(shù)據(jù)寫入所述第二輸出緩沖單元中;S102、DMA從所述輸出緩沖單元中交錯(cuò)讀取同一幀的第一聲道和第二聲道的數(shù)字音頻信號(hào)數(shù)據(jù),將該數(shù)字音頻信號(hào)數(shù)據(jù)輸出;較佳地,預(yù)先為DMA設(shè)置兩個(gè)指針,用于指向所述輸出緩沖單元中讀取數(shù)據(jù)的位置,所述指針的值為所述讀取數(shù)據(jù)的地址;DMA通過預(yù)先設(shè)置的第一指針從所述輸出緩沖單元中讀取同一幀第一聲道的數(shù)字音頻信號(hào)數(shù)據(jù),通過預(yù)先設(shè)置的第二指針從所述輸出緩沖單元中讀取所述同一幀第二聲道的數(shù)字音頻信號(hào)數(shù)據(jù),其中,所述第一指針和所述第二指針交替讀取數(shù)字音頻信號(hào)數(shù)據(jù);
      則,所述步驟二包括步驟a、CPU根據(jù)當(dāng)前所述第一指針的值,獲得當(dāng)前需要寫入所述第一輸出緩沖單元中的所述一幀第二聲道的前半部分?jǐn)?shù)字音頻信號(hào)數(shù)據(jù)的數(shù)據(jù)量;b、CPU根據(jù)所述數(shù)據(jù)量將所述一幀第二聲道的前半部分?jǐn)?shù)字音頻信號(hào)數(shù)據(jù)寫入所述第一輸出緩沖單元的后半個(gè)區(qū)間,并重復(fù)步驟a,直到所述一幀第二聲道的前半部分?jǐn)?shù)字音頻信號(hào)數(shù)據(jù)全部寫入所述第一輸出緩沖單元的后半個(gè)區(qū)間;所述步驟五包括a’、CPU根據(jù)當(dāng)前所述第一指針的值,獲得當(dāng)前需要寫入所述第二輸出緩沖單元中的所述下一幀第二聲道的數(shù)字音頻信號(hào)數(shù)據(jù)的數(shù)據(jù)量;b’、CPU根據(jù)所述數(shù)據(jù)量將所述下一幀第二聲道的數(shù)字音頻信號(hào)數(shù)據(jù)寫入所述第二輸出緩沖單元中,并重復(fù)步驟a’,直到當(dāng)所述第一指針的值為所述第一輸出緩沖單元的首地址時(shí),將所述下一幀第二聲道的數(shù)字音頻信號(hào)數(shù)據(jù)全部寫入所述第二輸出緩沖單元中。
      參見圖2,為本發(fā)明方法具體實(shí)施方式
      的流程示意圖,該方法應(yīng)用于對(duì)WMA音頻壓縮碼流數(shù)據(jù)的音頻解碼系統(tǒng)中,本發(fā)明方法預(yù)先在DMA中設(shè)置了兩個(gè)指針P0和P1的初始值分別為輸出緩沖單元0和輸出緩沖單元1的首地址,并且設(shè)置輸出緩沖單元0和輸出緩沖單元1的長度都為L;所述指針P0和P1為DMA在任何一特定時(shí)刻都操縱的兩個(gè)指針,用于從緩沖單元取值并交錯(cuò),即P0取一個(gè)PCM樣本且P0加1,然后P1取一個(gè)PCM樣本且P1加1,P0和P1交錯(cuò)取值,在這里,可以設(shè)定輸出緩沖單元0和輸出緩沖單元1的首地址分別為B0和B1,L為單聲道一幀PCM樣本的長度;參見圖3,CPU將初始幀的第一聲道和第二聲道的PCM數(shù)據(jù)分別寫入輸出緩沖單元0和輸出緩沖單元1中,這里所述PCM數(shù)據(jù)就是音頻壓縮碼流數(shù)據(jù)經(jīng)過CPU處理后的解壓縮音頻樣本數(shù)據(jù);那么,從初始幀的下一幀的PCM數(shù)據(jù)開始,每兩幀PCM數(shù)據(jù)作為一個(gè)周期,那么該方法在處理每個(gè)周期中的第一幀PCM數(shù)據(jù)和第二幀PCM數(shù)據(jù)時(shí),包括步驟S201、DMA將輸出緩沖單元0中第一聲道和輸出緩沖單元1中第二聲道的PCM數(shù)據(jù)進(jìn)行交錯(cuò),并將交錯(cuò)后的PCM數(shù)據(jù)發(fā)送給Audio DAC;所述DMA將輸出緩沖單元0中第一聲道和輸出緩沖單元1中第二聲道的PCM數(shù)據(jù)進(jìn)行交錯(cuò)是指每個(gè)時(shí)鐘交替發(fā)送第一聲道和中第二聲道的一個(gè)PCM樣本數(shù)據(jù)給所述Audio DAC;S202、CPU對(duì)第一幀音頻壓縮碼流數(shù)據(jù)進(jìn)行解碼;S203、當(dāng)P0和P1的值分別大于所述輸出緩沖單元0和輸出緩沖單元1的中間地址時(shí),CPU將第一幀第一聲道的前半部分PCM數(shù)據(jù)和后半部分PCM數(shù)據(jù)分別寫入輸出緩沖單元0和輸出緩沖單元1的首地址到中間地址的范圍內(nèi);當(dāng)CPU完成第一幀第一聲道的解碼后,檢查P0和P1,如果他們的值都大于所述輸出緩沖單元0和輸出緩沖單元1的中間地址,即P0和P1滿足P0>B0+L/2&amp;&amp;P1>B1+L/2則CPU將第一幀第一聲道的前半部分PCM數(shù)據(jù)和后半部分PCM數(shù)據(jù)分別寫入輸出緩沖單元0和輸出緩沖單元1的首地址到中間地址的范圍內(nèi),參見圖4,所述第一幀第一聲道的前半部分PCM數(shù)據(jù)和后半部分PCM數(shù)據(jù)分別存儲(chǔ)在輸出緩沖單元0和輸出緩沖單元1的首地址到中間地址的范圍內(nèi);S204、CPU根據(jù)當(dāng)前指針P0的值,將所述第一幀第二聲道的前半部分PCM數(shù)據(jù)寫入所述輸出緩沖單元0的中間地址到末地址的范圍內(nèi);CPU完成對(duì)第一幀第二聲道的解碼后,將其前P0-(B0+L/2)個(gè)樣本輸出緩沖單元0的中間地址開始寫入輸出緩沖單元0中,所述輸出緩沖單元0的中間地址為B0+L/2,然后,CPU再檢查當(dāng)前P0的值,設(shè)當(dāng)前P0的值比上次所檢查的P0的值增加的值為N,說明DMA又從輸出緩沖單元0中取出N個(gè)樣本值,因此,CPU可以再將N個(gè)第一幀第二聲道的PCM樣本數(shù)據(jù)寫入輸出緩沖單元0中,直到所述第一幀第二聲道的前半部分PCM數(shù)據(jù)全部寫入所述輸出緩沖單元0的中間地址到末地址的范圍內(nèi),參見圖4,所述第一幀第二聲道的前半部分PCM數(shù)據(jù)存儲(chǔ)在所述輸出緩沖單元0的中間地址到末地址的范圍內(nèi);S205、DMA將所述輸出緩沖單元0的首地址賦值給所述P0,將所述輸出緩沖單元0的中間地址賦值給所述P1,并將所述輸出緩沖單元0中第一幀第一聲道和第二聲道的前半部分PCM數(shù)據(jù)交錯(cuò)后發(fā)送給Audio DAC;當(dāng)所述P0和P1的值分別為輸出緩沖單元0和輸出緩沖單元1的末地址時(shí),DMA將P0賦值為B0,將P1賦值為B0+L/2,DMA將所述輸出緩沖單元0中第一幀第一聲道和第二聲道的前半部分PCM數(shù)據(jù)交錯(cuò)后發(fā)送給Audio DAC;此時(shí),CPU檢查當(dāng)前P0的值比上次所檢查的P0的值小,則CPU將第一幀第二聲道的前半部分沒有寫入輸出緩沖單元0的PCM數(shù)據(jù)寫入所述輸出緩沖單元0的中間地址到末地址的范圍內(nèi),如圖4所示,輸出緩沖單元0的中間地址到末地址的范圍內(nèi)存儲(chǔ)了第一幀第二聲道的前半部分PCM數(shù)據(jù);S206、CPU將所述第一幀第二聲道的后半部分PCM數(shù)據(jù),從所述輸出緩沖單元1的中間地址開始,寫入所述輸出緩沖單元1的中間地址到末地址的范圍內(nèi),然后對(duì)第二幀音頻壓縮碼流數(shù)據(jù)進(jìn)行解碼;在CPU將第一幀第二聲道的前半部分PCM數(shù)據(jù)全部寫入輸出緩沖單元0的中間地址到末地址的范圍內(nèi)后,繼續(xù)將所述第一幀第二聲道的后半部分PCM數(shù)據(jù),從所述輸出緩沖單元1的中間地址開始,寫入所述輸出緩沖單元1的中間地址到末地址的范圍內(nèi),所述輸出緩沖單元1的中間地址為B1+L/2,將所述第一幀第二聲道的后半部分PCM數(shù)據(jù)全部寫入所述輸出緩沖單元1的中間地址到末地址的范圍內(nèi)后,CPU開始對(duì)第二幀第一聲道的音頻壓縮碼流數(shù)據(jù)進(jìn)行解碼;S207、當(dāng)所述P0的值為所述輸出緩沖單元0的中間地址時(shí),DMA將所述輸出緩沖單元1的首地址賦值給所述P0,將所述輸出緩沖單元1的中間地址賦值給所述P1,并將所述輸出緩沖單元1中第一幀第一聲道和第二聲道的后半部分PCM數(shù)據(jù)交錯(cuò)后發(fā)送給Audio DAC;S208、CPU將第二幀第一聲道的PCM數(shù)據(jù)寫入輸出緩沖單元0中;當(dāng)CPU完成對(duì)所述第二幀第一聲道的音頻壓縮碼流數(shù)據(jù)的解碼后,將該第二幀第一聲道的PCM數(shù)據(jù)全部寫入輸出緩沖單元0中,如圖5所示,輸出緩沖單元0中存儲(chǔ)了第二幀第一聲道的PCM數(shù)據(jù);S209、CPU根據(jù)當(dāng)前指針P0的值,將所述第二幀第二聲道的PCM數(shù)據(jù)寫入所述輸出緩沖單元1中;S210、當(dāng)所述P0的值等于所述輸出緩沖單元1的中間地址時(shí),DMA將輸出緩沖單元0的首地址和輸出緩沖單元1的首地址分別賦值給指針P0和P1;CPU將第二幀第一聲道的PCM數(shù)據(jù)全部寫入輸出緩沖單元0中后,開始對(duì)第二幀第二聲道的音頻壓縮碼流數(shù)據(jù)進(jìn)行解碼,完成對(duì)所述第二幀第二聲道的音頻壓縮碼流數(shù)據(jù)的解碼后,將該第二幀第一聲道的PCM數(shù)據(jù)的前P0-B1個(gè)樣本數(shù)據(jù)從B1開始寫入輸出緩沖單元1中,然后,再檢查當(dāng)前P0的值,設(shè)當(dāng)前P0的值比上次所檢查的P0的值增加的值為M,說明DMA又從輸出緩沖單元1中取出M個(gè)樣本值,因此,CPU可以再將M個(gè)第二幀第二聲道的PCM樣本數(shù)據(jù)寫入輸出緩沖單元0中,直到所述第二幀第二聲道的前半部分PCM數(shù)據(jù)全部寫入所述輸出緩沖單元1的首地址到中間地址的范圍內(nèi),當(dāng)P0的值為B1+L/2時(shí),此時(shí)P1的值為輸出緩沖單元1的末地址,返回步驟S201,即DMA將輸出緩沖單元0的首地址和輸出緩沖單元1的首地址分別賦值給指針P0和P1;此時(shí),CPU將第二幀第二聲道剩下的PCM數(shù)據(jù)全部寫入輸出緩沖單元1中,參見圖5,輸出緩沖單元1中存儲(chǔ)了第二幀第二聲道的PCM數(shù)據(jù)。
      綜上,本發(fā)明DMA對(duì)指針P0和P1的值的更新過程如下P0=B0,P1=B1;當(dāng)P0=B0+L且P1=B1+L時(shí),P0=B0,P1=B0+L/2;
      當(dāng)P0=B0+L/2且P1=B0+L時(shí),P0=B1,P1=B1+L/2;當(dāng)P0=B1+L/2且P1=B1+L時(shí),P0=B0,P1=B1;因此,采用本發(fā)明方法實(shí)現(xiàn)的DMA,在進(jìn)行音頻解碼的過程中,可以將現(xiàn)有技術(shù)中的輸出緩沖單元減少一半,即現(xiàn)有技術(shù)中的輸出緩沖單元為4L,而本發(fā)明的輸出緩沖單元為2L。
      參見圖6,本發(fā)明系統(tǒng)包括中央處理單元601、輸出緩沖單元602、直接內(nèi)存訪問單元603、音頻數(shù)字/模擬轉(zhuǎn)換器604及揚(yáng)聲器605;其中,所述中央處理單元601包括第一處理單元6011和第二處理單元6012;所述第一處理單元6011包括第一幀第一聲道數(shù)據(jù)寫入單元60111和第一幀第二聲道數(shù)據(jù)寫入單元60112;所述第二處理單元6012包括第一單元60121、第二單元60122、第三單元60123、第四單元60124和第五單元60125;所述第二單元60122包括第一獲得數(shù)據(jù)量單元601221和第一寫入數(shù)據(jù)單元601222;所述第五單元60125包括第二獲得數(shù)據(jù)量單元601251和第二寫入數(shù)據(jù)單元601252;所述輸出緩沖單元602包括第一輸出緩沖單元6021和第二輸出緩沖單元6022;所述直接內(nèi)存訪問單元603包括第一指針單元6031和第二指針單元6032;所述中央處理單元601,將數(shù)字音頻信號(hào)數(shù)據(jù)寫入所述輸出緩沖單元602;所述直接內(nèi)存訪問單元604,從所述輸出緩沖單元602中交錯(cuò)讀取同一幀的第一聲道和第二聲道的數(shù)字音頻信號(hào)數(shù)據(jù),將該數(shù)字音頻信號(hào)數(shù)據(jù)輸出;其中,所述第一處理單元6011,用于將第一幀數(shù)字音頻信號(hào)數(shù)據(jù)寫入所述輸出緩沖單元602,所述第一幀第一聲道數(shù)據(jù)寫入單元60111,將所述第一幀第一聲道的數(shù)字音頻信號(hào)數(shù)據(jù)寫入所述第一輸出緩沖單元6021;所述第一幀第二聲道數(shù)據(jù)寫入單元60112,將所述第一幀第二聲道的數(shù)字音頻信號(hào)數(shù)據(jù)寫入所述第二輸出緩沖單元6022;所述第一輸出緩沖單元602和第二輸出緩沖單元603的長度都為L,所述L為一幀單聲道PCM樣本的長度,所述第一輸出緩沖單元602和第二輸出緩沖單元603用于存儲(chǔ)PCM數(shù)據(jù),每個(gè)輸出緩沖單元都可以存儲(chǔ)L個(gè)PCM樣本數(shù)據(jù);所述第二處理單元6012,用于從第二幀數(shù)字音頻信號(hào)數(shù)據(jù)開始,根據(jù)所述輸出緩沖單元602中的數(shù)據(jù)被讀取的數(shù)據(jù)量,將每幀數(shù)字音頻信號(hào)數(shù)據(jù)寫入所述輸出緩沖單元602,所述第一單元60121,當(dāng)所述第一輸出緩沖單元6021和第二輸出緩沖單元6022的前半個(gè)區(qū)間的數(shù)據(jù)已全部被讀取時(shí),將一幀第一聲道的前半部分和后半部分?jǐn)?shù)字音頻信號(hào)數(shù)據(jù)分別寫入所述第一輸出緩沖單元6021和第二輸出緩沖單元6022的前半個(gè)區(qū)間;所述第二單元60122,根據(jù)所述第一輸出緩沖單元6021的后半個(gè)區(qū)間中的數(shù)據(jù)已被讀取的數(shù)據(jù)量,將所述一幀第二聲道的前半部分?jǐn)?shù)字音頻信號(hào)數(shù)據(jù)寫入所述第一輸出緩沖單元6021的后半個(gè)區(qū)間;所述第三單元60123,當(dāng)所述第二輸出緩沖單元6022的后半個(gè)區(qū)間中的數(shù)據(jù)已全部被讀取時(shí),將所述第二聲道的后半部分?jǐn)?shù)字音頻信號(hào)數(shù)據(jù)寫入所述第二輸出緩沖單元6022的后半個(gè)區(qū)間;所述第四單元60124,當(dāng)所述第一輸出緩沖單元6021中的數(shù)據(jù)全部被讀取時(shí),將下一幀第一聲道的數(shù)字音頻信號(hào)數(shù)據(jù)寫入所述第一輸出緩沖單元6021中;所述第五單元60125,根據(jù)所述第二輸出緩沖單元6022中的數(shù)據(jù)已被讀取的數(shù)據(jù)量,將所述下一幀第二聲道的數(shù)字音頻信號(hào)數(shù)據(jù)寫入所述第二輸出緩沖單元6022中;較佳地,在所述直接內(nèi)存訪問單元603中預(yù)先設(shè)置兩個(gè)指針,用于指向所述輸出緩沖單元中讀取數(shù)據(jù)的位置,所述指針的值為所述讀取數(shù)據(jù)的地址,則所述第一指針單元6031,用于通過第一指針P0讀取一幀第一聲道的一個(gè)數(shù)字音頻信號(hào)樣本數(shù)據(jù),并觸發(fā)第二指針單元6032;所述第二指針單元6032,用于通過第二指針P1讀取所述一幀第二聲道的一個(gè)數(shù)字音頻信號(hào)樣本數(shù)據(jù),并觸發(fā)第一指針單元6031,即所述第一指針單元6031和第二指針單元6032分別通過指針P0和P1交錯(cuò)讀取一幀第一聲道和第二聲道的PCM樣本數(shù)據(jù);所述第一獲得數(shù)據(jù)量單元601221,用于根據(jù)當(dāng)前所述第一指針的值,獲得當(dāng)前需要寫入所述第一輸出緩沖單元6021中的所述一幀第二聲道的前半部分?jǐn)?shù)字音頻信號(hào)數(shù)據(jù)的數(shù)據(jù)量;所述第一寫入數(shù)據(jù)單元601222,用于根據(jù)所述數(shù)據(jù)量將所述一幀第二聲道的前半部分?jǐn)?shù)字音頻信號(hào)數(shù)據(jù)寫入所述第一輸出緩沖單元6021的后半個(gè)區(qū)間,并觸發(fā)所述第一獲得數(shù)據(jù)量單元601221,直到所述一幀第二聲道的前半部分?jǐn)?shù)字音頻信號(hào)數(shù)據(jù)全部寫入所述第一輸出緩沖單元6021的后半個(gè)區(qū)間;所述第二獲得數(shù)據(jù)量單元601251,用于根據(jù)當(dāng)前所述第一指針的值,獲得當(dāng)前需要寫入所述第二輸出緩沖單元6022中的所述下一幀第二聲道的數(shù)字音頻信號(hào)數(shù)據(jù)的數(shù)據(jù)量;所述第二寫入數(shù)據(jù)單元601252,用于根據(jù)所述數(shù)據(jù)量將所述下一幀第二聲道的數(shù)字音頻信號(hào)數(shù)據(jù)寫入所述第二輸出緩沖單元6022中,并觸發(fā)所述第二獲得數(shù)據(jù)量單元601251,直到當(dāng)所述第一指針的值為所述第一輸出緩沖單元6021的首地址時(shí),將所述下一幀第二聲道的數(shù)字音頻信號(hào)數(shù)據(jù)全部寫入所述第二輸出緩沖單元6022中;綜上,所述指針P0和P1的初始值分別為第一輸出緩沖單元6021和第二輸出緩沖單元6022的首地址,這兩個(gè)指針的值的更新過程為P0=B0,P1=B1;當(dāng)P0=B0+L且P1=B1+L時(shí),P0=B0,P1=B0+L/2;當(dāng)P0=B0+L/2且P1=B0+L時(shí),P0=B1,P1=B1+L/2;當(dāng)P0=B1+L/2且P1=B1+L時(shí),P0=B0,P1=B1;其中,所述音頻數(shù)字/模擬轉(zhuǎn)換器604,用于接收直接內(nèi)存訪問單元603發(fā)送的PCM數(shù)據(jù),并將所述PCM數(shù)據(jù)轉(zhuǎn)換成音頻模擬信號(hào),并將該音頻模擬信號(hào)發(fā)送給所述揚(yáng)聲器605;所述揚(yáng)聲器605,用于輸出所述音頻模擬信號(hào)給用戶。
      顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
      權(quán)利要求
      1.一種音頻輸出方法,其特征在于,該方法包括步驟A.將數(shù)字音頻信號(hào)數(shù)據(jù)寫入輸出緩沖單元;B.從所述輸出緩沖單元中交錯(cuò)讀取同一幀的第一聲道和第二聲道的數(shù)字音頻信號(hào)數(shù)據(jù),將該數(shù)字音頻信號(hào)數(shù)據(jù)輸出。
      2.如權(quán)利要求1所述的方法,其特征在于,所述步驟A包括將第一幀數(shù)字音頻信號(hào)數(shù)據(jù)寫入輸出緩沖單元,從第二幀數(shù)字音頻信號(hào)數(shù)據(jù)開始,根據(jù)所述輸出緩沖單元中的數(shù)據(jù)被讀取的數(shù)據(jù)量,將每幀數(shù)字音頻信號(hào)數(shù)據(jù)寫入輸出緩沖單元。
      3.如權(quán)利要求1所述的方法,其特征在于,所述輸出緩沖單元包括第一輸出緩沖單元和第二輸出緩沖單元;則,步驟A中所述將第一幀數(shù)字音頻信號(hào)數(shù)據(jù)寫入輸出緩沖單元的步驟為將第一幀第一聲道的數(shù)字音頻信號(hào)數(shù)據(jù)寫入第一輸出緩沖單元,將所述第一幀第二聲道的數(shù)字音頻信號(hào)數(shù)據(jù)寫入第二輸出緩沖單元;所述第一輸出緩沖單元和第二輸出緩沖單元中的每一輸出緩沖單元只能緩沖一幀數(shù)字音頻信號(hào)中的一個(gè)聲道的數(shù)據(jù)量。
      4.如權(quán)利要求3所述的方法,其特征在于,從第二幀數(shù)字音頻信號(hào)數(shù)據(jù)開始,所述步驟A包括A1、當(dāng)所述第一輸出緩沖單元和第二輸出緩沖單元的前半個(gè)區(qū)間的數(shù)據(jù)已全部被讀取時(shí),將一幀第一聲道的前半部分和后半部分?jǐn)?shù)字音頻信號(hào)數(shù)據(jù)分別寫入所述第一輸出緩沖單元和第二輸出緩沖單元的前半個(gè)區(qū)間;A2、根據(jù)所述第一輸出緩沖單元的后半個(gè)區(qū)間中的數(shù)據(jù)已被讀取的數(shù)據(jù)量,將所述一幀第二聲道的前半部分?jǐn)?shù)字音頻信號(hào)數(shù)據(jù)寫入所述第一輸出緩沖單元的后半個(gè)區(qū)間;A3、當(dāng)所述第二輸出緩沖單元的后半個(gè)區(qū)間中的數(shù)據(jù)已全部被讀取時(shí),將所述第二聲道的后半部分?jǐn)?shù)字音頻信號(hào)數(shù)據(jù)寫入所述第二輸出緩沖單元的后半個(gè)區(qū)間;A4、當(dāng)所述第一輸出緩沖單元中的數(shù)據(jù)全部被讀取時(shí),將下一幀第一聲道的數(shù)字音頻信號(hào)數(shù)據(jù)寫入所述第一輸出緩沖單元中;A5、根據(jù)所述第二輸出緩沖單元中的數(shù)據(jù)已被讀取的數(shù)據(jù)量,將所述下一幀第二聲道的數(shù)字音頻信號(hào)數(shù)據(jù)寫入所述第二輸出緩沖單元中。
      5.如權(quán)利要求4所述的方法,其特征在于,預(yù)先設(shè)置兩個(gè)指針,用于指向所述輸出緩沖單元中讀取數(shù)據(jù)的位置,所述指針的值為所述讀取數(shù)據(jù)的地址;所述步驟B中,通過預(yù)先設(shè)置的第一指針從所述輸出緩沖單元中讀取同一幀第一聲道的數(shù)字音頻信號(hào)數(shù)據(jù),通過預(yù)先設(shè)置的第二指針從所述輸出緩沖單元中讀取所述同一幀第二聲道的數(shù)字音頻信號(hào)數(shù)據(jù),其中,所述第一指針和所述第二指針交替讀取數(shù)字音頻信號(hào)數(shù)據(jù)。
      6.如權(quán)利要求5所述的方法,其特征在于,所述步驟A2包括A21、根據(jù)當(dāng)前所述第一指針的值,獲得當(dāng)前需要寫入所述第一輸出緩沖單元中的所述一幀第二聲道的前半部分?jǐn)?shù)字音頻信號(hào)數(shù)據(jù)的數(shù)據(jù)量;A22、根據(jù)所述數(shù)據(jù)量將所述一幀第二聲道的前半部分?jǐn)?shù)字音頻信號(hào)數(shù)據(jù)寫入所述第一輸出緩沖單元的后半個(gè)區(qū)間,并重復(fù)步驟A21,直到所述一幀第二聲道的前半部分?jǐn)?shù)字音頻信號(hào)數(shù)據(jù)全部寫入所述第一輸出緩沖單元的后半個(gè)區(qū)間。
      7.如權(quán)利要求5所述的方法,其特征在于,所述步驟A5包括A51、根據(jù)當(dāng)前所述第一指針的值,獲得當(dāng)前需要寫入所述第二輸出緩沖單元中的所述下一幀第二聲道的數(shù)字音頻信號(hào)數(shù)據(jù)的數(shù)據(jù)量;A52、根據(jù)所述數(shù)據(jù)量將所述下一幀第二聲道的數(shù)字音頻信號(hào)數(shù)據(jù)寫入所述第二輸出緩沖單元中,并重復(fù)步驟A51,直到當(dāng)所述第一指針的值為所述第一輸出緩沖單元的首地址時(shí),將所述下一幀第二聲道的數(shù)字音頻信號(hào)數(shù)據(jù)全部寫入所述第二輸出緩沖單元中。
      8.一種音頻輸出系統(tǒng),包括中央處理單元、輸出緩沖單元和直接內(nèi)存訪問單元,其特征在于,所述中央處理單元,用于將數(shù)字音頻信號(hào)數(shù)據(jù)寫入所述輸出緩沖單元;所述直接內(nèi)存訪問單元,用于從所述輸出緩沖單元中交錯(cuò)讀取同一幀的第一聲道和第二聲道的數(shù)字音頻信號(hào)數(shù)據(jù),將該數(shù)字音頻信號(hào)數(shù)據(jù)輸出。
      9.如權(quán)利要求8所述的系統(tǒng),其特征在于,所述中央處理單元包括第一處理單元,用于將第一幀數(shù)字音頻信號(hào)數(shù)據(jù)寫入所述輸出緩沖單元;第二處理單元,用于從第二幀數(shù)字音頻信號(hào)數(shù)據(jù)開始,根據(jù)所述輸出緩沖單元中的數(shù)據(jù)被讀取的數(shù)據(jù)量,將每幀數(shù)字音頻信號(hào)數(shù)據(jù)寫入所述輸出緩沖單元。
      10.如權(quán)利要求9所述的系統(tǒng),其特征在于,所述輸出緩沖單元包括第一輸出緩沖單元和第二輸出緩沖單元;則,所述第一處理單元包括第一幀第一聲道數(shù)據(jù)寫入單元,用于將所述第一幀第一聲道的數(shù)字音頻信號(hào)數(shù)據(jù)寫入所述第一輸出緩沖單元;第一幀第二聲道數(shù)據(jù)寫入單元,用于將所述第一幀第二聲道的數(shù)字音頻信號(hào)數(shù)據(jù)寫入所述第二輸出緩沖單元;所述第一輸出緩沖單元和第二輸出緩沖單元中的每一輸出緩沖單元只能緩沖一幀數(shù)字音頻信號(hào)中的一個(gè)聲道的數(shù)據(jù)量。
      11.如權(quán)利要求10所述的系統(tǒng),其特征在于,所述第二處理單元包括第一單元,用于當(dāng)所述第一輸出緩沖單元和第二輸出緩沖單元的前半個(gè)區(qū)間的數(shù)據(jù)已全部被讀取時(shí),將一幀第一聲道的前半部分和后半部分?jǐn)?shù)字音頻信號(hào)數(shù)據(jù)分別寫入所述第一輸出緩沖單元和第二輸出緩沖單元的前半個(gè)區(qū)間;第二單元,用于根據(jù)所述第一輸出緩沖單元的后半個(gè)區(qū)間中的數(shù)據(jù)已被讀取的數(shù)據(jù)量,將所述一幀第二聲道的前半部分?jǐn)?shù)字音頻信號(hào)數(shù)據(jù)寫入所述第一輸出緩沖單元的后半個(gè)區(qū)間;第三單元,用于當(dāng)所述第二輸出緩沖單元的后半個(gè)區(qū)間中的數(shù)據(jù)已全部被讀取時(shí),將所述第二聲道的后半部分?jǐn)?shù)字音頻信號(hào)數(shù)據(jù)寫入所述第二輸出緩沖單元的后半個(gè)區(qū)間;第四單元,用于當(dāng)所述第一輸出緩沖單元中的數(shù)據(jù)全部被讀取時(shí),將下一幀第一聲道的數(shù)字音頻信號(hào)數(shù)據(jù)寫入所述第一輸出緩沖單元中;第五單元,用于根據(jù)所述第二輸出緩沖單元中的數(shù)據(jù)已被讀取的數(shù)據(jù)量,將所述下一幀第二聲道的數(shù)字音頻信號(hào)數(shù)據(jù)寫入所述第二輸出緩沖單元中。
      12.如權(quán)利要求11所述的系統(tǒng),其特征在于,在所述直接內(nèi)存訪問單元中預(yù)先設(shè)置兩個(gè)指針,用于指向所述輸出緩沖單元中讀取數(shù)據(jù)的位置,所述指針的值為所述讀取數(shù)據(jù)的地址;則,所述直接內(nèi)存訪問單元包括第一指針單元,用于讀取一幀第一聲道的一個(gè)數(shù)字音頻信號(hào)樣本數(shù)據(jù),并觸發(fā)第二指針單元;第二指針單元,用于讀取所述一幀第二聲道的一個(gè)數(shù)字音頻信號(hào)樣本數(shù)據(jù),并觸發(fā)第一指針單元。
      13.如權(quán)利要求12所述的系統(tǒng),其特征在于,所述第二單元包括第一獲得數(shù)據(jù)量單元,用于根據(jù)當(dāng)前所述第一指針的值,獲得當(dāng)前需要寫入所述第一輸出緩沖單元中的所述一幀第二聲道的前半部分?jǐn)?shù)字音頻信號(hào)數(shù)據(jù)的數(shù)據(jù)量;第一寫入數(shù)據(jù)單元,用于根據(jù)所述數(shù)據(jù)量將所述一幀第二聲道的前半部分?jǐn)?shù)字音頻信號(hào)數(shù)據(jù)寫入所述第一輸出緩沖單元的后半個(gè)區(qū)間,并觸發(fā)所述第一獲得數(shù)據(jù)量單元,直到所述一幀第二聲道的前半部分?jǐn)?shù)字音頻信號(hào)數(shù)據(jù)全部寫入所述第一輸出緩沖單元的后半個(gè)區(qū)間。
      14.如權(quán)利要求13所述的系統(tǒng),其特征在于,所述第五單元包括第二獲得數(shù)據(jù)量單元,用于根據(jù)當(dāng)前所述第一指針的值,獲得當(dāng)前需要寫入所述第二輸出緩沖單元中的所述下一幀第二聲道的數(shù)字音頻信號(hào)數(shù)據(jù)的數(shù)據(jù)量;第二寫入數(shù)據(jù)單元,用于根據(jù)所述數(shù)據(jù)量將所述下一幀第二聲道的數(shù)字音頻信號(hào)數(shù)據(jù)寫入所述第二輸出緩沖單元中,并觸發(fā)所述第二獲得數(shù)據(jù)量單元,直到當(dāng)所述第一指針的值為所述第一輸出緩沖單元的首地址時(shí),將所述下一幀第二聲道的數(shù)字音頻信號(hào)數(shù)據(jù)全部寫入所述第二輸出緩沖單元中。
      全文摘要
      本發(fā)明公開了一種音頻輸出方法及系統(tǒng),用以解決現(xiàn)有技術(shù)在實(shí)現(xiàn)音頻輸出過程中,占用輸出緩沖單元過大的問題。本發(fā)明方法包括A.將數(shù)字音頻信號(hào)數(shù)據(jù)寫入輸出緩沖單元;B.從所述輸出緩沖單元中交錯(cuò)讀取同一幀的第一聲道和第二聲道的數(shù)字音頻信號(hào)數(shù)據(jù),將該數(shù)字音頻信號(hào)數(shù)據(jù)輸出。本發(fā)明系統(tǒng)包括中央處理單元、輸出緩沖單元和直接內(nèi)存訪問單元,所述中央處理單元,用于將數(shù)字音頻信號(hào)數(shù)據(jù)寫入所述輸出緩沖單元;所述直接內(nèi)存訪問單元,用于從所述輸出緩沖單元中交錯(cuò)讀取同一幀的第一聲道和第二聲道的數(shù)字音頻信號(hào)數(shù)據(jù),將該數(shù)字音頻信號(hào)數(shù)據(jù)輸出。本發(fā)明用于音頻輸出,減小音頻輸出過程中所占用的輸出緩沖單元,降低音頻輸出系統(tǒng)成本。
      文檔編號(hào)G11B20/10GK101030132SQ200710063430
      公開日2007年9月5日 申請(qǐng)日期2007年1月31日 優(yōu)先權(quán)日2007年1月31日
      發(fā)明者侯培新 申請(qǐng)人:北京中星微電子有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1