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

Cabac解碼系統(tǒng)及方法

文檔序號:7625700閱讀:229來源:國知局
專利名稱:Cabac解碼系統(tǒng)及方法
技術(shù)領(lǐng)域
本發(fā)明涉及視頻編碼技術(shù)領(lǐng)域,尤其涉及一種CABAC解碼系統(tǒng)及方法。
背景技術(shù)
CABAC(基于上下文的自適應(yīng)算術(shù)編碼)是最新國際視頻編碼標(biāo)準(zhǔn)H.264中所采用的兩套熵編碼方案之一,其與另外一套熵編碼方案CAVLC(基于上下文的自適應(yīng)變長編碼器)相比,具有更好的壓縮效率。
熵編碼器其功能在于依照宏塊掃描順序?qū)⒚總€(gè)宏塊中所有的語法元素的值按固定次序依次編碼到碼流中。所述的宏塊是視頻圖像編碼的基本單元塊。待編碼的每幅圖像均需要被劃分成為若干宏塊后再進(jìn)行編碼處理。視頻編碼標(biāo)準(zhǔn)H.264中支持兩種基本的宏塊掃描順序。
CABAC編碼過程包括三個(gè)主要部分二值化,context(上下文)概率模型的選擇和更新以及二值算術(shù)編碼。
其中,所述的二值化過程是對語法元素進(jìn)行編碼前的預(yù)處理過程。每個(gè)語法元素的值根據(jù)一定的規(guī)則映射成為一串0和1組成的二值字符串。所述映射規(guī)則因語法元素的不同而不同。
在二值算術(shù)編碼器中還需要采用待編碼bin(CABAC編解碼基本的比特位)的概率估計(jì)值PLPS進(jìn)行編碼,其中,所述context概率模型即是為計(jì)算PLPS而設(shè)。具體為在編碼每一個(gè)bin之前,都要估計(jì)其為0和為1的概率,如果其為0的概率大一些,那么MPS(大概率符號標(biāo)志)就是0,LPS(小概率符號標(biāo)志)就是1;否則,MPS就是1,LPS就是0。PLPS就是bin的值為LPS的概率估計(jì)值,它的取值范圍在
之間。CABAC編碼過程中需要為每個(gè)bin都設(shè)置了相對應(yīng)的context概率模型。每個(gè)context概率模型包括一個(gè)state(狀態(tài))值,一個(gè)MPS值,state指示的即PLPS。在編碼過程中,會用到已編碼完畢的相鄰左宏塊和上宏塊的信息計(jì)算編碼當(dāng)前宏塊的bin所需要的context概率模型,其計(jì)算規(guī)則在H.264標(biāo)準(zhǔn)文檔[2]中有詳細(xì)的規(guī)定。選擇好context概率模型后,即可開始對bin進(jìn)行二值算術(shù)編碼。
所述的二值算術(shù)編碼過程的基本思想是用
中的實(shí)數(shù)來編碼信源。實(shí)數(shù)的長度和信源字符序列的概率有關(guān)。算術(shù)編碼過程中要用到兩個(gè)基本的參數(shù),具體為各符號的概率估計(jì)值和當(dāng)前區(qū)間。編碼的具體方法是首先定義當(dāng)前區(qū)間為
,然后對每個(gè)bin做編碼或解碼,對每個(gè)bin的編解碼不斷重復(fù)如下過程a、將當(dāng)前區(qū)間分割成若干子區(qū)間,各個(gè)子區(qū)間的長度正比于各個(gè)可能輸入的符號的概率估計(jì)值;b、將對應(yīng)實(shí)際出現(xiàn)的符號的子區(qū)間定義為新的當(dāng)前區(qū)間;上述編碼過程中,由于反復(fù)分割當(dāng)前區(qū)間越來越小,為了保持計(jì)算精度,在步驟b所述過程結(jié)束后如果當(dāng)前區(qū)間長度小于0.5時(shí)會進(jìn)行重正化過程,以保證編碼下一個(gè)符號時(shí)候當(dāng)前區(qū)間長度總是不小于0.5。
下面將對重正化的處理過程進(jìn)行說明1、計(jì)算小概率符號的概率值PLPS;2、計(jì)算小概率符號LPS和大概率符號MPS對應(yīng)的編碼區(qū)間RLPS和RMPS具體如下RLPS=Rangei*PLPS;RMPS=Rangei-RLPS;其中,Rangei是指解碼區(qū)間值;3、計(jì)算新的區(qū)間
如果當(dāng)前輸入bin對應(yīng)的是LPS的值,則Rangei+1=RLPS;Offseti+1=Offseti+RLPS;其中,Offseti是指解碼過程中的偏移值;如果當(dāng)前輸入bin對應(yīng)的是MPS的值,則Rangei+1=RLPS;4、更新小概率符號的概率值RLPS;5、輸出解碼結(jié)果,并重正化編碼區(qū)間Rangei+1。
CABAC實(shí)現(xiàn)過程是全整數(shù)精度的運(yùn)算。當(dāng)前子區(qū)間下界為Offseti,子區(qū)間長度為Rangei都保留9比特整數(shù)精度。重正化過程保證Rangei的最高比特第8比特始終是1。
從上面的式子中可以看出,在二值算術(shù)編碼器中需要用到的數(shù)值是Rangei*PLPS。在CABAC中為了降低實(shí)現(xiàn)復(fù)雜度,并不直接計(jì)算小概率符號的概率值PLPS和Rangei的乘積,而是直接把計(jì)算好的值存儲在一張二維表中直接通過查表得到。表的索引包括6比特state值和2比特qCodIRangeIdx值,所述6比特值來源于context概率模型對應(yīng)PLPS,所述2比特值來源于Rangei的第7比特和第6比特,即除最高第8比特外的最高兩比特。6比特state值取值范圍0~63,2比特qCodIRangeIdx值取值0~3。
編碼完畢后,需要根據(jù)當(dāng)前編碼的bin的值對Context概率模型進(jìn)行更新。而MPS的值僅在編碼前state值為0且當(dāng)前bin是LPS是才翻轉(zhuǎn),即原來是0則變成1,原來是1則變成0,否則保持不變。
CABAC算法是2003年JVT(ITU-T國際視頻組織ISO的MPEG的聯(lián)合小組)會議上正式成形推出的。迄今為止,相應(yīng)的CABAC的解碼器主要是純軟件解碼和軟件解碼與硬件解碼相結(jié)合的結(jié)構(gòu)。
目前的一種是純軟件CABAC解碼器,純軟件解碼是按照算法流程在PC機(jī)上執(zhí)行解碼過程。因而,純軟件解碼器實(shí)際就是CPU單獨(dú)起全部的CABAC解碼任務(wù),解碼速度極慢,無法滿足實(shí)時(shí)應(yīng)用場合的需要。
目前采用的另一種方案中含有軟硬件結(jié)合的解碼器結(jié)構(gòu),其中,硬件部分包括單bin的解碼硬件結(jié)構(gòu),該結(jié)構(gòu)中,對于每個(gè)bin的解碼采用one cycleone bin(一個(gè)周期一個(gè)bin)硬件解碼結(jié)構(gòu)。
可以看出,在該方案中采用one cycle one bin硬件加速方法比之第一種實(shí)現(xiàn)方式中提供的純軟件的解碼方案,解碼效率大大提高,然而,相應(yīng)的編碼效率仍然有繼續(xù)提高的空間。

