專利名稱::一種基于查找表的變長碼解碼方法及設(shè)備的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及視頻解碼技術(shù),尤其是涉及一種通過簡單查找表方式實現(xiàn)可變長碼的解碼方法及設(shè)備。
背景技術(shù):
:哈夫曼(Huffman)變長編碼是根據(jù)字符出現(xiàn)的概率來構(gòu)造平均長度最短的編碼。它是一種變長的編碼。在編碼中,若各碼字長度嚴格按照碼字所對應(yīng)符號出現(xiàn)概率的大小的逆序排列,則編碼的平均長度是最小的。其中,碼字即為符號經(jīng)哈夫曼編碼后得到的編碼,其長度是因符號出現(xiàn)的概率而不同,所以說哈夫曼編碼是變長的編碼。哈夫曼樹又稱最優(yōu)二叉樹,是一種帶權(quán)路徑長度最短的二叉樹。所謂樹的帶權(quán)路徑長度,就是樹中所有的葉結(jié)點的權(quán)值乘上其到根結(jié)點的路徑長度(若根結(jié)點為0層,葉結(jié)點到根結(jié)點的路徑長度為葉結(jié)點的層數(shù))。樹的帶權(quán)路徑長度記為WPI^(WPLl+W2^2+W3化3+…+Wn承Ln),N個權(quán)值Wi(i^,2,…n)構(gòu)成一棵有N個葉結(jié)點的二叉樹,相應(yīng)的葉結(jié)點的路徑長度為Li(i^,2,…n)??梢宰C明哈夫曼樹的WPL是最小的。在視頻編解碼方案中,如MPEG-2協(xié)議,就使用了固定的哈夫曼樹作為編解碼參考。在碼表中,前綴相同,長度相同的碼字的解碼信息連續(xù)存儲,使用這一組碼字中最小碼字的地址減去最小碼字的最低4位,由此構(gòu)造出這組碼字的基地址;碼流經(jīng)過可變長解碼器時,首先使用前綴分析器查找分組信息,得到當前碼字的長度和偽基礎(chǔ)地址,然后使用累加器把整個碼字的最低4位和偽&出地址相加,獲得該碼字在碼表中的地址,從而獲得解碼信息,完成解碼。但是,目前的視頻解碼方案存在如下缺陷1、在解碼過程中,由于受限于移位寄存器的移位效率以及查表操作對于前綴分析模塊的依賴性,整個功能模塊工作效率不高,即使使用了表劃分機制,硬件資源利用率仍舊較低;2、在面對多路標清或多路高清碼流的高數(shù)據(jù)流量壓力下,由于沒有對占據(jù)較多資源的查找表進行復(fù)用,需要多個相同模塊并行工作,極大消耗硬件資源。
發(fā)明內(nèi)容本發(fā)明提出一種通過簡單查找表方式實現(xiàn)可變長碼解碼的方法,以解決現(xiàn)有視頻解碼效率較低,消耗硬件資源大的技術(shù)難題。為解決本發(fā)明的技術(shù)問題,本發(fā)明公開一種基于查找表的變長碼解碼方法,用于解碼多路視頻流數(shù)據(jù),包括a、根據(jù)給定的哈夫曼樹構(gòu)建查找表,并將該查找表擴展為每個元素均高位對齊、位數(shù)為Y位的等長碼表;b、將各路視頻數(shù)據(jù)碼流作為地址,對照所述等長碼表作尋址運算進行解碼,其中,第N路視頻數(shù)據(jù)碼流的解碼步驟包括bl、取出第N路視頻數(shù)據(jù)碼流的前Y位,以該Y位數(shù)據(jù)為地址對照所述等長碼表進行尋址運算,獲得該第N路視頻數(shù)據(jù)碼流第一碼字解碼數(shù)據(jù)和碼長LEN;b2、依次從第N路視頻碼流待解碼數(shù)據(jù)的高位中移位出為碼長LEN的位數(shù),并用后續(xù)碼流中的數(shù)據(jù)補足Y位,以其為地址對照所述等長碼表進行解碼。較優(yōu)的,所述步驟b中,還包括步驟在對每個碼字解碼前,將其從串行數(shù)據(jù)轉(zhuǎn)為并4亍凄t據(jù)。較優(yōu)的,所述等長碼表的結(jié)構(gòu)包括擴展為Y位的編碼、對應(yīng)的解碼、以及碼長LEN。較優(yōu)的,所述等長碼表中每個元素的位數(shù)Y為16。另外,本發(fā)明還公開一種基于查找表的變長碼解碼設(shè)備,用于解碼多路視頻流數(shù)據(jù),包括查找表單元,用于根據(jù)給定的哈夫曼樹構(gòu)建查找表,并將該查找表擴展為每個元素均高位對齊、位數(shù)為Y位的等長碼表;對應(yīng)^L頻數(shù)據(jù)碼流路數(shù)的多個解碼器,用于分別對該路^L頻數(shù)據(jù)碼流對照所述等長碼表作尋址運算進行解碼。其中,所述解碼器包括數(shù)據(jù)緩沖模塊;數(shù)據(jù)處理模塊,用于在對每個碼字解碼前,將其從串行數(shù)據(jù)轉(zhuǎn)為并行數(shù)據(jù),并存儲至所述數(shù)據(jù)緩沖模塊;解碼模塊,與所述數(shù)據(jù)處理模塊連接,用于取出該路視頻數(shù)據(jù)碼流的前Y位,以該Y位數(shù)據(jù)為地址對照所述等長碼表進行尋址運算,獲得該第N路^L頻數(shù)據(jù)碼流第一碼字解碼數(shù)據(jù)和碼長LEN,并依次從該路視頻碼流待解碼數(shù)據(jù)的高位中移位出為碼長LEN的位數(shù),并用后續(xù)碼流中的數(shù)據(jù)補足Y位,以其為地址對照所述等長碼表進行解碼。較優(yōu)的,所述等長碼表的結(jié)構(gòu)包括擴展為Y位的編碼、對應(yīng)的解碼、以及碼長LEN。較優(yōu)的,所述等長碼表中每個元素的位數(shù)Y為16。與現(xiàn)有技術(shù)相比,本發(fā)明具有如下有益效果1、由于本發(fā)明將查找表擴展成等長碼表,即可通過簡單的查表得到解碼數(shù)據(jù),大大簡化了解碼的過程,提高了解碼效率;2、本發(fā)明在對每路-見頻數(shù)據(jù)碼流解碼的過程中,對于每路—見頻數(shù)據(jù)碼流具有不同碼長時,采用后續(xù)數(shù)據(jù)將每個碼字擴展成對應(yīng)所述等長碼表中元素的長度,以簡化查表過程,因此,此過程復(fù)用了占較多資源的查找表,每路視頻數(shù)據(jù)碼流解碼所占資源大大降低,解碼能力僅取決于系統(tǒng)時鐘速度,極大提高解碼速度,完成高性能系統(tǒng)的解碼需求。圖l是本發(fā)明一個具體實施例的流程示意圖。圖2是本發(fā)明的解碼設(shè)備的結(jié)構(gòu)示意圖。具體實施方式本發(fā)明的構(gòu)思如下在對視頻流數(shù)據(jù)進行可變長解碼時,由于待解碼數(shù)據(jù)的長度并不唯一,因此,為實現(xiàn)高速解碼,本發(fā)明通過采用引入冗余位,將所有變長碼字延長到其最長碼字的長度后直接查表,以實現(xiàn)將原本需要多個時鐘周期才能完成的數(shù)據(jù)解碼在單個時鐘周期內(nèi)快速完成解碼。本發(fā)明尤其適用于對多路標清或多路高清視頻數(shù)據(jù)碼流的高數(shù)據(jù)流量壓力下的解碼。為描述方便,詳細描述應(yīng)用本發(fā)明實現(xiàn)單路視頻數(shù)據(jù)碼流的解碼過程,請參考圖1所示。步驟S110:根據(jù)給定的HUFFMAN樹構(gòu)建查找表,由于該查找表是一種可變長編碼(VariableLengthCode,VLC或V-L編碼)表,其表中元素長度不同,因此,需要根據(jù)協(xié)議規(guī)定,對所述查找表進行后向擴充處理,將所有碼字延長至碼表最長長度16位(暫不考慮符號位)、高位對齊的等長碼表。具體處理方式如下所述查找表的結(jié)構(gòu)類似如表l:<table>tableseeoriginaldocumentpage6</column></row><table>將所述查找表擴充后的等長碼表的結(jié)構(gòu)類似如表2:V<table>tableseeoriginaldocumentpage7</column></row><table>表2步驟S120:通過使用移位寄存器及計數(shù)器配合工作,湊足輸出16比特的視頻碼流并行數(shù)據(jù),并放入緩沖區(qū);步驟S130:以該16比特視頻碼流并行數(shù)據(jù)為地址,對照所述等長碼表進行尋址運算,獲得該視頻數(shù)據(jù)碼流第一碼字解碼數(shù)據(jù)(V-L解碼)和碼長LEN;步驟S140:數(shù)據(jù)緩沖區(qū)依次從待解碼的視頻數(shù)據(jù)碼流中移出LEN位高位數(shù)據(jù),同時釆入LEN位低位數(shù)據(jù)(即視頻數(shù)據(jù)碼流中LEN位高位數(shù)據(jù)的后續(xù)數(shù)據(jù))補足16位,以其為地址對照所述等長碼表進行尋址運算的解碼過程。依次重復(fù)上述步驟S140完成對該路視頻數(shù)據(jù)碼流的解碼。然而,當今的數(shù)字電視中,并非只有一路視頻數(shù)據(jù)碼流,在當今的標清數(shù)字電視或高清數(shù)字電視中,而是存在多路標清或多路高清視頻數(shù)據(jù)碼流,因此,本發(fā)明需要同時實現(xiàn)對多路視頻數(shù)據(jù)碼流進行解碼。本發(fā)明同時實現(xiàn)對多路視頻數(shù)據(jù)碼流進行解碼的過程,實際上,每路視頻數(shù)據(jù)碼流的解碼過程類似于圖l所示。比如,第N路視頻數(shù)據(jù)碼流的解碼過程如下在前述步驟步驟S130中,對16比特的并行數(shù)據(jù)為Ol10_0101_0000_0000_0001_1IOO的編碼碼流,則以此查上述表2所示的所述等長碼表,得到V-L解碼為00001J)00001的解碼數(shù)據(jù),并且,其碼長LEN為3,即完成了單路視頻數(shù)據(jù)碼流的第一碼字的解碼。而在所述步驟S140中,則依次從該路視頻數(shù)據(jù)碼流的待解碼數(shù)據(jù)中,從其高位移出3位,并用待解碼數(shù)據(jù)中的后續(xù)數(shù)據(jù)補齊至16位,以此16為數(shù)據(jù)為地址,查上述表2所示的所述等長碼表,得到對應(yīng)的V-L解碼,從而完成該第N路視頻數(shù)據(jù)碼流的解碼。在對第N路視頻數(shù)據(jù)碼流進行解碼的同時,各路:枧頻數(shù)據(jù)碼流在其各自的緩沖區(qū)緩沖數(shù)據(jù),由串行數(shù)據(jù)轉(zhuǎn)化稱并行數(shù)據(jù),等待解碼;且同時與第N路數(shù)據(jù)開始解碼,比如,第N+1路數(shù)據(jù)的第一碼字編碼為0010—1000—0000—0000,進行查表的尋址運算后,得到V-L解碼為00000J)00011,碼長LEN為5,則對該第N+1路視頻數(shù)據(jù)碼流的后續(xù)數(shù)據(jù)的解碼時,每次從高位移出3位待解碼數(shù)據(jù),并用待解碼數(shù)據(jù)中的后續(xù)數(shù)據(jù)補齊至16位,以此16為數(shù)據(jù)為地址,查上述表2所示的所述等長碼表,得到對應(yīng)的V-L解碼,從而完成該第N+1路^L頻數(shù)據(jù)碼流的解碼。另外,本發(fā)明還公開一種用于解碼多路視頻流數(shù)據(jù)、基于查找表的變長碼解碼設(shè)備200,請參考圖2所示的結(jié)構(gòu),包括查找表單元210,用于根據(jù)給定的哈夫曼樹構(gòu)建查找表,并將該查找表擴展為每個元素均高位對齊、位數(shù)為Y位的等長碼表;其中,所述查找表和所述等長碼表的結(jié)構(gòu)分別類似于前述表1和表2。對應(yīng)視頻數(shù)據(jù)碼流路數(shù)的多個解碼器220,用于分別對該路視頻數(shù)據(jù)碼流對照所述等長碼表作尋址運算進行解碼。其中,所述解碼器220包括數(shù)據(jù)緩沖模塊221,用于緩沖處理待解碼的數(shù)據(jù);數(shù)據(jù)處理模塊222,用于在對每個碼字解碼前,將其從串行數(shù)據(jù)轉(zhuǎn)為并行數(shù)據(jù),并存儲至所述數(shù)據(jù)緩沖模塊221;解碼模塊223,與所述數(shù)據(jù)處理模塊連接,用于取出該路視頻數(shù)據(jù)碼流的前Y位,以該Y位數(shù)據(jù)為地址對照所述等長碼表進行尋址運算,獲得該第N路視頻數(shù)據(jù)碼流第一碼字解碼數(shù)據(jù)和碼長LEN,并依次從該路視頻碼流待解碼數(shù)據(jù)的高位中移位出為碼長LEN的位數(shù),并用后續(xù)碼流中的數(shù)據(jù)補足Y位,以其為地址對照所述等長碼表進行解碼。其中,Y可以根據(jù)實際數(shù)據(jù)處理情況設(shè)定,一般Y可以設(shè)定為16。綜上,本發(fā)明具有如下有益技術(shù)效果1、由于本發(fā)明將查找表擴展成等長碼表,即可通過簡單的查表得到解碼數(shù)據(jù),大大簡化了解碼的過程,提高了解碼效率;2、本發(fā)明在對每路4見頻數(shù)據(jù)碼流解碼的過程中,對于每路視頻數(shù)據(jù)碼流具有不同碼長時,采用后續(xù)數(shù)據(jù)將每個碼字擴展成對應(yīng)所述等長碼表中元素的長度,以簡化查表過程,因此,此過程復(fù)用了占較多資源的查找表,每路視頻數(shù)據(jù)碼流解碼所占資源大大降低,解碼能力僅取決于系統(tǒng)時鐘速度,極大提高解碼速度,完成高性能系統(tǒng)的解碼需求。權(quán)利要求1、一種基于查找表的變長碼解碼方法,用于解碼多路視頻流數(shù)據(jù),其特征在于,包括a、根據(jù)給定的哈夫曼樹構(gòu)建查找表,并將該查找表擴展為每個元素均高位對齊、位數(shù)為Y位的等長碼表;b、將各路視頻數(shù)據(jù)碼流作為地址,對照所述等長碼表作尋址運算進行解碼,其中,第N路視頻數(shù)據(jù)碼流的解碼步驟包括b1、取出第N路視頻數(shù)據(jù)碼流的前Y位,以該Y位數(shù)據(jù)為地址對照所述等長碼表進行尋址運算,獲得該第N路視頻數(shù)據(jù)碼流第一碼字解碼數(shù)據(jù)和碼長LEN;b2、依次從第N路視頻碼流待解碼數(shù)據(jù)的高位中移位出為碼長LEN的位數(shù),并用后續(xù)碼流中的數(shù)據(jù)補足Y位,以其為地址對照所述等長碼表進行解碼。2、根據(jù)權(quán)利要求1所述的一種基于查找表的變長碼解碼方法,其特征在于,所述步驟b中,還包括步驟在對每個碼字解碼前,將其從串行數(shù)據(jù)轉(zhuǎn)為并行數(shù)據(jù)。3、根據(jù)權(quán)利要求1所述的一種基于查找表的變長碼解碼方法,其特征在于,所述等長碼表的結(jié)構(gòu)包括擴展為Y位的編碼、對應(yīng)的解碼、以及碼長LEN。4、根據(jù)權(quán)利要求1或2或3所述的一種基于查找表的變長碼解碼方法,其特征在于,所述等長碼表中每個元素的位數(shù)Y為16。5、一種基于查找表的變長碼解碼設(shè)備,用于解碼多路3見頻流數(shù)據(jù),其特征在于,包括查找表單元,用于根據(jù)給定的哈夫曼樹構(gòu)建查找表,并將該查找表擴展為每個元素均高位對齊、位數(shù)為Y位的等長碼表;對應(yīng)視頻數(shù)據(jù)碼流路數(shù)的多個解碼器,用于分別對該路視頻數(shù)據(jù)碼流對照所述等長碼表作尋址運算進行解碼。6、根據(jù)權(quán)利要求5所述的一種基于查找表的變長碼解碼設(shè)備,其特征在于,所述解碼器包括數(shù)據(jù)緩沖模塊;數(shù)據(jù)處理模塊,用于在對每個碼字解碼前,將其從串行數(shù)據(jù)轉(zhuǎn)為并行數(shù)據(jù),并存儲至所述數(shù)據(jù)緩沖模塊;解碼模塊,與所述數(shù)據(jù)處理模塊連接,用于取出該路視頻數(shù)據(jù)碼流的前Y位,以該Y位數(shù)據(jù)為地址對照所述等長碼表進行尋址運算,獲得該第N路^L頻數(shù)據(jù)碼流第一碼字解碼數(shù)據(jù)和碼長LEN,并依次從該路4見頻碼流待解碼數(shù)據(jù)的高位中移位出為碼長LEN的位數(shù),并用后續(xù)碼流中的數(shù)據(jù)補足Y位,以其為地址對照所述等長碼表進行解碼。7、根據(jù)權(quán)利要求5所述的一種基于查找表的變長碼解碼設(shè)備,其特征在于,所述等長碼表的結(jié)構(gòu)包括擴展為Y位的編碼、對應(yīng)的解碼、以及碼長LEN。8、根據(jù)權(quán)利要求5所述的一種基于查找表的變長碼解碼設(shè)備,其特征在于,所述等長碼表中每個元素的位數(shù)Y為16。全文摘要本發(fā)明公開一種基于查找表的變長碼解碼方法和設(shè)備,用于解碼多路視頻流數(shù)據(jù),其中該方法包括a.根據(jù)給定的哈夫曼樹構(gòu)建查找表,并將該查找表擴展為每個元素均高位對齊、位數(shù)為Y位的等長碼表;b.將各路視頻數(shù)據(jù)碼流作為地址,對照所述等長碼表作尋址運算進行解碼,其中,第N路視頻數(shù)據(jù)碼流的解碼步驟包括b1、取出第N路視頻數(shù)據(jù)碼流的前Y位,以該Y位數(shù)據(jù)為地址對照所述等長碼表進行尋址運算,獲得該第N路視頻數(shù)據(jù)碼流第一碼字解碼數(shù)據(jù)和碼長LEN;b2、依次從第N路視頻碼流待解碼數(shù)據(jù)的高位中移位出為碼長LEN的位數(shù),并用后續(xù)碼流中的數(shù)據(jù)補足Y位,以其為地址對照所述等長碼表進行解碼。本發(fā)明簡化了解碼過程,極大提高了解碼速度。文檔編號H04N7/26GK101257633SQ200710076719公開日2008年9月3日申請日期2007年8月28日優(yōu)先權(quán)日2007年8月28日發(fā)明者譚舒亮申請人:深圳市同洲電子股份有限公司