两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

當音頻處理對象訪問違例時的恢復的制作方法

文檔序號:6396091閱讀:210來源:國知局
專利名稱:當音頻處理對象訪問違例時的恢復的制作方法
技術(shù)領(lǐng)域
本發(fā)明一般涉及流音頻處理,尤其涉及流音頻處理期間從音頻處理對象訪問違例中恢復。
背景技術(shù)
計算機系統(tǒng),如個人計算機(PC),正越來越多地被用于流音頻數(shù)據(jù)的記錄和回放。PC可以被用作為同時運行數(shù)個音頻、視頻和多媒體應用的一種媒體服務器,這些應用都使用PC的操作系統(tǒng)(OS)。作為將PC用作媒體服務器的例子,考慮以下同時有多個用戶的情形。使用PC上DVD播放器的第一個媒體播放器應用(MP)回放一張數(shù)字視頻盤。為了進行網(wǎng)絡(luò)電話,為實時通訊應用(RTC)中的因特網(wǎng)語音協(xié)議使用麥克風,在網(wǎng)絡(luò)電話中,各個計算機系統(tǒng)的用戶與其他的用戶在分組交換網(wǎng)絡(luò)上進行通話,類似于電話用戶與其它電話用戶在電路交換網(wǎng)絡(luò)上進行通話。用戶與PC互動的過程中,OS產(chǎn)生系統(tǒng)聲響。當經(jīng)由電纜或衛(wèi)星TV廣播系統(tǒng)接收到流多媒體時,視頻點播(VOD)應用被執(zhí)行。通過執(zhí)行使用PC的CD-ROM的第二媒體播放器應用回放音樂盤(如CD)。其他用戶在PC上玩視頻游戲,其中相應的游戲應用根據(jù)用戶與游戲應用的互動產(chǎn)生音頻數(shù)據(jù)流。在可以在PC上執(zhí)行一個或多個全局音效應用(GFX)。GFX的例子包括混響效應應用、音頻畸變應用、通過對將要提供給一個或多個揚聲器的流音頻數(shù)據(jù)所進行的數(shù)字信號處理(DSP)所執(zhí)行的揚聲器補償應用、多頻帶音頻均衡器應用(提供一個用戶接口,藉以對音頻設(shè)備(如,聲卡)其作用使得PC用戶能夠以各種預置形式(如,音樂廳、搖滾、古典,等)調(diào)節(jié)來自音頻設(shè)備的音頻輸出)以及對輸出給一個或多個音頻驅(qū)動器所驅(qū)動的音頻設(shè)備的一個或多個音頻數(shù)據(jù)流進行DSP處理的其他GFX。
上面所例舉的任何應用以及其他的音頻可視應用程序可能編寫得很糟糕,以至于執(zhí)行失敗和應用中斷。這樣的應用故障會造成PC的OS的一系列故障,也被稱為計算機崩潰,也就是PC自己停止工作。計算機崩潰意味著編寫應用程序的代碼中有非常嚴重的軟件錯誤(bug)。在要求OS輸出到音頻設(shè)備的音頻應用情況中,錯誤會導致訪問違例。OS的內(nèi)核(調(diào)度服務)的存儲器和被用來處理OS中音頻的存儲器應該是相互完全隔離的。當音頻應用訪問非常駐的存儲器時,會發(fā)生訪問違例(如,存儲器訪問非法或不被許可)。訪問違例通常發(fā)生在音頻應用具有運行在內(nèi)核模式下的音頻設(shè)備驅(qū)動器的時候。若音頻應用在對OS的內(nèi)核空間或音頻設(shè)備驅(qū)動器訪問時出現(xiàn)訪問違例,該訪問違例會造成計算機崩潰。
只要OS的內(nèi)核保持完整,崩潰的音頻應用將不會造成內(nèi)核的不穩(wěn)定。而是僅僅該音頻應用停止工作并必須被重啟。但是,對內(nèi)核的訪問違例會造成該內(nèi)核變得不穩(wěn)定,以至于產(chǎn)生不能恢復的致命錯誤。在微軟公司的Windows操作系統(tǒng)環(huán)境中,通過顯示在藍色屏幕上的一個診斷結(jié)果來將計算機崩潰通知給PC用戶。因此,按照慣例使用死機藍屏(Blue Screen of Death,BSOD)這一術(shù)語。當用戶遇到BSOD,它必須重新啟動或引導PC來恢復。
當多個執(zhí)行音頻和音頻可視應用中的僅僅一個具有軟件錯誤時,對將PC用作媒體服務器是特別有害的。該軟件錯誤會對PC所提供的音頻造成不同程度的破壞。在最輕程度的破壞中,僅僅含有錯誤的應用所產(chǎn)生的音頻數(shù)據(jù)流受到影響。而在更大程度的破壞中,所有音頻設(shè)備都受到影響并可能停止工作,即到所有音頻設(shè)備的總體音頻提供都停止。在更嚴重的情況下,一個音頻應用中的軟件錯誤將造成計算機崩潰,因此要求PC上的所有活動都停止直到OS被重新裝載——這可能需要花費數(shù)分鐘。
如上所述,提供這樣一個OS將是本領(lǐng)域中的一個優(yōu)點,這個OS為任何種類的、在計算機系統(tǒng)上執(zhí)行的音頻應用的音頻請求服務,同時隔離音頻應用使得其在執(zhí)行期間的故障既不引起全局音頻再現(xiàn)停止也不引起計算機崩潰。

發(fā)明內(nèi)容
在一個實現(xiàn)中,操作系統(tǒng)的系統(tǒng)音頻服務保存音頻應用的環(huán)境,其中即使音頻應用的處理故障,也能恢復這個處理。在另一個實現(xiàn)中,計算機系統(tǒng)具有一個處理器用于執(zhí)行音頻應用以產(chǎn)生第一音頻數(shù)據(jù)流。處理器執(zhí)行一操作系統(tǒng),它在邏輯上分成用于內(nèi)核的部分和用于音頻子系統(tǒng)的部分。音頻子系統(tǒng)分成邏輯上獨立的子部分。用于與音頻子系統(tǒng)一起處理第一音頻數(shù)據(jù)流的過程(例如,音頻處理對象),具有保存在第一子部分中的環(huán)境,它是在執(zhí)行第二子部分中的過程之前被保存的。當過程產(chǎn)生訪問違例時,通過從第一子部分恢復其環(huán)境來恢復過程。為過程保存的環(huán)境包括地址和數(shù)據(jù)結(jié)構(gòu)信息,它們足以通過恢復在音頻子系統(tǒng)中所保存的環(huán)境來恢復過程。當處理器執(zhí)行一個音頻應用以產(chǎn)生要被輸出到不同于第一音頻設(shè)備的第二音頻設(shè)備的第二音頻數(shù)據(jù)流時(其中在第一音頻設(shè)備輸出第一音頻數(shù)據(jù)流),過程的訪問違例和恢復將都不影響由第二音頻設(shè)備要輸出的音頻。


