專利名稱::經(jīng)優(yōu)化的cabac解碼器的制作方法
技術領域:
:本發(fā)明大體上涉及視頻解碼的領域,且更具體地說,涉及用于優(yōu)化用于H.264視頻解碼的基于上下文的適應性二進制算術譯碼(CABAC)的技術。
背景技術:
:為了支持H.264主規(guī)范,基于上下文的適應性二進制算術譯碼(CABAC)是一項技術挑戰(zhàn)。二進制算術譯碼處理的基本理念為遞歸區(qū)間劃分。算術解碼引擎核心保持兩個寄存器。第一寄存器為具有9個位的范圍寄存器。第二寄存器為在常規(guī)模式下為9個位且在旁路模式下為10個位的偏移寄存器。所述范圍寄存器跟蹤當前區(qū)間的寬度。偏移是來自位流且指向所述范圍內(nèi)的當前位置。當解碼二進制元素(bin)時,依據(jù)解碼所述特定二進制元素的上下文而定,將范圍劃分成兩個子區(qū)間。在判定所述二進制元素之后,更新范圍及偏移。在解碼一個二進制元素之后,將重新正規(guī)化范圍及偏移以保持解碼下一個二進制元素的精確度。其確保所述9位寄存器范圍的最高有效位總是為1。因此,存在CABAC核心中的大量逐位運算、頻繁的重新正規(guī)化及從位流的逐位讀取,其均為計算繁瑣的。因此,繼續(xù)需要用于優(yōu)化用于H.264視頻解碼的基于上下文的適應性二進制算術譯碼(CABAC)的技術。
發(fā)明內(nèi)容本發(fā)明揭示用于優(yōu)化用于H.264視頻解碼的基于上下文的適應性二進制算術譯碼(CABAC)的技術。在一種配置中,提供一種裝置,其包含處理電路,所述處理電路操作以實施用以同時解碼多個二進制元素及在解碼所述多個二進制元素之后重新正規(guī)化偏移寄存器及范圍寄存器的指令集。所述裝置還包括耦合到所述處理電路的存儲器。在另一方面中,提供一種集成電路,其包含處理電路,所述處理電路操作以實施用以同時解碼多個二進制元素及在解碼所述多個二進制元素之后重新正規(guī)化偏移寄存器及范圍寄存器的指令集。所述集成電路還包括耦合到所述處理電路的存儲器。在又一方面中,提供一種計算機程序產(chǎn)品,其包括計算機可讀媒體,所述計算機可讀媒體具有用于致使計算機進行以下操作的指令同時解碼多個二進制元素。所述計算機程序產(chǎn)品還包括用以在解碼所述多個二進制元素之后重新正規(guī)化以使偏移寄存器與范圍寄存器多位對準的指令。將從具體實施方式更容易明白額外方面,尤其是在結(jié)合附圖來閱讀時。在結(jié)合附圖閱讀時將從下文陳述的具體實施方式中更容易明白本發(fā)明的方面及配置,在附圖中相同參考字符始終識別相應元件。圖1展示無線裝置的一般框圖。圖2A展示示范性H.264標準范圍寄存器。圖2B展示示范性H.264標準偏移寄存器。圖2C展示示范性H.264標準MPS情況。圖2D展示示范性H.264標準LPS情況。圖3展示用于一個二進制元素的H.264標準算術解碼處理的樣本(偽碼)指令集。圖4展示H.264標準重新正規(guī)化處理的流程圖。圖5展示H.264標準正規(guī)解碼模式處理的流程圖。圖6展示H.264標準旁路解碼模式處理的流程圖。圖7展示H.264標準終止解碼處理的流程圖。圖8A及圖8B展示經(jīng)修改的范圍寄存器及偏移寄存器。圖8C展示使用圖8A及圖8B的經(jīng)修改的范圍寄存器及偏移寄存器的視頻處理器的框圖。圖9展示正規(guī)解碼模式處理的流程圖。圖IOA展示第一重新正規(guī)化處理的流程圖。圖IOB展示第二重新正規(guī)化處理的流程圖。圖IOC展示第三重新正規(guī)化處理的流程圖。圖11展示旁路解碼模式處理的流程圖。圖12展示終止解碼處理的流程圖。圖13A展示用于前綴EG碼解碼處理的樣本(偽碼)指令集。圖13B展示圖13A的前綴EG碼解碼處理的范圍與偏移關系圖。圖14A展示用于后綴EG碼解碼處理的樣本(偽碼)指令集。圖14B展示圖14A的后綴EG碼解碼處理的范圍與偏移關系圖。圖15A展示前綴EGK碼解碼處理的流程圖。圖15B展示后綴EGK碼解碼處理的流程圖。圖16A、16B及16C展示CABAC殘余塊語法布置。各圖中的圖像出于說明性目的而被簡化,且并未按比例描繪。為了有助于理解,已在可能之處使用相同的參考標號來指示各圖共同的相同元件,除了在適當時可能添加后綴以區(qū)分所述元件之外。本發(fā)明的示范性配置,且因而,不應被視為限制本發(fā)明的范圍,本發(fā)明可容許其它同等有效的配置。預期一個配置的特征或步驟可有利地并入于其它配置中而無需作進一步敘述。具體實施例方式詞“示范性”在本文中用于意指“充當實例、例子或說明”。本文中描述為“示范性”的任何配置或設計不必被解釋為比其它配置或設計優(yōu)選或有利。本文所描述的技術可用于無線通信、計算、個人電子裝置等等。下文描述所述技術用于無線通信的示范性使用。圖1展示無線通信系統(tǒng)中的無線裝置10的配置的框圖。無線裝置10可為蜂窩式或相機電話、終端、手持機、個人數(shù)字助理(PDA)或某種其它裝置。所述無線通信系統(tǒng)可為碼分多址(CDMA)系統(tǒng)、全球移動通信系統(tǒng)(GSM)系統(tǒng)或某種其它系統(tǒng)。手持機可為蜂窩式電話、無線裝置、無線通信裝置、視頻游戲控制臺、配備無線功能的個人數(shù)字助理(PDA)、膝上型計算機或具有視頻功能的裝置。無線裝置10能夠經(jīng)由接收路徑及發(fā)射路徑來提供雙向通信。在接收路徑上,基站所發(fā)射的信號由天線12接收且提供到接收器(RCVR)14。接收器14調(diào)節(jié)并數(shù)字化所接收到的信號且將樣本提供到數(shù)字區(qū)段20以供進一步處理。在發(fā)射路徑上,發(fā)射器(TMTR)16從數(shù)字區(qū)段20接收將發(fā)射的數(shù)據(jù),處理并調(diào)節(jié)所述數(shù)據(jù),且產(chǎn)生經(jīng)調(diào)制的信號,所述信號經(jīng)由天線12發(fā)射到基站。數(shù)字區(qū)段20包括各種處理單元、接口單元及存儲器單元,例如調(diào)制解調(diào)器處理器22、視頻處理器24、控制器/處理器26、顯示處理器28、ARM/DSP32、圖形處理單元(GPU)34、內(nèi)部存儲器36及外部總線接口(EBI)38。調(diào)制解調(diào)器處理器22執(zhí)行用于數(shù)據(jù)發(fā)射及接收的處理(例如,編碼、調(diào)制、解調(diào)及解碼)。視頻處理器24對視頻應用(例如,可攜式攝像機、視頻重放及視頻會議)的視頻內(nèi)容(例如,靜止圖像、移動視頻及移動文本)執(zhí)行處理。控制器/處理器26可指導數(shù)字區(qū)段20內(nèi)的各種處理單元及接口單元的操作。顯示處理器28執(zhí)行有助于在顯示單元30上顯示視頻、圖形及文本的處理。ARM/DSP32可為無線裝置10執(zhí)行各種類型的處理。圖形處理單元34執(zhí)行圖形處理。本文所描述的技術可用于數(shù)字區(qū)段20中的任何處理器,例如,視頻處理器24。內(nèi)部存儲器36存儲用于數(shù)字區(qū)段20內(nèi)的各種單元的數(shù)據(jù)及/或指令。EBI38有助于數(shù)據(jù)沿著總線或數(shù)據(jù)線DL在數(shù)字區(qū)段20(例如,內(nèi)部存儲器36)與主存儲器40之間傳送。數(shù)字區(qū)段20可以一個或一個以上DSP、微處理器、RISC等等來實施。數(shù)字區(qū)段20也可制造于一個或一個以上專用集成電路(ASIC)或某種其它類型的集成電路(IC)上。本文所描述的技術可實施于各種硬件單元中。舉例來說,所述技術可實施于ASIC、DSP、RISC、ARM、數(shù)字信號處理裝置(DSPD)、可編程邏輯裝置(PLD)、現(xiàn)場可編程門陣列(FPGA)、處理器、控制器、微控制器、微處理器及其它電子單元中。圖2A展示示范性H.264標準范圍寄存器50,且圖2B展示示范性H.264標準偏移寄存器60。二進制算術譯碼處理的基本理念為遞歸區(qū)間劃分。算術解碼引擎核心保持兩個寄存器。第一寄存器為具有9個位的范圍寄存器50。第二寄存器為在常規(guī)模式下為9個位且在旁路模式下為10個位的偏移寄存器60。圖2C展示大體上由參考標號50A表示的示范性H.264標準最大概率符號(MPS)情況,且圖2D展示大體上由參考標號50B表示的示范性H.264標準最小概率符號(LPS)情況。所述范圍寄存器跟蹤當前區(qū)間的寬度。偏移是來自位流且是指向所述范圍內(nèi)的當前位置的點。應注意,下文所陳述的許多等式及表達式使用類似于C或C++計算機編程語言的語法。所述表達式是用于說明性目的,且可用具有不同語法的其它計算機編程語言來表達。當解碼二進制元素時,依據(jù)解碼特定二進制元素的上下文而定,將范圍劃分成兩個子區(qū)間rLPS52及rMPS54。在等式(1)及(2)中定義子區(qū)間rLPS52及rMPS54<formula>formulaseeoriginaldocumentpage6</formula>及(1)<formula>formulaseeoriginaldocumentpage6</formula>其中pLPS為最小概率符號的概率;且pMPS為最大概率符號的概率。偏移所落入的子區(qū)間rLPS52及rMPS54判定二進制元素是MPS還是LPS二進制元素。如果偏移>=rMPS,則二進制元素為LPS二進制元素。否則,二進制元素為MPS二進制元素。在判定所述二進制元素之后,更新范圍及偏移。項pMPS為概率。概率應在O到1內(nèi)。項rMPS為range*pMPS。MPS與LPS的概率總和應等于1。在以下各種配置中,以所描繪的次序來執(zhí)行流程圖框,或可同時地、并行地或以不同次序來執(zhí)行這些框或其部分。圖3為用于一個二進制元素的H.264標準算術解碼處理100的樣本(偽碼)指令集。所述指令集指示范圍寄存器50及偏移寄存器60兩者均為9個位。還指示范圍寄存器50配置。所述指令集指示范圍是在28<=range<29內(nèi)。所述算術解碼處理100為簡短的且開始于確定范圍是否>offset>=0的指令處。如果所述確定為“否”,則處理100結(jié)束。然而,如果所述確定為“是”,則下一指令集為if-else組。if語句檢查以查看偏移是否>=rMPS。如果確定為“是”,則二進制元素為LPS情況。接著將范圍更新為設定為等于子區(qū)間rLPS(圖2D)的新范圍(rangejew),且將新偏移(offsetjew)設定為等于offset-rMPSo如果if條件為“否”,則二進制元素為MPS情況。接著將范圍更新為設定為等于子區(qū)間rMPS的新范圍(range_new),且將新偏移(offset_new)設定為等于offset。圖4展示H.264標準重新正規(guī)化處理150的流程圖。在解碼一個二進制元素之后,將重新正規(guī)化范圍及偏移以保持解碼下一個二進制元素的精確度。標準重新正規(guī)化處理150確保9位范圍寄存器50的最高有效位總是為1,如圖2A中所表示。標準重新正規(guī)化處理150開始于框152,在框152處判定范圍是否<0x100。在框152處,將范圍的值與256(或0x100)進行比較。如果所述確定為“否”,則處理150結(jié)束。然而,如果框152處的確定為“是”,則框152之后為框154。在框154處,將范圍左移一個位,由range=range<<1表示。同樣,將偏移左移一個位,由offset=offset<<1表示。還將偏移設定為offset(逐位OR)read_bits(1)。表達式offset(逐位OR)read_bits(1)表示范圍/偏移寄存器的左移一個位的值。在所述移位之后,最低有效(最右邊)位為0。表達式reacLbits(l)從位流讀取一個位,且將此一個位添加到偏移寄存器60的最低有效(最右邊)位。框154循環(huán)回到上述的框152。框152及154的循環(huán)重復,直到框152處的確定為“否”為止,這完成重新正規(guī)化處理150。圖5展示H.264標準正規(guī)解碼模式處理200的流程圖。在標準解碼處理200中,為了避免乘法,使用64x4查詢表(LUT)來近似上述等式(1)中陳述的rLPS。范圍是通過將9位范圍寄存器50等分成四個單元來近似。pLPS是由通過6位上下文狀態(tài)索引的64個量化值來近似。因此,在框202處,根據(jù)等式(3)來計算rLPS<formula>formulaseeoriginaldocumentpage7</formula>其中ctxldx為對處理200的輸入,表示上下文狀態(tài)的索引且提供狀態(tài)信息;range>>6表示右移6個位或除以26;且(range>>6)&3的結(jié)果提取在范圍寄存器50中用于尋址LUT的位7-6(MSB之后的兩個位)。表達式ctxldx->state可采用0到63的值,其在64x4LUT中使用以獲得rLPS。舉例來說,如果范圍為Oblxxyyyyyy,則所述范圍將在0x100到OxlFE內(nèi),且使用(range>>6)&3來獲得所述范圍的“XX”。表達&為逐位AND函數(shù)。在框202處,還根據(jù)等式(4)來計算rMPS<formula>formulaseeoriginaldocumentpage7</formula>其中rLPS是在等式(3)中計算出。框202之后為框204,在框204處確定偏移是否>=rMPS。如果確定為“是”,則框204之后為框206,在框206處根據(jù)等式(5)、(6)及(7)來計算二進制元素、范圍及偏移<formula>formulaseeoriginaldocumentpage8</formula>其中!ctxldx->valMPS表示其中ctxldx->valMPS可采用0或1的值的表達式,且“!”意指位翻轉(zhuǎn)。項ctxldx為所述函數(shù)的輸入?yún)?shù),且其提供狀態(tài)及valMPS信息。項valMPS表示在MPS情況下的二進制元素輸出。框206之后為框208,在框208處確定ctxldx->state是否等于0。如果框208處的確定為“是”,則框208之后為框210,在框210處將ctxldx->valMPS指派為等于!ctxldx->valMPS。框210之后為框212。另外,如果框208處的確定為“否”,則框208之后也為框212。在框212處,將ctxldx->state指派為等于TransIndexLPS(ctxIDx->state)。在解碼每一二進制元素之后,需要更新與每一ctxldx相關聯(lián)的狀態(tài)/valMPS。項TransIndexLPS/TransIndexMPS恰好為在H.264標準中定義的用以計算狀態(tài)轉(zhuǎn)變的兩個LUT。再次返回到框204,如果框204處的確定為“否”,則框204之后為框214,在框214處根據(jù)等式(8)及(9)來計算二進制元素及范圍<formula>formulaseeoriginaldocumentpage8</formula>框214之后為框216,在框216處將ctxldx->state指派為等于TransIndexLPS(ctxIDx->state)。框212及216兩者均前進到框218,在框218處發(fā)生重新正規(guī)化處理150???18結(jié)束處理200。圖6展示H.264標準旁路解碼模式處理250的一般流程圖。對于旁路解碼模式處理250。在H.264標準旁路解碼模式處理250中,將偏移左移1個位,且從位流讀取1個位。將新偏移與范圍進行比較以確定二進制元素是為1還是為0。標準旁路解碼模式處理250開始于框252,在框252處將偏移設定為等于offset<<1,其中<<1表示乘以2或左移1位。此外,將偏移設定為等于offset(逐位OR)read_bits(l)。框252之后為框254,在框254處確定偏移是否>=范圍。如果確定為“是”,則框254之后為框256,在框256處根據(jù)等式(10)及(11)來計算二進制元素及偏移<formula>formulaseeoriginaldocumentpage8</formula>如果所述確定為“否”,則框254之后為框258,在框258處將二進制元素設定為等于零(0)???56及258結(jié)束處理250。應注意,術語二進制元素也與位相同。圖7展示H.264標準終止解碼處理300的流程圖。在解碼指示end_of_slice_flag及I-脈沖碼調(diào)制(I_PCM)模式的二進制元素時,調(diào)用所述標準終止解碼處理300的專用解碼例程。標準終止解碼處理300開始于框302,在框302處使范圍減少2(range=range-2)。框302之后為框304,在框304處確定偏移是否>=范圍。如果框304處的確定為“是”,則在框306處將二進制元素設定為等于一(1)。然而,如果框304處的確定為“否”,則框304之后為框308,在框308處將二進制元素設定為等于零(0)???08之后為框310,在框310處執(zhí)行重新正規(guī)化處理150(圖4)???06及310兩者結(jié)束H.264標準終止解碼處理300。在CABAC初始階段期間,將范圍寄存器50(圖2A)設定為OxlFE,從位流讀取9個位以設定初始偏移寄存器60。如可從上文容易看出,使用9個位來表示范圍及偏移。因此,在CABAC核心處理中存在大量逐位運算。在H.264標準正規(guī)解碼模式處理200(圖5)中,只要為LPS情況,由于LPS概率是<0.5,所以新范圍將為<0x100。因此,需要進行重新正規(guī)化以使范圍>=0x100。在新的示范性配置中,使用C0unt_leading_zer0(CLZ)指令以代替使用循環(huán)來計算所需的左移量。只要為MPS情況,由于MPS概率>=0.5,所述新范圍將為0x080到OxlFE。因此,重新正規(guī)化需要至多一個左移以使最高有效位(MSB)為1。同時,將偏移左移相同量,且從位流讀取新的位以將其填滿。此外,在H.264標準旁路解碼模式處理250中,總是將偏移左移1位,且從位流讀取1個位。這需要非常頻繁地進行重新正規(guī)化及從位流讀取位,其均為計算非常繁瑣的。圖8A及圖8B展示示范性配置的經(jīng)修改的范圍寄存器400及偏移寄存器410。范圍寄存器400及偏移寄存器410可為32位或64位。出于說明性目的,本發(fā)明描述32位范圍寄存器400及偏移寄存器410的實施方案。在CABAC核心初始階段期間,應將范圍寄存器400設定為OxFFOOOOOO=OxlFE<<23,應將偏移寄存器410設定為從位流讀取的開頭4個字節(jié),因為CABAC部分位流的開始位位置為字節(jié)對準的。如圖8A所示,范圍寄存器400包含多個部分。在所述示范性配置中,將所述32個位劃分成前導零部分402、有效9個位部分404及尾隨零部分406。位位置(bitpos)是由前導零部分402中前導零位的數(shù)目指示,且使用C0imt_leading_zer0S指令來計算。所述32位實施方案中的位位置為11個位。在尾隨零部分406中尾隨零的數(shù)目為(32-9-bitpos)=(23-bitpos)。范圍寄存器400的至少一個部分中位的數(shù)目可改變。從范圍寄存器400提取從最高有效位(MSB)開始的第一位1之后的兩個位,且使用所述兩個位來查詢rLPS。使所查詢到的值左移(23-bitpos)以與范圍寄存器400中的有效9個位部分404對準。剩余的算法幾乎相同,除了使用更有效的重新正規(guī)化以外。只要范圍小于0x100,便將范圍及偏移兩者左移24個位(3個字節(jié)),從位流讀取3個額外字節(jié)且將其附加到偏移寄存器410。因此,所有位流存取均是基于字節(jié)的。此示范性配置為用于說明性目的的實例。此外,可使用更多或更少的位來代替32個位。另外,雖然本文中的描述描述為8個位的字節(jié),但在無迭代循環(huán)的重新正規(guī)化處理中可使用任何數(shù)目的多個位來代替本文所描述的字節(jié)布置。圖8C展示具有處理器電路24A及解碼器引擎24B的視頻處理器24的框圖。解碼器引擎24B具有范圍寄存器400及偏移寄存器410。視頻處理器24與用于rLPS的查詢表(LUT)420通信。以虛線展示方框420以表示其可在視頻處理器24中或在視頻處理器24外部。視頻處理器24實行下文所陳述的處理。圖9展示正規(guī)解碼模式處理450的流程圖。正規(guī)解碼模式處理450類似于正規(guī)解碼模式處理200(圖5)。主要差異包括框452及460。在框452處,將位位置設定為等于count_leading_zeros(范圍)。此外,根據(jù)等式(12)來計算rLPSrLPS=IutLPS[ctxldx->state][(range>>(29_bitpos))&3]<<(23-bitpos)(12)其中ctxldx為對處理450的輸入,表示上下文狀態(tài)的索引,且提供狀態(tài)信息;且range>>(29-bitpos))&3的結(jié)果提取前導1之后的兩個位。表達式<<(23-bitpos)將用于與范圍對準。表達式ctxldx->state可采用0到63的值,其在64x4LUT中使用以獲得rLPS。在圖9中,框204、206、208、210、212、214及216對應于圖5中具有相同編號的框。因此,不需要做進一步論述。然而,圖5中212的重新正規(guī)化框由圖IOA的重新正規(guī)化處理500替代。圖IOA展示第一重新正規(guī)化(重新正規(guī)化1)處理500的流程圖。第一重新正規(guī)化處理500開始于框502,在框502處判定范圍是否為<0X100。如果所述確定為“否”,則處理500結(jié)束。然而,如果框502處的確定為“是”,則框502之后為框504。在框504處,將范圍移位24個位,由range=range<<24表示。同樣,將偏移移位24個位,由offset=offset<<24表示。還將偏移設定為offset(逐位OR)read_bytes(3)。因此,在將偏移左移24個位之后,偏移寄存器410的最右的24個位均為0。接著從位流讀取3個字節(jié)(24個位),且將此添加到偏移寄存器410。如可看出,第一重新正規(guī)化(重新正規(guī)化1)處理500同時執(zhí)行寄存器的多位對準而無需迭代循環(huán)操作。在所述示范性配置中,范圍寄存器400及410的多位對準以字節(jié)區(qū)間來發(fā)生。圖10B展示第二重新正規(guī)化(重新正規(guī)化2)處理600的流程圖。第二重新正規(guī)化處理600開始于框602,在框602處判定范圍是否為<0X200。如果所述確定為“否”,則處理600結(jié)束。然而,如果框602處的確定為“是”,則框602之后為框604。在框604處,將范圍移位16個位,由range=range<<16表示。同樣,將偏移移位16個位,由offset=offset<<16表示。還將偏移設定為offset(逐位OR)reaf_bytes(2)。因此,在將偏移左移16個位之后,偏移寄存器410的最右的16個位均為0。接著,從位流讀取2個字節(jié)(16個位),且將此添加到偏移寄存器410。圖10C展示第三重新正規(guī)化(重新正規(guī)化3)處理700的流程圖。第三重新正規(guī)化處理700開始于框702,在框702處判定范圍是否為<0X1000000。如果所述確定為“否”,則處理700結(jié)束。然而,如果框702處的確定為“是”,則框702之后為框704。在框704處,將范圍移位8個位,由range=range<<8表示。同樣,將偏移移位8個位,由offset=offset<<8表示。還將偏移設定為offset(逐位OR)read_bytes(1)。因此,在將偏移左移8個位之后,偏移寄存器410的最右的8個位均為0。接著,從位流讀取1個字節(jié)(8個位),且將此添加到偏移寄存器410。圖11展示旁路解碼模式處理800的流程圖。在旁路解碼模式處理800中,將范圍右移1位且將其與偏移寄存器410進行比較。因此,首先在框802處執(zhí)行第二重新正規(guī)化處理600。這將確保在范圍寄存器400及偏移寄存器410中存在至少10個位,或范圍在右移之前為>=0x200???02之后為框804,在框804處將范圍設定為等于range>>1。在圖11中,框254、256及258對應于圖6中具有相同編號的框。因此,不需要做進一步論述。圖12展示終止解碼處理900的流程圖。終止解碼處理900開始于框902,在框902處將位位置設定為等于Count_leading_zeros(范圍),且將范圍設定為減少(2<<(23-bitpos))。框902之后為框304,在框304處確定偏移是否>=范圍。在圖12中,步驟304、306及308對應于圖7中具有相同編號的框。因此,不需要做進一步論述。像圖7—樣,在框308之后發(fā)生正規(guī)化。然而,在圖12中,在框910處使用圖IOA的第一重新正規(guī)化處理500,其中框910跟隨在框308之后。框306及910兩者結(jié)束終止解碼處理900。用于旁路模式的多符號解碼旁路解碼模式處理800適用于兩種情況正負號或指數(shù)葛洛姆二進制化(EG)碼。對于旁路二進制元素為正負號的情況,針對每一運動向量差(mvd)或COeff_level_minuSl僅解碼一個旁路二進制元素。EG碼僅呈現(xiàn)為絕對運動向量差(absjwd)或abS_COefT_level_minusl的二進制元素串的后綴。而且,僅具有abs_mvd>8或abs_coeff_level_minusl>13的那些二進制元素含有所述EG碼的后綴。表1識別具有用于abS_COefT_level_minus1的前綴及后綴的二進制元素串。表2識別具有用于absjwd的前綴及后綴的二進制元素串。項coeffjeveljninusl是來自變換系數(shù)級別,且abs表示絕對值。表3概括EG碼前綴及后綴。隨著位速率增加(量化步長QP減少,殘余系數(shù)級別增加),預期殘余系數(shù)解碼將按比例地增加,因為主要增加將出現(xiàn)在abS_COeff_level_minuSl的EG碼中。在軟件實施方案中,通過同時解碼多個二進制元素來改進EG解碼為重要的。在硬件實施方案中,如果硬件(HW)經(jīng)設計以使得可在1個循環(huán)內(nèi)解碼多個二進制元素,則可對任何位速率位流的CABAC解碼設置上限。由于在旁路模式中未涉及到上下文,所以32位范圍及偏移寄存器的使用使一次進行多個旁路二進制元素解碼成為可能。EC碼以及術語殘余系數(shù)級別增加及殘余系數(shù)解碼在H.264標準中為已知的。術語“一次”意指同時解碼碼字的所有位而非逐個地進行解碼。如將從本文的描述所看出,所述示范性配置可加速EG碼解碼。表1:abs_coeff_level<table>tableseeoriginaldocumentpage11</column></row><table><table>tableseeoriginaldocumentpage12</column></row><table>“表3:EG碼前綴及后綴<table>tableseeoriginaldocumentpage12</column></row><table><table>tableseeoriginaldocumentpage13</column></row><table>如表1及表2中所示,EG碼含有前綴且在多數(shù)情況下含有后綴。所述前綴經(jīng)一元譯碼。所述后綴中二進制元素的數(shù)目是由所述前綴決定的。借助于下表3中所指定的實例,如果EG碼前綴為“10”,則EG0/EG3后綴中位的數(shù)目為1/4,如表3中第二行中所指定的。表3概括EGO碼及EG3碼的前綴及后綴。理論上,前綴/后綴部分可如在圖13A及圖14A中來解碼。圖13A展示用于前綴EG碼解碼處理1000的樣本指令集。圖13B展示圖13A的前綴EG碼解碼處理的范圍與偏移關系圖。用于處理1000的樣本指令集評估偏移是否小于一組閾值T1、T2、T3及Τ4,其中Tl等于范圍的1/2;Τ2為范圍的3/4;Τ3為范圍的7/8;且Τ4為范圍的15/16。如果偏移小于Tl,則將范圍右移1位并返回位0。如果偏移小于Τ2,則offset=offset-Tl,且將范圍右移2位并返回位10。如果偏移小于T3,則將偏移相減并設定為T2,且將范圍右移3位并返回位110。如果偏移小于T4,則將偏移相減并設定為T3,且將范圍右移4位并返回位1110。在圖13B中,展示偏移在T1、T2、T3及T4處相對于范圍的值。圖14Α展示用于后綴EG碼解碼處理1010的樣本指令集。圖14Β展示圖14Α的后綴EG碼解碼處理的范圍與偏移關系圖。圖14Α展示用于后綴EG碼解碼處理1010的樣本指令集。用于處理1010的樣本指令集評估偏移是否小于一組閾值Τ1、Τ2、Τ3、Τ4、Τ5、Τ6及17,其中Tl等于范圍的1/8;Τ2為范圍的2/8;Τ3為范圍的3/8;Τ4為范圍的4/8;Τ5為范圍的5/8;Τ6為范圍的6/8;且Τ7為范圍的7/8。如果偏移小于Tl,則返回位000。如果偏移小于Τ2,則offset=offset-Tl并返回位001。如果偏移小于T3,則將偏移相減并設定為T2且返回位010。如果偏移小于T4,則將偏移相減并設定為T3且返回位011。如果偏移小于T5,則將偏移相減并設定為T4且返回位100。如果偏移小于T6,則將偏移相減并設定為T5且返回位101。如果偏移小于T7,則將偏移相減并設定為T6且返回位110。其它偏移為將偏移相減并設定為T7且返回位111。在所述返回中的任一者之后,將范圍右移3。在圖14B中,展示偏移在11、1233、1435、16及17處相對于范圍的值。圖15A展示前綴EGK碼解碼處理1100的流程圖。圖15B展示后綴EGK碼解碼處理1200的流程圖。展示用于解碼所述前綴或后綴的示范性軟件實施方案。由于解碼每一二進制元素將使范圍右移1位且在解碼最后一個二進制元素之后范圍必須>=0x100,所以首先重新正規(guī)化范圍/偏移,使得范圍>=0x1000000。以此方式,其可允許解碼多達16個連續(xù)二進制元素。在模擬中,在將QP設定為1的情況下,所記錄的EG碼前綴/后綴中的最大二進制元素數(shù)目為9。舉例來說,解碼每一位將消耗范圍寄存器中的1個位。如果范圍>=0x1000000,則在解碼最后一個位之后,范圍將>=0x100。因此,存在可被解碼的16個位。這在32位范圍寄存器400的情況下為可能的。前綴EGK碼解碼處理1100開始于框1102,在框1102處發(fā)生第三重新正規(guī)化處理700???102之后為框1104,在框1104處將閾值指派為范圍,其中將范圍右移1位。此外,將前綴指派為0。框1104之后為框1106,在框1106處確定偏移是否>=閾值。如果框1106處的確定為“是”,則框1106之后為框1108。在框1108處,將范圍右移1位,使閾值增加達范圍的量,且<formula>formulaseeoriginaldocumentpage14</formula>表達式<formula>formulaseeoriginaldocumentpage14</formula>基本上表達為<formula>formulaseeoriginaldocumentpage14</formula>且k++針對所述循環(huán)使k增加1。框1108之后為框1110,在框1110處,<formula>formulaseeoriginaldocumentpage14</formula>表達式<formula>formulaseeoriginaldocumentpage14</formula>還表達為<formula>formulaseeoriginaldocumentpage14</formula>框1110結(jié)束處理1100。在框1106處,如果確定為“否”,則框1106前進到框1110。項k為對DecodeEGKPrefix及DecodeEGKSuffix函數(shù)的輸入。作為對DecodeEGKPrefix函數(shù)的輸入,其在EGO碼的情況下應為0且在EG3碼的情況下應為3。對DecodeEGKSuffix函數(shù)的輸入為來自DecodeEGKPrefix函數(shù)的值k。表達式prefix+=(1<<k)也展示于下表3中。舉例來說,1110(第4行)意指前綴在EGO碼的情況下為7,其為<formula>formulaseeoriginaldocumentpage14</formula>表達式<formula>formulaseeoriginaldocumentpage14</formula>與<formula>formulaseeoriginaldocumentpage14</formula>相同。后綴EGK碼解碼處理1200開始于框1202,在框1202處發(fā)生第三重新正規(guī)化處理700。框1202之后為框1204,在框1204處將后綴設定為0???204之后為框1206,在框1206處確定k是否大于0。如果所述確定為“否”,則處理1200結(jié)束。然而,如果所述確定為“是”,則框1206之后為框1208,在框1208處將范圍右移1位且使k減少1。框1208之后為框1210,在框1210處確定偏移是否>=范圍。如果所述確定為“否”,則框1210返回到框1206。然而,如果框1210處的確定為“是”,則框1210之后為框1212,在框1212處<formula>formulaseeoriginaldocumentpage14</formula>表達式<formula>formulaseeoriginaldocumentpage14</formula>計算二進制串的值。舉例來說,<formula>formulaseeoriginaldocumentpage14</formula>且<formula>formulaseeoriginaldocumentpage14</formula>1108之后為框1110,在框1110處將偏移指派為threshold-range???110結(jié)束處理1100。在框1106處,如果確定為“否”,則框1106前進到框1110。實驗結(jié)果表4到5展示標準核心與新優(yōu)化核心之間的MIPS及循環(huán)/function_call比較。這些數(shù)值是在利用層3編譯器優(yōu)化及默認數(shù)據(jù)及指令高速緩沖存儲器大小的情況下在DSP模擬器上對凱雅克(Kayak)序列而獲得的。表4標準核心與新核心之間的MIPS比較<table>tableseeoriginaldocumentpage14</column></row><table>表5標準核心與新核心之間的循環(huán)/函數(shù)調(diào)用比較<table>tableseeoriginaldocumentpage15</column></row><table>表4及表5展示圖5及圖9的解碼決策處理200及450的位速率、量化步長QP的比較。表4及表5還展示圖6及圖11的解碼旁路處理250及800以及EGK碼的解碼處理的比較。表4還展示MIPS的結(jié)果。如果使用64位寄存器且特別關注CABAC初始階段,則將能夠使正讀取的4個字節(jié)對準且進一步節(jié)省循環(huán)。進行圖10A、圖IOB及圖IOC中所示的第一重新正規(guī)化處理500、第二重新正規(guī)化處理600及第三重新正規(guī)化處理700的閾值可改變?yōu)?x100000000,使得應用共用重新正規(guī)化例程。這將改變從位流讀取字節(jié)的頻率。其還可改變重新正規(guī)化檢查頻率。舉例來說,可省略框1202處的在圖15B的開始處的重新正規(guī)化檢查。在圖9中,在框460處執(zhí)行的第一重新正規(guī)化處理500可移動到正規(guī)解碼模式處理450的開始處。如果使用32位范圍寄存器且重新正規(guī)化閾值為0x10000,則在解碼第一符號之后,最小可能范圍寄存器為0x600。為0x600的范圍寄存器仍>0x100且可在無重新正規(guī)化的情況下解碼下一個符號。因此,在多于9位的范圍/偏移寄存器的情況下,其使得能夠在無重新正規(guī)化的情況下解碼多個二進制元素。由于原始重新正規(guī)化是基于位的,因此其非常繁瑣。因此,范圍寄存器400的布置可簡化硬件架構以解碼2個連續(xù)正規(guī)模式符號。圖16A、16B及16C展示CABAC殘余塊語法布置。為了解碼2個連續(xù)正規(guī)模式符號,成對地解碼如圖16A及圖16B中所看到的significant_coeff_flag及l(fā)ast_significant_coeff_flag。如果significant_coeff_flag為0,則這指示系數(shù)為零系數(shù)且不存在last_significant_coeff_flag。如果significant_coeff_flag為1,則這指示系數(shù)為非零系數(shù)且待解碼的下一個符號為last_significant_c0eff_flag。因此,所述對的值可采用0或10或11。由于需要針對4x4塊的每一殘余系數(shù)解碼所述對,所以潛在的加速/節(jié)省是相當顯著的。項significant_coeff_flag及l(fā)ast_significant_coeff_flag在H.264標準中定義。圖16C中的矩陣或塊1400為數(shù)據(jù)組的示范性說明。圖16B中表1350中的值是從圖16C的數(shù)據(jù)組導出的。語法元素流1300是從表1350導出的。只要在范圍/偏移寄存器中存在足夠的位,就可跳過重新正規(guī)化檢查。在一個或一個以上示范性配置中,所描述的功能可以硬件、軟件、固件或其任何組合來實施。如果以軟件來實施,則所述功能可作為一個或一個以上指令或代碼而存儲于計算機可讀媒體上或經(jīng)由計算機可讀媒體傳輸。計算機可讀媒體包括計算機存儲媒體及通信媒體兩者,所述通信媒體包括有助于將計算機程序從一處傳送到另一處的任何媒體。存儲媒體可為可由計算機存取的任何可用媒體。借助于實例而非限制,所述計算機可讀媒體可包含RAM、ROM、EEPROM、CD-ROM或其它光盤存儲裝置、磁盤存儲裝置或其它磁性存儲裝置,或可用于以指令或數(shù)據(jù)結(jié)構的形式攜載或存儲所要程序代碼且可由計算機存取的任何其它媒體。而且,將任何連接適當?shù)胤Q作計算機可讀媒體。舉例來說,如果使用同軸電纜、光纖電纜、雙絞線、數(shù)字訂戶線(DSL)或例如紅外線、無線電及微波等無線技術而從網(wǎng)站、月艮務器或其它遠程源傳輸軟件,則同軸電纜、光纖電纜、雙絞線、DSL或例如紅外線、無線電及微波等無線技術包括于媒體的定義中。磁盤及光盤在本文中使用時包括緊密光盤(CD)、激光光盤、光學光盤、數(shù)字通用光盤(DVD)、軟性磁盤及藍光光盤,其中磁盤通常以磁性方式再生數(shù)據(jù),而光盤用激光以光學方式再生數(shù)據(jù)。上述各者的組合也應包括于計算機可讀媒體的范圍內(nèi)。提供對所揭示配置的先前描述以使得所屬領域的技術人員能夠制作或使用本發(fā)明。所屬領域的技術人員將容易明白對這些配置的各種修改,且在不脫離本發(fā)明的精神或范圍的情況下本文中所界定的一般原理可應用于其它配置。因此,本發(fā)明不希望限于本文所示的配置,而是應被賦予與本文所揭示的原理及新穎特征一致的最寬范圍。權利要求一種裝置,其包含處理電路,其操作以執(zhí)行指令集來同時解碼多個二進制元素及在解碼所述多個二進制元素之后重新正規(guī)化偏移寄存器和范圍寄存器;及存儲器,其耦合到所述處理電路。2.根據(jù)權利要求1所述的裝置,其中所述用以重新正規(guī)化的指令集包括用以計算使所述范圍寄存器與所述偏移寄存器多位對準所需的左移量的計數(shù)前導零指令。3.根據(jù)權利要求2所述的裝置,其中所述范圍寄存器包含多個位,所述多個位被劃分成前導零區(qū)段、9位區(qū)段及尾隨零區(qū)段。4.根據(jù)權利要求1所述的裝置,其中所述多個二進制元素是以指數(shù)葛洛姆二進制化(EG)碼來表示的。5.根據(jù)權利要求1所述的裝置,其中所述用以解碼多個二進制元素的指令集包括用以同時解碼多達16個連續(xù)二進制元素的指令。6.根據(jù)權利要求1所述的裝置,其中所述用以解碼多個二進制元素的指令集經(jīng)配置以解碼上下文適應性二進制算術譯碼(CABAC)。7.根據(jù)權利要求6所述的裝置,其中所述處理電路進一步包含用以同時解碼兩個連續(xù)正規(guī)模式符號的指令。8.根據(jù)權利要求1所述的裝置,其中所述裝置包含蜂窩式電話、無線裝置、無線通信裝置、視頻游戲控制臺、配備無線功能的個人數(shù)字助理(PDA)、膝上型計算機或具有視頻功能的裝置。9.一種裝置,其包含解碼裝置,其用于同時解碼多個二進制元素;及重新正規(guī)化裝置,其用于在解碼所述多個二進制元素之后使偏移寄存器與范圍寄存器多位對準。10.根據(jù)權利要求9所述的裝置,其中所述重新正規(guī)化裝置包括用于計算使所述范圍寄存器與所述偏移寄存器多位對準所需的左移量的計算裝置。11.根據(jù)權利要求9所述的裝置,其中所述解碼裝置包括用于解碼指數(shù)葛洛姆二進制化(EG)碼的裝置。12.根據(jù)權利要求9所述的裝置,其中解碼裝置包含用于解碼上下文適應性二進制算術譯碼(CABAC)的裝置。13.根據(jù)權利要求12所述的裝置,其中所述解碼裝置包括用于同時解碼兩個連續(xù)正規(guī)模式符號的裝置。14.一種設備,其包含解碼器,其具有偏移寄存器及范圍寄存器,且所述解碼器同時解碼多個二進制元素及在解碼所述多個二進制元素之后重新正規(guī)化偏移寄存器及范圍寄存器;及存儲器,其耦合到所述解碼器。15.根據(jù)權利要求14所述的設備,其中所述解碼器計算使所述范圍寄存器與所述偏移寄存器多位對準所需的左移量。16.根據(jù)權利要求14所述的設備,其中所述范圍寄存器包含多個位,所述多個位被劃分成前導零區(qū)段、9位區(qū)段及尾隨零區(qū)段。17.根據(jù)權利要求14所述的設備,其中所述解碼器解碼指數(shù)葛洛姆二進制化(EG)碼。18.—種包括計算機可讀媒體的計算機程序產(chǎn)品,所述計算機可讀媒體具有用于致使計算機執(zhí)行以下操作的指令同時解碼多個二進制元素;及在解碼所述多個二進制元素之后重新正規(guī)化以使偏移寄存器與范圍寄存器多位對準。19.根據(jù)權利要求18所述的計算機程序產(chǎn)品,其中所述用以重新正規(guī)化的指令包括用以計算使所述范圍寄存器與所述偏移寄存器多位對準所需的左移量的指令。20.根據(jù)權利要求18所述的計算機程序產(chǎn)品,其中所述用以解碼的指令包括用以解碼指數(shù)葛洛姆二進制化(EG)碼的指令。21.根據(jù)權利要求18所述的計算機程序產(chǎn)品,其中所述用以解碼的指令包括用以解碼上下文適應性二進制算術譯碼(CABAC)的指令。22.一種方法,其包含同時解碼多個二進制元素;及在所述解碼之后重新正規(guī)化以使偏移寄存器與范圍寄存器多位對準。23.根據(jù)權利要求22所述的方法,其中所述重新正規(guī)化包括計算使所述范圍寄存器與所述偏移寄存器多位對準所需的左移量。24.根據(jù)權利要求23所述的方法,其中所述解碼包括解碼指數(shù)葛洛姆二進制化(EG)碼。25.根據(jù)權利要求23所述的方法,其中所述解碼包括解碼上下文適應性二進制算術譯碼(CABAC)。全文摘要本發(fā)明提供一種使用用以優(yōu)化用于H.264視頻解碼的基于上下文的適應性二進制算術譯碼(CABAC)的技術的裝置。所述裝置包括處理電路,其操作以實施用以同時解碼多個二進制元素及在解碼所述多個二進制元素之后重新正規(guī)化偏移寄存器及范圍寄存器的指令集。所述范圍寄存器及偏移寄存器可為32位或64位。使用較大范圍寄存器允許在所述范圍寄存器中仍存在足夠位時跳過重新正規(guī)化。文檔編號H03M7/40GK101809871SQ200880109052公開日2010年8月18日申請日期2008年9月25日優(yōu)先權日2007年9月27日發(fā)明者劉鎮(zhèn),王凱,鮑易亮申請人:高通股份有限公司