專利名稱:可變長(zhǎng)度解碼的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及對(duì)受到按照Huffman樹可變長(zhǎng)度編碼的數(shù)據(jù)解碼的技術(shù)。本發(fā)明可以用于例如MPEG(運(yùn)動(dòng)圖象專家小組)解碼器。
背景技術(shù):
可變長(zhǎng)度編碼的原理如下。需編碼的數(shù)據(jù)包括各個(gè)不同的符號(hào),就象一個(gè)文本包括各個(gè)不同的詞。一個(gè)在數(shù)據(jù)中頻繁出現(xiàn)的符號(hào)用一個(gè)包括比較少的比特的短碼字編碼。一個(gè)在數(shù)據(jù)中很少出現(xiàn)的符號(hào)用一個(gè)比較長(zhǎng)的碼字編碼。例如,假設(shè)數(shù)據(jù)包括四個(gè)符號(hào)A,B,C,以及D。再假設(shè)數(shù)據(jù)有50%的符號(hào)A,25%的符號(hào)B,而符號(hào)C和D各為12.5%。符號(hào)A可以用一個(gè)1比特的二進(jìn)制碼字表示,符號(hào)B可以用一個(gè)2比特的二進(jìn)制碼字表示,而符號(hào)C和D各用一個(gè)3比特的二進(jìn)制碼字表示。在數(shù)據(jù)用這些碼字編碼時(shí),編碼數(shù)據(jù)中的平均編碼字長(zhǎng)將小于2比特。
可變長(zhǎng)度編碼的一個(gè)基本問(wèn)題是怎樣區(qū)分不同的碼字。如果碼字是長(zhǎng)度固定的,也就是說(shuō),如果每個(gè)碼字具有例如2比特的長(zhǎng)度,那么我們就知道每2比特會(huì)有一個(gè)新的碼字。如果碼字長(zhǎng)度不固定,也就是在可變長(zhǎng)度編碼情況下,就應(yīng)該用另一種技術(shù)來(lái)區(qū)分不同的碼字。
按照Huffman樹進(jìn)行的可變長(zhǎng)度編碼允許以一種高效率的方式區(qū)分不同的碼字。以下是一個(gè)對(duì)以上所給出的四個(gè)符號(hào)A、B、C和D編碼的Huffman樹的例子。一個(gè)第一層節(jié)點(diǎn)構(gòu)成了樹的開始。有兩個(gè)第一層分支與這個(gè)節(jié)點(diǎn)連接。一個(gè)第一層分支在它的末端有一個(gè)葉,表示符號(hào)A。將一個(gè)二進(jìn)制零(0)與這個(gè)分支關(guān)聯(lián)。另一個(gè)第一層分支在它的末端有一個(gè)第二層節(jié)點(diǎn)。將一個(gè)二進(jìn)制一(1)與這個(gè)分支關(guān)聯(lián)。有兩個(gè)第二層分支與第二層節(jié)點(diǎn)連接。一個(gè)第二層分支在它的末端有一個(gè)葉,表示符號(hào)B。將一個(gè)二進(jìn)制零(0)與這個(gè)分支關(guān)聯(lián)。另一個(gè)第二層分支在它的末端有一個(gè)第三層節(jié)點(diǎn)。將一個(gè)二進(jìn)制一(1)與這個(gè)第二層分支關(guān)聯(lián)。有兩個(gè)第三層分支與第三層節(jié)點(diǎn)連接。每個(gè)第三層分支在它的末端有一個(gè)葉,一個(gè)葉表示符號(hào)C,而另一個(gè)葉表示符號(hào)D。將一個(gè)二進(jìn)制零(0)與葉表示符號(hào)C的分支關(guān)聯(lián),而將一個(gè)二進(jìn)制一(1)與葉表示符號(hào)D的分支關(guān)聯(lián)。
以上說(shuō)明的Huffman樹提供了以下這些碼字。為了到達(dá)表示符號(hào)A的葉,必須經(jīng)過(guò)與一個(gè)二進(jìn)制零(0)關(guān)聯(lián)的第一層分支。因此,符號(hào)A的碼字就為0。為了到達(dá)表示符號(hào)B的葉,必須經(jīng)過(guò)與一個(gè)二進(jìn)制一(1)關(guān)聯(lián)的第一層分支,然后再經(jīng)過(guò)與一個(gè)二進(jìn)制(0)關(guān)聯(lián)的第二層分支。因此,符號(hào)B的碼字就為10。為了到達(dá)表示符號(hào)C的葉,必須經(jīng)過(guò)與一個(gè)二進(jìn)制一(1)關(guān)聯(lián)的第一層分支,再經(jīng)過(guò)與一個(gè)二進(jìn)制(1)關(guān)聯(lián)的第二層分支,然后再經(jīng)過(guò)與一個(gè)二進(jìn)制(0)關(guān)聯(lián)的第三層分支。因此,符號(hào)C的碼字為110。為了到達(dá)表示符號(hào)D的葉,必須經(jīng)過(guò)與一個(gè)二進(jìn)制(1)關(guān)聯(lián)的第一層分支,再經(jīng)過(guò)與一個(gè)二進(jìn)制(1)關(guān)聯(lián)的第二層分支,然后再經(jīng)過(guò)與一個(gè)二進(jìn)制(1)關(guān)聯(lián)的第三層分支。因此,符號(hào)D的碼字為111。
經(jīng)按照Huffman樹可變長(zhǎng)度編碼的數(shù)據(jù)可以用以下方式解碼。數(shù)據(jù)寄存器從數(shù)據(jù)中選擇一個(gè)比特序列提供給一個(gè)解碼邏輯電路。解碼邏輯電路按照原樣判明一個(gè)包含在這個(gè)比特序列內(nèi)的碼字。因此,解碼邏輯電路從存儲(chǔ)中選出表示這個(gè)碼字的符號(hào)。例如,假定數(shù)據(jù)已經(jīng)如上所述用分別表示符號(hào)A、B、C和D的碼字0、10、110和111編碼。在這種情況下,如果數(shù)據(jù)寄存器存有--0、-10、110或111,譯碼邏輯就從存儲(chǔ)相應(yīng)讀出符號(hào)A、B、C或D,其中標(biāo)記-表示一個(gè)無(wú)關(guān)緊要的值。在美國(guó)專利5,828,907中揭示了一種如在這段說(shuō)明的解碼的方法。
發(fā)明概述本發(fā)明的一個(gè)目的是提供高效益地實(shí)現(xiàn)對(duì)經(jīng)按照Huffman樹編碼的數(shù)據(jù)解碼的方式。
發(fā)明考慮了以下一些方面。用可變長(zhǎng)度編碼可以達(dá)到的數(shù)據(jù)壓縮因子基本上取決于兩個(gè)因素需編碼的數(shù)據(jù)的統(tǒng)計(jì)特性和對(duì)數(shù)據(jù)編碼的Huffman樹。一個(gè)為一個(gè)給定類型的數(shù)據(jù)提供令人滿意的壓縮因子的Huffman樹對(duì)于另一個(gè)類型的數(shù)據(jù)可能不會(huì)給出令人滿意的壓縮系數(shù),因?yàn)檫@兩個(gè)類型的數(shù)據(jù)具有不同的統(tǒng)計(jì)特性。因此,所希望的是對(duì)于不同類型的數(shù)據(jù)有不同的可變長(zhǎng)度碼,每種碼有它自己特定的Huffman樹。
在許多應(yīng)用中,例如多媒體應(yīng)用,所希望的是以不同的方式處理不同類型的經(jīng)可變長(zhǎng)度編碼的數(shù)據(jù)。原則上,這可以通過(guò)為每種可變長(zhǎng)度碼提供一個(gè)專用的如以上所述的可變長(zhǎng)度解碼器。這樣的解決方案要求為每種碼配置一個(gè)專用的解碼邏輯電路。這些解碼邏輯電路通常比較復(fù)雜,因?yàn)榭勺冮L(zhǎng)度碼通常就比較復(fù)雜。所以,這種解決方案所需的電路量相當(dāng)可觀,因而就不大經(jīng)濟(jì)。另一種解決方案是采用一個(gè)通用處理器,而為每種可變長(zhǎng)度碼分別提供一個(gè)可變長(zhǎng)度解碼軟件。然而,這種基于軟件的解決方案就解碼吞吐率而言是比較低的。它可能需要一個(gè)快速的通用處理器,以便達(dá)到令人滿意的解碼速度。這樣的處理器比較昂貴,因此這種基于軟件的解決方案也是比較昂貴的。
按照本發(fā)明,經(jīng)按照一個(gè)Huffman樹編碼的數(shù)據(jù)用以下方式解碼。用一個(gè)存儲(chǔ)器存儲(chǔ)Huffman樹,使得Huffman樹的分支可以用存儲(chǔ)位置表示。如果一個(gè)存儲(chǔ)位置表示一個(gè)隨后有一些后續(xù)分支的分支,那么這個(gè)存儲(chǔ)位置存有一個(gè)指向表示這些后續(xù)分支的存儲(chǔ)位置的指針。如果這個(gè)存儲(chǔ)位置表示一個(gè)沒(méi)有后續(xù)分支的分支,這意味著這個(gè)分支在它的末端有一個(gè)葉,那么這個(gè)存儲(chǔ)位置就存有一個(gè)碼端指示和輸出符號(hào)數(shù)據(jù)。解碼處理器用一個(gè)數(shù)據(jù)元序列內(nèi)的每數(shù)據(jù)元執(zhí)行一個(gè)選擇步驟和一個(gè)鑒定步驟。在選擇步驟,解碼處理器根據(jù)數(shù)據(jù)元和最近選擇的存儲(chǔ)位置的內(nèi)容選擇一個(gè)存儲(chǔ)位置。在鑒定步驟,解碼處理器檢驗(yàn)所選擇的存儲(chǔ)位置是否存有碼端指示。如果是這樣的話,解碼處理器就根據(jù)輸出符號(hào)數(shù)據(jù)提供一個(gè)輸出符號(hào)。
這種解碼處理器可以比較簡(jiǎn)單,因?yàn)樗眯杞獯a的數(shù)據(jù)中的每數(shù)據(jù)元執(zhí)行一個(gè)比較簡(jiǎn)單的標(biāo)準(zhǔn)程序。而且,這個(gè)標(biāo)準(zhǔn)程序不取決于Huffman樹。也就是說(shuō),可以用這種解碼處理器來(lái)執(zhí)行不同類型的可變長(zhǎng)度解碼。為了提供不同類型的可變長(zhǎng)度解碼,因此只要將一個(gè)存儲(chǔ)在存儲(chǔ)器內(nèi)的Huffman樹用另一個(gè)Huffman樹代替,或者在存儲(chǔ)器內(nèi)存儲(chǔ)不同的Huffman樹、通過(guò)定義一個(gè)起始地址來(lái)選擇一個(gè)Huffman樹就可以了。
因此,發(fā)明提供了用比較簡(jiǎn)單的解碼電路對(duì)各種可變長(zhǎng)度碼解碼的技術(shù)。相反,在技術(shù)背景部分所述的這種可變長(zhǎng)度解碼的方法為了達(dá)到同樣的目的需要比較復(fù)雜的解碼電路。按照本發(fā)明實(shí)現(xiàn)的可變長(zhǎng)度解碼可能需要比在技術(shù)背景部分所述的可變長(zhǎng)度解碼稍多一些的存儲(chǔ)器。然而,對(duì)于許多應(yīng)用來(lái)說(shuō),本發(fā)明將提供一種經(jīng)濟(jì)的解碼電路,代價(jià)是需要補(bǔ)充存儲(chǔ)容量(如果有這樣的需要的話)。因此,本發(fā)明提供了高效益的實(shí)現(xiàn)方式。
從以下結(jié)合附圖進(jìn)行的說(shuō)明中可以看到本發(fā)明的特色和實(shí)現(xiàn)本發(fā)明的優(yōu)點(diǎn)。
附圖簡(jiǎn)要說(shuō)明
圖1為例示如在權(quán)利要求1所提出的本發(fā)明的基本特征的示意圖。
圖2為Huffman樹的例示圖。
圖3為對(duì)經(jīng)按照?qǐng)D2例示的Huffman樹編碼的數(shù)據(jù)解碼的解碼器的例示方框圖。
圖4為圖3例示的解碼器的工作方法的例示流程圖。
圖5為按照本發(fā)明實(shí)現(xiàn)的MPEG解碼器的例示方框圖。
附圖詳細(xì)說(shuō)明以下說(shuō)明涉及一些引用標(biāo)記。在所有這些圖中,類似的的實(shí)體都用類似的字母標(biāo)注。一些類似的實(shí)體可能出現(xiàn)在一個(gè)圖內(nèi)。在這種情況下,為了區(qū)別類似的實(shí)體在字母標(biāo)注后再加一個(gè)數(shù)字或后綴。這個(gè)數(shù)字或后綴為了方便起見(jiàn)可能省略,或者在它的值不重要(是無(wú)關(guān)緊要值)的情況下可以用一個(gè)星號(hào)代替。這適用于以下說(shuō)明以及權(quán)利要求書。
圖1例示了對(duì)經(jīng)按照一個(gè)Huffman樹HT可變長(zhǎng)度編碼的數(shù)據(jù)解碼的基本特征。用一個(gè)存儲(chǔ)器MEM存儲(chǔ)這個(gè)Huffman樹HT,使得Huffman樹的分支可以用存儲(chǔ)位置ML表示。如果一個(gè)存儲(chǔ)位置表示一個(gè)隨后有一些后續(xù)分支的分支,那么這個(gè)存儲(chǔ)位置存有一個(gè)指向表示這些后續(xù)分支的存儲(chǔ)位置的指針P。如果這個(gè)存儲(chǔ)位置表示一個(gè)沒(méi)有后續(xù)分支的分支,存儲(chǔ)位置就存有一個(gè)碼端指示ECI和輸出符號(hào)數(shù)據(jù)OSD。解碼處理器DPR用一個(gè)數(shù)據(jù)元序列內(nèi)的每數(shù)據(jù)元DE執(zhí)行一個(gè)選擇步驟SEL和一個(gè)鑒定步驟EVA。在選擇步驟,解碼處理器根據(jù)數(shù)據(jù)元和最近選擇的存儲(chǔ)位置的內(nèi)容選擇一個(gè)存儲(chǔ)位置。在鑒定步驟,解碼處理器檢驗(yàn)所選擇的存儲(chǔ)位置是否存有碼端指示。如果是這樣的話,解碼處理器就根據(jù)輸出符號(hào)數(shù)據(jù)提供一個(gè)輸出符號(hào)OS。
圖2例示了一個(gè)Huffman樹的例子。這個(gè)Huffman樹定義了一個(gè)4符號(hào)的可變長(zhǎng)度編碼A,B,C,以及D。Huffman樹包括一些節(jié)點(diǎn)NO、分支BR和葉LF。第一、第二和第三層節(jié)點(diǎn)分別為NO1、NO2和NO3。有兩個(gè)第一層分支BR1*、兩個(gè)第二層分支BR2*和兩個(gè)第三層分支BR3*。每個(gè)分支BR各賦予一個(gè)可以是零(0)或一(1)的二進(jìn)制值。葉LF1、LF2、LF3和LF4分別表示符號(hào)A、B、C和D。
Huffman樹用以下方式為符號(hào)A、B、C和D各定義了一個(gè)碼字。第一層節(jié)點(diǎn)NO1取為一個(gè)起始節(jié)點(diǎn)。從這個(gè)節(jié)點(diǎn)起各有一條一定的路徑通達(dá)每個(gè)符號(hào)。碼字由賦予在這條路徑上的各分支BR的相應(yīng)二進(jìn)制值按照有效位遞降排列形成。例如,通向符號(hào)C的路徑由分支BR12、BR22和BR31形成,賦予這些分支的二進(jìn)制值分別為1、1和0。因此,符號(hào)C的碼字為110。
圖3例示了對(duì)經(jīng)按照?qǐng)D2所示的Huffman樹編碼的數(shù)據(jù)解碼的解碼器。這個(gè)解碼器包括解碼處理器DPR和存儲(chǔ)器MEM。存儲(chǔ)器包括一些存儲(chǔ)單元@。每個(gè)存儲(chǔ)單元@有一個(gè)專用地址。存儲(chǔ)單元@0、@1和@2各一分為二。這些存儲(chǔ)單元各包括一個(gè)左半部分和一個(gè)右半部分。每個(gè)部分存有一個(gè)地址。它還可以存有一個(gè)標(biāo)志√。例如,存儲(chǔ)單元@0的左半部分包括標(biāo)志√和存儲(chǔ)單元@10的地址。存儲(chǔ)單元@10、@11、@12和@13分別包括符號(hào)A、B、C和D。
圖3所示的解碼器的存儲(chǔ)器MEM存有圖2所示的Huffman樹。這個(gè)Huffman樹以一種特定的方式存儲(chǔ)。存儲(chǔ)單元@0、@1和@2分別表示第一、第二和第三層分支BR1*、BR2*和BR3*。這些存儲(chǔ)單元的左半部分表示已經(jīng)賦予一個(gè)二進(jìn)制零(0)的分支BR*1。右半部分表示已經(jīng)賦予一個(gè)二進(jìn)制一(1)的分支BR*2。如果一個(gè)存儲(chǔ)單元@的一部分表示一個(gè)隨后有后續(xù)分支的分支,這個(gè)部分就存有表示這些后續(xù)分支的存儲(chǔ)單元的地址。例如,存儲(chǔ)單元@0的右半部分表示Huffman樹的分支BR12。這個(gè)分支還接至分支BR21和BR22。存儲(chǔ)單元@1表示這些分支。因此,存儲(chǔ)單元@0的右半部分存有存儲(chǔ)單元@1的地址。如果一個(gè)存儲(chǔ)單元@的一個(gè)部分表示一個(gè)在末端具有一個(gè)葉的分支BR,這個(gè)部分就存有標(biāo)志√。這個(gè)部分還存有存儲(chǔ)屬于這個(gè)葉的符號(hào)的存儲(chǔ)單元的地址。
圖4例示了圖3所示的解碼器的工作方法的流程圖。這個(gè)方法包括六個(gè)步驟S1-S6。步驟S1-S4用需解碼的數(shù)據(jù)的每個(gè)后續(xù)比特執(zhí)行。步驟S5和S6只有在當(dāng)前比特形成一個(gè)碼字的最后比特時(shí)執(zhí)行。在這種情況下,解碼器提供一個(gè)輸出符號(hào)。
在步驟S1,解碼處理器讀一個(gè)存儲(chǔ)單元@,這個(gè)存儲(chǔ)單元在先前執(zhí)行的一系列步驟S1-S6期間選為下個(gè)需讀的存儲(chǔ)單元RD[NXT@]。在步驟S1讀的存儲(chǔ)單元是存儲(chǔ)單元@0、@1和@2之一。這將在下面進(jìn)一步說(shuō)明。
在步驟S2,解碼處理器從在步驟S1讀的存儲(chǔ)單元@0、@1或@2中選擇輸入數(shù)據(jù)。輸入數(shù)據(jù)是存儲(chǔ)單元的左半部分或右半部分。在當(dāng)前比特是一個(gè)二進(jìn)制零(0)時(shí),左半部分選為輸入數(shù)據(jù)CB=0→LH@=ID。如果當(dāng)前比特是一個(gè)二進(jìn)制一(1),右半部分就選為輸入數(shù)據(jù)CB=1→RH@=ID。
在步驟S3,解碼處理器提取包含在輸入數(shù)據(jù)內(nèi)的地址。這個(gè)地址規(guī)定了下個(gè)需讀的存儲(chǔ)單元NXT@=@∈D。
在步驟S4,解碼處理器檢驗(yàn)輸入數(shù)據(jù)是否含有一個(gè)標(biāo)志√∈D?如果是這樣的話,解碼處理器就執(zhí)行步驟S5和S6。否則,解碼處理器將直接執(zhí)行步驟S1,再按需解碼的數(shù)據(jù)中的下一個(gè)比特進(jìn)行操作。
在步驟S5,解碼處理器讀一個(gè)在步驟S3選為下個(gè)需讀的存儲(chǔ)單元RD[NXT@]。這個(gè)存儲(chǔ)單元是@10、@11、@12和@13之一。它因此存有一個(gè)符號(hào)。于是就輸出這個(gè)符號(hào)。
在步驟S6,解碼處理器選擇存儲(chǔ)單元@0作為下個(gè)需讀的存儲(chǔ)單元NXT@=@0。隨后,解碼處理器將執(zhí)行步驟S1,再按需解碼的數(shù)據(jù)中的下一個(gè)比特進(jìn)行操作。
在解碼處理器第一次執(zhí)行步驟S1-S6時(shí),當(dāng)前比特可能不是一個(gè)碼字的第一個(gè)比特。這無(wú)關(guān)緊要。結(jié)果只是第一個(gè)解碼的符號(hào)是錯(cuò)誤的,而隨后解碼得到的這些符號(hào)將是正確的。這種自調(diào)整的特色是由于數(shù)據(jù)是按照Huffman樹可變長(zhǎng)度編碼的。
圖3所示的按照?qǐng)D4所示的方法工作的解碼器是實(shí)現(xiàn)圖1所示的基本特色的一個(gè)例子。在這方面,要說(shuō)明以下幾點(diǎn)。在圖1中的存儲(chǔ)位置ML在圖3中是以存儲(chǔ)單元@1、@2和@3的右半和左半部分的形式來(lái)實(shí)現(xiàn)的。在圖1中的輸出符號(hào)數(shù)據(jù)OSD在圖3中是以存儲(chǔ)單元@10、@11、@12和@13的地址的形式實(shí)現(xiàn)的,這些地址分別包含在存儲(chǔ)單元@0、@1、@2的左半部分和存儲(chǔ)單元@2的右半部分內(nèi)。在圖1中的選擇步驟SEL在圖4中是以步驟S1-S3和S6的形式實(shí)現(xiàn)的。在這方面,要指出的是,在圖4中最近選擇的存儲(chǔ)位置的內(nèi)容或者是存儲(chǔ)單元@1或@2的地址或者是構(gòu)成碼端指示的標(biāo)志√。在后一種情況下,解碼處理器將接著讀存儲(chǔ)單元@0,這表示Huffman樹的開始。在圖1中的鑒定步驟EVA在圖4中是以步驟S4和S5的形式實(shí)現(xiàn)的。
圖5例示了一個(gè)按照本發(fā)明實(shí)現(xiàn)的MPEG解碼器。這個(gè)MPEG解碼器響應(yīng)MPEG數(shù)據(jù)流MDS提供各種解碼數(shù)據(jù),諸如視頻數(shù)據(jù)VID和音頻數(shù)據(jù)AUD之類。這個(gè)MPEG解碼器包括輸入段INP、可變長(zhǎng)度解碼器VLD和再解碼電路FDC??勺冮L(zhǎng)度解碼器VLD包括存儲(chǔ)器MEM和解碼處理器DPR。存儲(chǔ)器MEM存有各種類型的數(shù)據(jù)的各個(gè)Huffman樹HT[1]…HT[N]。這些Huffman樹用如以上結(jié)合圖1說(shuō)明的方式存儲(chǔ)。
MPEG解碼器的基本工作情況如下。輸入段INP識(shí)別當(dāng)前接收的數(shù)據(jù)的類型。例如,輸入段INP可以識(shí)別MPEG數(shù)據(jù)流中的表示例如一系列DCT系數(shù)或運(yùn)動(dòng)矢量的數(shù)據(jù)元。輸入段INP將一個(gè)標(biāo)識(shí)信號(hào)IS提供給可變長(zhǎng)度解碼器VLD。標(biāo)識(shí)信號(hào)IS其實(shí)是告訴可變長(zhǎng)度解碼器VLD它當(dāng)前接收的數(shù)據(jù)的類型。解碼處理器DPR利用標(biāo)識(shí)信號(hào)IS從存儲(chǔ)器MEM中讀出正確的Huffman樹HT。具體地說(shuō),標(biāo)識(shí)信號(hào)IS確定了解碼處理器DPR為了對(duì)一個(gè)碼字解碼將在哪個(gè)地址開始讀存儲(chǔ)器。因此,可變長(zhǎng)度解碼器VLD為再解碼電路FDC提供類型可以改變的可變長(zhǎng)度解碼數(shù)據(jù)。再解碼電路FDC對(duì)這數(shù)據(jù)進(jìn)一步進(jìn)行處理,處理可以包括例如去量化、離散余弦變換和運(yùn)動(dòng)補(bǔ)償。
這些如圖5中所示存儲(chǔ)在存儲(chǔ)器MEM內(nèi)的Huffman樹HT[1]…HT[N]可以是在工廠內(nèi)就已經(jīng)預(yù)先存儲(chǔ)的。然而,一個(gè)或多個(gè)Huffman樹也可以是在MPEG解碼器出廠后存儲(chǔ)的。例如,可以用提供給MPEG解碼器的存儲(chǔ)器配置數(shù)據(jù)存儲(chǔ)一個(gè)Huffman樹。存儲(chǔ)器配置數(shù)據(jù)通常包括需存儲(chǔ)在存儲(chǔ)器MEM內(nèi)的數(shù)據(jù)和有關(guān)例如數(shù)據(jù)應(yīng)該以代碼的形式存儲(chǔ)在哪里的信息。存儲(chǔ)器配置數(shù)據(jù)可以通過(guò)象互聯(lián)網(wǎng)那樣的通信網(wǎng)提供給MPEG解碼器。
這些附圖和以上對(duì)它們的說(shuō)明只是用來(lái)例示本發(fā)明,而不是對(duì)本發(fā)明有所限制。顯然,有眾多的屬于所附權(quán)利要求書所明確的本發(fā)明專利保護(hù)范圍的可供選擇的替換方案。在這方面,要說(shuō)明以下幾點(diǎn)。
任何類型的Huffman樹都可以用如圖1所示的方式存儲(chǔ)在一個(gè)存儲(chǔ)器內(nèi)。這個(gè)圖中所示出的Huffman樹比較簡(jiǎn)單。在圖3中示出的Huffman樹也是比較簡(jiǎn)單的。原因是用簡(jiǎn)潔的說(shuō)明可以使得對(duì)本發(fā)明有充分的了解。實(shí)際上,Huffman樹是比較復(fù)雜的。例如,在MPEG中用來(lái)對(duì)DCT系數(shù)編碼的Huffman樹就復(fù)雜得多。然而,這個(gè)Huffman樹可以按照?qǐng)D1所示原理存儲(chǔ)在一個(gè)存儲(chǔ)器內(nèi)。圖1和3所示的Huffman樹是相當(dāng)特殊的,每個(gè)節(jié)點(diǎn)有一個(gè)在末端有一個(gè)葉的分支和另一個(gè)后面還有分支的分支。這決不排除存儲(chǔ)沒(méi)有這種特殊特征的Huffman樹。
有各種方式將一個(gè)Huffman樹存入一個(gè)存儲(chǔ)器。圖3只例示了其中的用一個(gè)存儲(chǔ)單元的一個(gè)左半或一個(gè)右半部分表示一個(gè)分支的一種可行的實(shí)現(xiàn)方式。另一種可行的實(shí)現(xiàn)方式是每個(gè)分支分別用一個(gè)不同的存儲(chǔ)單元表示。在這種情況下,一個(gè)表示一個(gè)后面還有后續(xù)分支的分支的存儲(chǔ)單元應(yīng)該存有一個(gè)指向表示這些后續(xù)分支的存儲(chǔ)單元的指針。來(lái)自需解碼的數(shù)據(jù)的當(dāng)前比特的值于是將確定應(yīng)該從這些存儲(chǔ)單元中讀哪一個(gè)存儲(chǔ)單元。
有各種方式提供一個(gè)輸出符號(hào)。圖3只是例示了輸出符號(hào)存儲(chǔ)在專用存儲(chǔ)單元內(nèi)的一種可行的實(shí)現(xiàn)。一個(gè)表示一個(gè)在末端有一個(gè)葉的分支的存儲(chǔ)位置含有存有適當(dāng)輸出符號(hào)的存儲(chǔ)單元的地址。另一種可行的實(shí)現(xiàn)方式是直接將一個(gè)輸出符號(hào)存儲(chǔ)在一個(gè)表示一個(gè)在末端有一個(gè)葉的分支的存儲(chǔ)位置。這種實(shí)現(xiàn)方式的優(yōu)點(diǎn)是與圖3所示的可能方式相比較提供一個(gè)輸出符號(hào)要少一個(gè)步驟。
有許多方式用硬件或軟件或者兩者實(shí)現(xiàn)那些功能。在這方面,這些附圖只是圖示性的,每個(gè)只表示本發(fā)明的一個(gè)可行的實(shí)施例。因此,雖然一個(gè)附圖將不同的功能示為不同的方框,但是這決不排除就一個(gè)硬件或軟件可以執(zhí)行若干個(gè)功能,也不排除一個(gè)功能可以用一些硬件或軟件或者是硬件和軟件的組合執(zhí)行。
例如,圖3所示的解碼處理器DPR可以用一個(gè)適當(dāng)?shù)木幊逃?jì)算機(jī)電路實(shí)現(xiàn)。一組包含在一個(gè)程序存儲(chǔ)器內(nèi)的指令可以使這個(gè)計(jì)算機(jī)電路執(zhí)行以上結(jié)合圖3和4說(shuō)明的各種操作。這個(gè)指令組可以通過(guò)讀一個(gè)諸如存有這個(gè)指令組的盤片之類的數(shù)據(jù)媒體裝入程序存儲(chǔ)器。讀取可以通過(guò)一個(gè)諸如互聯(lián)網(wǎng)之類的通信網(wǎng)進(jìn)行。在這種情況下,一個(gè)業(yè)務(wù)經(jīng)營(yíng)方將使這個(gè)指令組可以為公眾所用。
在一項(xiàng)權(quán)利要求中的任何引用標(biāo)記不應(yīng)該理解為對(duì)這項(xiàng)權(quán)利要求的限制。詞“包括”并不排除還存在權(quán)利要求中所列以外的其他組成部分或步驟。在組成部分或步驟前面冠以“一個(gè)”并不排除存在多個(gè)這樣的組成部分或步驟。
權(quán)利要求
1.一種對(duì)經(jīng)按照一個(gè)Huffman樹(HT)可變長(zhǎng)度編碼的數(shù)據(jù)解碼的解碼器,其特征是所述解碼器包括一個(gè)存有所述Huffman樹使得所述Huffman樹的分支各由存儲(chǔ)位置(ML)表示的存儲(chǔ)器(MEM),如果一個(gè)存儲(chǔ)位置表示一個(gè)隨后有一些后續(xù)分支的分支,那么所述存儲(chǔ)位置存有一個(gè)指向表示這些后續(xù)分支的存儲(chǔ)位置的指針(P);如果所述存儲(chǔ)位置表示一個(gè)沒(méi)有后續(xù)分支的分支,所述存儲(chǔ)位置就存有一個(gè)碼端指示(ECI)和輸出符號(hào)數(shù)據(jù)(OSD);一個(gè)用一個(gè)數(shù)據(jù)元序列內(nèi)的每個(gè)數(shù)據(jù)元(DE)執(zhí)行下列步驟的解碼處理器(DPR)一個(gè)根據(jù)所述數(shù)據(jù)元和最近選擇的存儲(chǔ)位置的內(nèi)容選擇一個(gè)存儲(chǔ)位置的選擇步驟(SEL);以及一個(gè)檢驗(yàn)所選存儲(chǔ)位置是否存有碼端指示、如果有的話就根據(jù)輸出符號(hào)數(shù)據(jù)提供一個(gè)輸出符號(hào)(OS)的鑒定步驟(EVA)。
2.一種對(duì)經(jīng)按照一個(gè)Huffman樹(HT)可變長(zhǎng)度編碼的數(shù)據(jù)解碼的方法,其特征是所述方法使用一個(gè)存有所述Huffman樹、使得所述Huffman樹的分支(B)各由存儲(chǔ)位置(ML)表示的存儲(chǔ)器,如果一個(gè)存儲(chǔ)位置表示一個(gè)隨后有一些后續(xù)分支的分支,那么所述存儲(chǔ)位置存有一個(gè)指向表示這些后續(xù)分支的存儲(chǔ)位置的指針(P);如果所述存儲(chǔ)位置表示一個(gè)沒(méi)有后續(xù)分支的分支,所述存儲(chǔ)位置就存有一個(gè)碼端指示(ECI)和輸出符號(hào)數(shù)據(jù)(OSD),所述方法的特征還包括用一個(gè)數(shù)據(jù)元序列內(nèi)的每個(gè)數(shù)據(jù)元(DE)執(zhí)行下列步驟一個(gè)根據(jù)所述數(shù)據(jù)元和最近選擇的存儲(chǔ)位置的內(nèi)容選擇一個(gè)存儲(chǔ)位置的選擇步驟(SEL);以及一個(gè)檢驗(yàn)所選存儲(chǔ)位置是否存有碼端指示、如果有的話就根據(jù)輸出符號(hào)數(shù)據(jù)提供一個(gè)輸出符號(hào)(OS)的鑒定步驟(EVA)。
3.一種配置一個(gè)對(duì)經(jīng)按照一個(gè)Huffman樹(HT)可變長(zhǎng)度編碼的數(shù)據(jù)解碼的解碼器的方法,其特征是將所述Huffman樹(HT)存儲(chǔ)在一個(gè)存儲(chǔ)器內(nèi),使得所述Huffman樹的分支各由存儲(chǔ)位置(ML)表示;如果一個(gè)存儲(chǔ)位置表示一個(gè)隨后有一些后續(xù)分支的分支,那么所述存儲(chǔ)位置存有一個(gè)指向表示這些后續(xù)分支的存儲(chǔ)位置(ML)的指針(P);如果所述存儲(chǔ)位置表示一個(gè)隨后沒(méi)有后續(xù)分支的分支,那么所述存儲(chǔ)位置存有一個(gè)碼端指示(ECI)和用來(lái)產(chǎn)生一個(gè)輸出符號(hào)(OS)的輸出符號(hào)數(shù)據(jù)(OSD)。
4.一種提供存儲(chǔ)器配置數(shù)據(jù)、可以將一個(gè)Huffman樹(HT)存儲(chǔ)在一個(gè)存儲(chǔ)器內(nèi)的方法,使得所述Huffman樹的分支各由存儲(chǔ)位置(ML)表示;如果一個(gè)存儲(chǔ)位置表示一個(gè)隨后有一些后續(xù)分支的分支,那么所述存儲(chǔ)位置存有一個(gè)指向表示這些后續(xù)分支的存儲(chǔ)位置(ML)的指針(P);如果所述存儲(chǔ)位置表示一個(gè)隨后沒(méi)有后續(xù)分支的分支,那么所述存儲(chǔ)位置存有一個(gè)碼端指示(ECI)和用來(lái)產(chǎn)生一個(gè)輸出符號(hào)(OS)的輸出符號(hào)數(shù)據(jù)(OSD)。
5.一種用于一個(gè)解碼器的計(jì)算機(jī)程序產(chǎn)品,所述解碼器包括一個(gè)存有一個(gè)Huffman樹的存儲(chǔ)器(MEM),使得所述Huffman樹的分支各由存儲(chǔ)位置(ML)表示;如果一個(gè)存儲(chǔ)位置表示一個(gè)隨后有一些后續(xù)分支的分支,那么所述存儲(chǔ)位置存有一個(gè)指向表示這些后續(xù)分支的存儲(chǔ)位置的指針(P);如果所述存儲(chǔ)位置表示一個(gè)沒(méi)有后續(xù)分支的分支,所述存儲(chǔ)位置就存有一個(gè)碼端指示(ECI)和輸出符號(hào)數(shù)據(jù)(OSD),所述計(jì)算機(jī)程序產(chǎn)品包括一組指令,所述這組指令在裝入所述解碼器時(shí)使所述解碼器用一個(gè)數(shù)據(jù)元序列內(nèi)的每個(gè)數(shù)據(jù)元(DE)執(zhí)行下列步驟一個(gè)根據(jù)所述數(shù)據(jù)元和最近選擇的存儲(chǔ)位置的內(nèi)容選擇一個(gè)存儲(chǔ)位置的選擇步驟(SEL);以及一個(gè)檢驗(yàn)所選存儲(chǔ)位置是否存有碼端指示、如果有的話就根據(jù)輸出符號(hào)數(shù)據(jù)提供一個(gè)輸出符號(hào)(OS)的評(píng)定步驟(EVA)。
全文摘要
經(jīng)按照一個(gè)Huffman樹(HT)可變長(zhǎng)度編碼的數(shù)據(jù)用以下方式解碼。一個(gè)存儲(chǔ)器(MEM)存有所述Huffman樹,使得所述Huffman樹的分支各由存儲(chǔ)位置(ML)表示。如果一個(gè)存儲(chǔ)位置表示一個(gè)隨后有一些后續(xù)分支的分支,那么這個(gè)存儲(chǔ)位置存有一個(gè)指向表示這些后續(xù)分支的存儲(chǔ)位置的指針(P)。如果這個(gè)存儲(chǔ)位置表示一個(gè)沒(méi)有后續(xù)分支的分支,那么這個(gè)存儲(chǔ)位置就存有一個(gè)碼端指示(ECI)和輸出符號(hào)數(shù)據(jù)(OSD)。解碼處理器(DPR)用一個(gè)數(shù)據(jù)元序列內(nèi)的每個(gè)數(shù)據(jù)元(DE)執(zhí)行一個(gè)選擇步驟(SEL)和一個(gè)鑒定步驟(EVA)。在選擇步驟,解碼處理器根據(jù)數(shù)據(jù)元和最近選擇的存儲(chǔ)位置的內(nèi)容選擇一個(gè)存儲(chǔ)位置。在鑒定步驟,解碼處理器檢驗(yàn)所選擇的存儲(chǔ)位置是否存有碼端指示。如果是這樣的話,解碼處理器根據(jù)輸出符號(hào)數(shù)據(jù)提供一個(gè)輸出符號(hào)(OS)。這種可變長(zhǎng)度解碼的方式提供了可變長(zhǎng)度解碼的高效益實(shí)現(xiàn),特別是在需要對(duì)各種類型的可變長(zhǎng)度碼解碼時(shí)。它特別適合于在MPEG解碼器內(nèi)使用。
文檔編號(hào)H04N7/26GK1342343SQ00804407
公開日2002年3月27日 申請(qǐng)日期2000年10月26日 優(yōu)先權(quán)日1999年10月29日
發(fā)明者S·佩奈恩 申請(qǐng)人:皇家菲利浦電子有限公司