共享的視頻-音頻流水線
背景技術:很多計算平臺包括主機中央處理單元(CPU)(在本文中也稱為主機),以執(zhí)行與用戶應用相關聯(lián)的各種處理操作。這種應用可涉及諸如視頻和/或音頻流之類的媒體的解碼和輸出(呈現(xiàn))。關于視頻,主機通常依賴于圖形引擎來執(zhí)行與視頻的解碼和呈現(xiàn)有關的操作。然而,對于音頻,主機通常執(zhí)行與其解碼和呈現(xiàn)有關的操作。盡管可采用專用的硬件音頻編解碼器(編碼器/解碼器),然而它們增加了相當多的成本。不幸的是,音頻流通過主機的處理并不是非常有功率效率的。例如,音頻處理通常不能在典型客戶平臺中的2或4個以上的線程中完成。附圖簡述在附圖中,相似的附圖標記一般指示相同、功能類似和/或結(jié)構(gòu)類似的組件。其中組件第一次出現(xiàn)的附圖由附圖標記中最左面的數(shù)字指示。將參考附圖描述本發(fā)明,附圖中:圖1是示例性裝置的圖;圖2是示例性音頻幀的圖;圖3是示例性音頻流解碼流水線的圖;圖4是示出與音頻流水線對應的圖形驅(qū)動器調(diào)用的圖;以及圖5是邏輯流程圖。詳細描述實施例提供與音頻流的處理有關的技術。例如,主機處理平臺可接收包括經(jīng)編碼的音頻流的內(nèi)容流。進而,圖形引擎從其產(chǎn)生經(jīng)解碼的音頻流。這種產(chǎn)生可包括圖形引擎執(zhí)行各種操作,諸如熵解碼操作、反量化操作以及離散反余弦變換操作。在實施例中,內(nèi)容流可進一步包括經(jīng)編碼的視頻流。因此,圖形引擎可從其產(chǎn)生經(jīng)解碼的視頻流。這種音頻和視頻解碼可并行執(zhí)行。圖形引擎提供針對與視頻編解碼器相關聯(lián)的操作的性能的硬件加速。例如,圖形處理器單元(GPU)提供可用于實現(xiàn)多種類型的視頻編解碼器的硬件加速。這種編解碼器的示例包括(但不限于)h.264、mpeg2、vc-1等等。然而,視頻編解碼器當前不處理音頻流。相反,如上所述,音頻流的處理通常通過主機來完成。不幸的是,這種方法可能消耗過多的功率量。然而,在實施例中,圖形引擎可用于處理音頻流。結(jié)果,可將完整的媒體(視頻和音頻)處理平臺提供給獨立的軟件銷售商(ISV)。同樣,采用圖形引擎來處理音頻流可有利地減少媒體回放情形中的主機CPU功耗。例如,無損高清(HD)音頻流具有高位率(平均在3-6兆比特每秒范圍內(nèi),但它們可達到15-20兆比特每秒的峰值率)。處理這種音頻流需要相當大量的CPU循環(huán)和功耗。更具體地,實驗室策略已經(jīng)顯示在藍光盤回放期間大致0.5瓦的CPU功率可歸因于音頻處理。即使音頻流在本質(zhì)上與視頻流根本不同,但它們具有實施例利用的若干相似性。例如,視頻流和音頻流二者均通常通過可變長度解碼(VLD)方案(諸如霍夫曼壓縮)來壓縮。通常,視頻流和音頻流二者均通常在編碼器處量化,并且在解碼器處反量化。此外,視頻流和音頻流二者均通常在編碼器處利用離散余弦(DCT)變換而變換,然后在解碼器處經(jīng)由反DCT(iDCT)變換而變換。實施例可利用這些相似性以提供可處理視頻流和音頻流二者的統(tǒng)一視頻/音頻處理環(huán)境。此外,音頻編碼器/解碼器(編解碼器)通常能夠在一定程度上可線程化(即使可線程化的程度對于不同音頻編解碼器是不同的)。這可有利地促進將音頻與視頻一起處理為統(tǒng)一的視頻/音頻并行執(zhí)行引擎的圖形引擎。圖形引擎上的音頻處理的性能可能有利地更快且更有功率效率。圖1是可采用本文所述技術的示例性操作環(huán)境100的圖。環(huán)境100可包括各個元件。例如,圖1示出環(huán)境100包括主機處理平臺102、圖形引擎104、內(nèi)容源106、音頻輸出設備107、顯示設備108和接口109。這些組件可以硬件和/或軟件的任何組合來實現(xiàn)。主機處理平臺102可利用一個或多個處理器(或微處理器)來實現(xiàn),諸如中央處理單元(CPU)。主機處理平臺102可執(zhí)行各種進程和應用。如圖1所示,主機處理平臺102執(zhí)行操作系統(tǒng)(OS)110。通過該操作系統(tǒng),可執(zhí)行各種應用和進程。例如,圖1示出處理平臺102執(zhí)行媒體應用112和一個或多個圖形引擎驅(qū)動器111。應用112可執(zhí)行與音頻和/或視頻(或圖形)有關的操作。例如,應用112可以是接收經(jīng)編碼的內(nèi)容(例如,經(jīng)編碼的音頻和/或視頻內(nèi)容)的媒體應用。該內(nèi)容可從內(nèi)容源106接收。在實施例中,圖形引擎驅(qū)動器111包括可由主機處理平臺102執(zhí)行的軟件。驅(qū)動器111可允許進程(諸如應用112)與圖形引擎104交互。這可包括應用112使用由驅(qū)動器111提供的調(diào)用或例程。如本文所述,這種例程可包括音頻流以及視頻流的解碼。進而,驅(qū)動器111可向圖形引擎104發(fā)出命令。作為響應,圖形引擎104可向應用112提供結(jié)果數(shù)據(jù)(例如,經(jīng)由驅(qū)動器111)。在實施例中,內(nèi)容源106可包括光學存儲介質(zhì),諸如數(shù)字視頻盤(DVD)、藍光和/或緊致盤(CD)讀取器,該讀取器提供來自一個或多個加載的盤的經(jīng)編碼的音頻和/或視頻數(shù)據(jù)。作為附加或替換,內(nèi)容源106可包括存儲經(jīng)編碼的內(nèi)容的磁或電子存儲介質(zhì)(諸如磁盤驅(qū)動或固態(tài)驅(qū)動)。但是,各實施例不限于這些存儲介質(zhì)的示例。此外,內(nèi)容源106可包括從有線或無線通信介質(zhì)接收經(jīng)編碼的內(nèi)容的通信接口。通信介質(zhì)的示例包括(但不限于)局域網(wǎng)(LAN)、無線LAN(WLAN)、個域網(wǎng)(PAN)、無線城域網(wǎng)(WMAN)、蜂窩電話網(wǎng)絡、電纜廣播系統(tǒng)、地面或衛(wèi)星視頻廣播網(wǎng)絡(例如DVB網(wǎng)絡)等等。在接收到這些內(nèi)容之后,應用112用于解碼這些內(nèi)容,使得它可通過一個或多個設備輸出。在實施例中,圖形引擎104可由圖形處理單元(GPU)提供。更具體地,圖形引擎104提供針對視頻和音頻處理(霍夫曼解碼、iDCT等)中通常需要的若干功能的加速。該GPU可包括一個或多個專門的微處理器,這些微處理器從主機處理平臺102下載并加速視頻和圖形呈現(xiàn)。同樣,圖形引擎104可包括多個并行執(zhí)行單元(EU),這些并行執(zhí)行單元可支持多線程化和并行的處理。圖形引擎104可包括由加利福尼亞州圣克拉拉的英特爾公司制造的可購買到的圖形引擎。但是,各實施例不限于該示例。在一般操作中,圖形引擎104可為應用112提供與視頻解碼相關聯(lián)的操作。這種操作可包括(但不限于)可變長度解碼(VLD)、反量化和離散反余弦變換(DCT)操作。圖形引擎104可提供專門的硬件和/或存儲器以快速且高效執(zhí)行這種操作。這種操作也共用于音頻解碼。因此,除執(zhí)行視頻解碼操作以外,圖形引擎104可執(zhí)行用于應用112的音頻解碼操作。這種音頻解碼可根據(jù)各種編解碼器。示例性的編解碼器包括(但不限于)DTS-HD主機音頻、DolbyTrueHD、MP3、AAC等等。然而,可采用任何音頻編解碼器。在實施例中,這種音頻和視頻解碼操作的執(zhí)行可由應用112通過圖形引擎驅(qū)動器111來發(fā)起。音頻輸出設備107可包括一個或多個揚聲器以根據(jù)從主機處理器平臺102和/或圖形引擎104接收的音頻流生成聽覺信號。在實施例中,這種音頻流可以是數(shù)字脈沖碼調(diào)制(PCM)信號。因此音頻輸出設備還可包括組件,諸如模數(shù)轉(zhuǎn)換器(ADC)和濾波器,以將這些數(shù)字信號轉(zhuǎn)換成用于揚聲器的模擬信號。進一步的組件可包括放大器、用戶控制器(例如,音量、音調(diào)、均衡、平衡等等)。音頻輸出設備107的這些組件可按硬件和/或軟件的任何組合來實現(xiàn)。顯示設備108包括將視覺輸出提供用戶的物理顯示器。該輸出可以是順序圖像(或幀)的形式。示例性物理顯示器包括發(fā)光二極管(LED)顯示器、液晶顯示器(LCD)、等離子體顯示器和陰極射線管(CRT)。但是,各實施例不限于這些示例。顯示設備108輸出的每個幀可包括多個像素。表示這些像素的數(shù)據(jù)(例如,顏色和/或亮度值)可存儲在顯示設備108內(nèi)的一個或多個幀緩沖器中。該數(shù)據(jù)可被稱為“幀數(shù)據(jù)”。這種幀緩沖器可由諸如易失性隨機存取存儲器(RAM)(例如,動態(tài)RAM)之類的存儲來提供。然而,可采用諸如非易失性存儲器之類的其它類型的存儲介質(zhì)。接口109用于在圖1的組件之間進行耦合。例如,接口109可包括在各組件對之間的一個或多個點對點連接(例如,并行接口、串行接口、專用信號線等)。作為附加或替換,接口109可包括提供物理連接處理單元302a-n的多點或總線接口。示例性總線接口包括通用串行總線(USB)接口以及各種計算機系統(tǒng)總線接口。此外,接口109可包括用于軟件進程之間的數(shù)據(jù)交換的一個或多個軟件接口(例如,應用編程器接口、遠程過程調(diào)用、共享存儲器等)。在實施例中,圖1的實施例可實現(xiàn)在計算機系統(tǒng)內(nèi)。這種計算機系統(tǒng)可以是個人計算機(例如,臺式、膝上型、筆記本或平板計算機)?;蛘?,這種計算機系統(tǒng)可以是手持設備,諸如移動電話、個人數(shù)字助理(PDA)、移動電話智能電話或便攜式媒體播放器。但是,各實施例不限于這些示例。如上所述,圖1的組件可包括一個或多個處理器(例如,微處理器)。例如,處理平臺102和圖像引擎可利用一個或多個處理器來實現(xiàn)。作為示例,主機處理平臺102可利用一個或多個CPU來實現(xiàn),和/或圖形引擎104可利用一個或多個GPU來實現(xiàn)。這些CPU和/或GPU可根據(jù)存儲在一個或多個存儲介質(zhì)中的指令(例如,軟件)來操作。這些存儲介質(zhì)中的一些或全部可被包括在處理平臺102和/或圖形引擎104中。作為附加或替換,這些存儲介質(zhì)中的一些或全部可在處理平臺102和/或圖形引擎104之外。這種存儲介質(zhì)可包括存儲器(易失性或非易失性)、盤存儲、光學存儲等。主機處理平臺102和圖形引擎104可利用多核處理器中的相應核來實現(xiàn)。因此,這些組件可以一起在集成電路內(nèi)?,F(xiàn)在描述示例性的操作序列。如圖1所示,主機處理平臺102可從內(nèi)容源106接收內(nèi)容流119。在實施例中,內(nèi)容流119包括經(jīng)編碼的音頻流。另外,內(nèi)容流119可包括經(jīng)編碼的視頻流。應用112(在主機處理平臺112上執(zhí)行)可接收內(nèi)容流119。這種接收可以是直接的或通過一個或多個中間處理組件。這種處理組件可包括(但不限于)OS110、圖形引擎驅(qū)動器111、應用編程器接口(API)等的任意組合。應用112從內(nèi)容流119提取經(jīng)編碼的音頻流120和經(jīng)編碼的視頻流124并將其提供給圖形引擎104。進而,圖形引擎104在這些流上執(zhí)行各種操作。作為結(jié)果,圖形引擎104產(chǎn)生經(jīng)解碼的音頻流122和經(jīng)解碼的視頻流126。在實施例中,圖形引擎104可并行處理這些音頻和視頻流。由圖形引擎104執(zhí)行的操作可由主機處理平臺102發(fā)起。例如,應用112可導致指示被發(fā)送到圖形引擎104。這些指示可通過驅(qū)動器111發(fā)送。圖1示出經(jīng)解碼的音頻流122和經(jīng)解碼的視頻流126被提供給主機處理平臺102。在接收之后,可執(zhí)行進一步的操作,諸如音頻/視頻同步并緩沖至由OS110維持的輸出棧。這些操作之后,相應的經(jīng)解碼的音頻流128和相應的經(jīng)解碼的視頻流130被分別提供給音頻輸出設備107和顯示設備108。如本文所述,音頻流處理和視頻流處理具有類似特性。現(xiàn)在提供與音頻流的處理有關的細節(jié)。音頻樣本通常被變換(有損地)成若干頻率子帶系數(shù)(例如,32或64個系數(shù))。對于若干音頻樣本,這些子帶系數(shù)被(按增加的時間順序)壓縮在一起以形成音頻幀。圖2是示例性音頻幀200的圖。該圖根據(jù)時間沿列水平布置,并且根據(jù)子帶沿行垂直布置。因此,該圖提供值的二維矩陣。這些值中的每一個是音頻樣本的子帶系數(shù)。更具體地,特定列中的子帶系數(shù)屬于相同的音頻樣本,該音頻樣本被分解成N個子帶(通常N=32或64)。音頻幀中的后續(xù)列(即右邊的列)表示在隨后時刻編碼的音頻樣本。因此,在列#1中的音頻樣本被首先編碼,其后是列#2中的下一音頻樣本,其后是列#3中的下一音頻樣本等等。因此,圖2示出M個音頻樣本的子帶系數(shù)被壓縮在一起以形成單個音頻幀。無損音頻流通常包括有損核,其由諸如圖2所示的幀構(gòu)成。此外,無損音頻流可包括附加的殘余流。該殘余流使解碼器實現(xiàn)原始音頻流的位精確再現(xiàn)。從圖2顯而易見的是,音頻幀類似于視頻幀,除了音頻幀中每個樣本的水平和垂直(x,y)坐標不表示像素的空間坐標。相反這些坐標表示音頻樣本的頻率(子帶)和時間坐標。圖3是示例性有損音頻流解碼流水線300的圖。如圖3所示,該流水線包括可變長度解碼(VLD)模塊302、反量化(反Q)模塊304、附加音頻處理模塊306、反DCT(iDCT)模塊308、正交鏡像濾波器(QMF)模塊310和音頻后處理模塊312。這些模塊可以硬件和/或軟件的任何組合來實現(xiàn)。此外,圖3的模塊被呈現(xiàn)為示例,而不是限制。因此,取決于特定的編解碼特性,該音頻流水線可包括附加的或更少的模塊。在一般的操作中,流水線300接收經(jīng)編碼的(壓縮的)音頻流320并且生成對應的經(jīng)解碼的音頻流322。更具體地,圖3示出接收經(jīng)壓縮的音頻流320的VLD模塊302。進而,VLD模塊302在該流上執(zhí)行熵解碼。該解碼可以是霍夫曼解碼。但是,各實施例不限于該示例。該解碼的結(jié)果通過反Q模塊304進行反量化。模塊306可在模塊304的反量化結(jié)果上執(zhí)行附加音頻處理。作為示例,模塊306可在這些結(jié)果上執(zhí)行反自適應差分脈沖碼調(diào)制(ADPCM)。然而,可執(zhí)行附加或替換的操作。在實施例中,該音頻處理可(取決于特定音頻編解碼器的細節(jié))在多個子帶和/或音頻樣本上(例如,在圖2所示的幀的行和/或列上)可線程化。對于采用DCT變換的音頻編解碼器,反DCT模塊308在模塊306的輸出上執(zhí)行反DCT。此后,QMF模塊310將模塊308提供的頻域系數(shù)轉(zhuǎn)換成時域中脈沖碼調(diào)制(PCM)音頻樣本。在實施例中,QMF模塊310執(zhí)行在子帶(例如,圖2中的行)上、但未必在音頻樣本(例如,圖2中的列)上通??删€程化的操作。通常,由模塊308和310執(zhí)行的反DCT和QMF操作是音頻流水線中計算強度最高的操作。例如,這些操作在被組合時可表示所消耗的總的每秒百萬指令(MIPS)的30-50%。如圖3所示,音頻后處理模塊312可在QMF模塊310提供的PCM樣本上執(zhí)行操作。示例性操作包括下混頻(減少音頻流中的數(shù)量或音頻信道)。然而,可執(zhí)行附加或替換的操作。這產(chǎn)生經(jīng)解碼的音頻流322,其可被發(fā)送到輸出設備,諸如放大器和/或揚聲器。圖3的流水線可單獨地應用于多個音頻信道(例如,兩個、五個或更多音頻信道)中的每一個。因此可獨立處理每個信道。然而,各實施例不限于這些獨立處理。圖3的某些模塊還共用于視頻流水線。例如,VLD模塊302、反Q模塊304和反DCT模塊306可用于視頻流水線中。因此,在圖3中,這些模塊形成灰色陰影。作為這些共同性的結(jié)果,實施例可將音頻幀提交給視頻流水線,以便在其上執(zhí)行所指出的操作(VLD、反Q、iDCT等)。此外,并非由圖形引擎(例如,圖形引擎104)直接支持的音頻處理操作在很多情況下是尤其可線程化的。因此,這些操作可由圖形引擎的多個執(zhí)行單元執(zhí)行。此外,在可獨立處理音頻信道的情況下,可線程化的程度增加。這種可線程化性質(zhì)可由圖形引擎的多個執(zhí)行單元支持。為了處理音頻幀,利用由圖形引擎提供的視頻流水線,媒體應用可執(zhí)行對圖形驅(qū)動器(例如,圖1的圖形引擎驅(qū)動器111)的若干調(diào)用。不同驅(qū)動器調(diào)用的精確數(shù)量和性質(zhì)是根據(jù)實現(xiàn)特定的。例如,這種驅(qū)動器調(diào)用可依賴于所采用的特定音頻編解碼器(例如,DTS-HD主音頻、DolbyTrueHD等等)。圖4提供這種驅(qū)動器調(diào)用的示例。具體地,圖4是示出與圖3的音頻流水線模塊相對應的圖形驅(qū)動器調(diào)用的圖。出于說明而非限制的目的提供這些驅(qū)動器調(diào)用。因此可采用更少或更多調(diào)用的組合。圖4示出利用模塊302和304的操作的第一驅(qū)動器調(diào)用402和利用模塊306的操作的第二驅(qū)動器調(diào)用404。同樣,第三驅(qū)動器406調(diào)用利用模塊308的操作。此外,第四驅(qū)動器調(diào)用408利用模塊310和312的操作。出于說明而非限制的目的提供這些驅(qū)動器調(diào)用。因此可采用更少或更多驅(qū)動器調(diào)用的其它布置。例如,實施例可采用優(yōu)化實現(xiàn),其中很多驅(qū)動器調(diào)用被合并,以便減少處理每一個音頻幀所需要的應用/驅(qū)動器交互的數(shù)量。圖5示出示例性邏輯流程500,它表示由本文描述的一個或多個實施例執(zhí)行的操作。盡管圖5示出特定順序,但可采用其他順序。此外,可按各種并行和/或順序的組合執(zhí)行所描述的操作。在框502,應用重新格式化一個或多個音頻幀,使得其格式與視頻幀的格式兼容。在實施例中,這可包括將多個音頻幀組合到單個較大的幀中。作為替換或附加,這可包括在時間和/或頻率上改變音頻幀的尺寸。例如,可將附加的子帶和/或時間樣本“作為0填充”到音頻幀,以使其成為視頻兼容尺寸。在框504,執(zhí)行第一圖形驅(qū)動器調(diào)用。該調(diào)用將音頻幀提交給用于熵解碼和反量化(例如,由模塊302和304執(zhí)行的)的圖形引擎(例如,圖形引擎104)。在實施例中,圖形引擎具有固定功能和/或可執(zhí)行這些操作的可編程的VLD引擎。在框506,執(zhí)行第二驅(qū)動器調(diào)用。該調(diào)用發(fā)起其它音頻專用的處理(例如,模塊306的處理)的執(zhí)行。如上所述,這種處理可在子帶、音頻樣本和音頻信道上可線程化。結(jié)果,可實現(xiàn)高度可線程化。這允許圖形引擎的執(zhí)行單元的快速、有效執(zhí)行。在框508執(zhí)行第三驅(qū)動器調(diào)用。在該驅(qū)動器調(diào)用中,應用可將音頻幀提交給圖形引擎,使得可在其上執(zhí)行反DCT。如本文所述,圖形引擎具有固定的和/或可編程的功能,以為該操作提供加速。在框510,執(zhí)行第四驅(qū)動器調(diào)用。該調(diào)用發(fā)起QMF操作以及任何其它音頻后處理的執(zhí)行(例如,模塊310和312的操作)。如上所述,這些操作可以是尤其可線程化的(可線程化的程序?qū)τ诓煌木幗獯a器方案是不同的)。因此,這些操作是圖形引擎執(zhí)行單元上多線程執(zhí)行的良好候選???10的執(zhí)行產(chǎn)生經(jīng)解碼的音頻。因此,如果該音頻伴隨視頻流,則視頻流和音頻流可在框512處同步(諸如,在時間上對齊)。在實施例中,這種同步可由應用執(zhí)行。在框514,應用可將經(jīng)解碼的音頻流傳送到輸出音頻棧。該??商峁┹敵鼍彌_能力。進而,在框516,音頻通過一個或多個設備輸出。這種設備可包括PCM解碼器、濾波器、放大器和/或揚聲器的任意組合。每個音頻幀通常表示固定的時間量(例如,5或10毫秒,這取決于音頻幀的尺寸)。因此,應用可按相應的固定速率將音頻幀提交給圖形流水線。因此,可重復地執(zhí)行框502-516的任意組合。同樣,在實施例中,應用可將本文描述的音頻處理圖形驅(qū)動器調(diào)用與常規(guī)的圖形驅(qū)動器調(diào)用進行混合/重疊。因此,可通過圖形引擎并行地解碼和后處理音頻幀和視頻幀。如本文所述,各實施例可利用硬件組件、軟件組件或其任何組合實現(xiàn)。硬件組件的示例可包括處理器、微處理器、電路、電路組件(例如,晶體管、電阻器、電容器、電感器等)、集成電路、專用集成電路(ASIC)、可編程邏輯設備(PLD)、數(shù)字信號處理器(DSP)、現(xiàn)場可編程門陣列(FPGA)、邏輯門、寄存器、半導體器件、芯片、微型芯片、芯片組等。軟件的示例可包括軟件組件、程序、應用、計算機程序、應用程序、系統(tǒng)程序、機器程序、操作系統(tǒng)軟件、中間件、固件、軟件模塊、例程、子例程、函數(shù)、方法、過程、軟件接口、應用程序接口(API)、指令集、計算代碼、計算機代碼、代碼段、計算機代碼段、字、值、符號,或其任何組合。一些實施例可例如利用機器可讀的存儲介質(zhì)或制品來實現(xiàn)。存儲介質(zhì)可存儲指令或指令集,該指令或指令集在被機器執(zhí)行時可導致機器執(zhí)行根據(jù)實施例的方法和/或操作。這樣的機器可包括,例如,任何合適的處理平臺、計算平臺、計算設備、處理設備、計算系統(tǒng)、處理系統(tǒng)、計算機、處理器或類似物,且可利用任何合適的硬件和/或軟件組合實現(xiàn)。如本文所述,實施例可包括存儲介質(zhì)或機器可讀制品。例如,這些可包括任何合適類型的存儲器單元、存儲器設備、存儲器制品、存儲器介質(zhì)、存儲設備、存儲制品、存儲介質(zhì)和/或存儲單元,例如,存儲器、可移動或不可移動介質(zhì)、可擦除或不可擦除介質(zhì)、可寫或可重寫介質(zhì)、數(shù)字或模擬介質(zhì)、硬盤、軟盤、壓縮盤只讀存儲器(CD-ROM)、可錄壓縮盤(CD-R)、可重寫壓縮盤(CD-RW)、光盤、磁性介質(zhì)、磁光介質(zhì)、可移動存儲卡或盤、各種類型的數(shù)字通用盤(DVD)、帶、帶盒等。指令可包括利用任何合適的高級、低級、面向?qū)ο?、可視、匯編和/或解釋編程語言來實現(xiàn)的諸如源代碼、匯編代碼、解釋代碼、可執(zhí)行代碼、靜態(tài)代碼、動態(tài)代碼、加密代碼等任何適合類型的代碼。盡管以上已經(jīng)描述了本發(fā)明的各個實施例,但應當理解,它們是作為示例而非限定給出的。例如,本文描述的技術不限于使用二進制數(shù)。因此,這些技術可用于任何基數(shù)的數(shù)字。因此,對相關領域技術人員顯而易見的是,在不背離本發(fā)明的精神和范圍的情況下可在形式和細節(jié)方面作出各種變化。因此,本發(fā)明的寬度和范圍不應由上述示例性實施例中的任何一個來限制,而應當只根據(jù)所附權利要求及其等價物來限定。