專利名稱:一種音頻設(shè)備中實(shí)現(xiàn)混音的方法
一種音頻設(shè)備中實(shí)現(xiàn)混音的方法
技術(shù)領(lǐng)域:
本發(fā)明屬于音頻設(shè)備領(lǐng)域,特別是指一種音頻設(shè)備中實(shí)現(xiàn)混音的方法。背景技術(shù):
多媒體設(shè)備中接鍵音是其必備功能,但由于系統(tǒng)不具備混音功能,所以
無(wú)法實(shí)現(xiàn)聽(tīng)音樂(lè)的同時(shí)又能發(fā)出按鍵音。例如,在聽(tīng)MP3音樂(lè)時(shí),此時(shí)聽(tīng)不 到按鍵音。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問(wèn)題在于提供一種音頻設(shè)備中實(shí)現(xiàn)混音的方法, 在多任務(wù)系統(tǒng)中實(shí)現(xiàn)了軟件混音功能,可以同時(shí)聽(tīng)到多種聲音。 本發(fā)明采用以下技術(shù)方案解決上述技術(shù)問(wèn)題 一種音頻設(shè)備中實(shí)現(xiàn)混音的方法,包括如下步驟 步驟100:解碼音頻數(shù)據(jù),包括如下步驟 步驟101:開(kāi)始;
步驟102:解碼器初始化,判斷是否成功?是,轉(zhuǎn)入步驟103;否,轉(zhuǎn)入 步驟111;
步驟103:申請(qǐng)一個(gè)FIFO,判斷是否成功?是,轉(zhuǎn)入步驟104;否,轉(zhuǎn) 入步驟111;
步驟104:暫停播放?是,轉(zhuǎn)入步驟105;否,轉(zhuǎn)入步驟106; 步驟105: FIFO滿?是,轉(zhuǎn)入步驟106;否,轉(zhuǎn)入步驟107; 步驟106: OSTIMEDELAY; 步驟107:解碼,并把數(shù)據(jù)存到FIFO中;
步驟108:判斷解碼是否成功?是,轉(zhuǎn)入步驟109;否,轉(zhuǎn)入步驟111; 步驟109:判斷是否結(jié)束解碼是,轉(zhuǎn)入步驟110;否,轉(zhuǎn)入步驟 步驟110;反初始化解碼器,釋放FIFO空間;步驟111:結(jié)束任務(wù);
步驟200:將多個(gè)解碼后的數(shù)據(jù)混合在一起,包括如下步驟 步驟201:開(kāi)始;
步驟202:申請(qǐng)一個(gè)FIFC^A,成功?是,轉(zhuǎn)入步驟203;否,轉(zhuǎn)入步驟
211;
步驟203:申請(qǐng)一個(gè)X長(zhǎng)度的BUF—A,成功?是,轉(zhuǎn)入步驟204;否, 轉(zhuǎn)入步驟211;
步驟204:注冊(cè)DMA中斷函數(shù),并啟動(dòng)DMA;
步驟205:所有音頻任務(wù)的FIFO都不為空?是,轉(zhuǎn)入步驟206;否,轉(zhuǎn) 入步驟207;
步驟206: FIFO—A滿?是,轉(zhuǎn)入步驟207;否,轉(zhuǎn)入步驟208; 步驟207: OSTIMEDELAY;
步驟208:從所有音頻的FIFO中取出數(shù)據(jù)進(jìn)行疊加運(yùn)算,并存到FIFO—A
中;
步驟209:判斷是否停止混音?是,轉(zhuǎn)入步驟210;否,轉(zhuǎn)入步驟205; 步驟210:停止DMA,釋放FIFO_A和BUF—A空間; 步驟211:結(jié)束任務(wù);
步驟300:通過(guò)DMA將混合數(shù)據(jù)傳到IIS控制器,包括如下步驟 步驟301:開(kāi)始;
步驟302:判斷是否有已發(fā)送的FIFO—A的空間未被釋放嗎?是,轉(zhuǎn)入步 驟303;否,轉(zhuǎn)入步驟304;
步驟303:釋放FIFO—A已被取出數(shù)據(jù)的空間;
步驟304:判斷是否FIFO—A非空?是,轉(zhuǎn)入步驟305;否,轉(zhuǎn)入步驟306; 步驟305:判斷FIFO_A已使用的空間是否大于X值?是,轉(zhuǎn)入步驟307; 否,轉(zhuǎn)入步驟309;
步驟306:將BUF—A都填O;轉(zhuǎn)入步驟308:
步驟307:從FIFC^A讀出X長(zhǎng)度的數(shù)據(jù)到BUF—A,標(biāo)識(shí)FIFO—A有X 長(zhǎng)度空間未被釋放;步驟308:配置并啟動(dòng)DMA,將BUF一A的X長(zhǎng)度的數(shù)據(jù)傳給IIS控制
器;
步驟309:從FIFO—A讀出已使用的空間Y的長(zhǎng)度數(shù)據(jù)到BUF_A,標(biāo)識(shí) FIFO—A有Y長(zhǎng)度空間未被釋放,配置并啟動(dòng)DMA,將BUF—A的Y長(zhǎng)度的 數(shù)據(jù)傳給IIS控制器;
步驟310:中斷結(jié)束退出。
本發(fā)明一種音頻設(shè)備中實(shí)現(xiàn)混音的方法的優(yōu)點(diǎn)在于通過(guò)解碼多個(gè)音頻 數(shù)據(jù),將多個(gè)解碼后的數(shù)據(jù)混合在一起,然后通過(guò)DMA傳到IIS控制器,實(shí) 現(xiàn)了混音??稍诼?tīng)音樂(lè)的同時(shí)發(fā)出按^l音。
下面參照附圖結(jié)合實(shí)施例對(duì)本發(fā)明作進(jìn) 一 步的描述。 圖l是本發(fā)明工作流程示意圖。 圖2是本發(fā)明中解碼音頻數(shù)據(jù)工作流程示意圖。 圖3是本發(fā)明中混音任務(wù)工作流程示意圖。
圖4是本發(fā)明中通過(guò)DMA將混合數(shù)據(jù)傳到IIS控制器工作流程示意圖。具體實(shí)施方式
一種音頻設(shè)備中實(shí)現(xiàn)混音的方法,主要是控制數(shù)據(jù)流的方向,如圖l所 示,其包括如下步驟步驟100:解碼音頻數(shù)據(jù);步驟200:將多個(gè)解碼后的 數(shù)據(jù)混合在一起;步驟300:通過(guò)DMA將混合數(shù)據(jù)傳到IIS控制器。
請(qǐng)參閱圖2所示,是本發(fā)明中解碼音頻數(shù)據(jù)工作流程示意圖。包括如下 步驟
步驟101:開(kāi)始;
步驟102:解碼器初始化,判斷是否成功?是,轉(zhuǎn)入步驟103;否,轉(zhuǎn)入 步驟111;
步驟103:申請(qǐng)一個(gè)FIFO,判斷是否成功?是,轉(zhuǎn)入步驟104;否,轉(zhuǎn) 入步驟111;
步驟104:暫停播放?是,轉(zhuǎn)入步驟105;否,轉(zhuǎn)入步驟106; 步驟105: FIFO滿?是,轉(zhuǎn)入步驟106;否,轉(zhuǎn)入步驟107;步驟106: OSTIMEDELAY;
步驟107:解碼,并把數(shù)據(jù)存到FIFO中;
步驟108:判斷解碼是否成功?是,轉(zhuǎn)入步驟109;否,轉(zhuǎn)入步驟111; 步驟109:判斷是否結(jié)束解碼是,轉(zhuǎn)入步驟110;否,轉(zhuǎn)入步驟104; 步驟110;反初始化解碼器,釋放FIFO空間; 步驟lll:結(jié)束任務(wù)。
請(qǐng)參閱圖3所示,是本發(fā)明中混音任務(wù)工作流程示意圖,即將多個(gè)解碼 后的數(shù)據(jù)混合在一起。包括如下步驟 步驟201:開(kāi)始;
步驟202:申請(qǐng)一個(gè)FIFO—A,成功?是,轉(zhuǎn)入步驟203;否,轉(zhuǎn)入步驟
211;
步驟203:申請(qǐng)一個(gè)X長(zhǎng)度的BUF—A,成功?是,轉(zhuǎn)入步驟204;否, 轉(zhuǎn)入步驟211;
步驟204:注冊(cè)DMA中斷函數(shù),并啟動(dòng)DMA;
步驟205:所有音頻任務(wù)的FIFO都不為空?是,轉(zhuǎn)入步驟206;否,轉(zhuǎn) 入步驟207;
步驟206: FIFO—A滿?是,轉(zhuǎn)入步驟207;否,轉(zhuǎn)入步驟208; 步驟207: OSTIMEDELAY;
步驟208:從所有音頻的FIFO中取出數(shù)據(jù)進(jìn)行疊加運(yùn)算,并存到FIFO—A
中;
步驟209:判斷是否停止混音?是,轉(zhuǎn)入步驟210;否,轉(zhuǎn)入步驟205; 步驟210:停止DMA,釋放FIFO_A和BUF—A空間; 步驟211:結(jié)束任務(wù)。
請(qǐng)參閱圖4所示,是本發(fā)明中通過(guò)DMA將混合數(shù)據(jù)傳到IIS控制器工作 流程示意圖。包括如下步驟 步驟301:開(kāi)始;
步驟302:判斷是否有已發(fā)送的FIFO—A的空間未被釋放嗎?是,轉(zhuǎn)入步 驟303;否,轉(zhuǎn)入步驟304;步驟303:釋放FIFO—A已被取出數(shù)據(jù)的空間;
步驟304:判斷是否FIFO—A非空?是,轉(zhuǎn)入步驟305;否,轉(zhuǎn)入步驟306; 步驟305:判斷FIFO_A已使用的空間是否大于X值?是,轉(zhuǎn)入步驟307; 否,轉(zhuǎn)入步驟309;
步驟306:將BUF—A都填0;轉(zhuǎn)入步驟308:
步驟307:從FIFC^A讀,出X長(zhǎng)度的數(shù)據(jù)到BUF—A,標(biāo)識(shí)FIFC^A有X 長(zhǎng)度空間未被釋放;
步驟308:配置并啟動(dòng)DMA,將BUF—A的X長(zhǎng)度的數(shù)據(jù)傳給IIS控制
步驟309:從FIFO_A讀出已使用的空間Y的長(zhǎng)度數(shù)據(jù)到BUF—A,標(biāo)識(shí) FIFO—A有Y長(zhǎng)度空間未被釋放,配置并啟動(dòng)DMA,將BUF—A的Y長(zhǎng)度的 數(shù)據(jù)傳給IIS控制器;
步驟310:中斷結(jié)束退出。
本發(fā)明在多任務(wù)系統(tǒng)中實(shí)現(xiàn)了軟件混音功能,可以同時(shí)聽(tīng)到多種聲音, 在聽(tīng)音樂(lè)的同時(shí),可以發(fā)出按鍵音。
權(quán)利要求
1、一種音頻設(shè)備中實(shí)現(xiàn)混音的方法,其特征在于包括如下步驟步驟100解碼音頻數(shù)據(jù),包括如下步驟步驟101開(kāi)始;步驟102解碼器初始化,判斷是否成功?是,轉(zhuǎn)入步驟103;否,轉(zhuǎn)入步驟111;步驟103申請(qǐng)一個(gè)FIFO,判斷是否成功?是,轉(zhuǎn)入步驟104;否,轉(zhuǎn)入步驟111;步驟104暫停播放?是,轉(zhuǎn)入步驟105;否,轉(zhuǎn)入步驟106;步驟105FIFO滿?是,轉(zhuǎn)入步驟106;否,轉(zhuǎn)入步驟107;步驟106OSTIMEDELAY;步驟107解碼,并把數(shù)據(jù)存到FIFO中;步驟108判斷解碼是否成功?是,轉(zhuǎn)入步驟109;否,轉(zhuǎn)入步驟111;步驟109判斷是否結(jié)束解碼是,轉(zhuǎn)入步驟110;否,轉(zhuǎn)入步驟104;步驟110;反初始化解碼器,釋放FIFO空間;步驟111結(jié)束任務(wù);步驟200將多個(gè)解碼后的數(shù)據(jù)混合在一起,包括如下步驟步驟201開(kāi)始;步驟202申請(qǐng)一個(gè)FIFO_A,成功?是,轉(zhuǎn)入步驟203;否,轉(zhuǎn)入步驟211;步驟203申請(qǐng)一個(gè)X長(zhǎng)度的BUF_A,成功?是,轉(zhuǎn)入步驟204;否,轉(zhuǎn)入步驟211;步驟204注冊(cè)DMA中斷函數(shù),并啟動(dòng)DMA;步驟205所有音頻任務(wù)的FIFO都不為空?是,轉(zhuǎn)入步驟206;否,轉(zhuǎn)入步驟207;步驟206FIFO_A滿?是,轉(zhuǎn)入步驟207;否,轉(zhuǎn)入步驟208;步驟207OSTIMEDELAY;步驟208從所有音頻的FIFO中取出數(shù)據(jù)進(jìn)行疊加運(yùn)算,并存到FIFO_A中;步驟209判斷是否停止混音?是,轉(zhuǎn)入步驟210;否,轉(zhuǎn)入步驟205;步驟210停止DMA,釋放FIFO_A和BUF_A空間;步驟211結(jié)束任務(wù);步驟300通過(guò)DMA將混合數(shù)據(jù)傳到IIS控制器,包括如下步驟步驟301開(kāi)始;步驟302判斷是否有已發(fā)送的FIFO_A的空間未被釋放嗎?是,轉(zhuǎn)入步驟303;否,轉(zhuǎn)入步驟304;步驟303釋放FIFO_A已被取出數(shù)據(jù)的空間;步驟304判斷是否FIFO_A非空?是,轉(zhuǎn)入步驟305;否,轉(zhuǎn)入步驟306;步驟305判斷FIFO_A已使用的空間是否大于X值?是,轉(zhuǎn)入步驟307;否,轉(zhuǎn)入步驟309;步驟306將BUF_A都填0;轉(zhuǎn)入步驟308步驟307從FIFO_A讀出X長(zhǎng)度的數(shù)據(jù)到BUF_A,標(biāo)識(shí)FIFO_A有X長(zhǎng)度空間未被釋放;步驟308配置并啟動(dòng)DMA,將BUF_A的X長(zhǎng)度的數(shù)據(jù)傳給IIS控制器;步驟309從FIFO_A讀出已使用的空間Y的長(zhǎng)度數(shù)據(jù)到BUF_A,標(biāo)識(shí)FIFO_A有Y長(zhǎng)度空間未被釋放,配置并啟動(dòng)DMA,將BUF_A的Y長(zhǎng)度的數(shù)據(jù)傳給IIS控制器;步驟310中斷結(jié)束退出。
全文摘要
本發(fā)明是關(guān)于一種音頻設(shè)備中實(shí)現(xiàn)混音的方法,主要包括如下步驟解碼音頻數(shù)據(jù);將多個(gè)解碼后的數(shù)據(jù)混合在一起;通過(guò)DMA將混合數(shù)據(jù)傳到IIS控制器。本發(fā)明在多任務(wù)系統(tǒng)中實(shí)現(xiàn)了軟件混音功能,可以同時(shí)聽(tīng)到多種聲音,在聽(tīng)音樂(lè)的同時(shí),可以發(fā)出按鍵音。
文檔編號(hào)G10L19/00GK101661748SQ200910112508
公開(kāi)日2010年3月3日 申請(qǐng)日期2009年9月15日 優(yōu)先權(quán)日2009年9月15日
發(fā)明者洪錦坤 申請(qǐng)人:福州瑞芯微電子有限公司