參考附圖提供詳細的說明,其中遍及本揭示和附圖,相同的數(shù)字用于引用相同的組件和部件。100系列的數(shù)字指最初出現(xiàn)于圖1中的部件,200系列的數(shù)字指最初出現(xiàn)于圖2中的部件,300系列的數(shù)字指最初出現(xiàn)于圖3中的部件,以此類推。
圖1示出在一環(huán)境中的示例性計算機系統(tǒng),在該環(huán)境中這個計算機系統(tǒng)用作為一個媒體服務器,用于為在多個位置中的多個用戶提供音頻服務。
圖2示出一實現(xiàn),在其中一個音頻應用正在一個計算機系統(tǒng)中執(zhí)行,這個計算機系統(tǒng)具有與音頻設(shè)備的驅(qū)動程序通信的操作系統(tǒng)。
圖3示出例示一個過程的流程圖,在這個過程中,操作系統(tǒng)的音頻子系統(tǒng)為用于執(zhí)行音頻處理對象(APO)的請求服務,以在通過由音頻驅(qū)動程序驅(qū)動的音頻設(shè)備再現(xiàn)的音頻數(shù)據(jù)流上產(chǎn)生全局效果(GFX),其中在由GFX APO引起的訪問違例之后,使用預先保存的環(huán)境恢復音頻子系統(tǒng)的各種環(huán)境。
圖4示出例示一個過程的流程圖,在這個過程中,操作系統(tǒng)的音頻子系統(tǒng)為執(zhí)行音頻處理對象(APO)的請求服務,以在通過由音頻驅(qū)動程序驅(qū)動的音頻設(shè)備再現(xiàn)的音頻數(shù)據(jù)流上產(chǎn)生局部音效(LFX),其中在由LFX APO引起的訪問違例之后,使用預先保存的環(huán)境恢復音頻子系統(tǒng)的各種環(huán)境。
圖5例示一計算機環(huán)境的例子,在這個環(huán)境內(nèi),在此所述的計算機系統(tǒng)、軟件應用、方法和系統(tǒng)能夠或者完全地或者部分地實現(xiàn)。
具體實施例方式
多個音頻設(shè)備和用于驅(qū)動前者的應用驅(qū)動程序能與正被用作媒體服務器的計算機系統(tǒng)通信。像這樣,計算機系統(tǒng)能同時發(fā)送音頻至多于一個音頻設(shè)備。計算機系統(tǒng)的操作系統(tǒng)(OS)具有一個內(nèi)核和一個內(nèi)置的音頻子系統(tǒng)兩者,音頻子系統(tǒng)只是操作系統(tǒng)的許多子系統(tǒng)中的一個子系統(tǒng)。一個或多個應用向音頻子系統(tǒng)進行一個請求以執(zhí)行音頻處理對象(Audio Processing Object)(APO),該音頻處理對象將在正在被導向音頻設(shè)備之一的所有音頻上具有全局效果(global effect)(GFX)。作為例子,GFX APO可以是混響(reverberation)效果、畸變效果、揚聲器補償效果或者數(shù)字信號處理(DSP)效果。
音頻子系統(tǒng)將OS的內(nèi)核與音頻設(shè)備驅(qū)動程序隔離以及將音頻設(shè)備驅(qū)動程序彼此隔離。這個隔離,即沙箱(sandboxing)技術(shù),允許在一個音頻應用故障(諸如通過產(chǎn)生訪問違例)時進行恢復。隔離確保只有來自故障應用的音頻將停止,而不是來自正在執(zhí)行的所有應用的音頻的全部。隔離還確保訪問違例將不引起計算機系統(tǒng)崩潰,這避免引導(例如引導程序)操作。故障應用能被重新啟動并繼續(xù)產(chǎn)生音頻。用戶只經(jīng)歷由于應用故障的瞬間音頻損失。由計算機系統(tǒng)的用戶感知的音頻損失限于故障應用的音頻,并且將按照缺少的聲音的時間被改變。
在一個實現(xiàn)中,兩個用戶能使用一個個人計算機(PC)作為媒體服務器,其中第一用戶在PC的DVD播放器上播放在一DVD上的電影,并且來自電影的聲音由第一聲卡進行處理用于在第一組揚聲器上再現(xiàn)。第二用戶使用PC的CD閱讀器播放在激光唱片(CD)上的歌曲。關(guān)于第二用戶,這個播放要被再現(xiàn)到與第二聲卡通信的第二組揚聲器,第二聲卡與PC的主板通信。第二聲卡是由一個音頻設(shè)備驅(qū)動程序驅(qū)動的。歌曲的播放通過執(zhí)行PC上的媒體播放機應用來進行。媒體播放機應用在由歌曲的播放產(chǎn)生的音頻數(shù)據(jù)流上調(diào)用GFX APO。如果GFX APO具有使其在執(zhí)行期間出故障的軟件錯誤,諸如通過產(chǎn)生訪問違例,第二用戶將經(jīng)歷,例如,在從這個故障中恢復期間的五(5)秒聲音損失。在恢復期間,計算機將不需要被重新啟動,并且第一用戶將不經(jīng)歷在播放DVD上的電影中的任何聲音的損失。重新載入GFX APO并且音頻子系統(tǒng)將音頻帶回播放歌曲所脫落的地方。重新載入的GFX APO繼續(xù)執(zhí)行,使得處理要被再現(xiàn)到與第二聲卡一起的第二組揚聲器的音頻數(shù)據(jù)流。如果任何其它設(shè)備正在使用PC再現(xiàn)音頻,則訪問違例和恢復都不會損失那個音頻。
圖1示出環(huán)境100,在其中PC 124正被用作媒體服務器。在圖1中顯示了很多人,每個人正在收聽從一個或多個揚聲器106再現(xiàn)的音頻。PC 124在A-V部分122中具有便攜式媒體閱讀器,諸如數(shù)字視頻盤(DVD)閱讀器和激光唱片(CD)閱讀器,用于為了正在使用PC 124作為媒體服務器的人播放包括音頻的多媒體。PC 124正在執(zhí)行多個多媒體應用以播放正在從A-V部分122中的便攜式媒體閱讀器讀取的便攜式媒體。音頻數(shù)據(jù)被傳送至輸入部分120,輸入部分120與操作系統(tǒng)(O/S)114通信。一個這樣的多媒體應用可能是WindowsMedia Player(媒體播放器)軟件,由美國,華盛頓州(Washington),雷蒙德(Redmond)的Microsoft公司提供的。
PC 124的O/S114具有一個輸出部分112,它與各種音頻設(shè)備102(1-N)通信,通過它們相應的驅(qū)動程序104(1-N)。作為例子,音頻設(shè)備102可以是一個雙聲道聲卡,一對通用串行總線(USB)揚聲器,一個網(wǎng)絡(luò)揚聲器(TCP/IP揚聲器),或者能夠容納一個或多個聲道輸出的其它設(shè)備等。例如,一個音頻設(shè)備102可以是一個聲卡,它是被安裝在PC 124的主板上的擴展板,使PC能夠通過將數(shù)字數(shù)據(jù)轉(zhuǎn)變成模擬聲音來再現(xiàn)聲音至揚聲器106之一。音頻設(shè)備102能被用于再現(xiàn)(播放)或捕捉(記錄)音頻數(shù)據(jù)。例如,音頻設(shè)備102能被用于從連接至PC 124的話筒106(k-1)記錄聲音輸入,并且能被用于處理存儲在磁盤上的聲音。一個人被示為在聆聽一個或多個揚聲器106(k)的同時向話筒106(k-1)講話。通過O/S 114的操作再現(xiàn)和捕捉音頻。在一個網(wǎng)絡(luò)電話環(huán)境中能與揚聲器106(k)一起使用話筒106(k-1),一個人向話筒106(k-1)說話以便通過網(wǎng)絡(luò)向另一個PC的用戶講話,其中每個PC正在執(zhí)行實時通信應用(RTC)。O/S 114包括邏輯上獨立的部分,它們是音頻子系統(tǒng)116和內(nèi)核118。內(nèi)核118是用于操作系統(tǒng)114的調(diào)度服務。音頻組件116能包括各種軟件組件,如下面相對于圖2所述。
在圖2中看到圖1的O/S 114的實現(xiàn),其中環(huán)境200使聲音能夠由音頻設(shè)備再現(xiàn),音頻設(shè)備是由音頻設(shè)備驅(qū)動程序214驅(qū)動的。在圖2中的寬黑線是想要表示O/S 114具有兩個(2)由線220定義的邏輯上獨立部分,以及表示音頻子系統(tǒng)116具有三個(3)由線220-224定義的邏輯上獨立子部分。O/S 114的兩個邏輯上獨立的部分是由線220分開的內(nèi)核118和音頻子系統(tǒng)116。每個部分在用戶模式中具有它自己的地址空間,并且它完全與其它部分和與正在運行的任何其它應用隔離。同樣,每個子部分在用戶模式中具有它自己的地址空間,并且它完全與其它部分和與正在運行的任何其它應用隔離。所有三個(3)子部分在用戶模式中都位于內(nèi)核118的頂上,因此如果任何一個子部分崩潰,則PC 124在沒有致命錯誤的情況下繼續(xù)運行。用術(shù)語‘環(huán)境’,如在此使用的,是想要表示在存儲器中與一個過程相關(guān)聯(lián)的地址空間和與那個過程相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu),其中操作系統(tǒng)需要該數(shù)據(jù)結(jié)構(gòu)用于適當?shù)貓?zhí)行這個過程。
環(huán)境200具有帶箭頭的實線,它們反映控制音頻子系統(tǒng)116的指令的流動。在環(huán)境200中帶箭頭的虛線表示音頻數(shù)據(jù)流的流動。在音頻子系統(tǒng)116中的三個(3)邏輯上獨立的子部分是過程環(huán)境(process context)270、服務環(huán)境(service context)272和全局音頻引擎(global audio engine)274。能夠?qū)⑷忠纛l引擎274與由音頻設(shè)備驅(qū)動程序214驅(qū)動的音頻設(shè)備硬件同步。當被同步后,全局音頻引擎274在恰當?shù)臅r候?qū)?shù)據(jù)抽取到環(huán)形緩沖器212中。被同步的抽取使由音頻設(shè)備驅(qū)動程序214驅(qū)動的音頻設(shè)備能夠在恰當?shù)臅r候?qū)⒁纛l數(shù)據(jù)流讀出環(huán)形緩沖器212。
音頻應用202在過程環(huán)境270中運行。過程環(huán)境270具有獨立的地址空間,用于正在音頻子系統(tǒng)116中運行的每個音頻應用202。像這樣,每個音頻應用202的運行將不影響其它音頻應用(未示出)。過程環(huán)境270為音頻應用202執(zhí)行音頻數(shù)據(jù)流的處理。在音頻應用202的軟件中的錯誤是常見的,這可以歸因于在每個醒來的時間段內(nèi)由音頻應用202完成的處理的音頻數(shù)據(jù)的數(shù)量、速度和頻率。
由線220-222定義的過程環(huán)境270,是由服務環(huán)境272服務或管理的。過程環(huán)境270是在典型的應用過程環(huán)境中運行的客戶(或應用)空間的代表。音頻應用202產(chǎn)生能由過程環(huán)境270中的局部效果引擎(local effect engine)(LFX)處理的音頻數(shù)據(jù)流,然后將它輸出至輸入緩沖器208。輸入緩沖器208位于過程環(huán)境270與全局音頻引擎274的接口處。除另外說明,輸入緩沖器208存儲來自在過程環(huán)境270中運行的局部應用的輸出。盡管圖2對于過程環(huán)境270只示出一個音頻應用202,但可以預期音頻子系統(tǒng)116對于子系統(tǒng)116的過程環(huán)境270能支持多個音頻應用。
服務環(huán)境272在音頻子系統(tǒng)116中是由線222-224定義的。服務環(huán)境272是音頻子系統(tǒng)116的一個組件,它當O/S 114在PC 124引導載入時或者當用戶登錄或注銷時出現(xiàn)。服務環(huán)境272包含任何音頻應用為了取得對音頻子系統(tǒng)116的服務的訪問時所需要的應用編程接口(API)。服務環(huán)境272是全局音頻服務空間的代表,諸如在系統(tǒng)音頻設(shè)備中運行的政策和系統(tǒng)圖表服務。服務環(huán)境272在由過程環(huán)境270進行的處理崩潰后保持著。
全局音頻引擎274是一個音頻設(shè)備(未示出-例如,聲卡)的代理,它是由音頻設(shè)備驅(qū)動程序214驅(qū)動的,全局音頻引擎通過環(huán)形緩沖器212與音頻設(shè)備驅(qū)動程序212通信。全局音頻引擎274代表用于每個全局音頻引擎處理空間的一個過程,其中每個全局音頻引擎處理空間負責為任何一個特定的音頻設(shè)備處理所有音頻數(shù)據(jù)。另外,音頻子系統(tǒng)116的全局音頻引擎274能通過混合至各個音頻或多媒體應用的多個連接虛擬一個單一的音頻設(shè)備,其中每個應用產(chǎn)生一個音頻數(shù)據(jù)流。當這樣虛擬時,全局音頻引擎274能將混合的音頻數(shù)據(jù)作為一個音頻數(shù)據(jù)流提供至單一的音頻設(shè)備。像這樣,大量同時執(zhí)行的應用能夠被輸出至它們?nèi)抗蚕淼耐灰纛l設(shè)備。另外,全局音頻引擎274能在將PC 124用作媒體服務器的同時,使多個音頻設(shè)備能夠同時起作用。
輸入緩沖器208中的音頻數(shù)據(jù)流能被用作全局音頻引擎274的輸入。全局音頻引擎274執(zhí)行一個音頻處理對象(Audio Processing Ojbect)(APO)以在要在由音頻設(shè)備驅(qū)動程序214驅(qū)動的音頻設(shè)備處輸出的音頻數(shù)據(jù)流上具有全局效果(GFX)。像這樣,全局音頻引擎274能混合和/或處理在輸入緩沖器208中的音頻數(shù)據(jù)流,其中輸入緩沖器208正被用于存儲來自多個音頻應用的音頻數(shù)據(jù)流。混合和/或處理在輸入緩沖器208中的音頻數(shù)據(jù)流的結(jié)果是單一混合的音頻數(shù)據(jù)流被輸出至環(huán)形緩沖器212。環(huán)形緩沖器212與全局音頻引擎274進行接口以提供輸入至音頻設(shè)備驅(qū)動程序214。像這樣,環(huán)形緩沖器212能被用于存儲來自全局音頻引擎274的輸出,并且能被用作音頻設(shè)備驅(qū)動程序214的輸入。
環(huán)境200的音頻子系統(tǒng)116提供一個過程用于每個全局音頻引擎274。通過與相應的音頻設(shè)備驅(qū)動程序的接口,每個全局音頻引擎274反過來為各個音頻設(shè)備負責所有音頻數(shù)據(jù)流的處理。盡管圖2只示出一個音頻設(shè)備驅(qū)動程序214用于一個音頻設(shè)備,但是可以預期音頻子系統(tǒng)116能支持多個音頻設(shè)備及其相應的音頻設(shè)備驅(qū)動程序。
參考前面所述,音頻應用202、由全局音頻引擎274執(zhí)行的GFX APO以及音頻設(shè)備驅(qū)動程序214中的每一個都代表能由第三方提供的軟件,環(huán)境200的音頻子系統(tǒng)116使用所述軟件在音頻設(shè)備處再現(xiàn)音頻數(shù)據(jù)流。像這樣,環(huán)境200為第三方提供一個位置和一個市場,以創(chuàng)新音頻軟件和向使用PC 124的消費者提供音頻軟件,其中環(huán)境200的音頻子系統(tǒng)116駐留于PC 124。
在圖2中所示的環(huán)境200使得O/S 114的組件避免了由于執(zhí)行不完善的第三方軟件引起的訪問違例導致的問題。這樣的避免,也被稱為沙箱,是通過保存環(huán)境完成的,在這個環(huán)境中,音頻數(shù)據(jù)流在音頻子系統(tǒng)116的子部分270和274中正在被處理。在一個實現(xiàn)中,只有全局音頻引擎274的環(huán)境由服務環(huán)境272保存。如果全局音頻引擎274崩潰,諸如由于訪問違例而可能發(fā)生的,崩潰將不影響過程環(huán)境270或者音頻應用202。如果音頻應用202崩潰,在音頻子系統(tǒng)116將不受任何影響。如果服務環(huán)境272崩潰,整個音頻子系統(tǒng)116將崩潰。
全局音頻引擎的恢復當在全局音頻引擎274中的GFX APO處理過程中存在故障時,諸如由于訪問違例所產(chǎn)生的,能使用被保存在服務環(huán)境272中的對應于這個過程的環(huán)境來恢復處理。在恢復之后,音頻數(shù)據(jù)流的處理能依照所保存的過程的環(huán)境(如已經(jīng)被保存在服務環(huán)境272中的一樣)再繼續(xù)。從內(nèi)核276將由音頻子系統(tǒng)116執(zhí)行的音頻要求的服務沙箱化。這個沙箱化防止系統(tǒng)廣泛的故障。發(fā)生崩潰或故障的應用,包括由于局部或全局處理應用故障引起的,能自動地被恢復,因此處理能再繼續(xù)。
局部或全局兩種處理的環(huán)境的保存,能通過將處理的機制(mechanism)放入其自己的一個地址空間中完成。除非另外說明,發(fā)生在過程環(huán)境270中的局部音頻引擎的處理例程的環(huán)境,被保存在不同于保存全局音頻引擎274的處理例程的環(huán)境的地址的一個獨立的地址中。過程的地址空間與保存過程的環(huán)境的地址是分開的。當處理的機制被放在它自己的地址空間中時,該地址空間是與環(huán)境的機制的地址是分開的,處理的機制會崩潰而環(huán)境的機制保持完整無缺。與音頻子系統(tǒng)116邏輯上分開的內(nèi)核118也保持完整無缺。像這樣,崩潰將被限制在只用于一個(1)音頻應用的局部處理的或者只用于一個(1)音頻設(shè)備的全局處理的終止。崩潰將不引起PC 124故障,因而避免系統(tǒng)重啟動或者重新引導,在其他情況下,這將要求的系統(tǒng)重啟動或者重新引導以便再繼續(xù)音頻的再現(xiàn)。在崩潰后,能重新啟動處理的機制,而不是重新啟動PC 124的O/S 114,以便再繼續(xù)音頻的再現(xiàn)。有些實現(xiàn)預期要保存這個環(huán)境,因此能備份地啟動故障的處理。
現(xiàn)在作為一個實現(xiàn)的例子給出從音頻數(shù)據(jù)流的全局音頻處理中的故障進行恢復的一個例子,在這個實現(xiàn)中,媒體播放器應用正在播放音頻數(shù)據(jù)。音頻數(shù)據(jù)正在經(jīng)歷一個全局音效(GFX),它使用在其中具有錯誤的第三方軟件音頻處理對象(APO)。GFX APO軟件是一個數(shù)字信號處理應用,它正在全局音頻引擎274中處理音頻數(shù)據(jù)流。環(huán)境200調(diào)整在服務環(huán)境272中保存(例如,存儲)正在全局音頻引擎274中發(fā)生的處理環(huán)境。像這樣,在全局音頻引擎274中用于GFX APO的地址空間和數(shù)據(jù)結(jié)構(gòu)被存儲在服務環(huán)境272中。最后,在全局音頻引擎274中執(zhí)行的GFX APO中的錯誤產(chǎn)生訪問違例。訪問違例接著使在全局音頻引擎274中的處理崩潰。崩潰的結(jié)果是正在音頻設(shè)備上通過音頻設(shè)備驅(qū)動程序214再現(xiàn)的音頻停止一段時間。在這段時間內(nèi),環(huán)境200調(diào)整從崩潰中恢復。
恢復是通過在全局音頻引擎274中恢復GFX APO的處理的環(huán)境完成的。環(huán)境是從保存環(huán)境的服務環(huán)境272恢復的。因此,被恢復的所保存的環(huán)境是輸入緩沖器208的環(huán)境、全局音頻引擎274中GFX APO處理的環(huán)境以及環(huán)形緩沖器21的環(huán)境。一旦已經(jīng)從服務環(huán)境272中恢復了每個環(huán)境,在全局音頻引擎274中的GFXAPO處理能夠繼續(xù)。在環(huán)境恢復之后,能夠繼續(xù)在音頻設(shè)備上通過音頻設(shè)備驅(qū)動程序214再現(xiàn)音頻。當GFX APO通過其被保存的環(huán)境的恢復而被重載入全局音頻引擎274時,使用計算機系統(tǒng)的消費者將聽到音頻中短時間損失(例如,5秒)。音頻然后返回并大約在它停止的位置再繼續(xù)。沒有其它的音頻設(shè)備將由于GFXAPO的崩潰而損失音頻,因為每個音頻設(shè)備的音頻是通過環(huán)境200與其它音頻設(shè)備的音頻隔離的。
在從崩潰恢復的期間,由全局音頻引擎274進行的音頻數(shù)據(jù)的處理將引起到達或者來自由音頻設(shè)備驅(qū)動程序214服務的音頻設(shè)備的所有音頻流停止。然而,每個音頻應用202將不知道崩潰已經(jīng)發(fā)生。因為負責保持音頻設(shè)備的音頻圖表的結(jié)構(gòu)的服務環(huán)境272,運行于一個獨立的服務環(huán)境中,所以由于其先前的保存服務環(huán)境272能被用于在崩潰后恢復全局音頻引擎274的環(huán)境。服務環(huán)境272還具有對音頻設(shè)備驅(qū)動程序214的狀態(tài)(即,是啟動還是停止)以及在識別不同過程環(huán)境的子部分之間使用的共享緩沖器(例如,輸入緩沖器208,環(huán)形緩沖器212)的控制。服務環(huán)境272將在它們各自的子部分中重新連接輸入緩沖器208、環(huán)形緩沖器212以及全局音頻引擎274。音頻應用202將繼續(xù),對于崩潰是透明的(例如,好象崩潰或訪問違例沒有發(fā)生過)。
在一個實現(xiàn)中,服務環(huán)境272能記住任何第三方GFX APO軟件已經(jīng)崩潰的次數(shù)。在次數(shù)超過預定的閾值之后,能在用戶界面(UI)上向用戶輸出一個診斷的或其它的對話框。在已經(jīng)在UI上向用戶輸出警告之后,GFX APO還能被禁止或者它能被重新激活。能采用用于眾多的訪問違例和隨后的恢復的其它“分層排列的(tiered)”方法,諸如在UI上輸出診斷以及第三方GFX APO軟件的執(zhí)行將不在全局音頻引擎274中被重新啟動的情況下。用于在訪問違例后進行恢復的分層排列的方法有利于避免在調(diào)出和移除一個有缺點的全局效果組件中過多的重復。
關(guān)于音頻應用202,在由全局音頻引擎274進行的音頻數(shù)據(jù)的處理中的崩潰對于音頻應用202的操作和執(zhí)行是透明的。相反,音頻應用202將繼續(xù)輸入到過程環(huán)境270中,用于輸出至在過程環(huán)境270與全局音頻引擎274之間的部分邊界處的輸入緩沖器208。服務環(huán)境272然后能被用于恢復環(huán)境并且執(zhí)行全局音頻引擎274的自動恢復,而音頻應用202保持不知道GFX APO崩潰。
因為在全局音頻引擎274中的處理崩潰后緩沖器208、212仍存在,音頻設(shè)備驅(qū)動程序214和環(huán)形緩沖器212的狀態(tài)能被恢復。當服務環(huán)境272在處理崩潰后在全局音頻引擎274中設(shè)置處理時,服務環(huán)境272必須知道緩沖器208、212的地址,以便新的全局音頻引擎274能夠連接這些緩沖器并且繼續(xù)從音頻應用202接收音頻數(shù)據(jù),音頻應用202在其他情況下既不知道全局音頻引擎274的崩潰也不知道緩沖器208、212的地址。相反,服務環(huán)境272保存緩沖器208、212為對象,因此當服務環(huán)境272恢復全局音頻引擎274時能將它們設(shè)置在全局音頻引擎274中。服務環(huán)境272傳遞指令至被恢復的全局音頻引擎274,表示緩沖器208、212要被用作來自音頻應用202的輸入,用于特定的音頻設(shè)備。當全局音頻引擎274崩潰時,被恢復的全局音頻引擎274從服務環(huán)境272取得環(huán)形緩沖器212的地址。在訪問違例之后,音頻設(shè)備驅(qū)動程序214可能仍在運行并且環(huán)形緩沖器212能夠仍然存在。
以上提供了由于在服務環(huán)境272中的環(huán)境的保存,在全局音頻引擎274中從崩潰的GFX APO的自動恢復的例子。在服務環(huán)境272中環(huán)境的保存確保對于唯一一個音頻設(shè)備的音頻只被中斷短時間,如與重新引導PC 124所需要的時間相比。軟件開發(fā)者能提供GFX APO運行在這里所揭示的音頻子系統(tǒng)116上,其中在不帶下(bring down)所有音頻設(shè)備或者崩潰整個OS 114的情況下,GFX APO還能崩潰。GFX APO還能被帶回(bring back up),只要環(huán)境已經(jīng)被保存在服務環(huán)境272中。音頻子系統(tǒng)116提供相應于每個音頻設(shè)備(例如,聲卡,USB揚聲器等)的全局音頻引擎274,使得全局音頻引擎274能被運行在它自己的環(huán)境中并且被保存在服務環(huán)境272中。像這樣,音頻子系統(tǒng)116相對于崩潰/掛起是容錯的、穩(wěn)固的,以及能從由全局音頻引擎274進行的GFX APO中的音頻數(shù)據(jù)處理中的崩潰恢復。
依照在環(huán)境200中所看到的結(jié)構(gòu),每個音頻設(shè)備能被分到一個獨立的過程環(huán)境。像這樣,當在全局音頻引擎中的處理產(chǎn)生的全局音效時,正在運行的傾向于崩潰的軟件,將不影響在全局音頻引擎中用于另一個音頻設(shè)備的音頻數(shù)據(jù)的處理。而且,當由于在正在處理的全局效果代碼中的錯誤,全局音頻引擎274中的處理崩潰時,能完成自動恢復?;謴褪怯锌赡艿?,因為音頻設(shè)備的全局狀態(tài)被保存在服務環(huán)境272中。像這樣,崩潰的GFX APO能被帶回并且重新連接輸入緩沖器208。
一般而言,從在全局音頻引擎274中的處理中的崩潰的恢復,將關(guān)閉至相應的音頻設(shè)備的音頻,它來自為那個音頻設(shè)備產(chǎn)生音頻數(shù)據(jù)流的每個應用。為了盡可能抵抗崩潰,對于每個音頻設(shè)備的全局音頻引擎274能被運行于其自己的環(huán)境,其中那個環(huán)境被保存在音頻子系統(tǒng)116的邏輯上獨立的服務環(huán)境272中。
圖3示出一個過程300,用于從由在全局音頻引擎中執(zhí)行的GFX ADO的訪問違例中恢復。參考圖2-3,過程300開始于方框302,其中服務環(huán)境272為輸入緩沖器208和環(huán)形緩沖器212保存環(huán)境(例如,地址和數(shù)據(jù)結(jié)構(gòu))。在方框304,用于在音頻數(shù)據(jù)流上產(chǎn)生GFX的APO被初始化。音頻數(shù)據(jù)流要通過由音頻設(shè)備驅(qū)動程序214驅(qū)動的音頻設(shè)備再現(xiàn)。過程300運行到方框306,其中服務環(huán)境272為在全局音頻引擎274中的GFX APO保存環(huán)境。在方框306之后,過程300運行到方框308,其中GFX APO被初始化。在全局音頻引擎274中的執(zhí)行繼續(xù)于方框310,其中全局音頻引擎274執(zhí)行GFX APO以在輸入緩沖器208中的音頻數(shù)據(jù)流上執(zhí)行數(shù)字信號處理。這個處理的輸出,它能包括來自其它局部過程的混合音頻數(shù)據(jù)流,被移到環(huán)形緩沖器212。在環(huán)形緩沖器212中的混合音頻數(shù)據(jù)流具有依照由全局音頻引擎274執(zhí)行的處理的全局效果。
在方框312,GFX APO終止或引起訪問違例。在方框314,服務環(huán)境272檢測終止或訪問違例并且恢復輸入緩沖器208和環(huán)形緩沖器212的環(huán)境。在方框316,進行關(guān)于訪問違例是否已經(jīng)發(fā)生的查詢。如果否,過程300運行到方框304。否則,過程300移動到方框318,其中用于GFX APO的崩潰計數(shù)器被增加。在方框320查詢崩潰計數(shù)器關(guān)于它是否超過一個預定的閾值。如果是,則顯示診斷322a并且過程300運行到方框322b,在這里在沒有傾向于崩潰的GFX APO的情況下重新啟動全局音頻引擎274。如果用于GFX APO的崩潰計數(shù)器沒有超過預定的閾值,則過程300運行回到方框304。
過程環(huán)境的恢復能從音頻數(shù)據(jù)流的局部處理中的故障進行恢復。例如,一個媒體播放器應用,如在圖2中所示的音頻應用202,傳遞音頻數(shù)據(jù)流用于由過程環(huán)境270中的局部效果音頻處理對象(LFX APO)處理。LFX APO具有編程代碼的一個有缺點的部分,當被執(zhí)行時,引起訪問違例(例如,在代碼中的一個錯誤)。在過程環(huán)境270中運行LFX APO之前,環(huán)境200的音頻子系統(tǒng)116調(diào)整正在過程環(huán)境270中發(fā)生的處理的環(huán)境在服務環(huán)境272中的保存(例如,存儲)。最后,在LFX APO中的錯誤使軟件產(chǎn)生訪問違例。訪問違例反過來使在過程環(huán)境270中的處理崩潰。崩潰的結(jié)果是正在再現(xiàn)至輸入緩沖器208的音頻停止一段時間。像這樣,將在要通過音頻設(shè)備驅(qū)動程序214再現(xiàn)至音頻設(shè)備的音頻中存在一個中斷。在這段時間內(nèi),環(huán)境200調(diào)整從崩潰中恢復。
從過程環(huán)境270中的LFX APO中崩潰的恢復是通過恢復過程環(huán)境270的處理的環(huán)境完成的。一旦已經(jīng)從服務環(huán)境272恢復環(huán)境,能重新啟動音頻應用202的執(zhí)行,因此過程環(huán)境270中的LFX APO處理能繼續(xù)。一旦局部處理已經(jīng)繼續(xù),能輸出音頻數(shù)據(jù)流至輸入緩沖器208并且聲音通過音頻設(shè)備驅(qū)動程序214的操作在音頻設(shè)備上再繼續(xù)。沒有其它音頻應用將崩潰,因為音頻應用是被環(huán)境200從其它音頻應用的音頻隔離的。
在由過程環(huán)境270執(zhí)行的LFX APO的處理中的崩潰將使輸入緩沖器208與音頻應用202解除關(guān)聯(lián)。在過程環(huán)境270的處理中的崩潰之后保留的任何音頻數(shù)據(jù)流將需要被清除。當崩潰發(fā)生時,服務環(huán)境272被通知崩潰。當這樣被通知時,服務環(huán)境272能關(guān)閉在崩潰后保留的音頻數(shù)據(jù)流。為了清除保留的音頻數(shù)據(jù)流,服務環(huán)境272能保持由過程環(huán)境270為進行的音頻數(shù)據(jù)處理所創(chuàng)建的一個列表。服務環(huán)境272能使用這個列表以留下一個線程,這個線程等待具有保留的音頻數(shù)據(jù)流的過程環(huán)境270的退出(或者任何其它這樣的過程環(huán)境的退出)。
如果由過程環(huán)境270執(zhí)行的處理崩潰,服務環(huán)境272將停止并關(guān)閉已經(jīng)從由過程環(huán)境270執(zhí)行的處理打開的所有音頻數(shù)據(jù)。如果音頻應用202崩潰,由音頻設(shè)備驅(qū)動程序214驅(qū)動的音頻設(shè)備和全局音頻引擎274將都不會受影響。相反,音頻數(shù)據(jù)仍由其它應用流化至由音頻設(shè)備驅(qū)動程序驅(qū)動214驅(qū)動的音頻設(shè)備或者至全局音頻引擎274。然而,由于在過程環(huán)境270中的崩潰,輸入緩沖器208將與過程環(huán)境270解除關(guān)聯(lián)。像這樣,能夠不使用在輸入緩沖器208中的音頻數(shù)據(jù)。當服務環(huán)境272檢測到由過程環(huán)境272執(zhí)行的處理已經(jīng)崩潰,那么至輸入緩沖器208的每個連接被關(guān)閉或被釋放。在一個實現(xiàn)中,不是自動地恢復音頻應用202。相反,如果需要的話,能由用戶重新啟動音頻應用202。
圖4示出過程400,用于從在過程環(huán)境270中執(zhí)行的局部效果(LFX)音頻處理對象(APO)產(chǎn)生的訪問違例中恢復。參考圖2和4,過程400開始于方框402,其中用于在音頻數(shù)據(jù)流上產(chǎn)生LFX的APO被初始化。音頻數(shù)據(jù)流是要由音頻設(shè)備驅(qū)動程序214驅(qū)動的音頻設(shè)備再現(xiàn)的。在方框404,服務環(huán)境272保存輸入緩沖器208和環(huán)形緩沖器21的環(huán)境(例如,地址和數(shù)據(jù)結(jié)構(gòu))。在方框406,LFX APO開始在過程環(huán)境270中執(zhí)行。在方框408,過程環(huán)境270輸出至輸入緩沖器208并且全局音頻引擎274從輸入緩沖器208取得輸入。局部音效274混合來自輸入緩沖器208的音頻數(shù)據(jù)流并輸出混合音頻數(shù)據(jù)流至環(huán)形緩沖器212。在方框410,LFX APO終止或引起訪問違例。在方框412,服務環(huán)境272檢測到終止或訪問違例并且刪除輸入緩沖器208。
用于各個計算機系統(tǒng)的各種操作系統(tǒng)能夠從前述實現(xiàn)中獲得好處,特別是在操作系統(tǒng)為音頻數(shù)據(jù)的捕捉和再現(xiàn)的某些組合提供音頻服務的時候,以及在操作系統(tǒng)是多線程的和多任務的情況下。示例性當代的操作系統(tǒng)包括由美國加利福尼亞州(California)庫珀蒂諾(Cupertino)的Apple有限公司提供的Mac OS(版本10和以下),加利福尼亞州(California)芒廷維尤(Mountain View)的Be有限公司開發(fā)的BeOS,美國華盛頓州(Washington)雷德蒙(Redmond)的Microsoft公司提供的WindowsOS,以及免費軟件LinuxOS。而且,來自這個專利揭示的好處能由允許非信任的媒體應用執(zhí)行第三方程序的任何多線程的操作系統(tǒng)實現(xiàn),其中第三方程序能產(chǎn)生訪問違例或者否則使操作系統(tǒng)正確操作停止。例如,在此所預期的操作系統(tǒng),為用于音頻處理效果的非信任的第三方媒體應用,提供一個可擴展的媒體處理系統(tǒng),其中音頻處理效果能被用在改變音頻信號的全局環(huán)境中。編寫得不好的或者惡意的代碼,能夠在不使為特定的音頻設(shè)備服務的操作系統(tǒng)的音頻系統(tǒng)部分崩潰的情況下被運行。通過使用操作系統(tǒng)中的保護機制(如過程)將音頻子系統(tǒng)分成邏輯上分開的部分,在各種實現(xiàn)中完成崩潰避免。這個過程最小化編寫得不好的代碼對操作系統(tǒng)的影響。與過程相關(guān)聯(lián)的地址空間和數(shù)據(jù)結(jié)構(gòu)是由操作系統(tǒng)為運行過程而使用的。像這樣,操作系統(tǒng)在一個隔離的過程環(huán)境中運行過程,作為存儲器保護的形式和作為能被表示為過程(或線程)的環(huán)境保護的形式。
示例性計算機系統(tǒng)和環(huán)境圖5例示計算機環(huán)境500的一個例子,在這個環(huán)境內(nèi),這里所描述的應用,包括實時通信應用(RTC)和媒體播放器應用(MP),能全部或者部分地實現(xiàn)。示例性計算機環(huán)境500只是計算機環(huán)境的一個實例,而不是想要對使用范圍或網(wǎng)絡(luò)結(jié)構(gòu)的功能性做任何限制。
能用眾多的其它通用或?qū)S糜嬎銠C系統(tǒng)環(huán)境或配置實現(xiàn)計算機和網(wǎng)絡(luò)結(jié)構(gòu)。眾知的可能適用的計算機系統(tǒng)、環(huán)境和/或配置的例子包括,但不限于,個人計算機、服務器計算機、瘦客戶機、胖客戶機、手持或膝上型設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、機頂盒、可編程消費電子產(chǎn)品、網(wǎng)絡(luò)PC、小型機、大型機、游戲控制臺、包括任何上述系統(tǒng)或設(shè)備的分布式計算機環(huán)境等等。
可在由一臺計算機執(zhí)行的計算機可執(zhí)行指令(如程序模塊)的一般背景中描述應用(包括RTC和MP)。通常,程序模塊包括完成某些任務或?qū)崿F(xiàn)某些抽象數(shù)據(jù)類型的例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等??稍诜植际接嬎銠C環(huán)境中實施應用(包括RTC和MP),其中由通過通信網(wǎng)絡(luò)連接的遠程處理設(shè)備完成任務。在分布計算機環(huán)境中,程序模塊可以位于本地和遠程計算機存儲媒體上,包括記憶存儲設(shè)備。
計算機環(huán)境500包括計算機502的形式的通用計算機系統(tǒng)。計算機502的組件可包括,但不限于,一或多個處理器或處理單元504、系統(tǒng)存儲器506和連接包括處理器504在內(nèi)的各種系統(tǒng)組件至系統(tǒng)存儲器506的系統(tǒng)總線508。
系統(tǒng)總線508表示幾種總線結(jié)構(gòu)類型的任何一或多種,包括存儲器總線或存儲控制器、外部設(shè)備總線、加速圖形端口和使用多種多樣總線結(jié)構(gòu)中的任何一個的處理器或局部總線。作為例子,這樣的結(jié)構(gòu)可包括工業(yè)標準結(jié)構(gòu)(ISA)總線、微通道結(jié)構(gòu)(MCA)總線、擴展工業(yè)標準結(jié)構(gòu)(EISA)總線、視頻電子標準協(xié)會(VESA)局部總線和外設(shè)部件互連(PCI)總線,它也被稱為中間層(Mezzanine)總線。
計算機502一般包括多種多樣的計算機可讀介質(zhì)。這類介質(zhì)可以是任何可由計算機502訪問的可用介質(zhì),且包括易失性和非易失性的介質(zhì)及可移動的和不可移動的介質(zhì)。系統(tǒng)存儲器506包括諸如只讀存儲器(ROM)512這樣的非易失存儲器和/或諸如隨機訪問存儲器(RAM)510這樣的易失存儲器的形式的計算機可讀介質(zhì)?;据斎?輸出系統(tǒng)(BIOS)514,包含幫助在計算機502內(nèi)各部件之間傳送信息的基本例程,諸如在啟動期間,被存儲于ROM512。RAM510一般包含處理器單元514能立即訪問的和/或目前所運行的數(shù)據(jù)和/或程序模塊。
計算機502還可包括其它可移動的/不可移動的、易失性的/非易失性的計算機存儲介質(zhì)。作為例子,圖5例示用于讀寫不可移動的非易失性的磁介質(zhì)(未示出)讀寫的硬盤驅(qū)動器516、用于從可移動的非易失性的磁盤520(例如,一“軟盤”)讀寫的磁盤驅(qū)動器518,以及用于從諸如CD-ROM、DVD-ROM或其它光介質(zhì)的可移動的非易失性光盤524讀和/或?qū)懙墓獗P驅(qū)動器522。硬盤驅(qū)動器516、磁盤驅(qū)動器518和光盤驅(qū)動器522每個都通過一或多個數(shù)據(jù)介質(zhì)接口525連接到系統(tǒng)總線508。可供選擇,硬盤驅(qū)動器516、磁盤驅(qū)動器518和光盤驅(qū)動器522也可通過SCSI接口(未示出)連接到系統(tǒng)總線508。
磁盤驅(qū)動器及其關(guān)聯(lián)的計算機可讀介質(zhì)為計算機502提供計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其它數(shù)據(jù)的非易失性的存儲。盡管這個實例例示硬盤516、可移動的磁盤520和可移動的光盤524,要意識到還有可存儲計算機可訪問的數(shù)據(jù)的其它類型的計算機可讀介質(zhì),諸如磁帶或其它磁存儲設(shè)備、閃存卡、CD-ROM、數(shù)字多功能盤(DVD)或其它光存儲、隨機訪問存儲器(RAM)、只讀存儲器(ROM)、電可擦除可編程只讀存儲器(EEPROM)等等,可被用于實現(xiàn)示例性計算機系統(tǒng)和環(huán)境。
任何數(shù)量的程序模塊都能存儲在硬盤516、磁盤520、光盤524、ROM512和/或RAM510上,包括作為例子的OS(操作系統(tǒng))526、一或多個應用程序528、其它程序模塊530和程序數(shù)據(jù)532。這樣的OS526、一或多個應用程序528、其它程序模塊530和程序數(shù)據(jù)532中的每一個(或它們的某些組合)可包括這里所述的RTC和/或MP的實施例。操作系統(tǒng)526包括音頻捕捉和再現(xiàn)服務,使得媒體應用能取得用于信號處理的全局音頻輸出系統(tǒng)級混合。
計算機系統(tǒng)502能包括被認為是通信介質(zhì)的各種各樣的計算機可讀介質(zhì)。“通信介質(zhì)”一般實現(xiàn)在調(diào)制數(shù)據(jù)信號諸如載波或其它傳輸機制中的計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù),以及包括任何信息傳輸介質(zhì)。
術(shù)語“調(diào)制的數(shù)據(jù)信號”指具有以這樣一種關(guān)于編碼信號中信息的方式設(shè)置或改變的一或多個特征的信號。作為例子,但不限制,通信介質(zhì)包括有線的介質(zhì),諸如有線的網(wǎng)絡(luò)或直接線路連接,以及無線的介質(zhì),諸如聲音的、RF(射頻)、紅外線和其它無線介質(zhì)。上述各項的任意組合也包括在計算機可讀介質(zhì)的范圍之內(nèi)。
用戶可通過諸如鍵盤534和定位設(shè)備536(例如,“鼠標”)這樣的輸入設(shè)備將命令和信息鍵入計算機系統(tǒng)502。能使用話筒535輸入聲音命令,經(jīng)語音識別過程處理以傳遞至聲音輸入。其它輸入設(shè)備538(未詳細示出)能包括操縱桿、游戲墊、衛(wèi)星天線、串口、掃描儀等等。這些或其它輸入設(shè)備可通過連接到系統(tǒng)總線508的輸入/輸出接口540連接至處理器單元504上,還可通過其它接口和總線結(jié)構(gòu)連接,諸如并行接口、游戲端口或通用串行總線(USB)。
監(jiān)視器542和其它類型的顯示設(shè)備也能通過接口諸如視頻適配器544連接至系統(tǒng)總線508。輸入/輸出接口540能包括聲卡、集成(例如,板載的)聲卡等。一個或多個揚聲器537能與輸入/輸出接口540通信。除監(jiān)視器542之外,其它輸出外部設(shè)備能包括諸如打印機546這樣的組件,它們可通過輸入/輸出接口540連接到計算機502。
計算機502能在使用到一或多個遠程計算機(諸如遠程計算器設(shè)備548)的邏輯連接的網(wǎng)絡(luò)環(huán)境中運行。作為例子,遠程計算機設(shè)備548可以是個人計算機、便攜式計算機、服務器、路由器、網(wǎng)絡(luò)計算機、對等設(shè)備或其它普通的網(wǎng)絡(luò)節(jié)點等等。遠程計算機設(shè)備548被例示為便攜式計算機,它能包括許多或所有在這里相對于計算機系統(tǒng)502所述的元件和特征。
在計算機502和遠程計算機548之間的邏輯連接被示為局域網(wǎng)(LAN)550和總的廣域網(wǎng)(WAN)552。這樣的網(wǎng)絡(luò)環(huán)境在辦公室、企業(yè)級計算機網(wǎng)絡(luò)、企業(yè)內(nèi)部互聯(lián)網(wǎng)和因特網(wǎng)中是很普遍的。當在LAN網(wǎng)絡(luò)環(huán)境中實現(xiàn)時,計算機502通過網(wǎng)絡(luò)接口或適配器554連接到局域網(wǎng)550。當在WAN網(wǎng)絡(luò)環(huán)境中實現(xiàn)時,計算機502通常包括調(diào)制解調(diào)器556或其它在廣域網(wǎng)552上建立通信的裝置。調(diào)制解調(diào)器556,它可內(nèi)置或外置于計算機502,能通過輸入/輸出接口540或其它合適的機制連接到系統(tǒng)總線508。要意識到例示的網(wǎng)絡(luò)連接是示范性的,且能使用其它在計算機502和548之間建立通信鏈路(一條或多條)的方法。
在網(wǎng)絡(luò)化環(huán)境中,諸如與計算機環(huán)境500一起示出的,相對于計算機502所示的程序模塊或其部分可存儲于遠程記憶存儲設(shè)備。作為例子,遠程應用程序558駐留在遠程計算機548的存儲器設(shè)備中。為了說明,應用程序和其它可執(zhí)行程序組件,諸如操作系統(tǒng),在這里作為分離的方框示出,盡管認識到這樣的程序和組件在不同的時間駐留在計算機502的不同的存儲組件中,并由計算機502的數(shù)據(jù)處理器執(zhí)行。
盡管已經(jīng)對專用于結(jié)構(gòu)特征和/或方法步驟的語言描述本發(fā)明,要理解在所附權(quán)利要求書中定義的本發(fā)明不必受限于所述的具體的特征或步驟。具體的特征和步驟而是作為實現(xiàn)所要求的本發(fā)明的較佳形式被揭示。
權(quán)利要求
1.一方法包括接收一請求,請求一操作系統(tǒng)為要在一音頻數(shù)據(jù)流上完成的全局音效(GFX)執(zhí)行一音頻處理對象(APO),所述音頻數(shù)據(jù)流要在由音頻設(shè)備驅(qū)動程序驅(qū)動的一音頻設(shè)備上輸出,其中所述操作系統(tǒng)包括一音頻子系統(tǒng),所述音頻子系統(tǒng)具有一輸入緩沖器、一環(huán)形緩沖器以及包括一服務環(huán)境和一全局音頻引擎的邏輯上獨立的環(huán)境;在服務環(huán)境中,保存用于輸入緩沖器、全局音頻引擎和環(huán)形緩沖器的環(huán)境;運行全局音頻引擎以與APO一起在輸入緩沖器中的音頻數(shù)據(jù)流上完成數(shù)字信號處理,以在環(huán)形緩沖器中形成數(shù)字信號處理(DSP)音頻數(shù)據(jù)流;將在環(huán)形緩沖器中的DSP音頻數(shù)據(jù)輸入至音頻設(shè)備驅(qū)動程序驅(qū)動的音頻設(shè)備;以及在APO終止或者APO訪問違例時用保存的環(huán)境恢復輸入緩沖器、全局音頻引擎和環(huán)形緩沖器的每一個,所述保存的環(huán)境是為環(huán)境恢復輸入緩沖器、全局音頻引擎和環(huán)形緩沖器的每一個在服務環(huán)境中相應地保存的;以及任選地在全局音頻引擎中再繼續(xù)APO的執(zhí)行。
2.如權(quán)利要求1所述的方法,其特征在于,APO的終止或者由APO產(chǎn)生的訪問違例是由服務環(huán)境檢測的。
3.如權(quán)利要求1所述的方法,其特征在于所述輸入緩沖器的環(huán)境包括與輸入緩沖器相關(guān)聯(lián)的地址和數(shù)據(jù)結(jié)構(gòu);所述全局音頻引擎的環(huán)境包括與全局音頻引擎相關(guān)聯(lián)的地址和數(shù)據(jù)結(jié)構(gòu);以及所述環(huán)形緩沖器的環(huán)境包括與環(huán)形緩沖器相關(guān)聯(lián)的地址和數(shù)據(jù)結(jié)構(gòu)。
4.如權(quán)利要求1所述的方法,其特征在于,在APO訪問違例時,所述方法還包括增加表示APO訪問違例次數(shù)的計數(shù)器;以及當所述計數(shù)器超過一預定的限制時,輸出診斷并且禁止在全局音頻引擎中再繼續(xù)APO的執(zhí)行。
5.如權(quán)利要求1所述的方法,其特征在于所述操作系統(tǒng)還包括多個所述環(huán)形緩沖器用于相應的多個所述全局音頻引擎;以及每個所述的全局音頻引擎輸出一個所述DSP音頻數(shù)據(jù)流至相應的所述環(huán)形緩沖器,以提供輸入至相應的所述音頻設(shè)備驅(qū)動程序用于驅(qū)動相應的所述音頻設(shè)備。
6.如權(quán)利要求5所述的方法,其特征在于所述操作系統(tǒng)還包括多個所述輸入緩沖器,每一個輸入緩沖器包含要由相應的所述音頻設(shè)備再現(xiàn)的音頻數(shù)據(jù)流;以及每一個所述全局音頻引擎對應于一個所述輸入緩沖器。
7.如權(quán)利要求6所述的方法,其特征在于,每一個所述輸入緩沖器,為至少一個所述的音頻設(shè)備,從向操作系統(tǒng)請求音頻服務的音頻應用接收相應的所述音頻數(shù)據(jù)流。
8.如權(quán)利要求1所述的方法,還包括用由音頻設(shè)備驅(qū)動程序驅(qū)動的音頻設(shè)備再現(xiàn)DSP音頻數(shù)據(jù)流。
9.如權(quán)利要求1所述的方法,其特征在于,所述操作系統(tǒng)在具有多個獨立部分的存儲器中,所述部分包括用于內(nèi)核的部分;以及用于音頻子系統(tǒng)的部分,所述音頻子系統(tǒng)具有分開的子部分,包括用于服務環(huán)境的子部分;以及用于全局音頻引擎的子部分。
10.如權(quán)利要求9所述的方法,其特征在于,所述多個獨立的部分還包括,用于過程環(huán)境的部分,所述過程環(huán)境具有用于執(zhí)行APO以輸出音頻數(shù)據(jù)流至輸入緩沖器的局部引擎。
11.如權(quán)利要求10所述的方法,其特征在于所述在輸入緩沖器中的音頻數(shù)據(jù)流包括,來自多個音頻應用的音頻數(shù)據(jù),所述音頻應用的每一個要用音頻設(shè)備再現(xiàn);以及所述全局音頻引擎混合來自多個音頻應用的音頻數(shù)據(jù)以在環(huán)形緩沖器中形成DSP音頻數(shù)據(jù)流。
12.如權(quán)利要求1所述的方法,其特征在于,GFX是混響效果、音頻畸變效果、揚聲器補償效果、多頻帶音頻均衡器效果中的一種。
13.一個或多個計算機可讀介質(zhì),在所述介質(zhì)上具有計算機可讀指令,當由計算機系統(tǒng)執(zhí)行所述指令時,實現(xiàn)權(quán)利要求1所述的方法。
14.一方法包括從一音頻應用接收一請求,請求操作系統(tǒng)為要在音頻數(shù)據(jù)流上完成的全局音效(GFX)執(zhí)行一音頻處理對象(APO),所述音頻數(shù)據(jù)流要在由音頻設(shè)備驅(qū)動程序驅(qū)動的音頻設(shè)備上輸出,其中所述操作系統(tǒng)在存儲器中具有獨立的部分,包括一內(nèi)核;以及一音頻子系統(tǒng),具有一輸入緩沖器和一環(huán)形緩沖器;在存儲器中音頻子系統(tǒng)的部分具有獨立的子部分,包括一服務環(huán)境;以及一全局音頻引擎,用于執(zhí)行APO;在服務環(huán)境中保存與輸入緩沖器、環(huán)形緩沖器和全局音頻引擎相關(guān)聯(lián)的地址和數(shù)據(jù)結(jié)構(gòu);運行全局音頻引擎以用APO在輸入緩沖器中的音頻數(shù)據(jù)流上完成數(shù)字信號處理,以形成數(shù)字信號處理(DSP)音頻數(shù)據(jù)流;以及輸出DSP音頻數(shù)據(jù)流至環(huán)形緩沖器;將在環(huán)形緩沖器中的DSP音頻數(shù)據(jù)流輸入至音頻設(shè)備驅(qū)動程序驅(qū)動的音頻設(shè)備,用于再現(xiàn)DSP音頻數(shù)據(jù)流;以及在APO終止或者APO訪問違例時用服務環(huán)境中為輸入緩沖器保存的地址和數(shù)據(jù)結(jié)構(gòu)恢復輸入緩沖器;用服務環(huán)境中為全局音頻引擎保存的地址和數(shù)據(jù)結(jié)構(gòu)恢復全局音頻引擎;用服務環(huán)境中為環(huán)形緩沖器保存的地址和數(shù)據(jù)結(jié)構(gòu)恢復環(huán)形緩沖器;以及任選地在全局音頻引擎中再繼續(xù)APO的執(zhí)行。
15.如權(quán)利要求14所述的方法,其特征在于,APO終止或者APO訪問違例是由服務環(huán)境檢測的。
16.如權(quán)利要求14所述的方法,其特征在于,所述在存儲器中音頻子系統(tǒng)的部分還包括,用于過程環(huán)境的獨立的子部分,所述過程環(huán)境具有一局部引擎用于執(zhí)行APO以輸出音頻數(shù)據(jù)流至輸入緩沖器。
17.如權(quán)利要求16所述的方法,其特征在于在所述輸入緩沖器中的音頻數(shù)據(jù)流包括來自多個音頻應用的音頻數(shù)據(jù),所述音頻應用的每一個是要用音頻設(shè)備再現(xiàn)的;以及所述全局音頻引擎混合來自多個音頻應用的音頻數(shù)據(jù),以在環(huán)形緩沖器中形成DSP音頻數(shù)據(jù)流。
18.如權(quán)利要求14所述的方法,其特征在于使輸入緩沖器邏輯上位于在過程環(huán)境的部分與全局音頻引擎的部分之間共享的存儲器中音頻子系統(tǒng)的部分中;以及使環(huán)形緩沖器邏輯上位于在全局音頻引擎的部分與內(nèi)核的部分之間共享的存儲器中音頻子系統(tǒng)的部分中。
19.如權(quán)利要求14所述的方法,其特征在于,在APO訪問違例時,所述方法還包括增加表示APO訪問違例次數(shù)的計數(shù)器;以及當所述計數(shù)器超過一預定的限制時,輸出診斷并且禁止在全局音頻引擎中再繼續(xù)APO的執(zhí)行。
20.如權(quán)利要求14所述的方法,其特征在于,所述操作系統(tǒng)還包括多個所述環(huán)形緩沖器用于相應的多個所述全局音頻引擎;以及每個所述的全局音頻引擎輸出一個所述DSP音頻數(shù)據(jù)流至相應的所述環(huán)形緩沖器,以提供輸入至相應的所述音頻設(shè)備驅(qū)動程序用于驅(qū)動相應的所述音頻設(shè)備。
21.如權(quán)利要求20所述的方法,其特征在于所述操作系統(tǒng)還包括多個所述輸入緩沖器,每一個輸入緩沖器包含要由相應的所述音頻設(shè)備再現(xiàn)的音頻數(shù)據(jù)流;以及每一個所述全局音頻引擎對應于一個所述輸入緩沖器。
22.如權(quán)利要求21所述的方法,其特征在于,每一個所述輸入緩沖器,為至少一個所述音頻設(shè)備,從向操作系統(tǒng)請求音頻服務的音頻應用接收相應的所述音頻數(shù)據(jù)流。
23.一個或多個計算機可讀介質(zhì),在所述介質(zhì)上具有計算機可讀指令,當由計算機系統(tǒng)執(zhí)行所述指令時,實現(xiàn)權(quán)利要求14所述的方法。
24.一計算機可執(zhí)行操作系統(tǒng),包括邏輯上獨立的部分中的一內(nèi)核和一音頻子系統(tǒng),其中,音頻子系統(tǒng)具有與用于驅(qū)動音頻設(shè)備的設(shè)備驅(qū)動程序通信的輸入緩沖器和環(huán)形緩沖器,所述音頻子系統(tǒng)還具有多個邏輯上獨立的子部分,所述子部分包括一全局音頻引擎,為要在輸入緩沖器中的音頻數(shù)據(jù)流上完成的全局音效(GFX)執(zhí)行一音頻處理對象(APO),以在環(huán)形緩沖器上形成要由設(shè)備驅(qū)動程序驅(qū)動的音頻設(shè)備再現(xiàn)的音頻數(shù)據(jù)流;以及一服務環(huán)境,用于保存輸入緩沖器、全局音頻引擎和環(huán)形緩沖器的環(huán)境,其中,當在全局音頻引擎中執(zhí)行的APO終止或者訪問違例時使用在服務環(huán)境中為輸入緩沖器、全局音頻引擎和環(huán)形緩沖器的每一個分別保存的環(huán)境,恢復輸入緩沖器、全局音頻引擎和環(huán)形緩沖器的每一個;以及任選地再繼續(xù)在全局音頻引擎中APO的執(zhí)行。
25.如在權(quán)利要求24中所述的計算機可執(zhí)行的操作系統(tǒng),其特征在于輸入緩沖器的環(huán)境包括與輸入緩沖器相關(guān)聯(lián)的地址和數(shù)據(jù)結(jié)構(gòu)。全局音頻引擎的環(huán)境包括與全局音頻引擎相關(guān)聯(lián)的地址和數(shù)據(jù)結(jié)構(gòu);以及環(huán)形緩沖器的環(huán)境包括與環(huán)形緩沖器相關(guān)聯(lián)的地址和數(shù)據(jù)結(jié)構(gòu)。
26.如權(quán)利要求24所述的計算機可執(zhí)行的操作系統(tǒng),其特征在于,在APO訪問違例時增加表示APO訪問違例次數(shù)的計數(shù)器;以及當所述計數(shù)器超過一預定的限制時,輸出診斷并且禁止APO在全局音頻引擎中執(zhí)行。
27.如權(quán)利要求24所述的計算機可執(zhí)行的操作系統(tǒng),其特征在于所述操作系統(tǒng)還包括多個所述環(huán)形緩沖器用于相應的多個所述全局音頻引擎;以及每個所述的全局音頻引擎輸出一個所述DSP音頻數(shù)據(jù)流至相應的所述環(huán)形緩沖器,以提供輸入至相應的所述音頻設(shè)備驅(qū)動程序用于驅(qū)動相應的所述音頻設(shè)備。
28.如權(quán)利要求27所述的計算機可執(zhí)行的操作系統(tǒng),其特征在于,所述操作系統(tǒng)還包括多個所述輸入緩沖器,每一個輸入緩沖器包含要由相應的所述音頻設(shè)備再現(xiàn)的音頻數(shù)據(jù)流;以及每一個所述全局音頻引擎對應于一個所述輸入緩沖器。
29.如權(quán)利要求28所述的計算機可執(zhí)行的操作系統(tǒng),其特征在于,每一個所述輸入緩沖器,為至少一個所述的音頻設(shè)備,從向操作系統(tǒng)請求音頻服務的音頻應用接收相應的所述音頻數(shù)據(jù)流。
30.如權(quán)利要求24所述的計算機可執(zhí)行的操作系統(tǒng),其特征在于,所述多個邏輯上獨立的部分還包括用于過程環(huán)境的部分,所述過程環(huán)境具有用于執(zhí)行APO以輸出音頻數(shù)據(jù)流至輸入緩沖器的局部引擎。
31.如權(quán)利要求24所述的計算機可執(zhí)行的操作系統(tǒng),其特征在于所述輸入緩沖器存儲來自多個音頻應用的音頻數(shù)據(jù),所述音頻應用的每一個是要用音頻設(shè)備再現(xiàn)的;以及所述全局音頻引擎混合來自多個音頻應用的音頻數(shù)據(jù),以在環(huán)形緩沖器中形成音頻數(shù)據(jù)。
32.一裝置包括用于存儲多個邏輯上獨立的部分的裝置,所述部分包括用于操作系統(tǒng)的一內(nèi)核;以及用于所述操作系統(tǒng)的一音頻子系統(tǒng),所述音頻子系統(tǒng)包括與用于驅(qū)動用于再現(xiàn)音頻的裝置的裝置通信的輸入緩沖器和環(huán)形緩沖器;以及多個邏輯上獨立的子部分,包括一服務環(huán)境;以及一全局音頻引擎;當執(zhí)行音頻子系統(tǒng)時,用于在服務環(huán)境中保存輸入緩沖器、全局音頻引擎和環(huán)形緩沖器的環(huán)境;以及執(zhí)行音頻處理對象(APO)以在輸入緩沖器中的音頻數(shù)據(jù)流上產(chǎn)生全局音效(GFX),以在環(huán)形緩沖器中形成要由用于再現(xiàn)音頻的裝置再現(xiàn)的音頻數(shù)據(jù)流,所述用于再現(xiàn)音頻的裝置由用于動音頻設(shè)備的裝置驅(qū)動的裝置;當在全局音頻引擎中執(zhí)行的APO訪問違例時,用于使用在服務環(huán)境中為恢復輸入緩沖器、全局音頻引擎和環(huán)形緩沖器的每一個分別保存的環(huán)境,恢復輸入緩沖器、全局音頻引擎和環(huán)形緩沖器的每一個;以及在全局音頻引擎中再繼續(xù)APO的執(zhí)行的裝置。
33.如權(quán)利要求32所述的裝置,其特征在于所述輸入緩沖器的環(huán)境包括與輸入緩沖器相關(guān)聯(lián)的地址和數(shù)據(jù)結(jié)構(gòu);所述全局音頻引擎的環(huán)境包括與全局音頻引擎相關(guān)聯(lián)的地址和數(shù)據(jù)結(jié)構(gòu);以及所述環(huán)形緩沖器的環(huán)境包括與環(huán)形緩沖器相關(guān)聯(lián)的地址和數(shù)據(jù)結(jié)構(gòu)。
34.如權(quán)利要求32所述的裝置,其特征在于,在APO訪問違例時,用于再繼續(xù)的工具增加表示APO訪問違例次數(shù)的計數(shù)器;以及當所述計數(shù)器超過一預定的限制時,輸出診斷并且禁止在全局音頻引擎中再繼續(xù)APO的執(zhí)行。
35.如權(quán)利要求32所述的裝置,其特征在于所述音頻子系統(tǒng)還包括多個所述環(huán)形緩沖器用于相應的多個所述全局音頻引擎;以及每個所述的全局音頻引擎輸出一個所述音頻數(shù)據(jù)流至相應的所述環(huán)形緩沖器,以提供輸入至相應的所述音頻設(shè)備驅(qū)動程序用于驅(qū)動相應的所述音頻設(shè)備。
36.如權(quán)利要求35所述的裝置,其特征在于,所述音頻子系統(tǒng)還包括多個所述輸入緩沖器,每一個輸入緩沖器包含要由相應的用于再現(xiàn)音頻的裝置再現(xiàn)的音頻數(shù)據(jù)流;以及每一個所述全局音頻引擎對應于一個所述輸入緩沖器。
37.如權(quán)利要求36所述的裝置,其特征在于,每一個所述輸入緩沖器,為至少一個用于再現(xiàn)音頻的所述裝置,從向操作系統(tǒng)請求音頻服務的音頻應用接收相應的所述音頻數(shù)據(jù)流。
38.如權(quán)利要求32所述的裝置,其特征在于,所述多個邏輯上獨立的子部分還包括用于過程環(huán)境的子部分,所述過程環(huán)境具有用于執(zhí)行AP0以輸出音頻數(shù)據(jù)流至輸入緩沖器的局部引擎。
39.如權(quán)利要求38所述的裝置,其特征在于,在所述輸入緩沖器中的音頻數(shù)據(jù)流包括來自多個音頻應用的音頻數(shù)據(jù),所述音頻應用的每一個是要用所述用于再現(xiàn)音頻的裝置再現(xiàn)的;以及所述全局音頻引擎混合來自多個音頻應用的音頻數(shù)據(jù),以在環(huán)形緩沖器中形成音頻數(shù)據(jù)流。
40.一計算機系統(tǒng),包括一處理器,用于執(zhí)行一音頻應用以產(chǎn)生第一音頻數(shù)據(jù)流以及用于執(zhí)行一操作系統(tǒng),所述操作系統(tǒng)在邏輯上被分成用于內(nèi)核的部分和用于具有邏輯上獨立的子部分的音頻子系統(tǒng)的部分,其中,用于用音頻子系統(tǒng)處理第一音頻數(shù)據(jù)流的過程具有在第一所述子部分中保存的一環(huán)境,所述環(huán)境是在第二所述子部分中執(zhí)行過程之前保存的,使得當過程產(chǎn)生訪問違例時,通過來自第一所述子部分的其環(huán)境恢復過程。
41.如權(quán)利要求40所述的計算機系統(tǒng),其特征在于,所述為過程保存的環(huán)境包括地址和數(shù)據(jù)結(jié)構(gòu)信息,它們足以通過恢復在音頻子系統(tǒng)中保存的環(huán)境來恢復過程。
42.如權(quán)利要求40所述的計算機系統(tǒng),其特征在于所述過程執(zhí)行第二音頻應用以產(chǎn)生要輸出至第二音頻設(shè)備的第二音頻數(shù)據(jù)流,所述第二音頻設(shè)備與要輸出第一音頻數(shù)據(jù)流的第一音頻設(shè)備不同;以及所述過程的訪問違例和恢復既不影響第二音頻應用的執(zhí)行;也不影響要被輸出至第二音頻設(shè)備的第二音頻數(shù)據(jù)流。
43.一計算機系統(tǒng)包括一處理器,用于執(zhí)行一操作系統(tǒng)和多個音頻應用;多個多媒體閱讀設(shè)備,用于與多個音頻應用一起運行以分別產(chǎn)生用于傳送至操作系統(tǒng)的音頻數(shù)據(jù);由各音頻設(shè)備驅(qū)動程序驅(qū)動的多個音頻設(shè)備,用于再現(xiàn)被傳送到操作系統(tǒng)的音頻數(shù)據(jù);用于多個音頻應用和操作系統(tǒng)的存儲器,其中,操作系統(tǒng)具有多個邏輯上獨立的部分,所述部分包括一內(nèi)核和一音頻子系統(tǒng),其特征在于,所述音頻子系統(tǒng)具有多個邏輯上獨立的子部分,包括一過程環(huán)境,一服務環(huán)境;以及一全局音頻引擎;一輸入緩沖器,與過程環(huán)境和全局音頻引擎通信;以及一環(huán)形緩沖器,與用于驅(qū)動音頻設(shè)備之一的音頻設(shè)備驅(qū)動程序之一通信;其中,所述處理器執(zhí)行操作系統(tǒng)和音頻應用之一以便在服務環(huán)境中保存輸入緩沖器、全局音頻引擎和環(huán)形緩沖器的環(huán)境;產(chǎn)生來自一個所述音頻應用的音頻數(shù)據(jù),用于輸入至過程環(huán)境并作為在輸入緩沖器中的音頻數(shù)據(jù)流輸出;執(zhí)行音頻處理對象(APO)以在輸入緩沖器中的音頻數(shù)據(jù)流上產(chǎn)生全局音效(GFX),以在環(huán)形緩沖器中形成要由音頻設(shè)備驅(qū)動程序之一驅(qū)動的音頻設(shè)備之一再現(xiàn)的音頻數(shù)據(jù)流;以及當在全局音頻引擎中執(zhí)行的APO訪問違例時使用在服務環(huán)境中為恢復輸入緩沖器、全局音頻引擎和環(huán)形緩沖器的每一個分別保存的環(huán)境,恢復輸入緩沖器、全局音頻引擎和環(huán)形緩沖器的每一個;以及在全局音頻引擎中再繼續(xù)AP0的執(zhí)行。
44.一計算機可讀介質(zhì)包括第一代碼段,用于處理來自一音頻應用的請求,以通過執(zhí)行一操作系統(tǒng)產(chǎn)生第一音頻數(shù)據(jù)流,所述操作系統(tǒng)邏輯上被分成用于內(nèi)核的部分和用于具有邏輯上獨立的子部分的音頻子系統(tǒng)的部分;第二代碼段,用于在第一所述子部分中保存用于處理第一音頻數(shù)據(jù)流的過程的環(huán)境;以及第三代碼段,用于在第二所述子部分中用過程處理第一音頻數(shù)據(jù)流,其中,當過程產(chǎn)生訪問違例,通過在音頻子系統(tǒng)中恢復來自第一所述子部分的保存的環(huán)境來恢復過程。
45.如權(quán)利要求44所述的計算機可讀介質(zhì),其特征在于,所述為過程保存的環(huán)境包括地址和數(shù)據(jù)結(jié)構(gòu)信息,它們足以通過恢復在音頻子系統(tǒng)中保存的環(huán)境來恢復過程。
46.如權(quán)利要求44所述的計算機可讀介質(zhì),其特征在于,還包括第四代碼段,用于處理來自一音頻應用的請求,以通過執(zhí)行操作系統(tǒng)產(chǎn)生第二音頻數(shù)據(jù)流,其中,第二音頻數(shù)據(jù)流被導向輸出到一第二音頻設(shè)備,第二音頻設(shè)備不同于要輸出第一音頻數(shù)據(jù)流的第一音頻設(shè)備,其中,過程的訪問違例和恢復既不影響通過執(zhí)行第二音頻應用產(chǎn)生第二音頻數(shù)據(jù)流;也不影響要輸出至第二音頻設(shè)備的第二音頻數(shù)據(jù)流。
全文摘要
將操作系統(tǒng)在邏輯上分成用于內(nèi)核的部分和用于具有邏輯上獨立的子部分的音頻子系統(tǒng)的部分。音頻應用通過執(zhí)行音頻子系統(tǒng)產(chǎn)生第一音頻數(shù)據(jù)流。用于處理第一音頻數(shù)據(jù)流的過程的環(huán)境被保存在第一子部分中。過程對第一音頻數(shù)據(jù)流的處理發(fā)生在第二子部分中。當過程產(chǎn)生訪問違例時,通過在音頻子系統(tǒng)中恢復來自第一子部分的保存的環(huán)境來恢復過程。
文檔編號G06F9/44GK1532696SQ200410031769
公開日2004年9月29日 申請日期2004年3月22日 優(yōu)先權(quán)日2003年3月20日
發(fā)明者S·E·斯溫森, D·W·弗倫尼肯, S E 斯溫森, 弗倫尼肯 申請人:微軟公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
黄山市| 揭东县| 顺昌县| 巴青县| 吴桥县| 尼玛县| 乐平市| 电白县| 宿松县| 白河县| 台东市| 汕头市| 封丘县| 新绛县| 基隆市| 天祝| 广宁县| 大悟县| 都安| 连平县| 渭源县| 嘉义县| 宜兰市| 武乡县| 会昌县| 伊通| 江西省| 洛宁县| 都匀市| 寻乌县| 新闻| 延津县| 波密县| 洪江市| 冀州市| 盐山县| 威远县| 镇平县| 当涂县| 涟源市| 五华县|