基於上下文自適應二進位算術解碼器的製作方法
2023-05-28 06:55:26
專利名稱:基於上下文自適應二進位算術解碼器的製作方法
技術領域:
本發明涉及一種視頻解碼器,特別涉及一種基於上下文自適應二進位算術解碼器。
背景技術:
隨著數位電視技術的發展,對於視音頻編解碼的技術層出不窮,國際上也出現了MPEG-x、H.26x兩大系列的視頻編碼國際標準,這些視頻編碼標準追求的共同目標是在儘可能低的碼率下獲得儘可能好的圖像質量。為了改善編碼效率,人們在眾多環節上作了嘗試,比如改善預測方法、改善運動補償、改善塊變化等。除了上述方法,改善編碼效率還有很重要的一種方法改善熵編碼方法。傳統的熵編碼方法主要採用霍夫曼理論,但是它存在兩個主要的缺點一是對於非整數的熵值只能用整數位比特來表示;二是編碼所使用的概率模型是固定的,而實際碼流的概率統計特性總是非平穩的。因此,在霍夫曼理論基礎上作了改進,出現了上下文自適應二進位算術編碼(CABAC,Context-Adaptive Binary Arithmetic Coding)。上下文自適應二進位算術編碼根據上下文內容選擇語法元素的概率模型,根據統計結果進行自適應概率估算。上下文自適應二進位算術編碼很好地解決了傳統霍夫曼理論編碼的問題,首先,上下文自適應二進位算術編碼採用算術編碼,用非整數位比特來表示熵值非整數的數據;其次,上下文自適應二進位算術編碼所使用的概率模型總是根據碼流的當前特性進行更新,所以能更準確地反映當前碼流的概率統計特性。據統計,基於上下文二進位編碼(CABAC)比通用變長碼(UVLC)編碼效率提高20%~40%。
基於上下文自適應二進位算術解碼器是用於對採用基於上下文自適應二進位算術編碼的視頻壓縮碼流進行熵解碼。現在業界比較普遍的是在DSP平臺上採用軟體方式來實現基於上下文自適應二進位算術解碼器。它的特點是開發周期較短,實現方式比較靈活。但是,整個解碼過程涉及到針對大量的上下文(在主層級(main profile)高達701個)進行操作,包括上下文初始化、上下文選擇以及上下文更新等,導致了解碼過程運算複雜,運算量龐大。所以採用軟體方式實現解碼通常會產生解碼速度低下的問題。因此,在對解碼速度要求比較高的場合,比如要求實時解碼的系統、比如標清、高清視頻碼流,採用ASIC設計應該是比較合理的選擇。採用ASIC設計能夠實現較高的解碼速度,可以滿足對解碼速度較高的要求。
發明內容
本發明要解決的技術問題是提供一種基於上下文自適應二進位算術解碼器,解決視頻解碼中由於熵解碼模式運算複雜、運算量過大而引起的熵解碼速度低下的問題,提高視頻解碼速度。
本發明是通過以下技術方案實現的一種基於上下文自適應二進位算術解碼器,所述解碼器包括算術解碼器控制裝置、數據接口裝置、符號下標及上下文下標增量計算裝置、上下文管理裝置、解碼引擎裝置和符號檢測裝置,其中,算術解碼器控制接口裝置接收外部命令和相鄰塊信息,將語法元素第一個符號的上下文下標增量送至符號下標及上下文下標增量計算裝置,並在解碼完成後返回解得的語法元素值;數據接口裝置緩存當前待解碼流並在解完每個語法元素後都請求FIFO把已用碼流移走;符號下標及上下文下標增量計算裝置確定符號下標,以及確定所述符號下標對應的上下文下標增量;上下文管理裝置根據所述上下文下標增量取出相對應的當前狀態概率下標和當前大概率符號值送至解碼引擎裝置,並將更新好的當前狀態概率下標和當前大概率符號值存入其原來的位置;解碼引擎裝置在開始解碼一個片或者解碼出一個原始數據的宏塊類型時進行解碼引擎寄存器初始化,在解碼過程中根據當前解碼模式以及當前狀態概率下標和當前大概率符號值解碼出一個符號值,並進行解碼引擎寄存器更新和初始化,輸出所使用碼流的比特數;符號檢測裝置對解碼引擎解出來的一系列符號值進行檢測,同時發出語法元素解碼結束命令或解後綴命令。
所述外部命令是外部解析器模塊的命令。
算術解碼器控制裝置包括控制殘差塊解碼的殘差控制裝置和計算語法元素第一個符號的上下文下標增量的首符號上下文下標增量計算裝置。
上下文管理裝置包括存儲初始化參數的值的初始化ROM;生成RAM的地址的地址生成器;根據片亮度量化因子和所述初始化參數的值得到上下文模型的當前狀態概率下標和當前大概率符號值的初始化計算模塊;存儲當前狀態概率下標和當前大概率符號值的狀態概率指針RAM。
地址生成器根據上下文下標增量、殘差塊類型和語法元素類型計算出RAM的地址。所述地址生成器在上下文初始化階段生成RAM地址作為高位地址,初始化因子的值為低位地址,共同組成ROM的地址。所述RAM地址和上下文模型下標號對應。
解碼引擎裝置包括普通解碼模式,等概率解碼模式和終止解碼模式。
等概率解碼模式直接由算術解碼器控制裝置啟動解碼引擎。
解碼後綴時由符號檢測裝置發命令通知算術解碼器控制裝置並請求啟動新的解碼過程。
本發明基於上下文自適應二進位算術解碼器通過算術解碼器控制裝置來與外部模塊進行命令,相鄰信息和語法元素值的交換,簡化了整個解碼器與外部的接口;通過數據接口裝置來與外部進行碼流交互,減少了解碼器與外部碼流交互的次數;通過符號下標及上下文下標增量計算裝置來快速計算符號下標和上下文下標增量;上下文管理裝置使用了一個16X2048的片內只讀存儲器(ROM)來存儲初始化上下文所需要的兩個初始化參數,使用一個7X512的片內隨機存儲器(RAM)來存儲當前狀態概率下標和當前大概率符號值,並且設計了一個可流水線操作的初始化計算模塊,從而實現了對上下文初始化的流水線操作,提高了運算速度,實現了快速的上下文選擇和更新操作;同時,解碼引擎裝置可進行三種解碼模式的解碼,既節省了硬體開銷,也加快了解碼速度;符號檢測裝置可以對所有語法元素類型的符號值進行檢測,使得本發明能夠加快解碼速度,滿足對解碼速度較高的要求。
圖1是基於上下文自適應二進位算術解碼器的結構框圖;圖2是上下文管理裝置的結構框圖。
具體實施例方式
請參閱圖1,基於上下文自適應二進位算術解碼器包括算術解碼器控制裝置、數據接口裝置、符號下標及上下文下標增量計算裝置、上下文管理裝置、解碼引擎裝置和符號檢測裝置。其中,算術解碼器控制接口裝置用於接收外部命令和相鄰塊信息,並在解碼完成後返回解得的語法元素值;數據接口裝置用於緩存當前待解碼流並在解完每個語法元素後都請求FIFO把已用碼流移走;符號下標及上下文下標增量計算裝置用於確定符號下標,以及確定所述符號下標對應的上下文下標增量;上下文管理裝置根據所述上下文下標增量取出相對應的當前狀態概率下標和當前大概率符號值送至所述解碼引擎,將更新好的當前狀態概率下標和當前大概率符號值存入其原來的位置;解碼引擎裝置用於在開始解碼一個片或者解碼出一個原始數據的宏塊類型時進行解碼引擎寄存器初始化,在解碼過程中根據當前解碼模式以及當前狀態概率下標和當前大概率符號值解碼出一個符號值,然後進行解碼引擎寄存器更新和初始化,並且輸出所使用碼流的比特數;符號檢測裝置用於對解碼引擎解出來的一系列符號值進行檢測,同時發出語法元素解碼結束命令或解後綴命令。
基於上下文自適應二進位算術解碼器的工作流程如下算術解碼器控制裝置接收到解析器模塊的命令後,待FIFO數據和相鄰信息控制模塊數據準備好以後,就把計算好的語法元素第一個符號的上下文下標增量傳到符號下標及上下文下標增量計算裝置並啟動解碼。符號下標及上下文下標增量計算裝置負責確定當前的符號下標以及其相應的上下文下標增量,準備好以後啟動上下文管理裝置。上下文管理裝置根據上下文下標增量來取出相應的當前狀態概率下標和當前大概率符號值送到解碼引擎並且將更新好的當前狀態概率下標和當前大概率符號值存入相應的位置。解碼引擎將解得的符號值送到符號檢測裝置。符號檢測裝置用來檢測一系列的符號值,同時發出語法元素解碼結束命令或解後綴命令。符號檢測裝置對解碼引擎解出來的一系列符號值進行檢測,當解出一個語法元素後就返回語法元素值並請求結束解碼過程。解碼過程結束後數據接口裝置請求FIFO把已用碼流移走。其中,對於等概率解碼模式直接由算術解碼器控制裝置發命令啟動解碼引擎。對於需解碼後綴則由符號檢測裝置發命令通知算術解碼器控制裝置並請求啟動新的解碼過程。殘差控制裝置用來控制一個殘差塊的解碼。每解完一個殘差塊後請求算術解碼器控制裝置將所有解出的數據返回到解析器模塊。
其中,算術解碼器控制裝置和數據接口裝置是外部接口裝置。算術解碼器控制裝置負責接受外部解析器模塊的命令和相鄰信息控制模塊的相鄰塊信息,啟動解碼,解碼完成後把解得語法元素值返回。算術解碼器控制裝置的主要操作包括解析外部解碼命令、計算非殘差語法元素第一個符號的上下文下標增量、計算殘差塊語法元素所有符號的上下文下標、啟動語法元素的解碼過程、送出解碼出的語法元素的值。數據接口裝置負責和FIFO接口,用來緩存當前待解碼流。解完每個語法元素後,數據接口裝置都請求FIFO把已用碼流移走。
上下文管理裝置主要實現在每個片開始解碼前初始化701個上下文模型,解碼的時候根據殘差塊類型,語法元素類型以及符號下標及上下文下標增量計算裝置送來的上下文下標增量來為每一個符號選取相對應的上下文模型,並且在每個符號解碼完成後對其對應的上下文模型進行更新。
上下文管理裝置的示意圖如圖2所示。上下文管理裝置包括存儲有兩個初始化參數的值的初始化ROM、生成RAM的地址的地址生成器、根據片亮度量化因子和所述的兩個初始化參數的值得到上下文模型的當前狀態概率下標和當前大概率符號值的初始化計算模塊以及存儲當前狀態概率下標和當前大概率符號值的狀態概率指針RAM。
其中,初始化ROM為寬度16位,深度2048的片內只讀存儲器,每個存儲器單元16比特,地址長度為11比特。這個ROM用於存儲兩個初始化參數(都是8位的補碼)。將第二個初始化參數置於高8位,第一個初始化參數置於低8位,形成一個有效數據單元。
對算法的上下文模型表進行改進,使得每個上下文模型索引號都對應4個單元約定初始化因子為3時表示幀內預測片;對於只包括幀內預測片的上下文模型,在有效數據單元前添加3個空單元;對於只包括幀間預測片的上下文模型,在有效數據單元之後添加1個空單元;對於幀內預測片和幀間預測片公用的上下文模型,添加和有效數據單元內容重複的3個單元。
注意捨去切換幀內預測片的上下文模型(針對切換幀內預測片)。
在初始化時根據初始化因子作為尋址的低2位,取出4個單元中的一個。
其中狀態概率指針RAM為寬度7位,深度512的片內存儲器,每個存儲器單元7比特,地址長度為9比特。這個RAM用於存儲當前狀態概率下標和當前大概率符號值。RAM地址和算法中的上下文模型索引號對應。
地址生成器用來在上下文初始化階段生成RAM的地址,並且這個地址為高9位,初始化因子的值為低2位直接組成ROM的地址。解碼時用來在解碼過程中生成RAM的地址以選取適當的上下文模型用於解碼一個符號並且在解碼完對該上下文模型進行更新。根據上下文下標增量、殘差塊類型和語法元素類型計算出上下文模型的索引號,即RAM的地址。
初始化計算模塊用來計算一個上下文模型的兩個參數當前狀態概率下標和當前大概率符號值。根據片亮度量化因子和兩個初始化參數的值,計算上下文模型的兩個參數當前狀態概率下標和當前大概率符號值。計算過程需要兩個時鐘周期。由於模塊為流水線設計,無須等待計算完成,可以在每個時鐘周期連續地輸入兩個初始化參數。其算法如下
輸入數據片亮度量化因子的長度為6位,首位添零形成7位補碼。兩個初始化參數長度為16位,表示兩個初始化參數的補碼形式。使用一個補碼乘法器,被乘數第一個初始化參數的寬度為8位,乘數片亮度量化因子的寬度為7位,結果為15位,皆為補碼。對乘法的結果作向右移4位的操作,高位用符號位補齊。加法計算中,第二個初始化參數被擴充到14位後再計算,計算結果為補碼,不會發生溢出情況。若加法結果為0,或者其符號位為1(負數),則取1;否則,若加法結果大於126,則取126。其它情況取它本身。這個函數的結果前上下文狀態概率為7位原碼。決定當前狀態概率下標和當前大概率符號值時,若前上下文狀態概率最高位為0(小於等於63),則當前狀態概率下標等於前上下文狀態概率低6位取反,當前大概率符號值為0;反之,當前狀態概率下標等於前上下文狀態概率低6位,當前大概率符號值為1。
解碼引擎裝置主要執行在解碼一個片的開始或者解到原始數據宏塊後進行解碼引擎寄存器初始化,在解碼過程中根據分支解碼標記信息和上下文模型信息(當前狀態概率下標和當前大概率符號值)來從普通解碼模式,等概率解碼模式和終止解碼模式這三種解碼模式中選擇其中一種對每個符號值進行解碼,解碼完成後根據解碼結果來決定是否對解碼引擎寄存器進行更新,重歸一化或者重新初始化,並且輸出本次解碼所使用的碼流比特數。
本發明基於上下文自適應二進位算術解碼器通過算術解碼器控制裝置來與外部模塊進行命令,相鄰信息和語法元素值的交換,簡化了整個解碼器與外部的接口;通過數據接口裝置來與外部進行碼流交互,減少了解碼器與外部碼流交互的次數;通過符號下標及上下文下標增量計算裝置來快速計算符號下標和上下文下標增量;上下文管理裝置使用了一個16X2048的片內只讀存儲器(ROM)來存儲初始化上下文所需要的兩個初始化參數,使用一個7X512的片內隨機存儲器(RAM)來存儲當前狀態概率下標和當前大概率符號值,並且設計了一個可流水線操作的初始化計算模塊,從而實現了對上下文初始化的流水線操作,提高了運算速度,實現了快速的上下文選擇和更新操作;同時,解碼引擎裝置可進行三種解碼模式的解碼,既節省了硬體開銷,也加快了解碼速度;符號檢測裝置可以對所有語法元素類型的符號值進行檢測,使得本發明能夠加快解碼速度,滿足對解碼速度較高的要求。
權利要求
1.一種基於上下文自適應二進位算術解碼器,其特徵在於所述解碼器包括算術解碼器控制裝置、數據接口裝置、符號下標及上下文下標增量計算裝置、上下文管理裝置、解碼引擎裝置和符號檢測裝置,其中,算術解碼器控制接口裝置接收外部命令和相鄰塊信息,將語法元素第一個符號的上下文下標增量送至符號下標及上下文下標增量計算裝置,並在解碼完成後返回解得的語法元素值;數據接口裝置緩存當前待解碼流並在解完每個語法元素後都請求FIFO把已用碼流移走;符號下標及上下文下標增量計算裝置確定符號下標,以及確定所述符號下標對應的上下文下標增量;上下文管理裝置根據所述上下文下標增量取出相對應的當前狀態概率下標和當前大概率符號值送至解碼引擎裝置,並將更新好的當前狀態概率下標和當前大概率符號值存入其原來的位置;解碼引擎裝置在開始解碼一個片或者解碼出一個原始數據的宏塊類型時進行解碼引擎寄存器初始化,在解碼過程中根據當前解碼模式以及當前狀態概率下標和當前大概率符號值解碼出一個符號值,並進行解碼引擎寄存器更新和初始化,輸出所使用碼流的比特數;符號檢測裝置對解碼引擎解出來的一系列符號值進行檢測,同時發出語法元素解碼結束命令或解後綴命令。
2.如權利要求1所述的解碼器,其特徵在於所述外部命令是外部解析器模塊的命令。
3.如權利要求1所述的解碼器,其特徵在於算術解碼器控制裝置包括控制殘差塊解碼的殘差控制裝置和計算語法元素第一個符號的上下文下標增量的首符號上下文下標增量計算裝置。
4.如權利要求1所述的解碼器,其特徵在於上下文管理裝置包括存儲初始化參數的值的初始化ROM;生成RAM的地址的地址生成器;根據片亮度量化因子和所述初始化參數的值得到上下文模型的當前狀態概率下標和當前大概率符號值的初始化計算模塊;存儲當前狀態概率下標和當前大概率符號值的狀態概率指針RAM。
5.如權利要求4所述的解碼器,其特徵在於地址生成器根據上下文下標增量、殘差塊類型和語法元素類型計算出RAM的地址。
6.如權利要求4所述的解碼器,其特徵在於所述地址生成器在上下文初始化階段生成RAM地址作為高位地址,初始化因子的值為低位地址,共同組成ROM的地址。
7.如權利要求5或6所述的解碼器,其特徵在於所述RAM地址和上下文模型下標號對應。
8.如權利要求1所述的解碼器,其特徵在於解碼引擎裝置包括普通解碼模式,等概率解碼模式和終止解碼模式。
9.如權利要求8所述的解碼器,其特徵在於等概率解碼模式直接由算術解碼器控制裝置啟動解碼引擎。
10.如權利要求1所述的解碼器,其特徵在於解碼後綴時由符號檢測裝置發命令通知算術解碼器控制裝置並請求啟動新的解碼過程。
全文摘要
一種基於上下文自適應二進位算術解碼器,所述解碼器包括算術解碼器控制裝置、數據接口裝置、符號下標及上下文下標增量計算裝置、上下文管理裝置、解碼引擎裝置和符號檢測裝置,通過算術解碼器控制裝置來與外部模塊進行命令,相鄰信息和語法元素值的交換,簡化了整個解碼器與外部的接口;通過數據接口裝置來與外部進行碼流交互,減少了解碼器與外部碼流交互的次數;通過符號下標及上下文下標增量計算裝置來快速計算符號下標和上下文下標增量;同時,解碼引擎裝置可實現多種模式的解碼,既節省了硬體開銷,也加快了解碼速度,滿足對解碼速度較高的要求。
文檔編號H04N7/26GK1909660SQ20051002856
公開日2007年2月7日 申請日期2005年8月5日 優先權日2005年8月5日
發明者黃勇泉, 何輝, 馮煒, 萬建軍 申請人:上海富瀚微電子有限公司