專利名稱:執(zhí)行霍夫曼解碼的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及霍夫曼解碼。
眾所周知,霍夫曼編碼是一種流行的可變長(zhǎng)度統(tǒng)計(jì)編碼方案。同樣眾所周知,霍夫曼代碼的產(chǎn)生取決于對(duì)每一個(gè)單獨(dú)符號(hào)的統(tǒng)計(jì)概率。例如,參見1952年的Proceedings of the IRE第40卷第9號(hào)第1098頁到1101頁,D.A.Huffman的“A Method for the Reconstruction of Minimum-Redundancy Codes”。一種傳統(tǒng)的基于表查找的編碼方案被廣泛用于霍夫曼編碼,這至少部分因?yàn)槠湫屎蛯?shí)現(xiàn)的相對(duì)簡(jiǎn)單。但是,基于表搜索的解碼在軟件和硬件實(shí)現(xiàn)中一般都是效率低。在表中的條目數(shù)相當(dāng)多的時(shí)候(在實(shí)際應(yīng)用中通常是這樣),尤其是這樣。另一個(gè)用于霍夫曼解碼的方法是使用”樹遍歷技術(shù)”生成霍夫曼樹。但是,這種解碼技術(shù)也有不足。這種特別的技術(shù)是位序(bit sequential)的,并且對(duì)于霍夫曼樹的生成過程和解碼過程在存儲(chǔ)器分配和計(jì)算的執(zhí)行方面都引入了額外的“開銷”。
在說明書的總結(jié)部分具體指出并明確聲明了被視為是本發(fā)明的主題。但是本發(fā)明,關(guān)于操作的方法和組織,及其目標(biāo)、特征和優(yōu)點(diǎn),當(dāng)參考附圖閱讀時(shí)通過參照以下詳細(xì)的描述可以最好地被理解,該附圖中圖1是霍夫曼樹構(gòu)造和相關(guān)的霍夫曼樹的一個(gè)例子;
圖2是一個(gè)表格,說明了圖1的霍夫曼樹的可能的霍夫曼代碼;圖3是一個(gè)表格,說明了霍夫曼代碼的一個(gè)例子,在其中已經(jīng)應(yīng)用了所選的規(guī)則以唯一地確定霍夫曼代碼;圖4是一個(gè)霍夫曼編碼表和相應(yīng)的解碼樹的例子;圖5是一個(gè)表格,說明了用于位串行霍夫曼解碼的只讀存儲(chǔ)器(ROM)條目;圖6是一個(gè)表格,使用了圖3的信息但是采用了不同的組織;和圖7是一個(gè)表格,說明了根據(jù)本發(fā)明的一個(gè)數(shù)據(jù)結(jié)構(gòu)的實(shí)施例。
具體實(shí)施例方式
在以下詳細(xì)描述中,為了全面地了解本發(fā)明,陳述了大量具體細(xì)節(jié)。但是,本領(lǐng)域的技術(shù)人員應(yīng)該知道本發(fā)明可以在不具有這些具體細(xì)節(jié)的條件下實(shí)施。在其它情況下,眾所周知的方法、過程、組件和電路沒有被詳細(xì)描述,免得使本發(fā)明不清晰。
如前所述,一組符號(hào)的霍夫曼代碼的產(chǎn)生是基于源符號(hào)出現(xiàn)的概率。通常,在這種上下文中被稱為霍夫曼樹的二進(jìn)制樹的結(jié)構(gòu)被采用。D.A.Huffman,在上述的文獻(xiàn)中,這樣描述了該進(jìn)程●列出所有可能的符號(hào)以及它們的概率;●找出具有最小概率的兩個(gè)符號(hào);●用包括兩個(gè)符號(hào)的、概率是個(gè)體概率總和的單獨(dú)一個(gè)集合替代它們;●重復(fù)直到列表只包括一個(gè)成員。
該過程產(chǎn)生了遞推地構(gòu)造的一組集合,其中的每一個(gè)包括恰好兩個(gè)成員。因此,它可以用一個(gè)以符號(hào)為“葉”的二叉樹(“霍夫曼樹”)來表示。然后為了形成任何特定符號(hào)的代碼(“霍夫曼代碼”)從根部到該符號(hào)遍歷二叉樹,對(duì)于左分支記錄“0”,對(duì)于右分支記錄“1”。但是,該過程的一個(gè)問題是結(jié)果得到的霍夫曼樹不是唯一的。這種節(jié)點(diǎn)的一個(gè)應(yīng)用例子是文本壓縮,如GZIP。GZIP是一種文本壓縮工具,開發(fā)于GNU(Gnu’s Not Unix)項(xiàng)目之下,其目的是開發(fā)一種“免費(fèi)”或可免費(fèi)得到的類似UNIX的操作系統(tǒng)的GZIP用于替代UNIX操作系統(tǒng)上的“壓縮”文本壓縮工具。參見,例如,在網(wǎng)站http//www.gzip.orh/上作為gzip-1.2.4.tar可獲得的Gailly,J.L和Adler,M.的GZIP文檔和原始資料。
眾所周知的,所得的霍夫曼代碼是前綴代碼,較高頻率出現(xiàn)的符號(hào)被分配給較小數(shù)量的位,以形成可變長(zhǎng)度的霍夫曼代碼。結(jié)果是,由于利用了符號(hào)的出現(xiàn)頻率,最終減小了平均代碼長(zhǎng)度。
圖1說明了有三個(gè)源符號(hào)的霍夫曼樹的一個(gè)簡(jiǎn)單的例子。相同的霍夫曼樹可以使用幾個(gè)二進(jìn)制代碼通過將不同的二進(jìn)制符號(hào)分配給樹的邊來表示。
這個(gè)霍夫曼樹的霍夫曼代碼的可能集合在圖2中圖示。從圖2中,示出了霍夫曼代碼不是唯一的,盡管從這個(gè)例子看來每一個(gè)符號(hào)的單獨(dú)的代碼長(zhǎng)度是唯一的。
通過構(gòu)造相應(yīng)的霍夫曼樹,可以產(chǎn)生霍夫曼代碼的長(zhǎng)度信息。然而,如前所說明的,霍夫曼代碼當(dāng)以這種方式被產(chǎn)生時(shí)可能不是唯一的。盡管如此,可以示出通過施加兩個(gè)限制,通過使用霍夫曼樹產(chǎn)生的霍夫曼代碼可以保證是唯一的。這些限制是1.具有一個(gè)給定位長(zhǎng)度的所有代碼具有按字典順序連續(xù)的值,與它們代表的符號(hào)的順序相同;和2.較短的代碼按字母順序排在較長(zhǎng)的代碼之前。
基于這些限制,霍夫曼代碼可以被唯一地確定。例如,圖3示出了一個(gè)使用了這些限制的19個(gè)符號(hào)的霍夫曼代碼集合,其中,代碼長(zhǎng)度使用霍夫曼樹被預(yù)先確定。對(duì)于圖3的表格,在霍夫曼代碼表中的條目中的短劃線,表示該符號(hào)和當(dāng)前源字母表的代碼不存在,并且其長(zhǎng)度信息是零。
盡管本發(fā)明不限于這個(gè)方面,上述限制已經(jīng)在多種壓縮方法和標(biāo)準(zhǔn)中被使用,例如象在前面描述的應(yīng)用程序GZIP中那樣。一般,在這樣的應(yīng)用軟件中,霍夫曼樹信息以一組代碼長(zhǎng)度信息的形式與壓縮的文本數(shù)據(jù)一起被傳遞。因此,該組代碼長(zhǎng)度信息足夠用以重建一個(gè)唯一的霍夫曼樹。例如,圖3中說明的霍夫曼代碼表,可以用下面的進(jìn)程產(chǎn)生,如在GZIP中被實(shí)現(xiàn)的那樣。
代碼長(zhǎng)度最初在Length[I]中;1)計(jì)算每一個(gè)代碼長(zhǎng)度的代碼的數(shù)目。令“count[N]”是長(zhǎng)度為N的代碼的數(shù)目,N>=1。
2)找到每一個(gè)代碼長(zhǎng)度的最小代碼的數(shù)值Huffman_code=0;count
=0;for(i=1 to MAX_BITS){Huffman_code=(Huffman_code+count[i-1])<<1;next_code[i]=Huffman_code;}3)使用在2中確定的連續(xù)值,分配數(shù)值給所有的代碼。
如前所述,霍夫曼編碼可以使用一個(gè)表查找技術(shù)而被相對(duì)容易地完成。然而,霍夫曼代碼的解碼一般在計(jì)算上更加繁重,因?yàn)楫?dāng)代碼字在一個(gè)壓縮位流中被接收并將要被解碼的時(shí)候,在代碼字間沒有預(yù)定義的邊界。如前所描述的,霍夫曼代碼是可變長(zhǎng)度代碼。
一種被稱為常數(shù)輸入速度解碼器的方法或技術(shù),串行地處理輸入位流,一次一個(gè)位。這種方法使用了一個(gè)解碼或霍夫曼樹的構(gòu)造。因此,從根開始,該技術(shù)涉及遍歷解碼樹的分支直到達(dá)到一個(gè)終端節(jié)點(diǎn)。在該終端節(jié)點(diǎn),代碼字被完全解碼并且相應(yīng)的符號(hào)因此可以按期望地被產(chǎn)生或輸出。這個(gè)進(jìn)程然后又從樹的根開始。例如,參見B.Bhaskarin和K.Konstantinides所著的、由Kluwer學(xué)術(shù)出版社1995年出版的”Imageand Video Compressions StandardsAlgorithms andArchitectures”。
圖4是霍夫曼編碼表和相應(yīng)的解碼樹的一個(gè)例子。在硬件或軟件中與這樣的解碼器相聯(lián)系的一個(gè)問題是怎樣有效地將解碼樹映射到存儲(chǔ)器中。例如,圖5說明了使用圖4的解碼樹、用于位序霍夫曼解碼的只讀存儲(chǔ)器(ROM)條目表。一種有效地映射存儲(chǔ)器的方法被提出,例如被Mukherjee等人在1993年6月的IEEE關(guān)于超大規(guī)模集成電路(VLSI)系統(tǒng)的學(xué)報(bào)1(2)203-214頁的文章“MARVLEa VLSI chip for data compressionusing tree-based codes”中提出。
另一種用于解碼霍夫曼代碼的方法,盡管不是特別地有效,是將霍夫曼表的每一個(gè)條目與在輸入緩沖器中的輸入位相比較。在這種方法下,最壞的,解碼表中的N個(gè)條目將被比較,其中N是符號(hào)的總數(shù)目。另外,條目的代碼長(zhǎng)度信息將被知道。
在使用數(shù)據(jù)結(jié)構(gòu)解碼一連串的二進(jìn)制數(shù)字信號(hào)的方法的一個(gè)實(shí)施例中,下面的方法可以被使用。數(shù)據(jù)結(jié)構(gòu)可以,至少是部分地,基于正被解碼的二進(jìn)制數(shù)字信號(hào)的子群的長(zhǎng)度來被搜索。在這個(gè)特定的實(shí)施例中,一連串的二進(jìn)制數(shù)字信號(hào)被編碼,例如霍夫曼編碼,盡管本發(fā)明不限于霍夫曼編碼或霍夫曼解碼的范圍。盡管本發(fā)明不限于這方面,在這個(gè)特定的實(shí)施例中,在搜索前,在該串中第一個(gè)N個(gè)二進(jìn)制數(shù)字信號(hào)被選為子群,其中N是最短代碼的長(zhǎng)度。而且,如果數(shù)據(jù)結(jié)構(gòu)中沒有長(zhǎng)度為N的代碼匹配子群,子群的長(zhǎng)度被增加了該串中下一個(gè)二進(jìn)制數(shù)字信號(hào)。同樣地,在這個(gè)特定的實(shí)施例中,其中使用了該方法,數(shù)據(jù)結(jié)構(gòu)中的具有與子群相同長(zhǎng)度的每一個(gè)代碼被檢查以尋找一個(gè)匹配。注意,如在下文中將更詳細(xì)地描述的,數(shù)據(jù)結(jié)構(gòu)至少部分地基于代碼長(zhǎng)度被組織。而且,數(shù)據(jù)結(jié)構(gòu)被組織使得具有相同代碼長(zhǎng)度的代碼被順序地存儲(chǔ)。
盡管本發(fā)明在范圍上不限于數(shù)據(jù)結(jié)構(gòu)的這個(gè)特定的實(shí)施例,在重新排列一些符號(hào)以顯示表中的冗余后,這個(gè)特定的實(shí)施例可以被聯(lián)系到圖3中的霍夫曼代碼表。例如,這在圖6中被說明。例如,霍夫曼代碼長(zhǎng)度為零的符號(hào)意味著這些符號(hào)沒有被使用。同樣地,基于前面限制的第一個(gè),具有給定位長(zhǎng)度的所有代碼將具有按字典順序連續(xù)的值。這樣,通過跟蹤長(zhǎng)度信息,具有這個(gè)長(zhǎng)度的霍夫曼代碼的按字典順序中的第一個(gè)符號(hào)的霍夫曼代碼,和到具有相同長(zhǎng)度的最后一個(gè)符號(hào)的霍夫曼代碼的數(shù)目,提供了所示的信息,具有更少甚至沒有的信息冗余。
數(shù)據(jù)結(jié)構(gòu)的這個(gè)特定的實(shí)施例在圖7中被示出??梢宰⒁獾?,圖7具有與圖6相同的信息,但是為了使用的簡(jiǎn)單和容易被重新排列。這樣,圖7使用了更少的存儲(chǔ)器并且,如在下文中將被更詳細(xì)地描述地,允許一個(gè)位并行解碼方案被應(yīng)用。
通過圖7中圖示的數(shù)據(jù)結(jié)構(gòu)的實(shí)施例,霍夫曼代碼的解碼可以在一個(gè)位并行方法中被執(zhí)行,至少部分地基于代碼長(zhǎng)度的信息和每一個(gè)代碼長(zhǎng)度的霍夫曼代碼的范圍,如在圖7的實(shí)施例中所示。這個(gè)在下面使用一個(gè)偽碼實(shí)現(xiàn)來說明和描述,盡管本發(fā)明在范圍上不限于提供的特定的偽碼。
復(fù)合數(shù)據(jù)結(jié)構(gòu)在這個(gè)上下文中被稱為NDS(NDC)。這符合編程語言C的復(fù)合數(shù)據(jù)結(jié)構(gòu)的定義,盡管本發(fā)明在范圍上不限于這個(gè)編程語言或任何特定的編程語言。盡管本發(fā)明在范圍上不限于這方面,在這個(gè)特定的實(shí)施例中,NDS的每一個(gè)條目分別包括四個(gè)域,即指定的長(zhǎng)度、起始代碼、結(jié)束代碼和基索引(base index),如圖7所示。當(dāng)然,可以理解許多等價(jià)的數(shù)據(jù)結(jié)構(gòu)是可能的,例如,替代起始代碼和結(jié)束代碼,而使用起始代碼和起始代碼與結(jié)束代碼之間的差值。
然而,在這個(gè)特定的實(shí)施例中,NDC是具有不同代碼長(zhǎng)度的條目的數(shù)目。每一個(gè)條目代表具有相同代碼長(zhǎng)度的一組連續(xù)的霍夫曼代碼。起始代碼是這個(gè)組的第一個(gè)霍夫曼代碼,結(jié)束代碼是這個(gè)組的最后一個(gè)霍夫曼代碼?;饕腔舴蚵碇袑?duì)應(yīng)符號(hào)的第一個(gè)霍夫曼代碼的索引值,如圖6所示。如前面已經(jīng)指出的,注意本發(fā)明在范圍上不限于這個(gè)特定的數(shù)據(jù)結(jié)構(gòu)。顯然,可以對(duì)這個(gè)特定的數(shù)據(jù)結(jié)構(gòu)做許多修改,并且仍舊保持在已經(jīng)描述的精神和范圍內(nèi)。
使用圖7中所示的數(shù)據(jù)結(jié)構(gòu)的實(shí)施例,下面是根據(jù)本發(fā)明的、用于解碼一串二進(jìn)制數(shù)字信號(hào)的一個(gè)實(shí)施例的偽碼表示。
<pre listing-type="program-listing"><![CDATA[開始do{ Len=0; For(I=O;I<NDC;I++){ Len=NDS[I].Length; tmp_code=Len bits from the input buffer;/*位并行搜索*/ if(NDS[I].Start_Code<=tmp_code<=NDS[I].End Code){ /*檢查范圍*/ tmp_offset=tmp_code-NDS[I].Start_Code;get the Symbol at the index location (NDS[I].Base_index+tmp_offset); break; } } if(Len>0){/*符號(hào)找到*/ output Symbol; move the current pointer in the input buffer forwardLen bits; } else Error;/*沒有符號(hào)找到*/}while(no last symbol);結(jié)束.]]></pre>盡管本發(fā)明不限于這方面,在這個(gè)特定的實(shí)施例中,在搜索數(shù)據(jù)結(jié)構(gòu)前,在串中第一個(gè)N個(gè)二進(jìn)制數(shù)字信號(hào)被選為子群,其中N是最短代碼的長(zhǎng)度。具有那個(gè)長(zhǎng)度的所有代碼然后被檢查以尋找一個(gè)匹配。如果沒有匹配出現(xiàn),那么子群的長(zhǎng)度被增加該串中下一個(gè)二進(jìn)制數(shù)字信號(hào),然后具有增加了的長(zhǎng)度的代碼被檢查以尋找一個(gè)匹配。這個(gè)進(jìn)程被繼續(xù)直到一個(gè)匹配出現(xiàn)。如前所指出的,數(shù)據(jù)結(jié)構(gòu)至少部分地基于代碼長(zhǎng)度被組織,并且數(shù)據(jù)結(jié)構(gòu)被組織使得具有相同代碼長(zhǎng)度的代碼按字典順序被順序存儲(chǔ)。這允許期望的有效操作。
注意到,在一個(gè)可替換的實(shí)施例中,可能可以從最長(zhǎng)的代碼開始搜索并且當(dāng)沒有匹配出現(xiàn)時(shí)降低子群的長(zhǎng)度。但是,一般一個(gè)較短的霍夫曼代碼具有更高的出現(xiàn)概率,使得在這種情況下從最短代碼開始搜索更加有效。
解碼一串二進(jìn)制數(shù)字信號(hào)的方法的這個(gè)特定的實(shí)施例,在存儲(chǔ)器利用、計(jì)算的復(fù)雜性和實(shí)現(xiàn)方面具有幾個(gè)優(yōu)勢(shì)。如前所提到的,數(shù)據(jù)結(jié)構(gòu)的條目的數(shù)目,取決于霍夫曼代碼的最長(zhǎng)的代碼長(zhǎng)度,而不是符號(hào)的數(shù)目。因此,這帶來存儲(chǔ)器的減少。例如,當(dāng)應(yīng)用軟件具有固定限制的代碼長(zhǎng)度時(shí),例如GZIP,一個(gè)典型的霍夫曼樹具有285個(gè)符號(hào),代碼長(zhǎng)度被限制到15位。與此對(duì)比的,為這個(gè)實(shí)施例使用的條目的數(shù)目將具有最多15個(gè)條目,根據(jù)該數(shù)據(jù),在這個(gè)例子中導(dǎo)致在存儲(chǔ)器利用上19倍的減少。
同樣的,通過使用位并行搜索進(jìn)程,而不是位串行搜索進(jìn)程,計(jì)算的復(fù)雜性被降低。這里,這個(gè)實(shí)施例至少部分地,基于數(shù)據(jù)結(jié)構(gòu)中的代碼長(zhǎng)度信息。搜索過程通過為具有那個(gè)代碼長(zhǎng)度的組檢查起始和結(jié)束代碼的范圍,改善了當(dāng)前的方法。這個(gè)使用了19個(gè)符號(hào)和最大代碼長(zhǎng)為7位的實(shí)施例的實(shí)驗(yàn)結(jié)果,與使用了霍夫曼代碼表搜索的解碼相比,提供了在復(fù)雜性上5.5倍的降低。同樣的,因?yàn)闆]有如在一個(gè)霍夫曼樹被構(gòu)造時(shí)發(fā)生的那樣的二進(jìn)制樹結(jié)構(gòu)發(fā)生,并且有更小或沒有動(dòng)態(tài)的存儲(chǔ)器分配,根據(jù)本發(fā)明的解碼的實(shí)現(xiàn)在硬件和軟件上都相對(duì)容易。
當(dāng)然應(yīng)該理解的是,盡管只描述了特定實(shí)施例,本發(fā)明在范圍上不限于特定實(shí)施例或?qū)崿F(xiàn)。例如,一個(gè)實(shí)施例可以是硬件中的,而另一個(gè)實(shí)施例可以是軟件中的。同樣,實(shí)施例可以是固件中的,或例如硬件、軟件或固件的任意組合。同樣,盡管本發(fā)明在這方面不受限制,一個(gè)實(shí)施例可包括一個(gè)物件,例如存儲(chǔ)介質(zhì)。這樣的存儲(chǔ)介質(zhì),例如,CD-ROM,或碟盤,可以在其上存儲(chǔ)指令,這些指令當(dāng)被系統(tǒng)執(zhí)行時(shí),例如計(jì)算機(jī)系統(tǒng)或平臺(tái),或成像系統(tǒng),可以產(chǎn)生依照本發(fā)明的方法的實(shí)施例被執(zhí)行,例如如前所述的執(zhí)行霍夫曼解碼的方法。同樣的,根據(jù)本發(fā)明的創(chuàng)建數(shù)據(jù)結(jié)構(gòu)的方法的實(shí)施例,可以被執(zhí)行。
盡管本發(fā)明的特定特征已經(jīng)被說明和描述,本領(lǐng)域的技術(shù)人員可以做許多修改、替換、改變和等價(jià)。因此,可以理解,所附的權(quán)利要求將覆蓋全部這些落在本發(fā)明的精神范圍內(nèi)的修改和變化。
權(quán)利要求
1.一種使用數(shù)據(jù)結(jié)構(gòu)解碼一串二進(jìn)制數(shù)字信號(hào)的方法,所述一串二進(jìn)制數(shù)字信號(hào)被編碼,所述方法包括至少部分基于被解碼的一串二進(jìn)制數(shù)字信號(hào)的一個(gè)二進(jìn)制數(shù)字信號(hào)的子群的長(zhǎng)度來搜索所述數(shù)據(jù)結(jié)構(gòu)。
2.權(quán)利要求1的方法,還包括在搜索前,將所述串中的第一個(gè)N個(gè)二進(jìn)制數(shù)字信號(hào)選擇為所述子群,N是最短代碼的長(zhǎng)度。
3.權(quán)利要求2的方法,還包括如果所述數(shù)據(jù)結(jié)構(gòu)中沒有長(zhǎng)度為N的代碼匹配所述子群,那么將所述的子群的長(zhǎng)度增加所述串中的下一個(gè)二進(jìn)制數(shù)字信號(hào)。
4.權(quán)利要求1的方法,還包括在搜索前,將所述串中的第一個(gè)N個(gè)二進(jìn)制數(shù)字信號(hào)選擇為所述子群,N是最長(zhǎng)代碼的長(zhǎng)度。
5.權(quán)利要求4的方法,還包括如果所述數(shù)據(jù)結(jié)構(gòu)中沒有長(zhǎng)度為N的代碼匹配所述子群,那么將所述的子群的長(zhǎng)度減少所述串中的下一個(gè)二進(jìn)制數(shù)字信號(hào)。
6.權(quán)利要求1的方法,其中,所述二進(jìn)制數(shù)字信號(hào)按照霍夫曼代碼被編碼。
7.權(quán)利要求1的方法,其中,所述數(shù)據(jù)結(jié)構(gòu)至少部分基于代碼長(zhǎng)度被組織。
8.權(quán)利要求7的方法,其中,所述數(shù)據(jù)結(jié)構(gòu)中具有與所述子群相同長(zhǎng)度的每一個(gè)代碼都被檢查以尋找一個(gè)匹配。
9.權(quán)利要求8的方法,其中,數(shù)據(jù)結(jié)構(gòu)按照具有相同代碼長(zhǎng)度的代碼的子群被組織,子群被順序地存儲(chǔ)。
10.一種霍夫曼代碼的數(shù)據(jù)結(jié)構(gòu),霍夫曼代碼在子群中被排列,包括每一個(gè)子群的代碼字長(zhǎng)度、起始代碼、結(jié)束代碼和基索引。
11.權(quán)利要求10的數(shù)據(jù)結(jié)構(gòu),其中,所述子群根據(jù)代碼字長(zhǎng)度被順序地組織。
12.權(quán)利要求11的數(shù)據(jù)結(jié)構(gòu),其中,在每一個(gè)子群內(nèi),代碼字是從起始碼到結(jié)束碼隱含順序的。
13.為解碼代碼字創(chuàng)建數(shù)據(jù)結(jié)構(gòu)的一種方法,所述方法包括用代碼長(zhǎng)度分類所述代碼字;和從起始代碼到結(jié)束代碼順序地排序具有相同長(zhǎng)度的代碼字。
14.權(quán)利要求13的方法,其中,具有一個(gè)特定代碼長(zhǎng)度的代碼字的每一個(gè)子群,用一個(gè)起始代碼和一個(gè)結(jié)束代碼表示。
15.權(quán)利要求14的方法,還包括將一個(gè)基索引關(guān)聯(lián)到每一個(gè)子群上。
16.權(quán)利要求15的方法,其中,基索引對(duì)應(yīng)具有起始代碼的符號(hào)的索引。
17.一種物件,包括存儲(chǔ)介質(zhì),所述存儲(chǔ)介質(zhì)在其上存儲(chǔ)有指令,當(dāng)這些指令被執(zhí)行時(shí),使得使用數(shù)據(jù)結(jié)構(gòu)來解碼一串二進(jìn)制數(shù)字信號(hào)的一種方法通過以下步驟被執(zhí)行,該串二進(jìn)制數(shù)字信號(hào)被編碼至少部分基于被解碼的一串二進(jìn)制數(shù)字信號(hào)的一個(gè)二進(jìn)制數(shù)字信號(hào)的子群的長(zhǎng)度來搜索所述數(shù)據(jù)結(jié)構(gòu)。
18.權(quán)利要求17的物件,其中,所述指令當(dāng)被執(zhí)行時(shí)使得,在搜索前,將所述串中的第一個(gè)N個(gè)二進(jìn)制數(shù)字信號(hào)選擇為所述子群,N是最短代碼的長(zhǎng)度。
19.權(quán)利要求18的物件,其中,所述指令當(dāng)被執(zhí)行時(shí)使得,如果所述數(shù)據(jù)結(jié)構(gòu)中沒有長(zhǎng)度為N的代碼匹配所述子群,那么將所述的子群的長(zhǎng)度增加所述串中的下一個(gè)二進(jìn)制數(shù)字信號(hào)。
20.一種物件,包括存儲(chǔ)介質(zhì),所述存儲(chǔ)介質(zhì)在其上存儲(chǔ)有指令,當(dāng)這些指令被執(zhí)行時(shí),使得創(chuàng)建用于解碼被編碼代碼字的數(shù)據(jù)結(jié)構(gòu)的一種方法通過以下步驟被執(zhí)行用代碼長(zhǎng)度分類所述代碼字;和從起始代碼到結(jié)束代碼順序地排序具有相同長(zhǎng)度的代碼字。
21.權(quán)利要求20的物件,其中,所述指令當(dāng)被執(zhí)行時(shí)使得,具有一個(gè)特定代碼長(zhǎng)度的代碼字的每一個(gè)子群,用一個(gè)起始代碼和一個(gè)結(jié)束代碼表示。
22.權(quán)利要求21的物件,其中,所述指令當(dāng)被執(zhí)行時(shí)使得,將一個(gè)基索引關(guān)聯(lián)到每一個(gè)子群上。
全文摘要
本發(fā)明公開了執(zhí)行霍夫曼解碼的一種方法的實(shí)施例。在這樣的一個(gè)實(shí)施例中,一個(gè)數(shù)據(jù)結(jié)構(gòu)被使用,盡管,當(dāng)然,本發(fā)明不限于所公開的這個(gè)特定的實(shí)施例。
文檔編號(hào)H03M7/40GK1547805SQ01818216
公開日2004年11月17日 申請(qǐng)日期2001年10月9日 優(yōu)先權(quán)日2000年10月31日
發(fā)明者廷庫·阿查里雅, 平圣·蔡, 廷庫 阿查里雅, 蔡 申請(qǐng)人:英特爾公司