發(fā)明內(nèi)容
本發(fā)明的目的是提供一種CABAC解碼系統(tǒng)及方法,從而可以大大提高CABAC解碼效率,有效改善CABAC的編解碼性能。
本發(fā)明的目的是通過以下技術(shù)方案實(shí)現(xiàn)的本發(fā)明提供了一種CABAC解碼系統(tǒng),其結(jié)構(gòu)包括至少一組解碼bin的單元;所述的一組解碼bin的單元包括至少兩個(gè)依次串聯(lián)連接的解碼bin的單元,所述的解碼bin的單元用于對待解碼的比特流中的bin進(jìn)行解碼處理;所述的各解碼bin的單元其輸入信息分別包括解碼bin需要的參數(shù)信息以及待解碼的比特流,輸出信息分別包括更新后的所述參數(shù)信息及針對若干個(gè)bin的解碼結(jié)果;所述的各解碼bin的單元輸入的解碼bin需要的輸入信息包括與其連接的解碼bin的單元的輸出信息中的更新后的參數(shù)信息。
所述的解碼bin的單元包括解碼正常編碼模式bin的單元和/或解碼旁路編碼模式的單元。
所述的系統(tǒng)中,當(dāng)所述的解碼bin的單元包括解碼正常編碼模式bin的單元時(shí),上一級解碼正常編碼模式bin的單元輸出更新后的區(qū)間值和偏移值,并作為下一級解碼正常編碼模式bin的單元的輸入?yún)^(qū)間值和偏移值信息。
所述的系統(tǒng)還包括重正化處理模塊,用于對解碼正常編碼模式的單元的輸出的區(qū)間值和偏移值進(jìn)行重正化處理,并將處理后的結(jié)果作為下一級解碼正常編碼模式的單元或解碼旁路編碼模式的單元的輸入?yún)^(qū)間值和偏移值信息。
所述的系統(tǒng)還包括多路選擇器,所述的多路選擇器的輸入為上一級解碼正常編碼模式bin的單元輸出的更新后的概率模型和新的概率模型,輸出為兩輸入的概率模型中選擇的一種。
所述系統(tǒng)中,當(dāng)所述的解碼bin的單元包括解碼旁路編碼模式bin的單元時(shí),上一級解碼旁路編碼模式bin的單元或解碼正常編碼模式bin的單元輸出的更新后的區(qū)間值和偏移值作為下一級解碼旁路編碼模式bin的單元的輸入?yún)^(qū)間值和偏移值。
所述的系統(tǒng)還包括輸出模塊,用于根據(jù)控制信號以及解碼所得bin值在解碼bin的各個(gè)單元的輸出的重正化后得到的更新的區(qū)間值和偏移值信息之間進(jìn)行選擇,由組合邏輯決定最終輸出一拍內(nèi)整個(gè)解碼過程的更新后的區(qū)間值和偏移值。
本發(fā)明還提供了一種CABAC解碼方法,包括A、在一個(gè)時(shí)鐘周期內(nèi),由一組控制信號綜合控制至少兩個(gè)解碼bin的單元,控制信號和解碼單個(gè)bin的單元根據(jù)輸入的區(qū)間值和偏移值對輸入的待解碼的比特流進(jìn)行解碼處理,完成若干個(gè)bin的解碼;B、根據(jù)控制信號以及解碼所得bin值在解碼bin的各個(gè)單元的輸出的重正化后得到的更新的區(qū)間值和偏移值信息之間進(jìn)行選擇,并由組合邏輯決定最終輸出一拍內(nèi)整個(gè)解碼過程的更新后的區(qū)間值和偏移值,同時(shí),還輸出若干個(gè)bin的解碼結(jié)果。
所述的步驟A包括對正常編碼模式bin解碼處理和對旁路編碼模式bin的解碼處理。
所述的步驟A還包括所述的解碼bin的單元根據(jù)輸入的第一控制信號確定當(dāng)前的解碼處理為對正常編碼模式bin解碼處理還是對旁路編碼模式bin的解碼處理。
本發(fā)明中,當(dāng)確定所述解碼bin的單元解碼正常編碼模式bin時(shí),所述的步驟A還包括根據(jù)引入的第二控制信號確定當(dāng)前進(jìn)行解碼處理的解碼bin的單元。
本發(fā)明中,當(dāng)確定所述解碼bin的單元解碼正常編碼模式bin時(shí),所述的步驟A還包括所述單元根據(jù)引入的第三控制信號確定選擇上一級單元更新后的概率模型或者新的概率模型進(jìn)行解碼處理。
所述的步驟A包括在上一級解碼單元解碼的同時(shí)并行計(jì)算出上一級單元更新后的概率模型的全部可能情況,并根據(jù)所述的更新后的概率模型導(dǎo)出概率模型索引得信息,在上一級解碼單元解碼完畢后在準(zhǔn)備好的所有概率模型索引得信息中選擇其中之一作為下一級解碼單元所需要的更新后的概率模型索引得信息。
本發(fā)明中,當(dāng)確定所述解碼bin的單元解碼正常編碼模式bin時(shí),所述的步驟A還包括所述單元根據(jù)引入的第四控制信號確定在當(dāng)前解碼周期內(nèi)是否需要解碼正負(fù)號信息。
本發(fā)明中,當(dāng)確定所述解碼bin的單元解碼旁路編碼模式bin時(shí),所述的步驟A還包括根據(jù)所述第一控制信號的取值確定對指數(shù)哥倫布碼的前綴或后綴進(jìn)行解碼處理,且當(dāng)解碼前綴時(shí),解碼到旁路編碼模式bin值為0時(shí)解碼結(jié)束,當(dāng)解碼后綴時(shí),根據(jù)引入的用于確定當(dāng)前解碼拍內(nèi)需要解碼的旁路編碼模式bin的數(shù)量第五控制信號確定需要解碼的旁路編碼模式bin的數(shù)量。
所述的步驟B還包括在對正常編碼模式bin解碼處理過程中,如果解碼符號位,解碼結(jié)果還包括符號位信息。
所述的步驟B還包括通過重正化處理模塊對更新后的區(qū)間值和偏移值信息進(jìn)行重正化處理,并獲得重正化處理后的區(qū)間值和偏移值,作為該解碼單元的最后更新值,用于同一拍內(nèi)其它解碼bin單元輸入或者該拍內(nèi)最終輸出的區(qū)間值和偏移值。
由上述本發(fā)明提供的技術(shù)方案可以看出,本發(fā)明與現(xiàn)有技術(shù)的一個(gè)周期一個(gè)bin的解碼結(jié)構(gòu)相比具有更高的解碼效率。同時(shí),本發(fā)明不僅實(shí)現(xiàn)了高速解碼,而且,本發(fā)明還使得解碼過程中的硬件資源的消耗保持在一個(gè)合理的范圍內(nèi)。因此,本發(fā)明提供了一種高效、合理的解碼系統(tǒng)。


