專(zhuān)利名稱(chēng):實(shí)現(xiàn)h.264的cavlc的熵解碼器和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及實(shí)現(xiàn)新一代視頻編碼標(biāo)準(zhǔn)H. 264編解碼的多媒體技術(shù)領(lǐng)域,尤其涉及一種實(shí)現(xiàn)札264的CAVLC的熵解碼器和方法。
背景技術(shù):
隨著視頻編解碼技術(shù)的發(fā)展,產(chǎn)生了許多視頻編解碼的標(biāo)準(zhǔn),如MPEG1/2/4、
H.263/264。其中H. 264由于其高壓縮率以及具有很好的還原質(zhì)量,正在被廣泛接受,然而,其實(shí)現(xiàn)復(fù)雜度要比其他前幾個(gè)標(biāo)準(zhǔn)復(fù)雜得多。而在整個(gè)H. 264的解碼過(guò)程中,熵解碼是第一步,后面的解碼過(guò)程需要等待前面的解碼結(jié)果,因此其解碼速度嚴(yán)重影響整個(gè)解碼速度。
H.264采用了兩套熵編/解碼技術(shù),即基于上下文的自適應(yīng)變長(zhǎng)編碼(Context-based Adaptive Variable Length Coding,CAVLC)和基于上下文的自適應(yīng)算術(shù)編碼(Context-based Adaptive Binary Arithmetic Coding,CABAC)。其中 CAVLC 由于編碼復(fù)雜度比CABAC低,廣泛的用于各種視頻的編碼。H. 264的主要檔次(Main Profile),基本檔次(Base Profile)和擴(kuò)展檔次(Extended Profile)都支持 CAVLC。在CAVLC解碼裝置中,CAVLC共有6個(gè)語(yǔ)法元素需要解碼,包括非零系數(shù)個(gè)數(shù)、拖尾系數(shù)的個(gè)數(shù)、每個(gè)拖尾系數(shù)的符號(hào)、除拖尾系數(shù)外非零系數(shù)的幅值、最后一個(gè)非零系數(shù)前零的個(gè)數(shù)和每個(gè)非零系數(shù)前零的個(gè)數(shù)。一般地,CAVLC熵解碼器的解碼過(guò)程如下初始化工作,確定輸入數(shù)據(jù)的塊類(lèi)型等參數(shù);求變量NC,根據(jù)NC的值選擇所要查的表格;查表得出語(yǔ)法元素非零系數(shù)個(gè)數(shù)和拖尾系數(shù)的個(gè)數(shù);根據(jù)拖尾系數(shù)的個(gè)數(shù)解出拖尾系數(shù)的符號(hào);解碼除拖尾系數(shù)外非零系數(shù)的幅值;根據(jù)非零系數(shù)個(gè)數(shù)查表求出最后一個(gè)非零系數(shù)前零的個(gè)數(shù);解碼每個(gè)非零系數(shù)前零的個(gè)數(shù)。現(xiàn)有技術(shù)中的一種H. 264熵解碼器CAVLC的硬件設(shè)計(jì),CAVLC硬件熵解碼器主要由5個(gè)功能模塊,包括解碼系數(shù)標(biāo)記模塊(CoefT_token Decoder)、拖尾符號(hào)標(biāo)記模塊(TrailingOnes Decoder)、幅值模塊(Level Decoder)、總零數(shù)模塊(TotalZero Decoder) >前游程模塊(Run_before Decoder),以及一個(gè) CAVLC 控制模塊(CAVLC Contraller)組成。另外包括了一個(gè)內(nèi)部的SRAM模塊,用于存儲(chǔ)塊(block)信息。其中,幅值模塊(Level Decoder)包括幅值前綴模塊(level_prefix Decoder),幅值后綴模塊(level_suffix Decoder)。五個(gè)句法元素的模塊(Decoder)分別執(zhí)行對(duì)于相應(yīng)的句法元素的解碼工作。CAVLC控制模塊執(zhí)行協(xié)調(diào)各模塊工作,對(duì)SRAM數(shù)據(jù)的存取,向外中請(qǐng)接受碼流數(shù)據(jù),以及將各子功能模塊解碼得到的數(shù)據(jù)重組和向外輸出傳遞的功能。其中解碼系數(shù)標(biāo)記模塊(Coeff_token Decoder)用于解碼非零系數(shù)個(gè)數(shù)和拖尾系數(shù)個(gè)數(shù),此解碼過(guò)程可根據(jù)H264標(biāo)準(zhǔn)中Coeff_taken碼表進(jìn)行。拖尾符號(hào)標(biāo)記模塊(TrailingOnes Decoder)用于解碼拖尾系數(shù),由于之前的解碼系數(shù)標(biāo)記模塊(Coeff_token Decoder)中解出的僅僅是拖尾系數(shù)的個(gè)數(shù),所以這個(gè)模塊真正解碼的是拖尾系數(shù)的符號(hào)。幅值模塊(Level Decoder)由兩部分組成,幅值前綴模塊(level_prefixDecoder),幅值后綴模塊(level_suff ix Decoder)。幅值模塊(Level Decoder)的解碼過(guò)程為先初始化中間變量suffixLength的值,由于已經(jīng)解出了非零系數(shù)的個(gè)數(shù)TotalCoefT和拖尾系數(shù)的個(gè)數(shù)TrailingOnes,所以可知有TotalCoeff-TrailingOnes個(gè)level的解碼循環(huán)過(guò)程需要進(jìn)行。在每次解碼level的循環(huán)中,先計(jì)算IevelCode,然后根據(jù)IevelCode的奇偶性計(jì)算出level的值,最后根據(jù)解出的level的絕對(duì)值是否大于相應(yīng)的閾值來(lái)更新suffixLength 的值??偭銛?shù)模塊(TotalZero Decoder)用于解碼最后一個(gè)非零系數(shù)前零的個(gè)數(shù),包括了兩張表格,一張為常用表,另外一張為ChromaDC的專(zhuān)用表格。前游程(Run_before Decoder)用于解碼每個(gè)非零系數(shù)前零的個(gè)數(shù)(RunBefore)。 但是,CAVLC熵解碼由于標(biāo)準(zhǔn)所限,其熵解碼過(guò)程包括解碼系數(shù)標(biāo)記(COefT_token),拖尾符號(hào)標(biāo)記(trailing_ones_sign_flag),幅值前綴(level_pref ix),幅值后綴(level_suffix),總零數(shù)(total_zeros),前游程(run_before)六個(gè)解碼步驟,在解碼過(guò)程中,后面的步驟都嚴(yán)重依賴(lài)前面的步驟。而在整個(gè)H. 264的解碼過(guò)程中,熵解碼是第一步,后面的解碼過(guò)程需要等待其解碼結(jié)果,熵解碼速度嚴(yán)重影響整個(gè)解碼速度。因此,盡量減少依賴(lài)造成的等待,對(duì)于一個(gè)好的CAVLC的熵解碼系統(tǒng),甚至對(duì)整個(gè)H. 264解碼系統(tǒng),都是至關(guān)重要的。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種實(shí)現(xiàn)H. 264的CAVLC的熵解碼器和方法,其有效地提高了解碼速度。為實(shí)現(xiàn)本發(fā)明目的而提供的一種實(shí)現(xiàn)H. 264的CAVLC的熵解碼器,包括解碼系數(shù)標(biāo)記解碼模塊、拖尾符號(hào)標(biāo)記解碼模塊、幅值解碼模塊、總零數(shù)解碼模塊、前游程解碼模塊,CAVLC控制模塊和寄存器單元;其中,幅值解碼模塊包括幅值前綴解碼模塊,幅值后綴解碼模塊;CAVLC控制模塊,包括系數(shù)標(biāo)記解碼模塊跳轉(zhuǎn)控制模塊,拖尾符號(hào)標(biāo)記狀態(tài)機(jī)跳轉(zhuǎn)控制模塊,幅值前綴狀態(tài)機(jī)跳轉(zhuǎn)控制模塊,幅值后綴狀態(tài)機(jī)跳轉(zhuǎn)控制模塊,總零數(shù)狀態(tài)機(jī)跳轉(zhuǎn)控制模塊,前游程狀態(tài)機(jī)跳轉(zhuǎn)控制模塊;寄存器單元,包括非零系數(shù)寄存器,拖尾系數(shù)寄存器,拖尾系數(shù)標(biāo)記寄存器,幅值前綴寄存器,幅值后綴寄存器,總零數(shù)寄存器,前游程寄存器;還包括旁路模塊電路單元,為連接相鄰兩級(jí)解碼模塊之間的旁路電路單元,用于將上一級(jí)解碼模塊所獲得的解碼參數(shù)從旁路電路單元傳輸給下一級(jí)解碼狀態(tài)機(jī)跳轉(zhuǎn)控制模塊和下一級(jí)解碼模塊;所述CAVLC控制模塊,還包括參數(shù)傳輸控制模塊,用于在解碼狀態(tài)下,控制將上一級(jí)解碼模塊所獲得的解碼參數(shù)傳輸給相應(yīng)解碼參數(shù)寄存器的同時(shí),控制將相應(yīng)解碼參數(shù)通過(guò)旁路模塊電路單元傳輸給下一級(jí)解碼狀態(tài)機(jī)跳轉(zhuǎn)控制模塊和下一級(jí)解碼模塊。較優(yōu)地,旁路模塊電路單元包括第一旁路模塊電路單元;所述第一旁路模塊電路單元為連接解碼系數(shù)標(biāo)記解碼模塊和拖尾符號(hào)標(biāo)記解碼模塊的旁路電路單元,用于將解碼系數(shù)標(biāo)記解碼模塊解碼得到的總的非零系數(shù)和拖尾系數(shù)傳輸給拖尾符號(hào)標(biāo)記狀態(tài)機(jī)跳轉(zhuǎn)控制模塊以及拖尾符號(hào)標(biāo)記解碼模塊;所述參數(shù)傳輸控制模塊包括第一控制模塊,用于在解碼系數(shù)標(biāo)記解碼狀態(tài)下,控制將解碼系數(shù)標(biāo)記解碼模塊解碼得到的總的非零系數(shù)和拖尾系數(shù)傳輸給非零系數(shù)寄存器和拖尾系數(shù)寄存器的同時(shí),控制將總的非零系數(shù)和拖尾系數(shù)通過(guò)第一旁路模塊電路單元傳輸給拖尾符號(hào)標(biāo)記狀態(tài)機(jī)跳轉(zhuǎn)控制模塊以及拖尾符號(hào)標(biāo)記解碼模塊。較優(yōu)地,所述旁路模塊電路單元還包括第二旁路模塊電路單元;所述第二旁路模塊電路單元為連接幅值前綴解碼模塊和幅值后綴解碼模塊的旁路電路單元,用于將幅值前綴模塊解碼得到的幅值前綴傳輸給幅值后綴狀態(tài)機(jī)跳轉(zhuǎn)控制模塊以及幅值模塊的幅值后綴解碼模塊;所述參數(shù)傳輸控制模塊還包括第二控制模塊,用于在幅值前綴解碼狀態(tài)下,控制
將幅值前綴模塊解碼得到的幅值前綴傳輸給幅值前綴寄存器的同時(shí),控制將幅值前綴通過(guò)第二旁路模塊電路單元傳輸給幅值后綴狀態(tài)機(jī)跳轉(zhuǎn)控制模塊以及幅值后綴解碼模塊。較優(yōu)地,所述旁路模塊電路單元還包括第三旁路模塊電路單元;所述第三旁路模塊電路單元為連接總零數(shù)模塊和前游程模塊的旁路電路單元,用于將總零數(shù)模塊解碼得到的最后一個(gè)非零系數(shù)前零的個(gè)數(shù)傳輸給前游程狀態(tài)機(jī)控制模塊和前游程解碼模塊;所述參數(shù)傳輸控制模塊還包括第三控制模塊,用于在總零數(shù)解碼狀態(tài)下,控制解碼總零數(shù)模塊解碼得到的總零數(shù)傳輸給總零數(shù)寄存器的同時(shí),控制將總零數(shù)通過(guò)第三旁路模塊電路單元傳輸給前游程狀態(tài)機(jī)跳轉(zhuǎn)控制模塊以及前游程解碼模塊。為實(shí)現(xiàn)本發(fā)明還提供一種實(shí)現(xiàn)H. 264的CAVLC的熵解碼方法,包括如下步驟設(shè)置連接相鄰兩級(jí)解碼模塊之間的旁路電路單元;在解碼狀態(tài)下,控制將上一級(jí)解碼模塊所獲得的解碼參數(shù)傳輸給相應(yīng)解碼參數(shù)寄存器的同時(shí),控制將相應(yīng)解碼參數(shù)通過(guò)旁路模塊電路單元傳輸給下一級(jí)解碼狀態(tài)機(jī)跳轉(zhuǎn)控制模塊和下一級(jí)解碼模塊。較優(yōu)地,所述設(shè)置旁路電路單元,包括如下步驟設(shè)置連接解碼系數(shù)標(biāo)記解碼模塊和拖尾符號(hào)標(biāo)記解碼模塊的第一旁路模塊電路單元;所述控制解碼參數(shù)傳輸,包括如下步驟在解碼系數(shù)標(biāo)記解碼狀態(tài)下,CAVLC控制模塊控制將解碼系數(shù)標(biāo)記解碼模塊解碼得到的總的非零系數(shù)和拖尾系數(shù)傳輸給非零系數(shù)寄存器和拖尾系數(shù)寄存器的同時(shí),控制將總的非零系數(shù)和拖尾系數(shù)通過(guò)第一旁路模塊電路單元傳輸給拖尾符號(hào)標(biāo)記狀態(tài)機(jī)跳轉(zhuǎn)控制模塊以及拖尾符號(hào)標(biāo)記解碼模塊,并進(jìn)行拖尾符號(hào)標(biāo)記解碼。較優(yōu)地,所述設(shè)置旁路電路單元,還包括如下步驟設(shè)置連接幅值前綴解碼模塊和幅值后綴解碼模塊的第二旁路模塊電路單元;所述控制解碼參數(shù)傳輸,還包括如下步驟在幅值前綴解碼狀態(tài)下,CAVLC控制模塊控制將幅值前綴模塊解碼得到的幅值前綴傳輸給幅值前綴寄存器的同時(shí),控制將幅值前綴通過(guò)第二旁路模塊電路單元傳輸給幅值后綴狀態(tài)機(jī)跳轉(zhuǎn)控制模塊以及幅值后綴解碼模塊,并進(jìn)行幅值后綴解碼。較優(yōu)地,所述設(shè)置旁路電路單元,還包括如下步驟
設(shè)置連接總零數(shù)模塊和前游程模塊的第三旁路模塊電路單元;所述控制解碼參數(shù)傳輸,還包括如下步驟在總零數(shù)解碼狀態(tài)下,CAVLC控制模塊控制解碼總零數(shù)模塊解碼得到的總零數(shù)傳輸給總零數(shù)寄存器的同時(shí),控制將總零數(shù)通過(guò)第三旁路模塊電路單元傳輸給前游程狀態(tài)機(jī)跳轉(zhuǎn)控制模塊以及前游程解碼模塊,并進(jìn)行前游程解碼。較優(yōu)地,所述控制并進(jìn)行拖尾符號(hào)標(biāo)記解碼,包括如下步驟控制將解碼系數(shù)標(biāo)記解碼模塊解碼得到的總的非零系數(shù)和拖尾系數(shù)傳輸給非零系數(shù)寄存器和拖尾系數(shù)寄存器的同時(shí),控制將總的非零系數(shù)和拖尾系數(shù)通過(guò)第一旁路模塊電路單元傳輸給拖尾符號(hào)標(biāo)記狀態(tài)機(jī)跳轉(zhuǎn)控制模塊以及拖尾符號(hào)標(biāo)記解碼模塊;拖尾符號(hào)標(biāo)記狀態(tài)機(jī)跳轉(zhuǎn)控制模塊首先判斷第一旁路模塊電路單元傳輸來(lái)的非 零系數(shù)的值是否大于0,以及拖尾系數(shù)的值是否大于0,根據(jù)判斷結(jié)果決定是否進(jìn)入解碼拖尾符號(hào)標(biāo)記狀態(tài);如果非零系數(shù)或拖尾系數(shù)小于0,直接跳過(guò)拖尾符號(hào)標(biāo)記解碼狀態(tài);如果非零系數(shù)和拖尾系數(shù)都大于0,則拖尾符號(hào)標(biāo)記狀態(tài)機(jī)跳轉(zhuǎn)控制模塊控制拖尾符號(hào)標(biāo)記解碼模塊進(jìn)入拖尾符號(hào)標(biāo)記解碼狀態(tài),啟動(dòng)拖尾符號(hào)標(biāo)記解碼模塊的解碼工作;進(jìn)入拖尾符號(hào)標(biāo)記解碼狀態(tài)后,拖尾符號(hào)標(biāo)記解碼模塊開(kāi)始拖尾符號(hào)標(biāo)記解碼工作,同時(shí),拖尾拖尾符號(hào)標(biāo)記狀態(tài)機(jī)跳轉(zhuǎn)控制模塊監(jiān)測(cè)拖尾符號(hào)標(biāo)記解碼模塊的結(jié)束信號(hào)是否有效;如果結(jié)束信號(hào)有效的話(huà),拖尾符號(hào)標(biāo)記狀態(tài)機(jī)跳轉(zhuǎn)控制模塊控制拖尾符號(hào)標(biāo)記解碼結(jié)束,跳出拖尾符號(hào)標(biāo)記解碼狀態(tài)。較優(yōu)地,所述控制拖尾符號(hào)標(biāo)記解碼狀態(tài),包括如下步驟在拖尾符號(hào)標(biāo)記解碼模塊解碼的第一個(gè)解碼周期,即解碼第一個(gè)拖尾符號(hào)標(biāo)記時(shí),利用第一旁路模塊電路單元傳輸來(lái)的拖尾系數(shù)與拖尾系數(shù)解碼計(jì)數(shù)器中的值進(jìn)行比較,判斷拖尾符號(hào)標(biāo)記解碼狀態(tài)是否結(jié)束;倘若相等,則拖尾符號(hào)標(biāo)記解碼狀態(tài)結(jié)束信號(hào)有效,拖尾符號(hào)標(biāo)記解碼結(jié)束,跳出拖尾符號(hào)標(biāo)記解碼狀態(tài);否則,進(jìn)入第二個(gè)解碼周期;從第二個(gè)解碼周期開(kāi)始,拖尾符號(hào)標(biāo)記解碼模塊從非零系數(shù)寄存器和拖尾系數(shù)寄存器讀取非零系數(shù)和拖尾系數(shù)進(jìn)入拖尾符號(hào)標(biāo)記解碼模塊,循環(huán)進(jìn)行拖尾符號(hào)標(biāo)記解碼;并利用從拖尾系數(shù)寄存器讀取到的拖尾系數(shù)的值與拖尾系數(shù)解碼計(jì)數(shù)器中的值進(jìn)行比較,判斷拖尾符號(hào)標(biāo)記解碼狀態(tài)是否結(jié)束;倘若相等,則拖尾符號(hào)標(biāo)記解碼狀態(tài)結(jié)束信號(hào)有效,拖尾符號(hào)標(biāo)記解碼結(jié)束,跳出拖尾符號(hào)標(biāo)記解碼狀態(tài);否則,繼續(xù)下一解碼周期循環(huán)解碼。較優(yōu)地,所述控制并進(jìn)行幅值后綴解碼,包括如下步驟在幅值前綴解碼狀態(tài)下,控制將幅值前綴模塊解碼得到的幅值前綴傳輸給幅值前綴寄存器的同時(shí),控制將幅值前綴通過(guò)第二旁路模塊電路單元傳輸給幅值后綴狀態(tài)機(jī)跳轉(zhuǎn)控制模塊以及幅值后綴解碼模塊;根據(jù)第二旁路模塊電路單元傳輸來(lái)的幅值前綴,以及中間變量suffixLength是否符合條件判斷是否進(jìn)入幅值后綴狀態(tài);當(dāng)sufTixLenght大于0或者幅值前綴大于等于14時(shí),決定進(jìn)入幅值后綴解碼狀態(tài),則幅值后綴狀態(tài)機(jī)跳轉(zhuǎn)控制模塊控制進(jìn)入幅值后綴解碼狀態(tài),啟動(dòng)幅值后綴解碼模塊的解碼工作,進(jìn)行幅值后綴解碼;否則,直接跳過(guò)幅值后綴解碼狀態(tài),進(jìn)入下一級(jí)解碼狀態(tài),即總零數(shù)解碼狀態(tài)。較優(yōu)地,所述控制并進(jìn)行前游程解碼,包括如下步驟在總零數(shù)解碼狀態(tài)下,控制解碼總零數(shù)模塊解碼得到的總零數(shù)傳輸給總零數(shù)寄存器的同時(shí),控制將總零數(shù)通過(guò)第三旁路模塊電路單元傳輸給前游程狀態(tài)機(jī)跳轉(zhuǎn)控制模塊以及前游程解碼模塊;前游程狀態(tài)機(jī)跳控制模塊根據(jù)非零系數(shù)的個(gè)數(shù)以及第三旁路模塊電路單元傳輸來(lái)的總零數(shù)是否符合條件,即根據(jù)非零系數(shù)的個(gè)數(shù)大于0且總零數(shù)大于0,決定是否進(jìn)入解碼前游程狀態(tài);如果不符合,直接跳過(guò)前游程解碼狀態(tài);如果符合,則解碼狀態(tài)機(jī)進(jìn)入前游程解碼狀態(tài),啟動(dòng)前游程解碼模塊的解碼工作; 進(jìn)入前游程解碼狀態(tài)后,前游程解碼模塊開(kāi)始前游程解碼工作,同時(shí),前游程解碼狀態(tài)機(jī)跳轉(zhuǎn)控制模塊監(jiān)測(cè)前游程解碼模塊的結(jié)束信號(hào)是否有效;如果結(jié)束信號(hào)有效的話(huà),前游程解碼狀態(tài)機(jī)跳轉(zhuǎn)控制模塊控制前游程解碼結(jié)束,跳出前游程解碼狀態(tài)。較優(yōu)地,所述控制前游程解碼狀態(tài),包括如下步驟在前游程解碼模塊解碼的第一個(gè)解碼周期,即解碼第一個(gè)前游程時(shí),利用第三旁路模塊電路單元傳輸來(lái)的總零數(shù)與前游程解碼計(jì)數(shù)器中的值進(jìn)行比較,判斷前游程解碼狀態(tài)是否結(jié)束;倘若相等,則前游程解碼狀態(tài)結(jié)束信號(hào)有效,前游程解碼結(jié)束,跳出前游程解碼狀態(tài);否則,進(jìn)入第二個(gè)解碼周期;從第二個(gè)解碼周期開(kāi)始,前游程解碼模塊從總零數(shù)寄存器讀取總零數(shù)進(jìn)入前游程解碼模塊,循環(huán)進(jìn)行前游程解碼;并利用從總零數(shù)寄存器讀取到的總零數(shù)的值與前游程解碼計(jì)數(shù)器中的值進(jìn)行比較,判斷前游程解碼狀態(tài)是否結(jié)束;倘若相等,則前游程解碼狀態(tài)結(jié)束信號(hào)有效,前游程解碼結(jié)束,跳出前游程解碼狀態(tài);否則,繼續(xù)下一解碼周期循環(huán)解碼。本發(fā)明的有益效果是本發(fā)明的實(shí)現(xiàn)H. 264的CAVLC的熵解碼器和方法,通過(guò)在熵解碼大規(guī)模集成電路的解碼模塊上增加旁路邏輯模塊,盡量減少前后解碼依賴(lài)所造成的等待,高效地提高了熵解碼的速度,有效地提高了 CAVLC解碼系統(tǒng),甚至對(duì)整個(gè)H. 264解碼系統(tǒng)的解碼速度。
圖I是本發(fā)明實(shí)施例實(shí)現(xiàn)H. 264的CAVLC的熵解碼器結(jié)構(gòu)示意圖;圖2是本發(fā)明實(shí)施例的實(shí)現(xiàn)H. 264的CAVLC的熵解碼方法中控制將非零系數(shù)和拖尾系數(shù)傳輸示意圖;圖3是本發(fā)明實(shí)施例的實(shí)現(xiàn)H. 264的CAVLC的熵解碼方法中控制將非零系數(shù)和拖尾系數(shù)傳輸流程圖;圖4是本發(fā)明實(shí)施例的實(shí)現(xiàn)H. 264的CAVLC的熵解碼方法中選擇比較實(shí)現(xiàn)示意圖。
具體實(shí)施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明的實(shí)現(xiàn)H. 264的CAVLC的熵解碼器和方法進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。如圖I所示,作為一種可實(shí)施方式,本發(fā)明實(shí)施例的實(shí)現(xiàn)H. 264的CAVLC的熵解碼器,包括解碼系數(shù)標(biāo)記解碼模塊(CoefTJoken Decoder) 31、拖尾符號(hào)標(biāo)記解碼模塊(TrailingOnes Decoder) 32、幅值解碼模塊(Level Decoder)、總零數(shù)解碼模塊(TotalZeroDecoder) 35、前游程解碼模塊(Run_before Decoder) 36,CAVLC控制模塊I和寄存器單元。其中,所述幅值解碼模塊(Level Decoder)包 括幅值前綴解碼模塊(leVel_pref ixDecoder) 33,幅值后綴解碼模塊(level_suff ix Decoder) 34。所述CAVLC控制模塊1,包括系數(shù)標(biāo)記解碼模塊跳轉(zhuǎn)控制模塊11,拖尾符號(hào)標(biāo)記狀態(tài)機(jī)跳轉(zhuǎn)控制模塊12,幅值前綴狀態(tài)機(jī)跳轉(zhuǎn)控制模塊13,幅值后綴狀態(tài)機(jī)跳轉(zhuǎn)控制模塊14,總零數(shù)狀態(tài)機(jī)跳轉(zhuǎn)控制模塊15,前游程狀態(tài)機(jī)跳轉(zhuǎn)控制模塊16。所述寄存器單元,包括非零系數(shù)(Totalcoeff)寄存器41,拖尾系數(shù)(TrailingOnes)寄存器42,拖尾符號(hào)標(biāo)記(TrailingOnesSign)寄存器43,幅值前綴(level_prefix)寄存器44,幅值后綴(LevelSuffix)寄存器45,總零數(shù)(TotalZeros)寄存器46,和前游程(RunBefore)寄存器47。所有的解碼模塊組成了一個(gè)解碼狀態(tài)機(jī),解碼狀態(tài)機(jī)的狀態(tài)表征著解碼進(jìn)行到哪一個(gè)階段,以及是在哪個(gè)解碼模塊進(jìn)行。具體來(lái)說(shuō),解碼狀態(tài)機(jī)有空轉(zhuǎn),解碼系數(shù)標(biāo)記,解碼拖尾符號(hào)標(biāo)記,解碼幅值前綴,解碼幅值后綴,解碼總零數(shù),解碼前游程七個(gè)狀態(tài)。在空轉(zhuǎn)狀態(tài),解碼器不解碼任何碼流信息;后面的六個(gè)狀態(tài)依次在對(duì)應(yīng)的解碼模塊解碼對(duì)應(yīng)的碼流信息。解碼狀態(tài)機(jī)的狀態(tài)跳轉(zhuǎn)是受系數(shù)標(biāo)記解碼模塊跳轉(zhuǎn)控制模塊11,拖尾符號(hào)標(biāo)記狀態(tài)機(jī)跳轉(zhuǎn)控制模塊12,幅值前綴狀態(tài)機(jī)跳轉(zhuǎn)控制模塊13,幅值后綴狀態(tài)機(jī)跳轉(zhuǎn)控制模塊14,前游程狀態(tài)機(jī)跳轉(zhuǎn)控制模塊15,總零數(shù)狀態(tài)機(jī)跳轉(zhuǎn)控制模塊16控制的。本發(fā)明實(shí)施例的實(shí)現(xiàn)H. 264的CAVLC的熵解碼器,還包括旁路模塊電路單元,為連接相鄰兩級(jí)解碼模塊之間的旁路電路單元,用于將上一級(jí)解碼模塊所獲得的解碼參數(shù)從旁路電路單元傳輸給下一級(jí)解碼狀態(tài)機(jī)跳轉(zhuǎn)控制模塊和下一級(jí)解碼模塊;所述CAVLC控制模塊,還包括參數(shù)傳輸控制模塊,用于在解碼狀態(tài)下,控制將上一級(jí)解碼模塊所獲得的解碼參數(shù)傳輸給相應(yīng)解碼參數(shù)寄存器的同時(shí),控制將相應(yīng)解碼參數(shù)通過(guò)旁路模塊電路單元傳輸給下一級(jí)解碼狀態(tài)機(jī)跳轉(zhuǎn)控制模塊和下一級(jí)解碼模塊。所述旁路模塊電路單元包括第一旁路模塊電路單元21 ;第一旁路模塊電路單元21,為連接解碼系數(shù)標(biāo)記解碼模塊和拖尾符號(hào)標(biāo)記解碼模塊的旁路電路單元,用于將解碼系數(shù)標(biāo)記解碼模塊解碼得到的總的非零系數(shù)(Totalcoeff)和拖尾系數(shù)(TrailingOnes)傳輸給拖尾符號(hào)標(biāo)記狀態(tài)機(jī)跳轉(zhuǎn)控制模塊以及拖尾符號(hào)標(biāo)記解碼模塊。所述參數(shù)傳輸控制模塊包括第一控制模塊17,用于在解碼系數(shù)標(biāo)記解碼狀態(tài)下,控制將解碼系數(shù)標(biāo)記解碼模塊解碼得到的總的非零系數(shù)(Totalcoeff)和拖尾系數(shù)(TrailingOnes)傳輸給非零系數(shù)(Totalcoeff)寄存器和拖尾系數(shù)(TrailingOnes)寄存器的同時(shí),控制將總的非零系數(shù)(Totalcoeff)和拖尾系數(shù)(TrailingOnes)通過(guò)第一旁路模塊電路單元傳輸給拖尾符號(hào)標(biāo)記狀態(tài)機(jī)跳轉(zhuǎn)控制模塊以及拖尾符號(hào)標(biāo)記解碼模塊。
也就是說(shuō),第一控制模塊17控制將解碼系數(shù)標(biāo)記解碼模塊的解碼結(jié)果(總的非零系數(shù)(TotalcoefT)和拖尾系數(shù)(TrailingOnes))傳送給三個(gè)單元,分別傳輸給對(duì)應(yīng)解碼模塊的寄存器,同時(shí)利用第一控制模塊控制通過(guò)第一旁路模塊電路單元傳輸給下一級(jí)狀態(tài)機(jī)跳轉(zhuǎn)控制模塊一拖尾符號(hào)標(biāo)記狀態(tài)機(jī)跳轉(zhuǎn)控制模塊,和下一級(jí)需要用的解碼部件一拖尾符號(hào)標(biāo)記解碼模塊。較佳地,作為一種可實(shí)施方式,所述旁路模塊電路單元還包括第二旁路模塊電路單元22 ;第二旁路模塊電路單元22,為連接幅值前綴解碼模塊和幅值后綴解碼模塊的旁路電路單元,用于將幅值前綴模塊解碼得到的幅值前綴(levelprefix)傳輸給幅值后綴狀態(tài)機(jī)跳轉(zhuǎn)控制模塊以及幅值模塊的幅值后綴解碼模塊。所述參數(shù)傳輸控制模塊還包括第二控制模塊18,用于在幅值前綴解碼狀態(tài)下,控制將幅值前綴模塊解碼得到的幅值前綴(level_prefix)傳輸給幅值前綴(level_prefix)寄存器的同時(shí),控制將幅值前綴(levelprefix)通過(guò)第二旁路模塊電路單元傳輸給幅值后綴狀態(tài)機(jī)跳轉(zhuǎn)控制模塊以及幅值后綴解碼模塊。
更佳地,作為一種可實(shí)施方式,所述旁路模塊電路單元還包括第三旁路模塊電路單元23;第三旁路模塊電路單元23,為連接總零數(shù)模塊和前游程模塊的旁路電路單元,用于將總零數(shù)模塊解碼得到的最后一個(gè)非零系數(shù)前零的個(gè)數(shù)傳輸給前游程狀態(tài)機(jī)控制模塊和前游程解碼模塊。所述參數(shù)傳輸控制模塊還包括第三控制模塊19,用于在總零數(shù)解碼狀態(tài)下,控制解碼總零數(shù)模塊解碼得到的總零數(shù)傳輸給總零數(shù)寄存器的同時(shí),控制將總零數(shù)通過(guò)第三旁路模塊電路單元傳輸給前游程狀態(tài)機(jī)跳轉(zhuǎn)控制模塊以及前游程解碼模塊。作為一種可實(shí)施方式,如圖I所示,本發(fā)明實(shí)施例的實(shí)現(xiàn)H. 264的CAVLC的熵解碼器,其通過(guò)超大規(guī)模集成電路(Very Large Scale Integration, VLSI)實(shí)現(xiàn)快速解碼輸出。應(yīng)當(dāng)說(shuō)明的是,本發(fā)明實(shí)施例的實(shí)現(xiàn)H.264的CAVLC的熵解碼器,所述第一旁路模塊電路單元21或/和第二旁路模塊電路單元22或/和第三旁路模塊電路單元23,可以單獨(dú)或者組合構(gòu)成本發(fā)明實(shí)施例的旁路模塊電路單元而實(shí)施實(shí)現(xiàn);相應(yīng)地,所述第一控制模塊17或/和第二控制模塊18或/和第三控制模塊19相應(yīng)地單獨(dú)或者組合構(gòu)成本發(fā)明實(shí)施例的參數(shù)傳輸控制模塊而實(shí)施實(shí)現(xiàn)。相應(yīng)地,本發(fā)明實(shí)施例還提供一種實(shí)現(xiàn)H. 264的CAVLC的熵解碼方法,包括如下步驟步驟S100,設(shè)置連接相鄰兩級(jí)解碼模塊之間的旁路電路單元;步驟S200,在解碼狀態(tài)下,控制將上一級(jí)解碼模塊所獲得的解碼參數(shù)傳輸給相應(yīng)解碼參數(shù)寄存器的同時(shí),控制將相應(yīng)解碼參數(shù)通過(guò)旁路模塊電路單元傳輸給下一級(jí)解碼狀態(tài)機(jī)跳轉(zhuǎn)控制模塊和下一級(jí)解碼模塊。具體地,作為一種可實(shí)施方式,所述步驟SlOO中,所述設(shè)置旁路電路單元,包括如下步驟步驟S110,設(shè)置連接解碼系數(shù)標(biāo)記解碼模塊和拖尾符號(hào)標(biāo)記解碼模塊的第一旁路模塊電路單元;所述步驟S200中,控制解碼參數(shù)傳輸,包括如下步驟步驟S210,在解碼系數(shù)標(biāo)記解碼狀態(tài)下,CAVLC控制模塊控制將解碼系數(shù)標(biāo)記解碼模塊解碼得到的總的非零系數(shù)(Totalcoeff)和拖尾系數(shù)(TrailingOnes)傳輸給非零系數(shù)(TotalcoefT)寄存器和拖尾系數(shù)(TrailingOnes)寄存器的同時(shí),控制將總的非零系數(shù)(Totalcoeff)和拖尾系數(shù)(TrailingOnes)通過(guò)第一旁路模塊電路單元傳輸給拖尾符號(hào)標(biāo)記狀態(tài)機(jī)跳轉(zhuǎn)控制模塊以及拖尾符號(hào)標(biāo)記解碼模塊,并進(jìn)行拖尾符號(hào)標(biāo)記解碼。較佳地,作為一種可實(shí)施方式,所述步驟SlOO中,所述設(shè)置旁路電路單元,還包括如下步驟步驟SllO',設(shè)置連接幅值前綴解碼模塊和幅值后綴解碼模塊的第二旁路模塊電路單元;
所述步驟S200中,控制解碼參數(shù)傳輸,包括如下步驟步驟S210',在幅值前綴解碼狀態(tài)下,CAVLC控制模塊控制將幅值前綴模塊解碼得到的幅值前綴(level_prefix)傳輸給幅值前綴(level_prefix)寄存器的同時(shí),控制將幅值前綴(level_prefix)通過(guò)第二旁路模塊電路單元傳輸給幅值后綴狀態(tài)機(jī)跳轉(zhuǎn)控制模塊以及幅值后綴解碼模塊,并進(jìn)行幅值后綴解碼。更佳地,作為一種可實(shí)施方式,本發(fā)明實(shí)施例的實(shí)現(xiàn)H. 264的CAVLC的熵解碼方法,所述步驟Sioo中,所述設(shè)置旁路電路單元,還包括如下步驟步驟S110",設(shè)置連接總零數(shù)模塊和前游程模塊的第三旁路模塊電路單元;所述步驟S200中,控制解碼參數(shù)傳輸,還包括如下步驟步驟S210 ",在總零數(shù)解碼狀態(tài)下,CAVLC控制模塊控制解碼總零數(shù)模塊解碼得到的總零數(shù)傳輸給總零數(shù)寄存器的同時(shí),控制將總零數(shù)通過(guò)第三旁路模塊電路單元傳輸給前游程狀態(tài)機(jī)跳轉(zhuǎn)控制模塊以及前游程解碼模塊,并進(jìn)行前游程解碼。應(yīng)當(dāng)說(shuō)明的是,本發(fā)明實(shí)施例的實(shí)現(xiàn)H. 264的CAVLC的熵解碼方法,所述步驟SI 10或/和步驟SllO'或/和步驟S110",可以單獨(dú)或者組合實(shí)現(xiàn)本發(fā)明實(shí)施例的步驟SlOO而實(shí)施實(shí)現(xiàn);相應(yīng)地,所述步驟S210或/和步驟S210'或/和步驟S210"相應(yīng)地單獨(dú)或者組合構(gòu)成本發(fā)明實(shí)施例的步驟S200而實(shí)施實(shí)現(xiàn)。下面詳細(xì)描述步驟S210解碼系數(shù)標(biāo)記解碼模塊和拖尾符號(hào)標(biāo)記解碼模塊解碼信息傳輸解碼的實(shí)現(xiàn)過(guò)程,具體地,所述步驟S210包括如下步驟步驟S211,控制將解碼系數(shù)標(biāo)記解碼模塊解碼得到的總的非零系數(shù)和拖尾系數(shù)傳輸給非零系數(shù)寄存器和拖尾系數(shù)寄存器的同時(shí),控制將總的非零系數(shù)和拖尾系數(shù)通過(guò)第一旁路模塊電路單元傳輸給拖尾符號(hào)標(biāo)記狀態(tài)機(jī)跳轉(zhuǎn)控制模塊以及拖尾符號(hào)標(biāo)記解碼模塊;如圖2,對(duì)于解碼系數(shù)標(biāo)記解碼模塊,根據(jù)H. 264標(biāo)準(zhǔn),輸入為碼流以及NC值,根據(jù)H264標(biāo)準(zhǔn)中的Coeff_taken解碼表可以得到解出來(lái)的解碼系數(shù)標(biāo)記(coeff_token)的兩部分-非零系數(shù)(TotalcoefT)和拖尾系數(shù)(TrailingOnes)。通過(guò)第一控制模塊控制,這兩部分分別送往非零系數(shù)(Totalcoeff)和拖尾系數(shù)(TrailingOnes)寄存器的同時(shí),通過(guò)第一旁路模塊電路單元傳輸給拖尾符號(hào)標(biāo)記解碼模塊和拖尾符號(hào)標(biāo)記狀態(tài)機(jī)跳轉(zhuǎn)控制模塊,如圖3所示。步驟S212,拖尾符號(hào)標(biāo)記狀態(tài)機(jī)跳轉(zhuǎn)控制模塊首先判斷第一旁路模塊電路單元傳輸來(lái)的非零系數(shù)的值是否大于0,以及拖尾系數(shù)的值是否大于0,根據(jù)判斷結(jié)果決定是否進(jìn)入解碼拖尾符號(hào)標(biāo)記狀態(tài);
如果非零系數(shù)或拖尾系數(shù)小于0,直接跳過(guò)拖尾符號(hào)標(biāo)記解碼狀態(tài);如果非零系數(shù)和拖尾系數(shù)都大于0,則拖尾符號(hào)標(biāo)記狀態(tài)機(jī)跳轉(zhuǎn)控制模塊控制拖尾符號(hào)標(biāo)記解碼模塊進(jìn)入拖尾符號(hào)標(biāo)記解碼狀態(tài),啟動(dòng)拖尾符號(hào)標(biāo)記解碼模塊的解碼工作。當(dāng)拖尾符號(hào)標(biāo)記狀態(tài)機(jī)跳轉(zhuǎn)控制模塊接收第一旁路模塊電路單元傳輸來(lái)的非零系數(shù)(TotalcoefT)和拖尾系數(shù)(TrailingOnes),如圖3所述,拖尾符號(hào)標(biāo)記狀態(tài)機(jī)跳轉(zhuǎn)控制模塊首先判斷第一旁路模塊電路單元傳輸來(lái)的非零系數(shù)(TotalcoefT)的值是否大于0,以及拖尾系數(shù)(TrailingOnes)的值是否大于0,根據(jù)判斷結(jié)果決定是否進(jìn)入解·碼拖尾符號(hào)標(biāo)記(trailing_ones_sign_flag)狀態(tài)如果非零系數(shù)(TotalcoefT)或拖尾系數(shù)(TrailingOnes)小于0,直接跳過(guò)拖尾符號(hào)標(biāo)記解碼狀態(tài);如果非零系數(shù)(TotalCoefT)和拖尾系數(shù)(TrailingOnes)都大于0,則拖尾符號(hào)標(biāo)記狀態(tài)機(jī)跳轉(zhuǎn)控制模塊控制拖尾符號(hào)標(biāo)記解碼模塊進(jìn)入拖尾符號(hào)標(biāo)記(trailing_ones_sign_flag)解碼狀態(tài),啟動(dòng)拖尾符號(hào)標(biāo)記解碼模塊的解碼工作。步驟S213,進(jìn)入拖尾符號(hào)標(biāo)記解碼狀態(tài)后,拖尾符號(hào)標(biāo)記解碼模塊開(kāi)始拖尾符號(hào)標(biāo)記解碼工作,同時(shí),拖尾拖尾符號(hào)標(biāo)記狀態(tài)機(jī)跳轉(zhuǎn)控制模塊監(jiān)測(cè)拖尾符號(hào)標(biāo)記解碼模塊的結(jié)束信號(hào)是否有效;如果結(jié)束信號(hào)有效的話(huà),拖尾符號(hào)標(biāo)記狀態(tài)機(jī)跳轉(zhuǎn)控制模塊控制拖尾符號(hào)標(biāo)記解碼結(jié)束,跳出拖尾符號(hào)標(biāo)記解碼狀態(tài)。當(dāng)拖尾符號(hào)標(biāo)記狀態(tài)機(jī)跳轉(zhuǎn)控制模塊控制進(jìn)入拖尾符號(hào)標(biāo)記解碼狀態(tài)后,拖尾符號(hào)標(biāo)記解碼模塊開(kāi)始拖尾符號(hào)標(biāo)記解碼工作,同時(shí),拖尾拖尾符號(hào)標(biāo)記狀態(tài)機(jī)跳轉(zhuǎn)控制模塊監(jiān)測(cè)拖尾符號(hào)標(biāo)記解碼模塊的結(jié)束信號(hào)是否有效;如果結(jié)束信號(hào)有效的話(huà),拖尾符號(hào)標(biāo)記狀態(tài)機(jī)跳轉(zhuǎn)控制模塊控制拖尾符號(hào)標(biāo)記解碼結(jié)束,跳出拖尾符號(hào)標(biāo)記解碼狀態(tài),如圖4所示。本發(fā)明實(shí)施例中的拖尾符號(hào)標(biāo)記解碼模塊進(jìn)行拖尾符號(hào)標(biāo)記解碼工作,是一種現(xiàn)有技術(shù),因此,在本發(fā)明實(shí)施例中不再詳細(xì)描述。作為一種可實(shí)施方式,所述步驟S213包括下列步驟步驟S2131,在拖尾符號(hào)標(biāo)記解碼模塊解碼的第一個(gè)解碼周期,即解碼第一個(gè)拖尾符號(hào)標(biāo)記時(shí),利用第一旁路模塊電路單元傳輸來(lái)的拖尾系數(shù)與拖尾系數(shù)解碼計(jì)數(shù)器中的值進(jìn)行比較,判斷拖尾符號(hào)標(biāo)記解碼狀態(tài)是否結(jié)束;倘若相等,則拖尾符號(hào)標(biāo)記解碼狀態(tài)結(jié)束信號(hào)有效,拖尾符號(hào)標(biāo)記解碼結(jié)束,在拖尾符號(hào)標(biāo)記狀態(tài)機(jī)跳轉(zhuǎn)控制模塊控制下跳出拖尾符號(hào)標(biāo)記解碼狀態(tài);否則,進(jìn)入步驟S2132第二個(gè)解碼周期;作為一種可實(shí)施方式,拖尾符號(hào)標(biāo)記解碼模塊包括拖尾系數(shù)解碼計(jì)數(shù)器53,用于計(jì)數(shù)解碼了多少個(gè)拖尾符號(hào)標(biāo)記,當(dāng)解碼的拖尾符號(hào)標(biāo)記數(shù)等于第一旁路模塊電路單元傳輸來(lái)的拖尾系數(shù)時(shí),拖尾符號(hào)標(biāo)記解碼模塊的結(jié)束信號(hào)有效。本發(fā)明實(shí)施例中,在拖尾符號(hào)標(biāo)記解碼模塊解碼的第一個(gè)解碼周期,即解碼第一個(gè)拖尾符號(hào)標(biāo)記時(shí),判斷拖尾符號(hào)標(biāo)記(trailing-ones-sign-flag)解碼狀態(tài)是否結(jié)束的拖尾系數(shù)TrailingOnes是用第一旁路模塊電路單元送來(lái)的(此時(shí)TrailingOnes寄存器里的值還沒(méi)更新)。由于判斷拖尾符號(hào)標(biāo)記解碼狀態(tài)是否結(jié)束是由所解出來(lái)的拖尾符號(hào)標(biāo)記個(gè)數(shù)是否等于拖尾系數(shù)(TrailingOnes)的值決定,而對(duì)于拖尾符號(hào)標(biāo)記解碼模塊解碼的第一個(gè)解碼周期,由于此時(shí)系數(shù)標(biāo)記解碼階段剛完成完,非零系數(shù)寄存器非零系數(shù)(TotalCoeff)和拖尾系數(shù)(TrailingOnes)寄存器更新還沒(méi)生效非零系數(shù)解碼模塊解出來(lái)的值要下一個(gè)解碼周期才能寫(xiě)入到非零系數(shù)(TotalCoefT)和拖尾系數(shù)(TrailingOnes)寄存器并作為輸入提供給拖尾符號(hào)標(biāo)記解碼模塊使用。本發(fā)明實(shí)施例中,在第一個(gè)解碼周期用第一旁路模塊電路單元傳輸來(lái)的非零系數(shù)(TotalCoeff)和拖尾系數(shù)(TrailingOnes)的值啟動(dòng)拖尾符號(hào)標(biāo)記解碼模塊開(kāi)始解碼并比較判斷;在拖尾符號(hào)標(biāo)記解碼的第一解 碼周期,利用第一旁路模塊電路單元傳輸來(lái)的拖尾系數(shù)與拖尾符號(hào)標(biāo)記解碼模塊中的拖尾系數(shù)解碼計(jì)數(shù)器的值進(jìn)行比較,倘若相等,則拖尾符號(hào)標(biāo)記解碼狀態(tài)結(jié)束信號(hào)有效,拖尾符號(hào)標(biāo)記解碼結(jié)束,跳出拖尾符號(hào)標(biāo)記解碼狀態(tài);否貝U,進(jìn)入步驟S2132的第二個(gè)解碼周期。這樣,本發(fā)明實(shí)施例的熵解碼器在拖尾符號(hào)標(biāo)記解碼過(guò)程中,不需要象現(xiàn)有技術(shù)中的解碼機(jī)制那樣,需要等拖尾系數(shù)(TrailingOnes)寄存器的值以及非零系數(shù)(TotalCoeff)寄存器的值更新生效后,也即等一個(gè)解碼周期才開(kāi)始解碼拖尾符號(hào)標(biāo)記,力口快解碼速度。從而使得熵解碼器在熵解碼的過(guò)程中,減少解碼等待,加快解碼速度。步驟S2132,從第二個(gè)解碼周期開(kāi)始,拖尾符號(hào)標(biāo)記解碼模塊從非零系數(shù)寄存器和拖尾系數(shù)寄存器讀取非零系數(shù)(TotalCoefT)和拖尾系數(shù)(TrailingOnes)進(jìn)入拖尾符號(hào)標(biāo)記解碼模塊,循環(huán)進(jìn)行拖尾符號(hào)標(biāo)記解碼;并利用從拖尾系數(shù)寄存器讀取到的拖尾系數(shù)的值與拖尾系數(shù)解碼計(jì)數(shù)器中的值進(jìn)行比較,判斷拖尾符號(hào)標(biāo)記解碼狀態(tài)是否結(jié)束;倘若相等,則拖尾符號(hào)標(biāo)記解碼狀態(tài)結(jié)束信號(hào)有效,拖尾符號(hào)標(biāo)記解碼結(jié)束,跳出拖尾符號(hào)標(biāo)記解碼狀態(tài);否則,繼續(xù)下一解碼周期循環(huán)解碼。待拖尾符號(hào)標(biāo)記狀態(tài)機(jī)跳轉(zhuǎn)控制模塊控制進(jìn)入拖尾符號(hào)標(biāo)記解碼狀態(tài)的下一解碼周期(拖尾符號(hào)標(biāo)記解碼模塊的第二個(gè)解碼周期開(kāi)始),由拖尾符號(hào)標(biāo)記解碼模塊從非零系數(shù)寄存器和拖尾系數(shù)寄存器讀取非零系數(shù)(TotalCoeff)和拖尾系數(shù)(TrailingOnes)進(jìn)入拖尾符號(hào)標(biāo)記解碼模塊,從而拖尾符號(hào)標(biāo)記解碼模塊在第二個(gè)解碼周期開(kāi)始,采用非零系數(shù)(TotalCoeff)和拖尾系數(shù)(TrailingOnes)寄存器中的值進(jìn)行拖尾符號(hào)標(biāo)記解碼直至完成所有拖尾符號(hào)標(biāo)記解碼的周期。而從第二解碼周期開(kāi)始,利用在拖尾符號(hào)標(biāo)記解碼狀態(tài)中從拖尾系數(shù)(TrailingOnes)寄存器讀取到的拖尾系數(shù)的值與拖尾系數(shù)解碼計(jì)數(shù)器中的值進(jìn)行比較,倘若相等,則拖尾符號(hào)標(biāo)記解碼狀態(tài)結(jié)束信號(hào)有效,拖尾符號(hào)標(biāo)記解碼結(jié)束,跳出拖尾符號(hào)標(biāo)記解碼狀態(tài);否則,繼續(xù)下一個(gè)解碼周期循環(huán)。作為一種可實(shí)施方式,如圖4所示,可采用二選一選擇電路單元51實(shí)現(xiàn)從旁路或者拖尾系數(shù)寄存器中選擇拖尾系數(shù)的值,以及通過(guò)比較器52實(shí)現(xiàn)拖尾系數(shù)的值與拖尾系數(shù)解碼計(jì)數(shù)器中的值的比較。下面詳細(xì)描述步驟S210'幅值前綴解碼模塊和幅值后綴解碼模塊解碼信息傳輸解碼實(shí)現(xiàn)過(guò)程。由于本發(fā)明實(shí)施例中,第二旁路模塊電路單元和第二控制模塊信息傳輸并解碼的實(shí)現(xiàn)過(guò)程與第一旁路模塊電路單元和第一控制模塊的信息傳輸并解碼的實(shí)現(xiàn)過(guò)程類(lèi)似,因此,在此僅詳細(xì)描述第二旁路模塊電路單元和第二控制模塊信息傳輸過(guò)程,并且對(duì)和H. 264標(biāo)準(zhǔn)一致的解碼過(guò)程不再贅述,只描述不同之處。具體地,所述步驟S210'包括如下步驟步驟S211',在幅值前綴解碼狀態(tài)下,控制將幅值前綴模塊解碼得到的幅值前綴傳輸給幅值前綴寄存器的同時(shí),控制將幅值前綴通過(guò)第二旁路模塊電路單元傳輸給幅值后綴狀態(tài)機(jī)跳轉(zhuǎn)控制模塊以及幅值后綴解碼模塊;幅值前綴解碼模塊解碼后得到的幅值前綴(具體解碼過(guò)程按照H264標(biāo)準(zhǔn)即可)通過(guò)第二控制模塊控制傳輸?shù)椒登熬Y寄存器的同時(shí),本發(fā)明實(shí)施例中,在第二控制模塊的控制下,通過(guò)第二旁路模塊電路單元傳輸給下一級(jí)的幅值后綴狀態(tài)機(jī)跳轉(zhuǎn)控制模塊以及幅值后綴解碼模塊。步驟S212',根據(jù)第二旁路模塊電路單元傳輸來(lái)的幅值前綴,以及中間變量suffixLength是否符合條件判斷是否進(jìn)入幅值后綴狀態(tài);當(dāng)sufTixLenght大于0或者幅值前綴大于等于14時(shí),決定進(jìn)入幅值后綴解碼狀態(tài),則幅值后綴狀態(tài)機(jī)跳轉(zhuǎn)控制模塊控制進(jìn)入幅值后綴解碼狀態(tài),啟動(dòng)幅值后綴解碼模塊的解碼工作,進(jìn)行幅值后綴解碼;否則,直接跳過(guò)幅值后綴解碼狀態(tài),進(jìn)入下一級(jí)解碼狀態(tài),即總零數(shù)解碼狀態(tài)。
幅值后綴狀態(tài)機(jī)跳控制模塊接收第二旁路模塊電路單元傳輸來(lái)的信息并解碼得到幅值前綴后,根據(jù)第二旁路模塊電路單元傳輸來(lái)的幅值前綴及中間變量suffixLength(suffixLenght 是由 TotalCoeff, TrailingOnes 以及解碼的系數(shù)共同決定,具體計(jì)算方法由于其和標(biāo)準(zhǔn)一致,在此不贅述)是否符合條件,即suffixLenght大于0或者幅值如綴(level_prefix)大于等于14,決定是否進(jìn)入解碼幅值后綴狀態(tài)如果不符合,直接跳過(guò)幅值后綴解碼狀態(tài);如果符合,則幅值后綴狀態(tài)機(jī)跳轉(zhuǎn)控制模塊控制進(jìn)入幅值后綴解碼狀態(tài),啟動(dòng)幅值后綴解碼模塊的解碼工作。由于每個(gè)幅值前綴后面僅僅跟著一個(gè)幅值后綴,因此,解碼完一個(gè)幅值后綴后,幅值后綴解碼狀態(tài)結(jié)束標(biāo)記即生效,解碼幅值后綴狀態(tài)結(jié)束。本發(fā)明實(shí)施例中,幅值后綴解碼模塊解碼幅值后綴的過(guò)程,是一種現(xiàn)有技術(shù),因此,在本發(fā)明實(shí)施例中不再詳細(xì)描述。同樣地,本發(fā)明實(shí)施例的熵解碼器在幅值后綴解碼過(guò)程中,不需要象現(xiàn)有技術(shù)中的解碼機(jī)制那樣,需要等幅值前綴寄存器的值更新生效后,也即等一個(gè)解碼周期才開(kāi)始幅值后綴解碼,從而使得熵解碼器在熵解碼的過(guò)程中,減少解碼等待,加快解碼速度。下面詳細(xì)描述步驟S210"總零數(shù)解碼模塊和前游程解碼模塊信息傳輸解碼實(shí)現(xiàn)過(guò)程。由于本發(fā)明實(shí)施例中,第三旁路模塊電路單元和第三控制模塊信息傳輸并解碼的實(shí)現(xiàn)過(guò)程與第一旁路模塊電路單元和第一控制模塊的信息傳輸并解碼的實(shí)現(xiàn)過(guò)程類(lèi)似,因此,在此僅詳細(xì)描述第三旁路模塊電路單元和第三控制模塊信息傳輸過(guò)程,并且對(duì)和H. 264標(biāo)準(zhǔn)一致的解碼過(guò)程不再贅述,只描述不同之處。具體地,步驟S210"包括如下步驟步驟S211 ",在總零數(shù)解碼狀態(tài)下,控制解碼總零數(shù)模塊解碼得到的總零數(shù)傳輸給總零數(shù)寄存器的同時(shí),控制將總零數(shù)通過(guò)第三旁路模塊電路單元傳輸給前游程狀態(tài)機(jī)跳轉(zhuǎn)控制模塊以及前游程解碼模塊;總零數(shù)解碼模塊解碼后得到的總零數(shù)(具體解碼過(guò)程按照H264標(biāo)準(zhǔn)即可)通過(guò)第三控制模塊控制傳輸?shù)?總零數(shù)寄存器的同時(shí),本發(fā)明實(shí)施例中,在第三控制模塊的控制下,通過(guò)第三旁路模塊電路單元傳輸給下一級(jí)的前游程狀態(tài)機(jī)跳轉(zhuǎn)控制模塊以及前游程解碼模塊。步驟S212",前游程狀態(tài)機(jī)跳控制模塊根據(jù)非零系數(shù)的個(gè)數(shù)以及第三旁路模塊電路單元傳輸來(lái)的總零數(shù)是否符合條件,即根據(jù)非零系數(shù)的個(gè)數(shù)大于0且總零數(shù)大于0,決定是否進(jìn)入解碼前游程狀態(tài);如果不符合,直接跳過(guò)前游程解碼狀態(tài);如果符合,則解碼狀態(tài)機(jī)進(jìn)入前游程解碼狀態(tài),啟動(dòng)前游程解碼模塊的解碼工作;前游程狀態(tài)機(jī)跳控制模塊接收第三旁路模塊電路單元傳輸來(lái)的信息并解碼得到總零數(shù)后,根據(jù)非零系數(shù)的個(gè)數(shù)TotalCoeff以及第三旁路模塊電路單元傳輸來(lái)的總零數(shù)是否符合條件(totalCoeff大于0且總零數(shù)大于0)決定是否進(jìn)入解碼前游程狀態(tài)如果不符合,直接跳過(guò)前游程解碼狀態(tài);如果符合,則解碼狀態(tài)機(jī)進(jìn)入前游程解碼狀態(tài),啟動(dòng)前游程解碼模塊的解碼工作。步驟S213 ",進(jìn)入前游程解碼狀態(tài)后,前游程解碼模塊開(kāi)始前游程解碼工作,同時(shí),前游程解碼狀態(tài)機(jī)跳轉(zhuǎn)控制模塊監(jiān)測(cè)前游程解碼模塊的結(jié)束信號(hào)是否有效;如果結(jié)束信號(hào)有效的話(huà),前游程解碼狀態(tài)機(jī)跳轉(zhuǎn)控制模塊控制前游程解碼結(jié)束,跳出前游程解碼狀態(tài)。本發(fā)明實(shí)施例中的前游程解碼模塊進(jìn)行前游程解碼工作,是一種依據(jù)H264標(biāo)準(zhǔn)的現(xiàn)有技術(shù),因此,在本發(fā)明實(shí)施例中不再一一詳細(xì)描述。作為一種可實(shí)施方式,所述步驟S213"包括下列步驟步驟S2131",在前游程解碼模塊解碼的第一個(gè)解碼周期,即解碼第一個(gè)前游程時(shí),利用第三旁路模塊電路單元傳輸來(lái)的總零數(shù)與前游程解碼計(jì)數(shù)器中的值進(jìn)行比較,判斷前游程解碼狀態(tài)是否結(jié)束;倘若相等,則前游程解碼狀態(tài)結(jié)束信號(hào)有效,前游程解碼結(jié)束,跳出前游程解碼狀態(tài);否則,進(jìn)入步驟S2132"第二個(gè)解碼周期;和解碼拖尾符號(hào)標(biāo)記解碼模塊類(lèi)似,作為一種可實(shí)施方式,本發(fā)明實(shí)施例的前游程解碼模塊包括一前游程解碼計(jì)數(shù)器,和拖尾系數(shù)解碼計(jì)數(shù)器不同的是,這里計(jì)數(shù)的不是解碼了多少個(gè)前游程,而是用于計(jì)數(shù)解碼了的前游程含有多少個(gè)0。在前游程解碼過(guò)程中,當(dāng)解碼的前游程里面零的數(shù)目等于總零數(shù)時(shí),前游程解碼狀態(tài)結(jié)束信號(hào)有效,前游程解碼結(jié)束,跳出前游程解碼狀態(tài)。而每解碼一個(gè)前游程,前游程解碼計(jì)數(shù)器都加上前游程的值(即有多少個(gè)0)。由于判斷前游程解碼狀態(tài)是否結(jié)束是由所解出來(lái)的前游程的值(即有多少個(gè)0)是否等于總零數(shù)決定。而對(duì)于前游程解碼模塊解碼過(guò)程的第一個(gè)解碼周期,由于此時(shí)同時(shí)還處于總零數(shù)解碼周期,總零數(shù)解碼模塊解出來(lái)的值要下一個(gè)解碼周期才能寫(xiě)入到總零數(shù)寄存器并供前游程解碼模塊使用。因此,本發(fā)明實(shí)施例名,判斷前游程解碼狀態(tài)是否結(jié)束的總零數(shù)是用第三旁路模塊電路單元送來(lái)的(此時(shí)總零數(shù)寄存器里的值還沒(méi)更新)。即在前游程解碼模塊解碼的第一解碼周期,將前游程解碼計(jì)數(shù)器中的值和第三旁路模塊電路單元送來(lái)的總零數(shù)進(jìn)行比較;如果相等,則前游程解碼狀態(tài)結(jié)束信號(hào)有效,前游程解碼結(jié)束,跳出前游程解碼狀態(tài);否則,進(jìn)入步驟S2132"第二個(gè)解碼周期;步驟S2132",從第二個(gè)解碼周期開(kāi)始,前游程解碼模塊從總零數(shù)寄存器讀取總零數(shù)進(jìn)入前游程解碼模塊,循環(huán)進(jìn)行前游程解碼;并利用從總零數(shù)寄存器讀取到的總零數(shù)的值與前游程解碼計(jì)數(shù)器中的值進(jìn)行比較,判斷前游程解碼狀態(tài)是否結(jié)束;倘若相等,則前游程解碼狀態(tài)結(jié)束信號(hào)有效,前游程解碼結(jié)束,跳出前游程解碼狀態(tài);否則,繼續(xù)下一解碼周期循環(huán)解碼。從解碼第二個(gè)前游程開(kāi)始(此時(shí)總零數(shù)大于2),即前游程解碼的第二個(gè)解碼周期,用于判斷前游程狀態(tài)是否結(jié)束的總零數(shù)則來(lái)自總零數(shù)寄存器(此時(shí)寄存器的值已經(jīng)更新生效,而旁路的值已經(jīng)失效)。也即計(jì)數(shù)器和總零數(shù)寄存器中的值進(jìn)行比較,倘若相等,則前游程解碼狀態(tài)結(jié)束信號(hào)有效,前游程解碼結(jié)束,跳出前游程解碼狀態(tài)。
本發(fā)明實(shí)施例的實(shí)現(xiàn)H. 264的CAVLC的熵解碼器總零數(shù)解碼模塊解碼出來(lái)的參數(shù)在存在相應(yīng)寄存器的同時(shí),也通過(guò)第三旁路模塊電路單元傳給下一級(jí)的前游程解碼模塊,從而減少解碼等待,加快解碼速度。本發(fā)明實(shí)施例的實(shí)現(xiàn)H. 264的CAVLC的熵解碼器,通過(guò)在熵解碼大規(guī)模集成電路的解碼模塊上增加旁路電路邏輯模塊,盡量減少前后解碼依賴(lài)所造成的等待,高效地提高了熵解碼的速度,有效地提高了 CAVLC解碼系統(tǒng),甚至對(duì)整個(gè)H. 264解碼系統(tǒng)的解碼速度。最后應(yīng)當(dāng)說(shuō)明的是,很顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型。
權(quán)利要求
1.一種實(shí)現(xiàn)a 264的CAVLC的熵解碼器,包括解碼系數(shù)標(biāo)記解碼模塊、拖尾符號(hào)標(biāo)記解碼模塊、幅值解碼模塊、總零數(shù)解碼模塊、前游程解碼模塊,CAVLC控制模塊和寄存器單元; 其中,幅值解碼模塊包括幅值前綴解碼模塊,幅值后綴解碼模塊; CAVLC控制模塊,包括系數(shù)標(biāo)記解碼模塊跳轉(zhuǎn)控制模塊,拖尾符號(hào)標(biāo)記狀態(tài)機(jī)跳轉(zhuǎn)控制模塊,幅值前綴狀態(tài)機(jī)跳轉(zhuǎn)控制模塊,幅值后綴狀態(tài)機(jī)跳轉(zhuǎn)控制模塊,總零數(shù)狀態(tài)機(jī)跳轉(zhuǎn)控制模塊,前游程狀態(tài)機(jī)跳轉(zhuǎn)控制模塊; 寄存器單元,包括非零系數(shù)寄存器,拖尾系數(shù)寄存器,拖尾系數(shù)標(biāo)記寄存器,幅值前綴寄存器,幅值后綴寄存器,總零數(shù)寄存器,前游程寄存器; 其特征在于 還包括旁路模塊電路單元,為連接相鄰兩級(jí)解碼模塊之間的旁路電路單元,用于將上一級(jí)解碼模塊所獲得的解碼參數(shù)從旁路電路單元傳輸給下一級(jí)解碼狀態(tài)機(jī)跳轉(zhuǎn)控制模塊和下一級(jí)解碼模塊; 所述CAVLC控制模塊,還包括參數(shù)傳輸控制模塊,用于在解碼狀態(tài)下,控制將上一級(jí)解碼模塊所獲得的解碼參數(shù)傳輸給相應(yīng)解碼參數(shù)寄存器的同時(shí),控制將相應(yīng)解碼參數(shù)通過(guò)旁路模塊電路單元傳輸給下一級(jí)解碼狀態(tài)機(jī)跳轉(zhuǎn)控制模塊和下一級(jí)解碼模塊。
2.根據(jù)權(quán)利要求I所述的實(shí)現(xiàn)H.264的CAVLC的熵解碼器,其特征在于,所述旁路模塊電路單元包括第一旁路模塊電路單元;所述第一旁路模塊電路單元為連接解碼系數(shù)標(biāo)記解碼模塊和拖尾符號(hào)標(biāo)記解碼模塊的旁路電路單元,用于將解碼系數(shù)標(biāo)記解碼模塊解碼得到的總的非零系數(shù)和拖尾系數(shù)傳輸給拖尾符號(hào)標(biāo)記狀態(tài)機(jī)跳轉(zhuǎn)控制模塊以及拖尾符號(hào)標(biāo)記解碼模塊; 所述參數(shù)傳輸控制模塊包括第一控制模塊,用于在解碼系數(shù)標(biāo)記解碼狀態(tài)下,控制將解碼系數(shù)標(biāo)記解碼模塊解碼得到的總的非零系數(shù)和拖尾系數(shù)傳輸給非零系數(shù)寄存器和拖尾系數(shù)寄存器的同時(shí),控制將總的非零系數(shù)和拖尾系數(shù)通過(guò)第一旁路模塊電路單元傳輸給拖尾符號(hào)標(biāo)記狀態(tài)機(jī)跳轉(zhuǎn)控制模塊以及拖尾符號(hào)標(biāo)記解碼模塊。
3.根據(jù)權(quán)利要求I或2所述的實(shí)現(xiàn)H.264的CAVLC的熵解碼器,其特征在于,所述旁路模塊電路單元還包括第二旁路模塊電路單元;所述第二旁路模塊電路單元為連接幅值前綴解碼模塊和幅值后綴解碼模塊的旁路電路單元,用于將幅值前綴模塊解碼得到的幅值前綴傳輸給幅值后綴狀態(tài)機(jī)跳轉(zhuǎn)控制模塊以及幅值模塊的幅值后綴解碼模塊; 所述參數(shù)傳輸控制模塊還包括第二控制模塊,用于在幅值前綴解碼狀態(tài)下,控制將幅值前綴模塊解碼得到的幅值前綴傳輸給幅值前綴寄存器的同時(shí),控制將幅值前綴通過(guò)第二旁路模塊電路單元傳輸給幅值后綴狀態(tài)機(jī)跳轉(zhuǎn)控制模塊以及幅值后綴解碼模塊。
4.根據(jù)權(quán)利要求I或2或3所述的實(shí)現(xiàn)H.264的CAVLC的熵解碼器,其特征在于,所述旁路模塊電路單元還包括第三旁路模塊電路單元;所述第三旁路模塊電路單元為連接總零數(shù)模塊和前游程模塊的旁路電路單元,用于將總零數(shù)模塊解碼得到的最后一個(gè)非零系數(shù)前零的個(gè)數(shù)傳輸給前游程狀態(tài)機(jī)控制模塊和前游程解碼模塊; 所述參數(shù)傳輸控制模塊還包括第三控制模塊,用于在總零數(shù)解碼狀態(tài)下,控制解碼總零數(shù)模塊解碼得到的總零數(shù)傳輸給總零數(shù)寄存器的同時(shí),控制將總零數(shù)通過(guò)第三旁路模塊電路單元傳輸給前游程狀態(tài)機(jī)跳轉(zhuǎn)控制模塊以及前游程解碼模塊。
5.一種實(shí)現(xiàn)H. 264的CAVLC的熵解碼方法,其特征在于,包括如下步驟設(shè)置連接相鄰兩級(jí)解碼模塊之間的旁路電路單元; 在解碼狀態(tài)下,控制將上一級(jí)解碼模塊所獲得的解碼參數(shù)傳輸給相應(yīng)解碼參數(shù)寄存器的同時(shí),控制將相應(yīng)解碼參數(shù)通過(guò)旁路模塊電路單元傳輸給下一級(jí)解碼狀態(tài)機(jī)跳轉(zhuǎn)控制模塊和下一級(jí)解碼模塊。
6.根據(jù)權(quán)利要求5所述的實(shí)現(xiàn)H.264的CAVLC的熵解碼方法,其特征在于, 所述設(shè)置旁路電路單元,包括如下步驟 設(shè)置連接解碼系數(shù)標(biāo)記解碼模塊和拖尾符號(hào)標(biāo)記解碼模塊的第一旁路模塊電路單元; 所述控制解碼參數(shù)傳輸,包括如下步驟 在解碼系數(shù)標(biāo)記解碼狀態(tài)下,CAVLC控制模塊控制將解碼系數(shù)標(biāo)記解碼模塊解碼得到的總的非零系數(shù)和拖尾系數(shù)傳輸給非零系數(shù)寄存器和拖尾系數(shù)寄存器的同時(shí),控制將總的非零系數(shù)和拖尾系數(shù)通過(guò)第一旁路模塊電路單元傳輸給拖尾符號(hào)標(biāo)記狀態(tài)機(jī)跳轉(zhuǎn)控制模塊以及拖尾符號(hào)標(biāo)記解碼模塊,并進(jìn)行拖尾符號(hào)標(biāo)記解碼。
7.根據(jù)權(quán)利要求5或6所述的實(shí)現(xiàn)H.264的CAVLC的熵解碼方法,其特征在于, 所述設(shè)置旁路電路單元,還包括如下步驟 設(shè)置連接幅值前綴解碼模塊和幅值后綴解碼模塊的第二旁路模塊電路單元; 所述控制解碼參數(shù)傳輸,還包括如下步驟 在幅值前綴解碼狀態(tài)下,CAVLC控制模塊控制將幅值前綴模塊解碼得到的幅值前綴傳輸給幅值前綴寄存器的同時(shí),控制將幅值前綴通過(guò)第二旁路模塊電路單元傳輸給幅值后綴狀態(tài)機(jī)跳轉(zhuǎn)控制模塊以及幅值后綴解碼模塊,并進(jìn)行幅值后綴解碼。
8.根據(jù)權(quán)利要求5或6或7所述的實(shí)現(xiàn)H.264的CAVLC的熵解碼方法,其特征在于, 所述設(shè)置旁路電路單元,還包括如下步驟 設(shè)置連接總零數(shù)模塊和前游程模塊的第三旁路模塊電路單元; 所述控制解碼參數(shù)傳輸,還包括如下步驟 在總零數(shù)解碼狀態(tài)下,CAVLC控制模塊控制解碼總零數(shù)模塊解碼得到的總零數(shù)傳輸給總零數(shù)寄存器的同時(shí),控制將總零數(shù)通過(guò)第三旁路模塊電路單元傳輸給前游程狀態(tài)機(jī)跳轉(zhuǎn)控制模塊以及前游程解碼模塊,并進(jìn)行前游程解碼。
9.根據(jù)權(quán)利要求6所述的實(shí)現(xiàn)H.264的CAVLC的熵解碼方法,其特征在于,所述控制并進(jìn)行拖尾符號(hào)標(biāo)記解碼,包括如下步驟 控制將解碼系數(shù)標(biāo)記解碼模塊解碼得到的總的非零系數(shù)和拖尾系數(shù)傳輸給非零系數(shù)寄存器和拖尾系數(shù)寄存器的同時(shí),控制將總的非零系數(shù)和拖尾系數(shù)通過(guò)第一旁路模塊電路單元傳輸給拖尾符號(hào)標(biāo)記狀態(tài)機(jī)跳轉(zhuǎn)控制模塊以及拖尾符號(hào)標(biāo)記解碼模塊; 拖尾符號(hào)標(biāo)記狀態(tài)機(jī)跳轉(zhuǎn)控制模塊首先判斷第一旁路模塊電路單元傳輸來(lái)的非零系數(shù)的值是否大于O,以及拖尾系數(shù)的值是否大于O,根據(jù)判斷結(jié)果決定是否進(jìn)入解碼拖尾符號(hào)標(biāo)記狀態(tài); 如果非零系數(shù)或拖尾系數(shù)小于O,直接跳過(guò)拖尾符號(hào)標(biāo)記解碼狀態(tài); 如果非零系數(shù)和拖尾系數(shù)都大于O,則拖尾符號(hào)標(biāo)記狀態(tài)機(jī)跳轉(zhuǎn)控制模塊控制拖尾符號(hào)標(biāo)記解碼模塊進(jìn)入拖尾符號(hào)標(biāo)記解碼狀態(tài),啟動(dòng)拖尾符號(hào)標(biāo)記解碼模塊的解碼工作; 進(jìn)入拖尾符號(hào)標(biāo)記解碼狀態(tài)后,拖尾符號(hào)標(biāo)記解碼模塊開(kāi)始拖尾符號(hào)標(biāo)記解碼工作,同時(shí),拖尾拖尾符號(hào)標(biāo)記狀態(tài)機(jī)跳轉(zhuǎn)控制模塊監(jiān)測(cè)拖尾符號(hào)標(biāo)記解碼模塊的結(jié)束信號(hào)是否有效;如果結(jié)束信號(hào)有效的話(huà),拖尾符號(hào)標(biāo)記狀態(tài)機(jī)跳轉(zhuǎn)控制模塊控制拖尾符號(hào)標(biāo)記解碼結(jié)束,跳出拖尾符號(hào)標(biāo)記解碼狀態(tài)。
10.根據(jù)權(quán)利要求9所述的實(shí)現(xiàn)H.264的CAVLC的熵解碼方法,其特征在于,所述控制拖尾符號(hào)標(biāo)記解碼狀態(tài),包括如下步驟 在拖尾符號(hào)標(biāo)記解碼模塊解碼的第一個(gè)解碼周期,即解碼第一個(gè)拖尾符號(hào)標(biāo)記時(shí),利用第一旁路模塊電路單元傳輸來(lái)的拖尾系數(shù)與拖尾系數(shù)解碼計(jì)數(shù)器中的值進(jìn)行比較,判斷拖尾符號(hào)標(biāo)記解碼狀態(tài)是否結(jié)束;倘若相等,則拖尾符號(hào)標(biāo)記解碼狀態(tài)結(jié)束信號(hào)有效,拖尾符號(hào)標(biāo)記解碼結(jié)束,跳出拖尾符號(hào)標(biāo)記解碼狀態(tài);否則,進(jìn)入第二個(gè)解碼周期; 從第二個(gè)解碼周期開(kāi)始,拖尾符號(hào)標(biāo)記解碼模塊從非零系數(shù)寄存器和拖尾系數(shù)寄存器讀取非零系數(shù)和拖尾系數(shù)進(jìn)入拖尾符號(hào)標(biāo)記解碼模塊,循環(huán)進(jìn)行拖尾符號(hào)標(biāo)記解碼;并利用從拖尾系數(shù)寄存器讀取到的拖尾系數(shù)的值與拖尾系數(shù)解碼計(jì)數(shù)器中的值進(jìn)行比較,判斷拖尾符號(hào)標(biāo)記解碼狀態(tài)是否結(jié)束;倘若相等,則拖尾符號(hào)標(biāo)記解碼狀態(tài)結(jié)束信號(hào)有效,拖尾符號(hào)標(biāo)記解碼結(jié)束,跳出拖尾符號(hào)標(biāo)記解碼狀態(tài);否則,繼續(xù)下一解碼周期循環(huán)解碼。
11.根據(jù)權(quán)利要求7所述的實(shí)現(xiàn)H.264的CAVLC的熵解碼方法,其特征在于,所述控制并進(jìn)行幅值后綴解碼,包括如下步驟 在幅值前綴解碼狀態(tài)下,控制將幅值前綴模塊解碼得到的幅值前綴傳輸給幅值前綴寄存器的同時(shí),控制將幅值前綴通過(guò)第二旁路模塊電路單元傳輸給幅值后綴狀態(tài)機(jī)跳轉(zhuǎn)控制模塊以及幅值后綴解碼模塊; 根據(jù)第二旁路模塊電路單元傳輸來(lái)的幅值前綴,以及中間變量suffixLength是否符合條件判斷是否進(jìn)入幅值后綴狀態(tài); 當(dāng)sufTixLenght大于0或者幅值前綴大于等于14時(shí),決定進(jìn)入幅值后綴解碼狀態(tài),則幅值后綴狀態(tài)機(jī)跳轉(zhuǎn)控制模塊控制進(jìn)入幅值后綴解碼狀態(tài),啟動(dòng)幅值后綴解碼模塊的解碼工作,進(jìn)行幅值后綴解碼;否則,直接跳過(guò)幅值后綴解碼狀態(tài),進(jìn)入下一級(jí)解碼狀態(tài),即總零數(shù)解碼狀態(tài)。
12.根據(jù)權(quán)利要求8所述的實(shí)現(xiàn)H.264的CAVLC的熵解碼方法,其特征在于,所述控制并進(jìn)行前游程解碼,包括如下步驟 在總零數(shù)解碼狀態(tài)下,控制解碼總零數(shù)模塊解碼得到的總零數(shù)傳輸給總零數(shù)寄存器的同時(shí),控制將總零數(shù)通過(guò)第三旁路模塊電路單元傳輸給前游程狀態(tài)機(jī)跳轉(zhuǎn)控制模塊以及前游程解碼模塊; 前游程狀態(tài)機(jī)跳控制模塊根據(jù)非零系數(shù)的個(gè)數(shù)以及第三旁路模塊電路單元傳輸來(lái)的總零數(shù)是否符合條件,即根據(jù)非零系數(shù)的個(gè)數(shù)大于0且總零數(shù)大于0,決定是否進(jìn)入解碼前游程狀態(tài); 如果不符合,直接跳過(guò)前游程解碼狀態(tài); 如果符合,則解碼狀態(tài)機(jī)進(jìn)入前游程解碼狀態(tài),啟動(dòng)前游程解碼模塊的解碼工作; 進(jìn)入前游程解碼狀態(tài)后,前游程解碼模塊開(kāi)始前游程解碼工作,同時(shí),前游程解碼狀態(tài)機(jī)跳轉(zhuǎn)控制模塊監(jiān)測(cè)前游程解碼模塊的結(jié)束信號(hào)是否有效;如果結(jié)束信號(hào)有效的話(huà),前游程解碼狀態(tài)機(jī)跳轉(zhuǎn)控制模塊控制前游程解碼結(jié)束,跳出前游程解碼狀態(tài)。
13.根據(jù)權(quán)利要求12所述的實(shí)現(xiàn)H.264的CAVLC的熵解碼方法,其特征在于,所述控制前游程解碼狀態(tài),包括如下步驟 在前游程解碼模塊解碼的第一個(gè)解碼周期,即解碼第一個(gè)前游程時(shí),利用第三旁路模塊電路單元傳輸來(lái)的總零數(shù)與前游程解碼計(jì)數(shù)器中的值進(jìn)行比較,判斷前游程解碼狀態(tài)是否結(jié)束;倘若相等,則前游程解碼狀態(tài)結(jié)束信號(hào)有效,前游程解碼結(jié)束,跳出前游程解碼狀態(tài);否則,進(jìn)入步驟F32第二個(gè)解碼周期; 前游程解碼模塊從總零數(shù)寄存器讀取總零數(shù)進(jìn)入前游程解碼模塊,從第二個(gè)解碼周期開(kāi)始,循環(huán)進(jìn)行前游程解碼;并利用從總零數(shù)寄存器讀取到的總零數(shù)的值與前游程解碼計(jì)數(shù)器中的值進(jìn)行比較,判斷前游程解碼狀態(tài)是否結(jié)束;倘若相等,則前游程解碼狀態(tài)結(jié)束信號(hào)有效,前游程解碼結(jié)束,跳出前游程解碼狀態(tài);否則,繼續(xù)下一解碼周期循環(huán)解碼。
全文摘要
本發(fā)明公開(kāi)一種實(shí)現(xiàn)H.264的CAVLC的熵解碼器和方法。該熵解碼器包括旁路模塊電路單元,為連接相鄰兩級(jí)解碼模塊之間的旁路電路單元,用于將上一級(jí)解碼模塊所獲得的解碼參數(shù)從旁路電路單元傳輸給下一級(jí)解碼狀態(tài)機(jī)跳轉(zhuǎn)控制模塊和下一級(jí)解碼模塊;CAVLC控制模塊還包括參數(shù)傳輸控制模塊,用于在解碼狀態(tài)下,控制將上一級(jí)解碼模塊所獲得的解碼參數(shù)傳輸給相應(yīng)解碼參數(shù)寄存器的同時(shí),控制將相應(yīng)解碼參數(shù)通過(guò)旁路模塊電路單元傳輸給下一級(jí)解碼狀態(tài)機(jī)跳轉(zhuǎn)控制模塊和下一級(jí)解碼模塊。其有效地提高了解碼速度。
文檔編號(hào)H04N7/26GK102710937SQ201210082890
公開(kāi)日2012年10月3日 申請(qǐng)日期2012年3月26日 優(yōu)先權(quán)日2011年6月2日
發(fā)明者劉道福, 李玲, 錢(qián)誠(chéng), 陳云霽 申請(qǐng)人:龍芯中科技術(shù)有限公司