專利名稱:一種音頻播放方法、裝置及終端的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于音頻處理領(lǐng)域,尤其涉及一種音頻播放方法、裝置及終端。
背景技術(shù):
現(xiàn)有的音頻播放終端,包括手機(jī)、音樂播放器、掌上電腦、甚至智能電視、個人電腦等,若僅運行一個音頻應(yīng)用程序時,可以正常流暢地播放該應(yīng)用中的聲音文件,但是當(dāng)多個同類型的音頻應(yīng)用(比如‘酷我音樂盒’與‘善聽說書’)一起運行的時候,雖然也能正常流暢的播放,但是所述各個應(yīng)用中的聲音會同時輸出,互相之間可能產(chǎn)生干擾而給用戶帶來 比較混亂的感覺。不僅如此,這些音頻播放終端還可能會存在一些后臺運行的聲音文件,比如消息通知聲音、鬧鈴聲音等等。目前還未出現(xiàn)一種控制方案能夠?qū)λ鰧@些音頻應(yīng)用程序和系統(tǒng)后臺輸出的聲音進(jìn)行分離,輸出單個聲音。
發(fā)明內(nèi)容
鑒于上述問題,本發(fā)明的目的在于提供一種音頻播放方法,旨在解決現(xiàn)有音頻播放終端中多個音頻應(yīng)用程序運行時,所有的聲音文件同時播放輸出,而導(dǎo)致聲音相互干擾、輸出混亂的技術(shù)問題。本發(fā)明是這樣實現(xiàn)的,一種音頻播放方法,包括下述步驟創(chuàng)建包含每一音頻應(yīng)用程序的聲音文件、音軌數(shù)據(jù)、音軌數(shù)據(jù)進(jìn)程號的對應(yīng)關(guān)系的索引表;根據(jù)當(dāng)前激活狀態(tài)聲音文件對應(yīng)的進(jìn)程號查詢所述索引表,篩選出進(jìn)程號對應(yīng)的音軌數(shù)據(jù);在混音線程中將所述篩選出的音軌數(shù)據(jù)送至混音器中混音輸出。本發(fā)明的另一目的在于提供一種音頻播放裝置,包括索引表創(chuàng)建單元,用于創(chuàng)建包含每一音頻應(yīng)用程序的聲音文件、音軌數(shù)據(jù)、進(jìn)程號進(jìn)程號的對已關(guān)系的索引表;數(shù)據(jù)篩選單元,用于根據(jù)當(dāng)前激活狀態(tài)聲音文件對應(yīng)的進(jìn)程號查詢所述索引表,篩選出所述進(jìn)程號對應(yīng)的音軌數(shù)據(jù);混音輸出單元,用于在混音線程中將所述篩選出的音軌數(shù)據(jù)送至混音器中混音輸出。本發(fā)明的再一目的在于提供一種音頻播放終端,該終端包括所述的音頻播放裝置。在本發(fā)明實施例中,由于在創(chuàng)建每個聲音文件的音軌數(shù)據(jù)時,有唯一的進(jìn)程號與之對應(yīng),當(dāng)有多個聲音需要輸出的時候,獲取到當(dāng)前激活狀態(tài)聲音文件,即最后激活的音頻應(yīng)用程序的聲音文件,根據(jù)激活狀態(tài)聲音文件的進(jìn)程號查找到對應(yīng)的音軌數(shù)據(jù),將所述音軌數(shù)據(jù)在混音器中混音輸出即可,從而實現(xiàn)了僅播放最后打開音頻程序的聲音文件而屏蔽其他應(yīng)用的聲音,達(dá)到了聲音分離的目的。
圖I是本發(fā)明第一實施例提供的一種音頻播放方法的流程圖;圖2是本發(fā)明第二實施例提供的一種音頻播放方法的流程圖;圖3是本發(fā)明第三實施例提供的一種音頻播放裝置的結(jié)構(gòu)方框圖;圖4是本發(fā)明第四實施例提供的一種音頻播放裝置的結(jié)構(gòu)方框圖。
具體實施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。為了說明本發(fā)明所述的技術(shù)方案,下面通過具體實施例來進(jìn)行說明。實施例一: 圖I示出了本發(fā)明第一實施例提供的一種音頻播放方法的流程,為了便于說明僅不出了與本發(fā)明實施例相關(guān)的部分。本實施例提供的音頻播放方法包括步驟S101、創(chuàng)建包含每一音頻應(yīng)用程序的聲音文件、音軌數(shù)據(jù)、音軌數(shù)據(jù)進(jìn)程號對應(yīng)關(guān)系的索引表。所述音頻應(yīng)用程序為具有音頻輸出功能的應(yīng)用程序,例如“qq音樂”、“善聽說書”等等,通常在為音頻應(yīng)用程序中的聲音文件創(chuàng)建音軌數(shù)據(jù)時都會為其分配一個進(jìn)程號,每個音軌數(shù)據(jù)與一個音軌數(shù)據(jù)進(jìn)程號唯一對應(yīng),在本步驟中,需要保存每一音頻應(yīng)用程序的音軌數(shù)據(jù)進(jìn)程號、音軌數(shù)據(jù)和聲音文件的映射關(guān)系,使得在需要輸出聲音時,可以通過音軌數(shù)據(jù)進(jìn)程號找到需要輸出的音軌數(shù)據(jù)。本實施例中所述的音軌數(shù)據(jù)存儲于數(shù)據(jù)庫中,可以來自于同一聲音文件,也可以來自于不同的聲音文件,即一個聲音文件可以對應(yīng)多個音軌數(shù)據(jù)。步驟S102、根據(jù)當(dāng)前激活狀態(tài)的音頻應(yīng)用程序的聲音文件對應(yīng)的進(jìn)程號查詢所述索引表,篩選出所述進(jìn)程號對應(yīng)的音軌數(shù)據(jù)。音頻應(yīng)用程序有先后打開之分,用戶最后激活的音頻應(yīng)用程序就是當(dāng)前激活音頻應(yīng)用程序。具體的當(dāng)用戶打開了多個音頻應(yīng)用程序時,所述最后打開的音頻應(yīng)用程序為最后激活的音頻應(yīng)用程序。在輸出聲音時,根據(jù)為該最后激活的音頻應(yīng)用程序的聲音文件對應(yīng)的音軌數(shù)據(jù)分配的進(jìn)程號查找所述索引表,從而在數(shù)據(jù)庫中篩選出與所述進(jìn)程號對應(yīng)的音軌數(shù)據(jù)。步驟S103、在混音線程中將所述篩選出的音軌數(shù)據(jù)送至混音器中混音輸出。本步驟中篩選出聲音文件對應(yīng)的音軌數(shù)據(jù)后,僅將該篩選出的音軌數(shù)據(jù)輸出至混音器中進(jìn)行混音輸出,其它音頻應(yīng)用程序的聲音文件對應(yīng)的音軌數(shù)據(jù)則繼續(xù)存儲在數(shù)據(jù)庫中,待該音軌數(shù)據(jù)的應(yīng)用程序被激活時才會被篩選并混音輸出。所述音軌數(shù)據(jù)由聲音文件解析得到,包含了聲音數(shù)據(jù)、音色信息等標(biāo)準(zhǔn)格式數(shù)據(jù),在混音器中,將這些數(shù)據(jù)通過軟件或是硬件的方式還原出來。由于所述篩選出的音軌數(shù)據(jù)是當(dāng)前激活狀態(tài)音頻應(yīng)用程序?qū)?yīng)的音軌數(shù)據(jù),因此此時經(jīng)過混音輸出的聲音是最后激活的音頻應(yīng)用輸出的聲音,而其他應(yīng)用的聲音處于被屏蔽狀態(tài)。在本實施例中,通過創(chuàng)建包含聲音文件、音軌數(shù)據(jù)、音軌數(shù)據(jù)進(jìn)程號對應(yīng)關(guān)系的索引表,根據(jù)當(dāng)前激活狀態(tài)的音頻應(yīng)用程序的聲音文件對應(yīng)的進(jìn)程號,查找所述索引表,以在數(shù)據(jù)庫中篩選輸出對應(yīng)當(dāng)前激活狀態(tài)的音頻應(yīng)用程序的音軌數(shù)據(jù)進(jìn)行混音輸出,其它音頻應(yīng)用程序的聲音將被屏蔽,進(jìn)而實現(xiàn)了僅輸出最近開啟的音頻應(yīng)用程序的聲音而屏蔽其他應(yīng)用的聲音,達(dá)到了分離多個聲音文件的目的。實施例二 :圖2示出了本發(fā)明第二實施例提供的一種音頻播放方法的流程,為了便于說明僅不出了與本發(fā)明實施例相關(guān)的部分。 本實施例在實施例一的基礎(chǔ)上對每個步驟進(jìn)一步細(xì)化,作出優(yōu)選實施步驟,具體如下步驟S201、解析已開啟音頻應(yīng)用程序中所包含的聲音文件,在音頻管理器中創(chuàng)建聲音文件對應(yīng)的音軌數(shù)據(jù),并為每個音軌數(shù)據(jù)分配一個進(jìn)程號。在開啟音頻應(yīng)用程序后,對該音頻應(yīng)用程序中的聲音文件進(jìn)行解析,在解析的過程中記錄每個聲音文件以及在音頻管理器中創(chuàng)建該聲音文件對應(yīng)的音軌數(shù)據(jù)。譬如,在Android系統(tǒng)中,音頻管理器(AudioFlinger)用于負(fù)責(zé)管理輸入輸出的音頻流,在創(chuàng)建音軌(AudioTrack)數(shù)據(jù)時,都會為音軌數(shù)據(jù)分配一個進(jìn)程號PID,具體如下sp〈 I Au d i 0 Tr ac k> Au d i oF I i n ger : : c r e a t e Tr ac k (p i d_t p i d, intstreamType, uint32_t sampleRate,int format, int channeICount,intframeCount,uint32_tflags,const sp<IMemory>& sharedBuffer,int output,status_t^status)然后根據(jù)output值進(jìn)行審查,找出用于處理該音軌數(shù)據(jù)的線程,在Android系統(tǒng)中,通常該線程為是MixerThread線程,所述MixerThread線程是在AudioFlinger下創(chuàng)建的,主要負(fù)責(zé)數(shù)據(jù)的混音處理,AudioFlinger也會檢查是否有管理該AudioTrack數(shù)據(jù)的客戶端client,當(dāng)存在客戶端時再調(diào)用PlaybackThread線程中的createTrack_I,最終將該音軌數(shù)據(jù)加入到音頻管理數(shù)組mTracks中,以便同一管理所有音軌數(shù)據(jù)。步驟S202、創(chuàng)建包含所述聲音文件、音軌數(shù)據(jù)、音軌數(shù)據(jù)進(jìn)程號的對應(yīng)關(guān)系的索引表。本實施例中,步驟S201-S202是實施例一中步驟SlOl的一種具體優(yōu)選的實現(xiàn)步驟,在知曉每個聲音文件以及對應(yīng)音軌數(shù)據(jù)和音軌數(shù)據(jù)進(jìn)程號后,在本步驟中需要創(chuàng)建一個保存三者映射關(guān)系的索引表,以便當(dāng)需要播放當(dāng)前激活狀態(tài)聲音文件時,可以查找該索引表找到對應(yīng)的音軌數(shù)據(jù),過濾掉其他無用音軌數(shù)據(jù),將聲音輸出。步驟S203、確定當(dāng)前激活狀態(tài)的音頻應(yīng)用程序。所述當(dāng)前激活狀態(tài)的音頻應(yīng)用程序是系統(tǒng)最后開啟的應(yīng)用程序,作為一種實現(xiàn)方式,可以通過音頻焦點確定當(dāng)前激活狀態(tài)的音頻應(yīng)用程序,每當(dāng)開啟一個需要播放聲音的音頻應(yīng)用程序時,音頻應(yīng)用程序通過一焦點獲取函數(shù)向系統(tǒng)發(fā)出焦點獲取請求,系統(tǒng)釋放音頻權(quán)限,將所述音頻焦點與當(dāng)前激活狀態(tài)的音頻應(yīng)用程序的ID號相關(guān)聯(lián),至此當(dāng)前激活狀態(tài)的音頻應(yīng)用程序獲取到音頻焦點。
步驟S204、根據(jù)當(dāng)前激活狀態(tài)的音頻應(yīng)用程序確定當(dāng)前激活狀態(tài)聲音文件。本步驟中,處于當(dāng)前激活狀態(tài)的音頻應(yīng)用程序的聲音文件即為所述當(dāng)前激活狀態(tài)聲音文件,作為一種當(dāng)前激活狀態(tài)聲音文件確定方式,當(dāng)前激活狀態(tài)的音頻應(yīng)用程序在需要輸出聲音時,將音頻焦點賦予需要播放的聲音文件,該聲音文件獲取到音頻焦點后即可實現(xiàn)首頻輸出。。步驟S205、根據(jù)當(dāng)前激活狀態(tài)聲音文件對應(yīng)的進(jìn)程號查找所述索引表,篩選出所述進(jìn)程號對應(yīng)的音軌數(shù)據(jù)并將之添加到音頻活躍數(shù)組中。本發(fā)明實施例中,步驟S203-S205是實施例一種步驟S102的一種具體優(yōu)化的實現(xiàn)步驟,在本步驟中,根據(jù)當(dāng)前激活狀態(tài)聲音文件對應(yīng)的進(jìn)程號查找所述索引表,從音頻管理數(shù)組中篩選出所述對應(yīng)的音軌數(shù)據(jù),該音軌數(shù)據(jù)就是當(dāng)前處于激活狀態(tài)聲音文件所對應(yīng)的音頻流,再將所述篩選出的音軌數(shù)據(jù)添加到音頻活躍數(shù)組中,剩余的音軌數(shù)據(jù)保留在原數(shù)據(jù)庫中。進(jìn)一步考慮到使用本方法的音頻播放設(shè)備的數(shù)據(jù)處理能力,可以將剩余的音軌數(shù)據(jù)添加到音頻刪除數(shù)組中進(jìn)行刪除。比如,索引表中保存有“qq音樂”應(yīng)用和“善聽說書”應(yīng)用的聲音文件、以及對應(yīng)的音軌數(shù)據(jù)和進(jìn)程號的對應(yīng)關(guān)系,并且所述音軌數(shù)據(jù)保存在數(shù)據(jù)庫中,當(dāng)先前已經(jīng)打開了 “qq音樂”,若此時再打開“善聽說書”應(yīng)用,那么此時“善聽說書”播放的聲音文件就是所述的當(dāng)前處于激活狀態(tài)聲音文件,根據(jù)該聲音文件進(jìn)程號查 找所述索引表,在數(shù)據(jù)庫中找到對應(yīng)的音軌數(shù)據(jù),將該音軌數(shù)據(jù)添加到音頻活躍數(shù)組中,而“qq音樂”聲音文件所對應(yīng)的音軌數(shù)據(jù)送去音頻刪除數(shù)組移除或者仍然保留在所述數(shù)據(jù)庫中即可。步驟S206、在混音線程的線程循環(huán)中調(diào)用混音器;步驟S207、將所述音頻活躍數(shù)組中的音軌數(shù)據(jù)送至混音器進(jìn)行混音操作步驟S208、將混音結(jié)果傳遞給音頻輸出類進(jìn)行實例化,并在硬件終端中播放出來。上述步驟S206-S208是實施例一中步驟S103的一種具體的實現(xiàn)方式,實現(xiàn)了將篩選出的音軌數(shù)據(jù)輸出,譬如在Android系統(tǒng)中,AudioFlinger類用于負(fù)責(zé)管理輸入輸出的音頻流,MixerThread線程是在AudioFlinger下創(chuàng)建的,主要負(fù)責(zé)數(shù)據(jù)的混音處理,MixerThread線程的mActiveTracks中存放的是經(jīng)過篩選后的AudioTrack數(shù)據(jù),亦即最后開啟的音頻應(yīng)用程序的聲音文件,AudioFlinger通過binder機(jī)制實現(xiàn)與負(fù)責(zé)音頻系統(tǒng)數(shù)據(jù)采集的AudioTrack類通信,AudioFlinger通過一塊共享內(nèi)存由MixerThread對其進(jìn)行操作,即AudioFlinger通過MixerThread線程對AudioTrack數(shù)據(jù)進(jìn)行操作,將mActiveTracks中存放的AudioTrack數(shù)據(jù)送至AudioMixer進(jìn)行混音操作,將混音結(jié)果通過AudioStreamOutput實例化,在硬件終端中的播放出來的聲音就是最后開啟音頻應(yīng)用程序輸出的聲音。本實施例在實施例一的基礎(chǔ)上,對其中的步驟給出了具體優(yōu)選的實現(xiàn)步驟,并以Android系統(tǒng)為例對其中的步驟具體描述及說明,顯然本實施例方法亦可用于其它系統(tǒng)的視頻播放終端,例如微軟的WP系統(tǒng),蘋果的IOS系統(tǒng),同時亦可采用各種操作系統(tǒng)的電腦終端,比如winxp、win7、linux、mac等,亦可通過本實施例提供的方法實現(xiàn)聲音分離輸出。在具體實現(xiàn)本發(fā)明實施例時,當(dāng)最新開啟的音頻應(yīng)用程序有聲音輸出,則根據(jù)進(jìn)程號將該音頻應(yīng)用程序?qū)?yīng)的音軌數(shù)據(jù)篩選出來,并將該音軌數(shù)據(jù)發(fā)到混音器中去混音,實現(xiàn)播放該應(yīng)用程序的聲音;若當(dāng)前開啟的應(yīng)用程序(如網(wǎng)頁)沒有聲音時,則保持播放之前的聲音。而在現(xiàn)有音頻播放終端,會將所有音軌數(shù)據(jù)不經(jīng)篩選的混音輸出,而通過本發(fā)明實施例,僅輸出經(jīng)過篩選后的音軌數(shù)據(jù),即最后打開的一個聲音文件,解決了聲音文件輸出混亂的問題。實施例三:圖3示出了本發(fā)明第三實施例提供的一種音頻播放裝置的結(jié)構(gòu),為了便于說明僅不出了與本發(fā)明實施例相關(guān)的部分。本實施例提供的音頻播放裝置包括索引表創(chuàng)建模塊301,用于創(chuàng)建包含每一音頻應(yīng)用程序的聲音文件、音軌數(shù)據(jù)、音軌數(shù)據(jù)進(jìn)程號的索引表;數(shù)據(jù)篩選模塊302,用于根據(jù)當(dāng)前激活狀態(tài)音頻應(yīng)用程序的聲音文件對應(yīng)進(jìn)程號查詢所述索引表,篩選出所述進(jìn)程號對應(yīng)的音軌數(shù)據(jù);混音器輸出模塊303,用于在混音線程中將所述篩選出的音軌數(shù)據(jù)送至混音器中混音輸出。
在本實施例中,索引表創(chuàng)建模塊301、數(shù)據(jù)篩選模塊302和混音器輸出模塊303分別依次對應(yīng)實現(xiàn)了實施例一中步驟S101-S103。具體的,通過所述索引表創(chuàng)建模塊301創(chuàng)建包含聲音文件、音軌數(shù)據(jù)、音軌數(shù)據(jù)進(jìn)程號的對應(yīng)關(guān)系的索引表,使得數(shù)據(jù)篩選模塊302能夠根據(jù)當(dāng)前激活狀態(tài)音頻應(yīng)用程序的聲音文件對應(yīng)的進(jìn)程號查詢到對應(yīng)的音軌數(shù)據(jù),所述音軌數(shù)據(jù)可以來自于同一聲音文件,也可以來自于不同的聲音文件,混音器輸出模塊303將篩選出的音軌數(shù)據(jù)送至混音器中混音輸出,從而實現(xiàn)輸出最近開啟的音頻應(yīng)用程序的聲音而屏蔽其他應(yīng)用的聲音,達(dá)到了分離多個聲音文件的目的。實施例四圖4示出了本發(fā)明第四實施例提供的一種音頻播放裝置的結(jié)構(gòu),為了便于說明僅不出了與本發(fā)明實施例相關(guān)的部分。本實施例提供的音頻播放裝置包括索引表創(chuàng)建模塊41,用于創(chuàng)建包含每一音頻應(yīng)用程序的聲音文件、音軌數(shù)據(jù)、音軌數(shù)據(jù)進(jìn)程號的對應(yīng)關(guān)系的索引表;數(shù)據(jù)篩選模塊42,用于根據(jù)當(dāng)前激活狀態(tài)音頻應(yīng)用程序的聲音文件對應(yīng)的進(jìn)程號查詢所述索引表,篩選出進(jìn)程號對應(yīng)的音軌數(shù)據(jù);混音器輸出模塊43,用于在混音線程中將所述篩選出的音軌數(shù)據(jù)送至混音器中混音輸出。其中,所述索引表創(chuàng)建模塊41包括數(shù)據(jù)創(chuàng)建單元411,用于解析已開啟音頻應(yīng)用程序中所包含的聲音文件,在音頻管理器中創(chuàng)建聲音文件對應(yīng)的音軌數(shù)據(jù),并為每個音軌數(shù)據(jù)分配一個進(jìn)程號;索引表創(chuàng)建單元412,用于創(chuàng)建包含所述聲音文件、音軌數(shù)據(jù)、進(jìn)程號對應(yīng)關(guān)系的索引表。其中,所述數(shù)據(jù)篩選模塊42包括應(yīng)用程序確定單元421,用于確定當(dāng)前激活狀態(tài)的音頻應(yīng)用程序;聲音文件確定單元422,用于根據(jù)當(dāng)前激活狀態(tài)的音頻應(yīng)用程序確定當(dāng)前激活狀態(tài)聲音文件;數(shù)據(jù)篩選添加單元423,用于根據(jù)當(dāng)前激活狀態(tài)聲音文件對應(yīng)的進(jìn)程號查找所述索引表,篩選出所述進(jìn)程號對應(yīng)的音軌數(shù)據(jù)并將之添加到音頻活躍數(shù)組中。其中,所述混音器輸出模塊43包括混音器調(diào)用單元431,用于在混音線程的線程循環(huán)中調(diào)用混音器;混音操作單元432,用于將所述音頻活躍數(shù)組中的音軌數(shù)據(jù)送至混音器進(jìn)行混音操作混音輸出單元433,用于將混音結(jié)果傳遞給音頻輸出類進(jìn)行實例化,并在硬件終端中播放出來。本實施例中的各個模塊實現(xiàn)了實施例二中的各個步驟,具體的,數(shù)據(jù)創(chuàng)建單元411 和索引表創(chuàng)建單元412對應(yīng)實現(xiàn)步驟S201-S202,激活應(yīng)用程序確定單元421、聲音文件確定單元422和數(shù)據(jù)篩選添加單元423對應(yīng)實現(xiàn)步驟S203-S205,混音器調(diào)用單元431、混音操作單元432和混音輸出單元433對應(yīng)實現(xiàn)步驟S206-S208。本實施例在實施例三的基礎(chǔ)上,列出了各個組成模塊的優(yōu)選結(jié)構(gòu),數(shù)據(jù)創(chuàng)建單元411在創(chuàng)建音軌數(shù)據(jù)時,為每個音軌數(shù)據(jù)分配一個進(jìn)程號,并通過索引表創(chuàng)建單元412建立索引表,激應(yīng)用程序確定單元421確定當(dāng)前激活狀態(tài)的音頻應(yīng)用程序后,聲音文件確定單元422根據(jù)當(dāng)前激活狀態(tài)的音頻應(yīng)用程序確定當(dāng)前激活狀態(tài)聲音文件,數(shù)據(jù)篩選添加單元423根據(jù)進(jìn)程號查找索引表,并將查找出的音軌數(shù)據(jù)添加到音頻活躍數(shù)組中,混音器調(diào)用單元431調(diào)用混音器,使得混音操作單元432將音頻活躍數(shù)組中的音軌數(shù)據(jù)進(jìn)行混音操作,最后混音輸出模塊433輸出混音結(jié)果。本實施例通過具體列出本裝置的模塊結(jié)構(gòu),實現(xiàn)了輸出最后打開的聲音文件,屏蔽了其他應(yīng)用程序的聲音,達(dá)到了分離多個聲音文件的目的。實施例五本實施例提供了一種音頻播放終端,包括實施例三或?qū)嵤├乃龅囊纛l播放裝置,所述終端可以采用各種操作系統(tǒng),包括Android、wp、winxp、win7、linux、mac等,所述終端包括但不限于手機(jī)、智能電視、音樂播放器、掌上電腦、個人電腦等等,只要是能夠?qū)崿F(xiàn)在運行多個音頻應(yīng)用程序時,可以選擇播放最近打開的聲音文件,都在本發(fā)明實施例包含范圍之內(nèi)。需要說明的是,結(jié)合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬件、計算機(jī)軟件或者二者的結(jié)合來實現(xiàn),為了清楚地說明硬件和軟件的可互換性,在上述說明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計約束條件。專業(yè)技術(shù)人員可以對每個特定的應(yīng)用來使用不同方法來實現(xiàn)所描述的功能,但是這種實現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。本領(lǐng)域普通技術(shù)人員可以理解,實現(xiàn)上述實施例方法中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件來完成,所述的程序可以在存儲于一計算機(jī)可讀取存儲介質(zhì)中,所述的存儲介質(zhì),如R0M/RAM、磁盤、光盤等。以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種音頻播放方法,其特征在于,所述方法包括 創(chuàng)建包含每一音頻應(yīng)用程序的聲音文件、音軌數(shù)據(jù)、音軌數(shù)據(jù)進(jìn)程號對應(yīng)關(guān)系的索引表; 根據(jù)當(dāng)前激活狀態(tài)音頻應(yīng)用程序的聲音文件對應(yīng)的進(jìn)程號查詢所述索引表,篩選出所述進(jìn)程號對應(yīng)的音軌數(shù)據(jù); 在混音線程中將所述篩選出的音軌數(shù)據(jù)送至混音器中混音輸出。
2.如權(quán)利要求I所述方法,其特征在于,所述創(chuàng)建包含每一音頻應(yīng)用程序的聲音文件、音軌數(shù)據(jù)、音軌數(shù)據(jù)進(jìn)程號對應(yīng)關(guān)系的索引表步驟包括 解析已開啟音頻應(yīng)用程序中所包含的聲音文件,創(chuàng)建聲音文件對應(yīng)的音軌數(shù)據(jù),并為每個音軌數(shù)據(jù)分配一個音軌數(shù)據(jù)進(jìn)程號; 創(chuàng)建包含所述聲音文件、音軌數(shù)據(jù)、音軌數(shù)據(jù)進(jìn)程號的索引表。
3.如權(quán)利要求I所述方法,其特征在于,所述根據(jù)當(dāng)前激活狀態(tài)音頻應(yīng)用程序的聲音文件對應(yīng)的進(jìn)程號查詢所述索引表,篩選出所述進(jìn)程號對應(yīng)的音軌數(shù)據(jù)步驟包括 確定當(dāng)前激活狀態(tài)的音頻應(yīng)用程序; 根據(jù)當(dāng)前激活狀態(tài)的音頻應(yīng)用程序確定當(dāng)前激活狀態(tài)聲音文件; 根據(jù)當(dāng)前激活狀態(tài)聲音文件對應(yīng)的進(jìn)程號查找所述索引表,篩選出所述進(jìn)程號對應(yīng)的音軌數(shù)據(jù)并將之添加到音頻活躍數(shù)組中。
4.如權(quán)利要求3所述方法,其特征在于,所述在混音線程中將所述篩選出的音軌數(shù)據(jù)送至混音器中混音輸出步驟包括 在混音線程的線程循環(huán)中調(diào)用混音器; 將所述音頻活躍數(shù)組中的音軌數(shù)據(jù)送至混音器進(jìn)行混音操作; 將混音結(jié)果傳遞給音頻輸出類進(jìn)行實例化,并在硬件終端中播放出來。
5.一種音頻播放裝置,其特征在于,所述裝置包括 索引表創(chuàng)建模塊,用于創(chuàng)建包含每一音頻應(yīng)用程序的聲音文件、音軌數(shù)據(jù)、音軌數(shù)據(jù)進(jìn)程號對應(yīng)關(guān)系的索引表; 數(shù)據(jù)篩選模塊,用于根據(jù)當(dāng)前激活狀態(tài)音頻應(yīng)用程序的聲音文件對應(yīng)的進(jìn)程號查詢所述索引表,篩選出所述進(jìn)程號對應(yīng)的音軌數(shù)據(jù); 混音器輸出模塊,用于在混音線程中將所述篩選出的音軌數(shù)據(jù)送至混音器中混音輸出。
6.如權(quán)利要求5所述裝置,其特征在于,所述索引表創(chuàng)建模塊包括 數(shù)據(jù)創(chuàng)建單元,用于解析已開啟音頻應(yīng)用程序中所包含的聲音文件,創(chuàng)建聲音文件對應(yīng)的音軌數(shù)據(jù),并為每個音軌數(shù)據(jù)分配一個進(jìn)程號; 索引表創(chuàng)建單元,用于創(chuàng)建包含所述聲音文件、音軌數(shù)據(jù)、音軌數(shù)據(jù)進(jìn)程號的對應(yīng)關(guān)系的索引表。
7.如權(quán)利要求5所述裝置,其特征在于,所述數(shù)據(jù)篩選模塊包括 應(yīng)用程序確定單元,用于確定當(dāng)前激活狀態(tài)的音頻應(yīng)用程序; 聲音文件確定單元,用于根據(jù)當(dāng)前激活狀態(tài)的音頻應(yīng)用程序確定當(dāng)前激活狀態(tài)聲音文件; 數(shù)據(jù)篩選添加單元,用于根據(jù)當(dāng)前激活狀態(tài)聲音文件對應(yīng)的進(jìn)程號查找所述索引表,篩選出所述進(jìn)程號對應(yīng)的音軌數(shù)據(jù)并將之添加到音頻活躍數(shù)組中。
8.如權(quán)利要求7所述裝置,其特征在于,所述混音輸出模塊包括 混音器調(diào)用單元,用于在混音線程的線程循環(huán)中調(diào)用混音器; 混音器操作單元,用于將所述活躍數(shù)據(jù)中的音軌數(shù)據(jù)送至混音器進(jìn)行混音操作混音輸出單元,用于將混音結(jié)果傳遞給音頻輸出類進(jìn)行實例化,并在硬件終端中播放出來。
9.一種音頻播放終端,所述終端包括如權(quán)利要求5-8任一項所述的音頻播放裝置。
全文摘要
本發(fā)明適用于音頻處理領(lǐng)域,提供一種音頻播放方法、裝置,所述方法包括創(chuàng)建包含每一音頻應(yīng)用程序的聲音文件、音軌數(shù)據(jù)、音軌數(shù)據(jù)進(jìn)程號的對應(yīng)關(guān)系的索引表;根據(jù)當(dāng)前激活狀態(tài)音頻應(yīng)用程序的聲音文件對應(yīng)的進(jìn)程號查詢所述索引表,篩選出所述進(jìn)程號對應(yīng)的音軌數(shù)據(jù);在混音線程中將所述篩選出的音軌數(shù)據(jù)送至混音器中混音輸出。本發(fā)明根據(jù)當(dāng)前激活狀態(tài)音頻應(yīng)用程序的聲音文件對應(yīng)的進(jìn)程號查詢所述索引表,查找到對應(yīng)的音軌數(shù)據(jù),將所述音軌數(shù)據(jù)在混音器中混音輸出,從而實現(xiàn)了僅播放最后打開音頻應(yīng)用的聲音文件而屏蔽其他應(yīng)用的聲音,達(dá)到了聲音分離的目的。
文檔編號G11B27/10GK102768846SQ201210254789
公開日2012年11月7日 申請日期2012年7月20日 優(yōu)先權(quán)日2012年7月20日
發(fā)明者吳瓊 申請人:Tcl集團(tuán)股份有限公司