圖1為解碼正常編碼模式bin的二級樹解碼結(jié)構(gòu)示意簡圖;圖2為解碼旁路模式bin的多級樹電路解碼結(jié)構(gòu)示意簡圖;圖3為級聯(lián)兩個(gè)解碼單個(gè)正常編碼模式bin的二級樹結(jié)構(gòu)示意圖;圖4為級聯(lián)兩個(gè)解碼單個(gè)旁路編碼模式bin的二級樹結(jié)構(gòu)示意圖;圖5為控制信號控制兩個(gè)解碼正常編碼模式bin的單元以及兩個(gè)解碼旁路編碼模式bin的單元的結(jié)構(gòu)示意圖;圖6為解碼過程樹狀示意圖。
具體實(shí)施例方式
本發(fā)明的核心是利用CABAC解碼的特點(diǎn),提供一種多級bin的CABAC解碼硬件結(jié)構(gòu),使得硬件在一個(gè)cycle(周期)中可以完成2個(gè)甚至更多的bin的解碼,實(shí)現(xiàn)算術(shù)解碼bin單元的并行性。進(jìn)而使得本發(fā)明可以充分發(fā)揮硬件解碼效率高的優(yōu)勢。
本發(fā)明中,為了加快解碼速度,設(shè)計(jì)了一拍內(nèi)解碼多個(gè)bin的多級樹解碼結(jié)構(gòu)。也就是采用多個(gè)(至少兩個(gè))解碼一個(gè)bin需要的單元,并在多級解碼樹結(jié)構(gòu)中將原來解碼一個(gè)bin的單元級聯(lián)起來,從而實(shí)現(xiàn)一拍內(nèi)可以解碼多個(gè)bin,而在現(xiàn)有技術(shù)中一拍內(nèi)解碼一個(gè)bin的解碼結(jié)構(gòu)中僅有一個(gè)所述單元。
本發(fā)明在實(shí)現(xiàn)過程中,至少包括一組解碼bin的單元,而且,所述的一組解碼bin的單元包括至少兩個(gè)依次串聯(lián)連接的解碼bin的單元(具體為解碼正常編碼模式bin的單元和解碼旁路編碼模式bin的單元中的至少一項(xiàng)),例如,圖5中的兩個(gè)解碼正常編碼模式bin的單元構(gòu)成一組解碼bin的單元,兩個(gè)解碼旁路編碼模式bin的單元構(gòu)成另一組解碼bin的單元,所述的解碼bin的單元用于對待解碼的比特流中的bin進(jìn)行解碼處理。
所述的各解碼bin的單元其輸入信息分別包括解碼bin需要的參數(shù)信息以及待解碼的比特流,輸出信息分別包括更新后的所述參數(shù)信息及針對若干個(gè)bin的解碼結(jié)果;而且,所述的各解碼bin的單元輸入的解碼bin需要的輸入信息包括與其連接的解碼bin的單元的輸出信息中的更新后的參數(shù)信息。
在CABAC解碼中,需要頻繁解碼的兩種語法元素是mvd(運(yùn)動矢量)和level(殘差系數(shù))以及map_last(位置信息),所以針對這些語法元素的解碼是要用硬件加速的重點(diǎn)。
mvd,level的絕對值二值化bin串包括前綴和后綴哥倫布碼。前綴是一元碼,映射規(guī)則是0映射到0,1映射到10,2映射到110,3映射到1110...。后綴哥倫布碼包括自己的前綴和后綴部分。哥倫布碼的前綴是一元碼;其后綴是一個(gè)二值化bin串,其長度由哥倫布碼的前綴決定,例如mvd的后綴是三階指數(shù)哥倫布碼,哥倫布碼的后綴長度是前綴長度加2;level的后綴是一階指數(shù)哥倫布碼,哥倫布碼的后綴長度是前綴長度減1。對非零mvd,其絕對值之后都帶有1個(gè)bin指示其符號信息;對于所有l(wèi)evel(實(shí)際上是非零殘差系數(shù)絕對值減1),其絕對值二值化bin串后都帶有1個(gè)bin指示其符號信息。
map_last的二值化如下map,last成對出現(xiàn)。它們都是1個(gè)bin。map如果是0,則沒有l(wèi)ast信息;否則,map后帶有1個(gè)bin的last信息。
為了實(shí)現(xiàn)對mvd,level還有map_last的快速解碼,本發(fā)明提供了兩種基本的多級bin解碼結(jié)構(gòu),下面將分別進(jìn)行說明。
其中,第一種結(jié)構(gòu)如圖1所示,該結(jié)構(gòu)僅以一拍內(nèi)解碼兩個(gè)bin為例,結(jié)構(gòu)中設(shè)置有解碼兩個(gè)正常編碼模式bin的單元,且每個(gè)單元后面都帶有解碼旁路編碼模式bin的單元。更簡單的示意圖見圖6樹a。該結(jié)構(gòu)可以用于加速解碼mvd,level的前綴和map_last對部分該結(jié)構(gòu)的入口信息包括用于算術(shù)編解碼的解碼區(qū)間Rang、偏移值Offset以及待解碼的碼流信息bits,還有用來表示context信息的state0和state1,分別用來標(biāo)志兩個(gè)bin解碼過程中可能會用到的上下文信息。
該結(jié)構(gòu)的輸出信號有更新的Rang和Offset,即Rang_up和Offset_up,以及更新的context信息,即state_up0和state_up1信息,還有解碼所述碼流信息得到的兩個(gè)bin的值bin0、bin1,如果解碼符號位,那么輸出的還有符號位的信息標(biāo)志flag。
第二種結(jié)構(gòu)中設(shè)置有解碼兩個(gè)旁路編碼模式bin的單元,可對mvd,level的后綴部分快速解碼。其結(jié)構(gòu)如圖2所示,更簡單的示意圖見圖6樹b。該結(jié)構(gòu)可以完成功能是采用Golomb(哥倫布碼)的方法解碼系數(shù),這種解碼電路的特點(diǎn)是不需要上下文的維護(hù)信息,這是Golomb解碼的前綴或后綴的實(shí)現(xiàn)電路。電路中包含n個(gè)bypass(旁路編碼模式)解碼電路,所述的n大于等于2,即n的值可以根據(jù)需要自由設(shè)定,例如可以設(shè)定為2、3、4或5等等。
mvd和level二值化后得到的字符串包括前綴和后綴。通常語法元素level和mvd的取值較小,只有前綴,前綴是若干個(gè)正常編碼模式bin,最后帶一個(gè)旁路模式編碼的bin(正負(fù)號)形式編碼的,如圖1所示的電路結(jié)構(gòu)就能夠?qū)崿F(xiàn)解碼功能。
有些情況語法元素level和mvd會有較大的取值,這樣解碼過程便會帶有后綴,所述后綴是若干個(gè)旁路編碼模式bin,最后也帶一個(gè)旁路模式的bin(正負(fù)號)的形式來編碼的,此時(shí),如果解碼后綴,則可以采用圖2所示的電路結(jié)構(gòu)。
Map_last對可直接用不帶解碼旁路模式編碼bin單元的實(shí)現(xiàn),如采用圖1所示的結(jié)構(gòu)實(shí)現(xiàn),這只需要輸出時(shí)選擇解碼正常編碼模式編碼bin單元的輸出作為這一拍最終的輸出即可。
對于除了mvd,level和map_last之外的其他語法元素二值化后都是一串正常編碼模式bin,其在一個(gè)宏塊內(nèi)所占的分量很少,因此,其可以無需特別加速,相應(yīng)的解碼過程采用一拍解碼一個(gè)bin即可。這種情況直接用圖1中一個(gè)解碼正常編碼模式bin單元即可。
其中,對于圖1所示的結(jié)構(gòu),如果是同時(shí)解碼2個(gè)bin,而且其中涉及到概率模型的更新,下面詳細(xì)的說明這部分電路的具體實(shí)現(xiàn)及工作原理。
本發(fā)明中,小概率符號LPS對應(yīng)的編碼區(qū)間rLPS不是直接查二維表2得到的,而是先由6比特的state的值索引得到二維表中一組4個(gè)rLPS的值(其中,state取值64種情況,range的2個(gè)比特取值4種情況,這樣用state和range的2個(gè)比特作聯(lián)合索引一共有256個(gè)rLPS值,這里僅用state作第一次索引,得到一組4個(gè)rLPS,對應(yīng)再用range的2個(gè)比特作第二次索引時(shí)的4個(gè)rLPS),這4個(gè)值需要在前一拍內(nèi)需要準(zhǔn)備好,記作rlpsg,稱為概率模型索引得信息。在當(dāng)前解碼拍直接用range的2個(gè)比特在rlpsg中通過多路選擇器MUX選出rLPS的值。
相應(yīng)的級聯(lián)兩個(gè)解碼單個(gè)正常編碼模式bin的二級樹結(jié)構(gòu)如圖3所示。其中,所述的解碼bin的單元包括解碼正常編碼模式bin的單元,即解碼第一個(gè)正常編碼模式bin的單元和解碼第二個(gè)正常編碼模式bin的單元,以及重正化處理模塊和多路選擇器MUX。
所述的解碼正常編碼模式bin的單元的輸入信息flpsg包含了解碼對應(yīng)bin的context的信息,具體為由6比特的state的值索引通過查表得到的,這個(gè)值在前一拍內(nèi)就可以準(zhǔn)備好??梢钥吹?,第一個(gè)bin解碼完成后,需要對更新的range_new、offset_new進(jìn)行重正化處理,range、offset更新重正化后獲得的值將作為解碼第二個(gè)bin的輸入。
由于解碼第二個(gè)bin可能用和第一個(gè)bin相同的概率模型,也可能用另外的概率模型,因此,在圖3中,用一個(gè)多路選擇器MUX在第一個(gè)bin所用概率模型更新并且為第二個(gè)bin解碼準(zhǔn)備的rlpsg和另外的概率模型對應(yīng)的state_2_rlpsg中選擇解碼第二個(gè)bin解碼真正需要的rlpsg。具體選擇哪一個(gè)rlpsg由控制信號rb2_state_1_ns決定,后面將對該控制信號進(jìn)行說明。
為了減小延遲,第一個(gè)bin所用概率模型更新并且為第二個(gè)bin解碼準(zhǔn)備rlpsg的過程和解碼第一個(gè)bin同步完成。并不需要第一個(gè)bin完全解碼完成再對其上下文概率模型更新。預(yù)先計(jì)算好兩組可能的結(jié)果一個(gè)是第一個(gè)bin出現(xiàn)MPS時(shí),state1的更新值state1_ns_ifMPS,以及由此更新值索引得到的4個(gè)rLPS值state1_ns_ifMPS_rlpsg,作為一組概率模型索引得信息;另一個(gè)是第一個(gè)bin出現(xiàn)LPS時(shí),state1的更新值state1_ns_ifLPS,以及由此更新值索引得到的4個(gè)rLPS值state1_ns_ifLPS_rlpsg,作為另一組概率模型索引得信息。這個(gè)計(jì)算過程和解碼第一個(gè)bin的過程是同時(shí)的,所以可以節(jié)省關(guān)鍵路徑延遲。根據(jù)解碼出的第一個(gè)bin的值直接在state1_ns_ifMPS_rlpsg和state1_ns_ifLPS_rlpsg這兩組中選擇更新后的rlpsg作為下一級解碼單元的入口信息(即第一個(gè)bin解碼單元的更新后的概率模型索引得信息)即可。如果解碼第二個(gè)bin和解碼第一個(gè)bin所用概率模型相同,多路選擇器則選擇第一個(gè)bin解碼更新得到的rlpsg作為第二個(gè)bin解碼所需的rlpsg_2,否則,多路選擇器則選擇另外一個(gè)概率模型準(zhǔn)備的state_2_rlpsg作為第二個(gè)bin解碼所需的rlpsg_2。
下面再以針對兩個(gè)旁路編碼模式bin的解碼為例對圖2中的旁路編碼模式bin的解碼處理過程進(jìn)行說明。相應(yīng)的級聯(lián)的兩個(gè)解碼單個(gè)旁路編碼模式bypass bin的二級樹結(jié)構(gòu)如圖4所示,該結(jié)構(gòu)中包括兩個(gè)解碼bin的單元,即解碼第一個(gè)bypass bin的單元和解碼第二個(gè)bypass bin的單元。旁路模式的解碼相對正常編碼模式非常簡單,其不涉及到概率模型信息,解碼時(shí)直接比較range和2*offset,如果2*offset>=range,解碼得1,否則解碼得0。而且,在解碼完成后,offset左移一位即完成重正化步驟,range保持原值不變。
本發(fā)明中,為了使得所有語法元素的解碼可以復(fù)用盡可能少的硬件資源,例化了4個(gè)解碼bin單元(圖1所示的兩個(gè)解碼正常編碼模式bin的單元,和圖2所示的兩個(gè)解碼旁路模式bin的單元,當(dāng)然,也可能為更多個(gè)單元),并且設(shè)計(jì)了一組控制信號協(xié)調(diào)這些解碼單元之間的工作,并結(jié)合解碼單元所得解碼bin決定最后的輸出結(jié)果,包括一拍最終輸出的區(qū)間值和偏移值信息。這樣所有語法元素的解碼都可以復(fù)用這4個(gè)單元而完成。
控制信號控制4個(gè)解碼單元解碼的示意圖參見圖5所示,在所述圖5中,包括四個(gè)所述的解碼bin的單元,具體包括解碼第一個(gè)正常編碼模式bin的單元,解碼第二個(gè)正常編碼模式bin的單元。解碼第一個(gè)旁路編碼模式bin的單元和解碼第二個(gè)旁路編碼模式bin的單元。在圖5中信號range,offset是解碼拍入口的range,offset值,range_up,offset_up是解碼拍出口的range,offset值。Ctx1,Ctx2分別對應(yīng)兩個(gè)正常編碼模式的bin可能用到的兩個(gè)概率模型;其中,在兩個(gè)bin共用一個(gè)概率模型的情況Ctx2是閑置不用的;信號Range_new和offset_new分別是解碼某個(gè)bin之后range和offset的更新值。
信號Regular_bin1,Regular_bin2,Bypass_bin1,Bypass_bin2分別是各個(gè)解碼單bin模塊的解碼輸出。
所有控制信號包括dec_mode,regbinnum,rb2_state_1_ns,sign1_exist,sign2_exist,dec_bp_num。
下面將分別對所述控制信號的功能和工作方式進(jìn)行說明(1)dec_mode(解碼模式)控制信號,稱為第一控制信號這個(gè)控制信號2比特,取值00或01或10取值00時(shí),對應(yīng)當(dāng)前解碼拍需要解碼正常編碼模式bin;取值01或者10時(shí),對應(yīng)當(dāng)前解碼拍需要解碼mvd和level二值化后得到的后綴EG(指數(shù)哥倫布碼),即進(jìn)行旁路編碼模式bin的解碼,所述的EG還包括自己的前綴和后綴,dec_mode取值01和10分別對應(yīng)這兩種情況的解碼。EG的前綴是一元碼,也就是若干個(gè)1加一個(gè)0的碼字,解碼碰到解出bin為0時(shí)結(jié)束;EG的后綴中bin的總數(shù)目是由EG的前綴中1的個(gè)數(shù)確定的。
所以在dec_mode取值10時(shí)還需要一個(gè)信號(即后面的dec_bp_num)來決定當(dāng)前解碼拍內(nèi)需要解碼幾個(gè)旁路編碼模式的bin,而在dec_mode取值01時(shí)當(dāng)前解碼拍內(nèi)解出旁路編碼模式的bin的值為0時(shí)結(jié)束。
(2)regbinnum(解碼正常編碼模式bin數(shù)目)控制信號,稱為第二控制信號該控制信號1比特,在dec_mode取值00時(shí)有效,regbinnum取1指示當(dāng)前解碼是固定解碼一個(gè)正常編碼模式的bin,調(diào)用一拍內(nèi)解碼兩個(gè)正常編碼模式bin的二級樹結(jié)構(gòu)的第一分支,regbinnum取0調(diào)用整個(gè)一拍內(nèi)解碼兩個(gè)正常編碼模式bin的二級樹結(jié)構(gòu)的第二個(gè)分支,即根據(jù)該控制信號確定當(dāng)前解碼的單元;對除了mvd和level以及map_last之外的語法元素,由于解碼是一拍一個(gè)bin,所以regbinnum取1。對于mvd和level以及map_last,都是解到0自動結(jié)束,它們都調(diào)用整個(gè)一拍內(nèi)解碼兩個(gè)正常編碼模式bin的二級樹結(jié)構(gòu),regbinnum取0。
(3)rb2_state_1_ns(解碼第二個(gè)正常bin的概率模型選擇控制)控制信號,稱為第三控制信號這個(gè)控制信號1比特,在調(diào)用整個(gè)一拍內(nèi)解碼兩個(gè)正常編碼模式bin的二級樹結(jié)構(gòu)(即dec_mode取值00,regbinnum取值0)時(shí)有效,指示解碼第二個(gè)正常編碼模式bin所用的上下文概率模型和解碼第一個(gè)正常編碼模式bin所用的上下文概率模型是否是同一個(gè),取值為1則表示是同一個(gè)上下文概率模型。
(4)sign1_exist,sign2_exist(第一個(gè)解碼正常bin的單元是否級聯(lián)正負(fù)號,第二個(gè)解碼正常bin的單元是否級聯(lián)正負(fù)號)控制信號,稱為第四控制信號這兩個(gè)控制信號都是1比特,在調(diào)用一拍內(nèi)解碼兩個(gè)正常編碼模式bin的二級樹結(jié)構(gòu)時(shí)指示是否這一拍內(nèi)還需要解碼一個(gè)正負(fù)號信息在解碼mvd和leVel的前綴時(shí)是需要解碼正負(fù)號的,sign1_exist,sign2_exist都置1,解碼map_last時(shí)無需解碼正負(fù)號的,sign1_exist,sign2_exist都置0。
(5)dec_bp_num(解碼旁路模式bin數(shù)目)控制信號,稱為第五控制信號該控制信號共1比特,在dec_mode取值10時(shí),即解碼EG的后綴時(shí)有效,決定當(dāng)前解碼拍內(nèi)需要解碼幾個(gè)旁路編碼模式的bin。
有了以上的一組控制信號,用兩個(gè)解碼正常編碼模式bin的單元和兩個(gè)解碼旁路編碼模式bin的單元就可以完成所有語法元素的解碼。每拍內(nèi)的解碼情況都可以被確定,可以實(shí)現(xiàn)在一拍內(nèi)同時(shí)多個(gè)bin。
為對本發(fā)明有進(jìn)一步理解,下面對圖5中各控制信號和解碼bin的單元電路結(jié)合可能出現(xiàn)的所有情況作詳細(xì)說明。
第一種情況為解碼level或者mvd的前綴部分這時(shí)dec_mode為00,指示當(dāng)前拍內(nèi)解碼正常編碼模式bin。regbinnum為0,指示當(dāng)前拍調(diào)用圖6中樹a的兩個(gè)分支。如果第一個(gè)分支解碼結(jié)果出來是0,則不用第二個(gè)分支;否則第一個(gè)分支的輸出range_new,offset_new送入第二個(gè)分支的輸入口。
如果不是解碼mvd的第一拍或者是解碼level,那么mvd和level解碼完成后都需要帶符號信息。這時(shí)sign1_exist和sign2_exist都是1,指示解碼絕對值結(jié)束后需要再附帶解碼一個(gè)bypass bin,即符號信息。
如果是解碼mvd的第一拍,那么樹a的第一個(gè)分支表明mvd解碼值為0,不帶符號信息,進(jìn)入第二個(gè)分支表明解碼值大于0,所以這一拍的控制信號sign1_exist為0,sign2_exist為1。rb2_state_1_ns由當(dāng)前解碼是第幾拍(也就是在解碼mvd或者level的第幾個(gè)bin)決定。dec_bp_num這時(shí)沒有作用。并且這種情況下圖6樹a的第一個(gè)分支的輸出作為樹b的第一個(gè)分支的輸入;樹a的第二個(gè)分支的輸出作為樹b的第二個(gè)分支的輸入。
如果是解碼mvd的第一拍,輸出模塊的處理為如果樹a第一個(gè)分支解碼出bin為0,則最終輸出的range_new,offset_new是樹a第一分支的輸出,否則如果樹a第二個(gè)分支解碼出bin為0,則需附帶解碼一個(gè)符號,最終輸出的range_new,offset_new是樹b第二分支的輸出,否則如果如果樹a第二個(gè)分支解碼出bin為1,則下一拍繼續(xù)解碼其絕對值,最終輸出的range_new,offset_new是樹a第二分支的輸出。
如果是解碼mvd的其它拍或者解碼level,輸出模塊的處理為如果樹a第一個(gè)分支解碼出bin為0,則需附帶解碼一個(gè)符號,最終輸出的range_new,offset_new是樹b第一分支的輸出,否則如果樹a第二個(gè)分支解碼出bin為0,則需附帶解碼一個(gè)符號,最終輸出的range_new,offset_new是樹b第二分支的輸出,否則,如果如果樹a第二個(gè)分支解碼出bin為1,則下一拍繼續(xù)解碼其絕對值,最終輸出的range_new,offset_new是樹a第二分支的輸出。
第二種情況為解碼level或者mvd的后綴哥倫布碼的前綴部分這時(shí)dec_mode為01,指示當(dāng)前拍內(nèi)解碼旁路編碼模式bin。這時(shí)regbinnum,sign1_exist,sign2_exist,rb2_state_1_ns,dec_bp_num都沒有作用。并且這種情況下圖6樹b的第一個(gè)分支的輸出作為樹b的第二個(gè)分支的輸入。輸出模塊的處理為如果樹b第一個(gè)分支解碼出bin為0,則最終輸出的range_new,offset_new是樹b第一分支的輸出,否則最終輸出的range_new,offset_new是樹b第二分支的輸出。
第三種情況為解碼level或者mvd的后綴哥倫布碼的后綴部分這時(shí)dec_mode為10,指示當(dāng)前拍內(nèi)解碼旁路編碼模式bin。這時(shí)regbinnum,sign1_exist,sign2_exist,rb2_state_1_ns都沒有作用。dec_bp_num由當(dāng)前解碼是第幾拍(也就是在解碼哥倫布碼的后綴的第幾個(gè)bin)決定。輸出模塊的處理為如果dec_bp_num是0,指示當(dāng)前拍解碼1個(gè)旁路bin,則最終輸出的range_new,offset_new是樹b第一分支的輸出,否則最終輸出的range_new,offset_new是樹b第二分支的輸出。
第四種情況為解碼map_last對這時(shí)dec_mode為00,指示當(dāng)前拍內(nèi)解碼正常編碼模式bin。regbinnum為0,指示當(dāng)前拍調(diào)用圖6樹a的兩個(gè)分支。如果第一個(gè)分支解碼結(jié)果出來是0,則不用第二個(gè)分支;否則第一個(gè)分支的輸出range_new,offset_new送入第二個(gè)分支的輸入口。這種情況和情況1很類似,只是不帶符號信息。所以sign1_exist,sign2_exist都是0。這種情況rb2_state_1_ns始終是0,因?yàn)閘ast和map所用的概率模型總是不一樣的。dec_bp_num沒有作用。輸出模塊的處理為如果樹a第一個(gè)分支解碼出bin為0,則最終輸出的range_new,offset_new是樹a第一分支的輸出,否則最終輸出的range_new,offset_new是樹a第二分支的輸出。
第五種情況為解碼其它語法元素的各個(gè)bin;所述的其它語法元素的bin都是正常編碼模式bin,采用一拍解碼一個(gè)bin。這時(shí)dec_mode為00,指示當(dāng)前拍內(nèi)解碼正常編碼模式bin。regbinnum為1,指示當(dāng)前拍僅調(diào)用圖6樹a的第一個(gè)分支。輸出模塊的處理為最終輸出的range_new,offset_new是樹a第一分支的輸出。
上述本發(fā)明中主要以采用二級樹的結(jié)構(gòu)為例進(jìn)行說明,同樣,本發(fā)明還可以采用三級樹或更高級別的電路設(shè)計(jì)結(jié)構(gòu),當(dāng)然,電路設(shè)計(jì)結(jié)構(gòu)的級別越高,組合電路的深度也越高,關(guān)鍵路徑也就越長。
綜上所述,本發(fā)明與已有CABAC核心解碼實(shí)現(xiàn)方案相比可以大大加快CABAC的解碼速度。同時(shí),硬件資源消耗也較為合理。
以上所述,僅為本發(fā)明較佳的具體實(shí)施方式
,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
權(quán)利要求
1.一種CABAC解碼系統(tǒng),其特征在于,包括至少一組解碼bin的單元;所述的一組解碼bin的單元包括至少兩個(gè)依次串聯(lián)連接的解碼bin的單元,所述的解碼bin的單元用于對待解碼的比特流中的bin進(jìn)行解碼處理;所述的各解碼bin的單元其輸入信息分別包括解碼bin需要的參數(shù)信息以及待解碼的比特流,輸出信息分別包括更新后的所述參數(shù)信息及針對若干個(gè)bin的解碼結(jié)果;所述的各解碼bin的單元輸入的解碼bin需要的輸入信息包括與其連接的解碼bin的單元的輸出信息中的更新后的參數(shù)信息。
2.根據(jù)權(quán)利要求1所述的CABAC解碼系統(tǒng),其特征在于,所述的解碼bin的單元包括解碼正常編碼模式bin的單元和/或解碼旁路編碼模式bin的單元。
3.根據(jù)權(quán)利要求2所述的CABAC解碼系統(tǒng),其特征在于,當(dāng)所述的解碼bin的單元包括解碼正常編碼模式bin的單元時(shí),上一級解碼正常編碼模式bin的單元輸出更新后的區(qū)間值和偏移值,并作為下一級解碼正常編碼模式bin的單元的輸入?yún)^(qū)間值和偏移值信息。
4.根據(jù)權(quán)利要求3所述的CABAC解碼系統(tǒng),其特征在于,所述的系統(tǒng)還包括重正化處理模塊,用于對解碼正常編碼模式bin的單元的輸出的區(qū)間值和偏移值進(jìn)行重正化處理,并將處理后的結(jié)果作為下一級解碼正常編碼模式bin的單元或解碼旁路編碼模式bin的單元的輸入?yún)^(qū)間值和偏移值信息。
5.根據(jù)權(quán)利要求3所述的CABAC解碼系統(tǒng),其特征在于,所述的系統(tǒng)還包括多路選擇器,所述的多路選擇器的輸入為上一級解碼正常編碼模式bin的單元輸出的更新后的概率模型和新的概率模型,輸出為兩輸入的概率模型中選擇的一種。
6.根據(jù)權(quán)利要求2所述的CABAC解碼系統(tǒng),其特征在于,當(dāng)所述的解碼bin的單元包括解碼旁路編碼模式bin的單元時(shí),上一級解碼旁路編碼模式bin的單元或解碼正常編碼模式bin的單元輸出的更新后的區(qū)間值和偏移值作為下一級解碼旁路編碼模式bin的單元的輸入?yún)^(qū)間值和偏移值。
7.根據(jù)權(quán)利要求1至6任一項(xiàng)所述的CABAC解碼系統(tǒng),其特征在于,所述的系統(tǒng)還包括輸出模塊,用于根據(jù)控制信號以及解碼所得bin值在解碼bin的各個(gè)單元的輸出的重正化后得到的更新的區(qū)間值和偏移值信息之間進(jìn)行選擇,由組合邏輯決定最終輸出一拍內(nèi)整個(gè)解碼過程的更新后的區(qū)間值和偏移值。
8.一種CABAC解碼方法,其特征在于,包括A、在一個(gè)時(shí)鐘周期內(nèi),由一組控制信號綜合控制多至少兩個(gè)解碼bin的單元,控制信號和解碼bin的單元根據(jù)輸入的區(qū)間值和偏移值對輸入的待解碼的比特流進(jìn)行解碼處理,完成若干個(gè)bin的解碼;B、根據(jù)控制信號以及解碼所得bin值在解碼bin的各個(gè)單元的輸出的重正化后得到的更新的區(qū)間值和偏移值信息之間進(jìn)行選擇,并由組合邏輯決定最終輸出一拍內(nèi)整個(gè)解碼過程的更新后的區(qū)間值和偏移值,同時(shí),還輸出若干個(gè)bin的解碼結(jié)果。
9.根據(jù)權(quán)利要求8所述的CABAC解碼方法,其特征在于,所述的步驟A包括對正常編碼模式bin解碼處理和/或?qū)ε月肪幋a模式bin的解碼處理。
10.根據(jù)權(quán)利要求9所述的CABAC解碼方法,其特征在于,所述的步驟A還包括所述的解碼bin的單元根據(jù)輸入的第一控制信號確定當(dāng)前的解碼處理為對正常編碼模式bin解碼處理還是對旁路編碼模式bin的解碼處理。
11.根據(jù)權(quán)利要求10所述的CABAC解碼方法,其特征在于,當(dāng)確定所述解碼bin的單元解碼正常編碼模式bin時(shí),所述的步驟A還包括根據(jù)引入的第二控制信號確定當(dāng)前進(jìn)行解碼處理的解碼bin的單元。
12.根據(jù)權(quán)利要求10所述的CABAC解碼方法,其特征在于,當(dāng)確定所述解碼bin的單元解碼正常編碼模式bin時(shí),所述的步驟A還包括所述單元根據(jù)引入的第三控制信號確定選擇上一級單元更新后的概率模型或者新的概率模型進(jìn)行解碼處理。
13.根據(jù)權(quán)利要求12所述的CABAC解碼方法,其特征在于,所述的步驟A包括在上一級解碼單元解碼的同時(shí)并行計(jì)算出上一級單元更新后的概率模型的全部可能情況,并根據(jù)所述的更新后的概率模型導(dǎo)出概率模型索引得信息,在上一級解碼單元解碼完畢后在準(zhǔn)備好的所有概率模型索引得信息中選擇其中之一作為下一級解碼單元所需要的更新后的概率模型索引得信息。
14.根據(jù)權(quán)利要求10所述的CABAC解碼方法,其特征在于,當(dāng)確定所述解碼bin的單元解碼正常編碼模式bin時(shí),所述的步驟A還包括所述單元根據(jù)引入的第四控制信號確定在當(dāng)前解碼周期內(nèi)是否需要解碼正負(fù)號信息。
15.根據(jù)權(quán)利要求10所述的CABAC解碼方法,其特征在于,當(dāng)確定所述解碼bin的單元解碼旁路編碼模式bin時(shí),所述的步驟A還包括根據(jù)所述第一控制信號的取值確定對指數(shù)哥倫布碼的前綴或后綴進(jìn)行解碼處理,且當(dāng)解碼前綴時(shí),解碼到旁路編碼模式bin值為0時(shí)解碼結(jié)束,當(dāng)解碼后綴時(shí),根據(jù)引入的用于確定當(dāng)前解碼拍內(nèi)需要解碼的旁路編碼模式bin的數(shù)量第五控制信號確定需要解碼的旁路編碼模式bin的數(shù)量。
16.根據(jù)權(quán)利要求8至15任一項(xiàng)所述的CABAC解碼方法,其特征在于,所述的步驟B還包括在對正常編碼模式bin解碼處理過程中,如果解碼符號位,解碼結(jié)果還包括符號位信息。
17.根據(jù)權(quán)利要求8至15任一項(xiàng)所述的CABAC解碼方法,其特征在于,所述的步驟B還包括通過重正化處理模塊對更新后的區(qū)間值和偏移值信息進(jìn)行重正化處理,并獲得重正化處理后的區(qū)間值和偏移值,作為該解碼單元的最后更新值,用于同一拍內(nèi)其它解碼bin單元輸入或者該拍內(nèi)最終輸出的區(qū)間值和偏移值。
全文摘要
本發(fā)明涉及一種CABAC解碼系統(tǒng)及方法。本發(fā)明主要包括在一個(gè)時(shí)鐘周期內(nèi),由級聯(lián)的至少兩個(gè)解碼bin的單元根據(jù)輸入的區(qū)間值和偏移值對輸入的待解碼的比特流的若干bin進(jìn)行解碼處理,并輸出所述若干個(gè)bin的解碼結(jié)果及更新后的區(qū)間值和偏移值信息。本發(fā)明不僅實(shí)現(xiàn)了高速解碼,而且,本發(fā)明還使得解碼過程中的硬件資源的消耗保持在一個(gè)合理的范圍內(nèi)。因此,本發(fā)明提供了一種高效、合理的解碼方案。
文檔編號H04N7/26GK1949873SQ20051011273
公開日2007年4月18日 申請日期2005年10月12日 優(yōu)先權(quán)日2005年10月12日
發(fā)明者楊開, 王琳, 林屹, 余微 申請人:華為技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
中宁县| 罗江县| 淳化县| 怀集县| 泌阳县| 金山区| 南康市| 墨江| 闽侯县| 杂多县| 金寨县| 通州区| 南汇区| 砀山县| 南木林县| 股票| 红河县| 额济纳旗| 淅川县| 海原县| 红原县| 盐池县| 依兰县| 蓬莱市| 梁平县| 纳雍县| 城固县| 荃湾区| 收藏| 佛冈县| 黄平县| 东源县| 渑池县| 汤原县| 弋阳县| 海阳市| 黑龙江省| 望江县| 宁武县| 嘉义市| 大足县|