專利名稱:用于在每個時鐘周期對兩個代碼進(jìn)行解碼的可變長解碼器及其方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一個可變長解碼器(VLD),尤其一個用于可變長代碼的解碼器,它適用于對壓縮圖像數(shù)據(jù)進(jìn)行解碼。
最近,在圖像數(shù)據(jù)壓縮技術(shù)方面已經(jīng)取得了長足的進(jìn)步。這些技術(shù)的目的是提高諸如數(shù)字傳輸和記錄的效率,方法是以低于非編碼圖像數(shù)據(jù)的比特速率對圖像數(shù)據(jù)進(jìn)行編碼。為達(dá)到這些編碼效率而采用的典型技術(shù)是預(yù)測編碼和變換編碼。
另外,通過對已壓縮代碼進(jìn)行可變長編碼能夠得到進(jìn)一步的圖像數(shù)據(jù)壓縮??勺冮L編碼包括根據(jù)待編碼值出現(xiàn)的頻率改變編碼的比特寬度。典型的情況是,以較高頻率出現(xiàn)的值相對比較低頻率出現(xiàn)的值而言被賦予更短的代碼。因此,同定長編碼相比能取得更小的比特速率。可變長代碼的一個例子是霍夫曼代碼。
可變長代碼字(VLC)通常可通過使用查尋表(LUT)來解碼。一個n位的并行數(shù)據(jù)信號與查尋表相關(guān)聯(lián)。這個n位信號包含一個可變長代碼字(長度可能是n位),它用于對存儲在查尋表中的數(shù)據(jù)進(jìn)行尋址。存儲在查尋表中的數(shù)據(jù)與代碼長度和代碼值對應(yīng)。代碼長度指定了在n位信號中標(biāo)識的可變長代碼字的長度。代碼值是可變長代碼的解碼(即定長)值。查尋表的輸出是代碼長度和代碼值。
在美國推出了一種標(biāo)準(zhǔn),用于對高清晰度電視信號進(jìn)行數(shù)字化編碼。該標(biāo)準(zhǔn)在本質(zhì)上與MPEG-2標(biāo)準(zhǔn)相同,它是由國際標(biāo)準(zhǔn)化組織(ISO)的動態(tài)圖畫專家組(MPEG)提出的。該標(biāo)準(zhǔn)在本文中被稱作
“MPEG標(biāo)準(zhǔn)”,一篇草案內(nèi)部標(biāo)準(zhǔn)(DIS)出版刊物對它進(jìn)行了描述。該刊物的名稱是《信息技術(shù)——動態(tài)圖畫及相關(guān)音頻的通用編碼,推薦H.262 ISO/IEC 13818-21995(E)》(Information Technology-GenericCoding of Moving Pictures and Associated Audio,Recommendation H.262ISO/IEC 13818-21995(E)),可以從ISO得到該文,在此我們將其結(jié)合于此來講述MPEG-2數(shù)字化視頻編碼標(biāo)準(zhǔn)。
就MPEG標(biāo)準(zhǔn)如何使用可變長編碼為例而言,考慮代碼表B-14和B-15,它們定義在MPEG-2標(biāo)準(zhǔn)的附錄B中。在這個代碼表中,待解碼的可變長代碼字的最大長度為17位。每個代碼都與不同組合的“運行”(”run”)和“水平”(“l(fā)evel)值相對應(yīng),運行值是在掃描次序中先于非零系數(shù)的零系數(shù)的數(shù)目,而水平值是非零系數(shù)的絕對值。
MPEG-2高清晰度電視(HDTV)視頻解碼器需要非常高的解碼速率。盡管壓縮位流中有很多場經(jīng)過了可變長編碼,但是還約有85%的位流包括離散余弦變換(DCT)系數(shù)解碼。高清晰度電視位流需要解碼在每秒100兆可變長代碼的數(shù)量級進(jìn)行,一次解一個代碼將需要一個100MHz的時鐘。這已超出了現(xiàn)有高清晰度ASIC的實用極限。另一方式則是在每個時鐘周期對多個代碼進(jìn)行解碼。
一種對多個代碼進(jìn)行解碼的方法是使用兩個隨機(jī)運行的VLD。此方法的不足在于因為數(shù)據(jù)是切片格式的,而且每個切片的長度在解碼之前都是未知的,所以必須在不同的切片上運行兩個并行路徑,這就需要對內(nèi)存進(jìn)行預(yù)處理以分離每個其他的切片。
由Ozaki擁有的美國專利5,428,356號被結(jié)合于此作為對VLD的教導(dǎo),該專利使用預(yù)定的、經(jīng)優(yōu)先序排列的解碼方法。Ozaki的VLD包括一個第一解碼器電路,用于對一個霍夫曼代碼串中的前導(dǎo)霍夫曼代碼進(jìn)行解碼;一個第二解碼器電路,用于對從霍夫曼代碼串前導(dǎo)部分由兩個預(yù)定霍夫曼代碼組成的一個連續(xù)串進(jìn)行解碼。第一解碼器使用了一個如上文所述的查尋表(LUT)。第二解碼器使用了一個查尋表,其中,每個固定數(shù)目的的預(yù)定代碼字對被用于對存儲在查尋表中的數(shù)據(jù)進(jìn)行尋址。存儲在查尋表中的數(shù)據(jù)與代碼長度和代碼值對序列相對應(yīng)。當(dāng)在輸入流中遇到一個預(yù)定代碼字對時,相應(yīng)的代碼長度對和代碼值對就由第二解碼器輸出。當(dāng)?shù)诙獯a器輸出兩個解碼值時,一個選擇器就選擇第二解碼器的輸出;當(dāng)?shù)诙獯a器不能產(chǎn)生兩個解碼值時,選擇器就選擇第一解碼器的輸出。
Ozaki專利的VLD的局限在于第二解碼器只能對有限數(shù)目的預(yù)定雙串組合進(jìn)行解碼。尤其是,第二解碼器只能對具有總長較短的選定代碼對進(jìn)行解碼。如果遇到更長長度的代碼串時,就需要多個時鐘周期。因為通常選定霍夫曼代碼是為了使低頻代碼具有較長的長度,而Ozaki的第二解碼器通常不會去對包含低頻代碼的代碼對進(jìn)行解碼,于是要消耗更多的時鐘周期。
另外,Ozaki的VLD需要大量的內(nèi)存,因為一個n位地址必須作為輸入提供給查尋表。此外,查尋表中的每個內(nèi)存地址都存有一個z位的代碼長度和一個v位的代碼值。于是,總共需要z+v位來存儲代碼長度和代碼值。查尋表一所需的總位數(shù)是2n*(z+v)。
相應(yīng)地,有人推薦限制轉(zhuǎn)換表的大小以降低轉(zhuǎn)換表所需的內(nèi)存量。但是,這些技術(shù)導(dǎo)致了較慢的解碼過程。
本發(fā)明是一種用于在單個時鐘周期內(nèi)確定數(shù)據(jù)流中包括的多個可變長編碼數(shù)據(jù)值的長度的裝置和方法。
該裝置中包含一個用于接收數(shù)據(jù)流的移位器。該移位器響應(yīng)一個移位控制信號來傳遞多個可變長編碼數(shù)據(jù)值的子集。
一個第一長度解碼裝置被耦合以接收該多個編碼數(shù)據(jù)值的子集。該第一長度解碼裝置進(jìn)行第一解碼操作,以確定子集中的第一編碼數(shù)據(jù)值的長度。
一個第二長度解碼裝置被耦合以接收該多個編碼數(shù)據(jù)值子集。第二長度解碼裝置進(jìn)行第二解碼操作,以單獨確定子集中第二個編碼數(shù)據(jù)值的長度。在子集中,第二編碼數(shù)據(jù)值緊跟著第一編碼數(shù)據(jù)值。第一、第二解碼的操作同時進(jìn)行。
一個合成長度解碼器響應(yīng)第一和第二編碼數(shù)據(jù)值的長度,從而輸出第一和第二數(shù)據(jù)值的合成長度。
一個移位控制器響應(yīng)第一和第二數(shù)據(jù)值的合成長度形成移位控制信號。該移位控制信號可識別移位器中下一個編碼數(shù)據(jù)值的位置。下一個編碼數(shù)據(jù)值緊跟著第二編碼數(shù)據(jù)值。移位控制器將移位控制信號傳送給移位器。
圖1是可變長解碼器-系數(shù)解碼器的示例方框圖。
圖2是顯示圖1所示的可變長解碼器的VLD長度解碼電路的框圖。
圖3是一個顯示圖2中的控制邏輯部分的方框圖。
圖4是一個顯示圖1所示的運行值/水平值解碼器的方框圖。
圖5是顯示可用于圖1所示可變長解碼器的第二示例VLD長度解碼電路的框圖。
概要圖1是一個用于本發(fā)明的可變長解碼器(VLD)系數(shù)解碼器100的示例框圖。本發(fā)明是一種改進(jìn)的可變長解碼器(VLD)長度解碼電路110,它能夠在單個時鐘周期內(nèi)對任何兩個連續(xù)編碼數(shù)據(jù)值的組合進(jìn)行解碼。在圖1的例子中,本發(fā)明被用于對DCT系數(shù)(占編碼數(shù)據(jù)流的85%左右)的長度進(jìn)行解碼。本技術(shù)領(lǐng)域內(nèi)的一般技術(shù)人員都明白,本發(fā)明也可用于對其他可變長編碼數(shù)據(jù)值(例如高級語法或其他可變長編碼值)進(jìn)行解碼。
圖2是圖1所示VLD長度解碼電路110的方框圖。該示例的長度解碼電路裝置110包括移位器206,用于將可變長編碼數(shù)據(jù)值傳送給第一長度解碼器210。第一長度解碼器210執(zhí)行第一解碼操作以確定第一個編碼數(shù)據(jù)值的長度211。
一個第二長度解碼器212被耦合用以從移位多路轉(zhuǎn)接器206接收編碼數(shù)據(jù)值,以進(jìn)行第二解碼操作,從而單獨地確定第二編碼數(shù)據(jù)值的長度。第二編碼數(shù)據(jù)值緊跟著第一編碼數(shù)據(jù)值。第一和第二解碼操作同時進(jìn)行。第二長度解碼器212包括多個解碼器212a-212p,每個解碼器對應(yīng)第一編碼數(shù)據(jù)值的每個可能的長度。212a-212p中的每個解碼器都同時確定第二編碼數(shù)據(jù)值的長度213a-213p,每一個都分別假設(shè)第一編碼數(shù)據(jù)值的一個不同的長度。然后,合成長度解碼器214使用第一數(shù)據(jù)值的實際解碼長度211,選擇由解碼器212a-212p輸出的解碼長度213a-213p之一,并輸出一個合成長度信號L3。
一個移位控制器包括塊218、222、234、和236,它被耦合以從合成長度解碼器214接收合成長度,以形成移位控制信號235,它用于確定將哪個編碼數(shù)據(jù)值傳遞給第一和第二長度解碼裝置。移位控制信號235被傳遞給移位器206。
關(guān)于VLD長度解碼器電路110在下文有詳述,請參考圖2。
詳細(xì)描述這里假設(shè)讀者對下文——《信息技術(shù)——動態(tài)圖畫及相關(guān)音頻的通用編碼,推薦H.262 ISO/IEC 13818-21995(E)》(Information Technology-Generic Coding of Moving Pictures and Associated Audio InformationVideo,Recommendation H.262 ISO/IEC 13818-21995(E))[以下簡稱“MPEG標(biāo)準(zhǔn)”]了解,以后不再重復(fù)。
再參照圖1,一個VLD長度解碼電路110接收48位壓縮輸入數(shù)據(jù)流DATA IN111,它包含了經(jīng)編碼的數(shù)據(jù)。其余提供給VLD長度解碼電路110的輸入信號(MACROBLOCK INTRA,LUMA/CHROMA,INTRA_VLC_FORMAT,TEST_MODE,HOLD,RESTART,以及EXTERNAL_MUX_POSITION)在下文將參照圖3作更詳細(xì)的描述。標(biāo)識位MACROBLOCK_INTRA定義在MPEG標(biāo)準(zhǔn)的段落6.3.17.1和表B-2至B-8中;標(biāo)識位LUMA/CHROMA表明接收的塊是亮度塊還是色度塊;INTRA_VLC_FORMAT在圖畫編碼擴(kuò)展及在MPEG-2標(biāo)準(zhǔn)的段落6.2.3.1中被定義。
VLD長度解碼電路110在每個時鐘周期確定兩個連續(xù)編碼數(shù)據(jù)值的長度。第一編碼數(shù)據(jù)值的長度由L1表示,第一和第二編碼數(shù)據(jù)值的合成長度由L3來表示。一個具有輸入數(shù)據(jù)111和經(jīng)解碼的長度值L1和L3的子集112被傳遞給VLD運行值/水平值解碼決20、VLD內(nèi)部(intra)DC系數(shù)解碼器130、以及輸出控制塊140。
VLD長度解碼電路110為VLD運行值/水平值解碼功能120提供B14和B15信號,并識別在運行值/水平值解碼過程中應(yīng)使用哪個查尋表。B14信號表明應(yīng)使用DCT系數(shù)表零查尋表(由MPEG標(biāo)準(zhǔn)、附錄B、表B-14定義)。B15信號表明應(yīng)使用DCT系數(shù)表一信息(由MPEG標(biāo)準(zhǔn)、附錄B、表B-15定義)。后幾種表以后將分別被稱作“表B-14”和“表B-15”。表B-14和B-15中為每種VLC規(guī)定了運行值和水平值,除了其運行值和水平值由表B-16規(guī)定的逃逸編碼值。
當(dāng)一個系數(shù)(由表B-14或B-15識別)的解碼值是“塊尾”順序,那么塊內(nèi)就沒有更多的系數(shù)。VLD長度解碼電路110檢測到塊尾順序并為輸出控制功能140提供信號END_OF_BLOCK。
VLD運行值/水平值解碼塊120接收輸入數(shù)據(jù)、長度L1和L3、表B14和B15。VLD運行值/水平值解碼塊120利用該信息來確定解碼值。對于DCT系數(shù)(而非DC內(nèi)系數(shù)),VLD運行值/水平值解碼塊120在輸入數(shù)據(jù)中為兩個VLC都確定運行值和水平值(定義在MPEG標(biāo)準(zhǔn)、段落3.79和3.119中)。這些值被分別標(biāo)記成RUN_1、LEVEL_1、RUN_2、和LEVEL_2。解碼值的確定基于表B14或B15,根據(jù)MPEG標(biāo)準(zhǔn)的表7-3它們可用于任何給定的待測塊。
很多運行值和水平值的可能組合沒有可變長代碼(VLC)來代表它們。為了對這些罕見的組合進(jìn)行編碼,采用了一種名叫逃逸編碼(EscapeCoding)的方法,它規(guī)定在MPEG標(biāo)準(zhǔn)、段落7.2.2.3中。根據(jù)這種方法,一個逃逸VLC后面要跟著一個與運行值對應(yīng)的6位定長代碼,而該碼后面又跟著一個12位定長代碼,它給出了符號級(signed level)的值。如果編碼數(shù)據(jù)值包含了“逃逸代碼”,那么VLD運行值/水平值解碼塊120會提供在MPEG標(biāo)準(zhǔn)、附錄B、表B-16中定義的運行和水平值。逃逸代碼的檢測由圖1中的信號ESC_1和ESC_2來指示,而解碼值由變量RUN_1_ESC、LEVEL_1_ESC、RUN_2_ESC、LEVEL_2_ESC給出。注意逃逸代碼仍然是一個VLC,一個逃逸代碼出現(xiàn)在每個B14和B15的查尋表中;盡管逃逸編碼值的運行及水平值具有定長,但在運行值和水平值之前的逃逸代碼仍是一個VLC。
在示例的系數(shù)解碼器中,由一個分離的VLD內(nèi)部DC系數(shù)解碼功能130對一個內(nèi)部編碼塊(即DC系數(shù),其頻率在兩維都是零)的VLC進(jìn)行解碼。當(dāng)塊中第一個VLC被VLC長度解碼電路110接收到時,輸出信號COEF_1被置位。當(dāng)COEF_1和MACROBLOCK_INTRA都被置位時,解碼功能130被激活。VLD內(nèi)部DC系數(shù)解碼功能130利用選定的數(shù)據(jù)和第一編碼數(shù)據(jù)值的長度(由長度解碼電路110提供)對DC系數(shù)進(jìn)行解碼。由VLD內(nèi)部DC系數(shù)解碼功能130解碼的值dct_dc_size被規(guī)定于MPEG標(biāo)準(zhǔn)、附錄B、表B-12和表B-13中。如果該塊是亮度塊,使用表B-12中的值dct_dc_size;如果該塊是色度塊,使用表B-13中的值dct_dc_size。
如果dct-dc_size的解碼值非零,那么VLC后面將跟有一個定長代碼——dc_dct_differential。dc_dct_differential的長度為dc_dct_size位。一個微分值被首先從編碼數(shù)據(jù)中恢復(fù)回來。該微分值與一個預(yù)測算子相加,以恢復(fù)最終解碼系數(shù)。本技術(shù)領(lǐng)域內(nèi)的一般技術(shù)人員可以輕易地組建一個內(nèi)部DC系數(shù)解碼功能130。
一個輸出控制器140從VLD長度解碼電路110接收兩個合成長度位L3(113)以及信號END_OF_BLOCK和ERROR。輸出控制器140也接收信號INTRA_VLC_FORMAT。輸出控制器140生成兩個信號ENABLE_1和ENABLE_2,它們用于指示什么時候信號RUN和LEVEL包含有效信息。輸出控制器140在塊頭將ENABLE_1和ENABLE_2置位,并在塊尾將ENABLE_1和ENABLE_2重新置位。取決于哪個表(B14或B15)在使用中(由INTRA_VLC_FORMAT指示)、以及當(dāng)END_OF_BLOCK發(fā)生時L3(0)或L3(2)是否置位,輸出控制器140決定塊的最后代碼到底是RUN_1/LEVEL_1還是RUN_2/LEVEL_2。如果檢測到錯誤(信號ERROR被設(shè)置成邏輯高位),那么ENABLE_1和ENABLE_2將被重新置位。
來自VLD運行值/水平值解碼塊120和內(nèi)部DC系數(shù)解碼功能130的輸出信號被提供給一個輸出多路轉(zhuǎn)接器150。輸出多路轉(zhuǎn)接器150使用信號ESC_1來選擇值RUN_1和值LEVEL_1(121和122),或者是值RUN_1_ESC和值LEVEL_1_ESC(123和124)。類似地,輸出多路轉(zhuǎn)接器150使用信號ESC_2來選擇值RUN_2和值LEVEL_2(125和126),或者是值RUN_2_ESC和值LEVEL_2_ESC(127和128)。被選定的值就作為RUN_1值151、LEVEL_1值152、RUN_2值153、LEVEL_2值154輸出。同樣地,如果是內(nèi)部編碼塊的第一系數(shù)(即DC系數(shù)),信號FC_FLAG和MACROBLOCK_INTRA將選擇DC_LEVEL。輸出多路轉(zhuǎn)接器150將DC系數(shù)傳送到RUN_1/LEVEL_1通道上。
圖2是一個方框圖,用于示例VLD長度解碼電路110。
一個移位裝置用于接收數(shù)據(jù)流DATA_IN。在示例中,移位裝置包括一個移位多路轉(zhuǎn)接器206和兩個寄存器202和204。移位多路轉(zhuǎn)接器206響應(yīng)移位控制信號235,為長度解碼傳送多個可變長編碼數(shù)據(jù)值的子集。
每個寄存器202和204的大小要能存儲兩個最大可能長度的VLC。在示例的實施例中,最長的VLC為24位,因此每個寄存器能容納48位。移位多路轉(zhuǎn)接器206能容納多達(dá)寄存器202和204總和的位數(shù)(少1)。示例的寄存器202接收48位新數(shù)據(jù),再將接收到的數(shù)據(jù)輸出到寄存器204和移位多路轉(zhuǎn)接器206。于是,寄存器204總比寄存器202落后一個周期。當(dāng)寄存器202和204中的內(nèi)容被傳遞給寄存器206,寄存器202中的內(nèi)容被下移給寄存器204,一個新的48位數(shù)據(jù)被傳遞給寄存器202,然后兩者都被傳遞給移位多路轉(zhuǎn)接器206。結(jié)果是每當(dāng)寄存器202和204被激活移進(jìn)一個新的48位字時,它們將進(jìn)行一次移位多路轉(zhuǎn)接器206中內(nèi)容的48位下移。這發(fā)生在以下情況下當(dāng)前存儲在移位多路轉(zhuǎn)接器206的95位內(nèi)容中有48位或48位以上已經(jīng)被傳遞給長度解碼功能208(傳遞一個“大于48”的信號238,以激活寄存器202和204,下文有論述)。示例的移位多路轉(zhuǎn)接器206將自身內(nèi)容的一個48位子集傳送給雙重長度解碼功能208。
長度解碼器功能208既包括第一又包括第二代碼長度解碼裝置。在實施例中,第一長度解碼裝置是一個傳統(tǒng)的解碼電路210,它被耦合以便從移位多路轉(zhuǎn)接器206接收多個解碼數(shù)據(jù)值的子集。解碼器210進(jìn)行一次第一解碼操作,以確定子集中第一編碼數(shù)據(jù)值的長度。
由于系數(shù)在表B-14和B-15中編碼方式的緣故,只需最多12位(最少要1位)就能確定VLC的長度,哪怕是對于一個24位的代碼。因此,如果遇到以下情況(即第一代碼是24位代碼,第二代碼是17位代碼),就必須處理36位來確定二者的長度。在這種情況下,前6位識別第一代碼的長度,第25至第36位識別二代碼的長度。在實施例中,寄存器被加載以便代碼從LSB解碼為MSB;每個VLC中(最多)需要12個LSB來識別VLC的長度。
解碼器電路210可能包括一個只讀存儲器(ROM)、一個可編程邏輯陣列(PLA)、以及一個邏輯門或類似部件(未標(biāo)出)。在形成第一編碼值的輸入串的m位中,前n位(n<m,n和m都是整數(shù))被用于確定代碼的長度。例如,如果m等于24,n等于12,那么前12位用來指示代碼的長度,而剩余位數(shù)用來定義代碼和符號。
解碼器210既能對DC系數(shù)的長度,也能對AC系數(shù)的長度進(jìn)行解碼。對DC系數(shù)長度進(jìn)行解碼用的是B12(亮度)或B13(色度)查尋表,而對AC系數(shù)進(jìn)行解碼用的是B14查尋表(非內(nèi)編碼塊,以及intra_vlc_format為0的內(nèi)編碼塊)或B15查尋表(intra_vlc_format為1的內(nèi)編碼塊)。因此解碼器210需要從控制邏輯216獲取信號B12、B13、B14、B15、B14-B15、和COEFF_1,以確定使用哪個查尋表來對當(dāng)前任意系數(shù)進(jìn)行解碼。這些信號對解碼器210進(jìn)行配置,以使用合適的查尋表。
解碼器電路210存儲的代碼與用來確定長度的n位相對應(yīng)。當(dāng)編碼數(shù)據(jù)值子集的第一部分(最多n位)與解碼器電路210中的代碼一致時,解碼器210輸出一個擊中信號211,來識別第一編碼值的長度。
第一長度解碼器210為第一編碼數(shù)據(jù)值的每種可能的長度都輸出一個相應(yīng)的位。長度解碼器210的單個位輸出被置于值1。被置位的位與第一編碼數(shù)據(jù)值的長度相對應(yīng),而后者由第一長度解碼器210所確定。二十位信號211被作為圖2中的信號L1從VLD長度解碼電路110輸出。
在實施例中,第一可變長代碼可能具有20個不同的長度值,分別與值2到20或值24相對應(yīng)。這些可能的長度由MPEG標(biāo)準(zhǔn)的表B12-B15確定。長度信號211是一個20位信號,每一位都分別與編碼值的20種可能的編碼值長度之一相對應(yīng)。信號211中有19位值為0,20位中有1位置1,它與第一代碼的解碼長度相對應(yīng)。這種形式的輸出信號211的優(yōu)點在于輸出信號211無需任何解碼,輸出信號211的一個單一置位可用作激活信號,而無需進(jìn)一步解碼,如下文將闡述。
在實施例中,不需要對21位DC系數(shù)解碼,因為該示例設(shè)備被用在主MPEG-2解碼器內(nèi)部,因此在位流中不會遇到21位代碼。本領(lǐng)域內(nèi)的一般技術(shù)人員都知道,在其他類型的數(shù)據(jù)流中可能會遇到不同的代碼長度,而第一長度解碼器必須在合適的查尋表中處理任何額外所需的長度。
第二長度解碼裝置212與移位多路轉(zhuǎn)接器206耦合,以接收多個編碼數(shù)據(jù)值的子集。第二長度解碼裝置212包括長度解碼器212a-212p,分別與第一編碼數(shù)據(jù)值的每個可能的長度相對應(yīng)。每個長度解碼器212a-212p同時工作,對多個編碼數(shù)據(jù)值的子集的不同部分作相應(yīng)的解碼。第二長度解碼裝置212進(jìn)行第二解碼操作,以單獨確定子集中第二個編碼數(shù)據(jù)值的長度。第二編碼數(shù)據(jù)值在子集中緊跟著第一編碼數(shù)據(jù)值。第一和第二解碼操作同時進(jìn)行。
在此規(guī)定一下,“單獨確定”指的是通過把第二代碼作為有別于第一代碼的單獨代碼進(jìn)行操作來確定第二代碼的長度。第一代碼長度由第一解碼器210來確定,第二代碼長度由第二長度解碼裝置212來確定。因此,第一和第二代碼并沒有合成為一個雙倍長代碼以供解碼,如美國專利第5,428,356號中所述(其中,每個雙倍長代碼的解碼是由單個解碼器通過查找單個表來進(jìn)行的,為的是識別出預(yù)定的解碼值對)。
例如,在示例的實施例中,第一代碼可能有2至20位或24位長。在子集中的位數(shù)按次序被編為0至47。解碼器212a試圖對這樣一個串進(jìn)行解碼,該串以數(shù)據(jù)值子集中的第三位(2號位)開頭,如果、也只有當(dāng)?shù)谝豢勺冮L代碼的長度是2時,它才是第二編碼數(shù)據(jù)值的第一位。而解碼器212b試圖對這樣一個串進(jìn)行解碼,該串以數(shù)據(jù)值子集的第四位(3號位)開頭,如果、也只有當(dāng)?shù)谝豢勺冮L代碼的長度是3時,它才是第二編碼數(shù)據(jù)值的第一位。解碼器212c至212r與第一編碼值的順序長度相對應(yīng),這是本領(lǐng)域的一般技術(shù)人員都能容易地認(rèn)識到的。解碼器212s試圖對這樣一個串進(jìn)行解碼,該串以數(shù)據(jù)值子集的第21位(20號位)開頭,如果、也只有當(dāng)?shù)谝豢勺冮L代碼的長度是20時,它才是第二編碼數(shù)據(jù)值的第一位。最后,解碼器212p試圖對這樣一個串進(jìn)行解碼,該串以數(shù)據(jù)值子集的第25位(24號位)開頭,如果、也只有當(dāng)?shù)谝豢勺冮L代碼的長度是最大的可能長度(即24)時,它才是第二編碼數(shù)據(jù)值的第一位。
在圖2所示的實施例中,當(dāng)?shù)谝唤獯a器210在某個周期內(nèi)處理內(nèi)部DC系數(shù)時,它只處理一個代碼長度。第一和第二AC系數(shù)被解碼的周期是在DC系數(shù)被解碼的周期之后。這種設(shè)計的好處在于長度解碼功能208不必在同一個時鐘周期內(nèi)對DC和AC系數(shù)進(jìn)行解碼。于是第二長度解碼裝置212只需為16種可能的AC系數(shù)長度從解碼器212a至212p中提供一個相應(yīng)的解碼器即可。也不必為4種長度(即12、18、19、20位,它們只出現(xiàn)在DC系數(shù)中而不出現(xiàn)在AC系數(shù)中)提供額外的解碼器212q-212t。本技術(shù)領(lǐng)域內(nèi)的一般技術(shù)人員可知,在另一實施例(在下文將參照圖5進(jìn)行解釋)中,解碼功能508能在解碼器512中對內(nèi)部DC系數(shù)進(jìn)行解碼,它與第一AC系數(shù)在第二長度解碼器512中被解碼的同時進(jìn)行;但是第二長度解碼過程中需要額外的解碼器。
再參見圖2,因為塊的第二編碼系數(shù)不可能是DC系數(shù),解碼器212a至212p只需使用AC系數(shù)的查尋表B14和B15。解碼器212a至212p由信號B14、B15、以及B14-B15配置(采用合適的查尋表),這些信號從控制邏輯216處收到。
根據(jù)本發(fā)明的一個方面,212a至212p中每個長度解碼器根據(jù)相應(yīng)的第一編碼數(shù)據(jù)值可能的長度值同時確定一個對應(yīng)的第二編碼數(shù)據(jù)值的長度值。只有被解碼器212a至212p所確定的長度之一才是第二值的正確長度。為了消除先有技術(shù)的延時(等候?qū)Φ谝痪幋a值的長度進(jìn)行解碼,來確定從哪里對第二值進(jìn)行解碼),本發(fā)明同時確定所有可能的第二值長度,它與第一值長度的解碼(第二代碼的每一種可能的長度都是基于第一代碼分別不同的可能長度)同時進(jìn)行。于是,第一值的解碼長度被用來選擇一個已經(jīng)生成的正確的第二解碼長度值。
通過使用信號211的單個被置位作為激活位,合成長度解碼器能迅速激活解碼器212a至212p中單個解碼器的傳送,而無需對第一長度作進(jìn)一步的解碼。本技術(shù)領(lǐng)域內(nèi)的一般技術(shù)人員可以很容易地在合成長度解碼器中組建一個邏輯部件,用來從212a至212p中選擇一個第二長度解碼器。
第二長度解碼裝置的每個長度解碼器212a至212p產(chǎn)生一個對應(yīng)的輸出信號213a至213p,代表由長度解碼器212a至212p所確定的第二編碼數(shù)據(jù)值的長度。在實施例中,每個輸出信號213a至213p都是一個16位信號,與第二編碼值的16種可能的長度(2-11、13-17、24)相對應(yīng)。長度12和18-20只能用于DC系數(shù),因此肯定不能與第二編碼值的長度對應(yīng)。這個16位信號包括15個0和一個1,類似于第一解碼器210的20位信號輸出。
合成長度解碼器214使用信號211(第一長度指示信號)的單個被置位,通過對應(yīng)一個長度解碼器212a至212p激活傳遞一個輸出信號213a至213p。這個激活的輸出信號是對應(yīng)于第一編碼數(shù)據(jù)值長度的解碼器輸出信號,信號211的位因為它而置。換而言之,合成長度解碼器214可以響應(yīng)第一長度信號211,來選擇一個長度解碼器212a至212p的輸出信號。具有選定輸出信號(信號213a至213p之一)的長度解碼器(解碼器212a至212p之一)是對應(yīng)于第一編碼數(shù)據(jù)值長度(由第一長度信號211指示)的長度解碼器。被選定的輸出信號指示了第二編碼數(shù)據(jù)值的實際長度。
例如,考慮一個下面這種情況第一編碼值有3位,第二編碼值有17位。如果第一代碼長度是3,那么信號211第二位的值被置為1,信號211的所有第1位、第3至第20位的值全部為0。在第一值被解碼的同時,解碼器212a試圖將第二編碼值的長度進(jìn)行解碼,這里假定(非正確地)第一編碼值的長度是2;解碼器212b將第二編碼值的長度進(jìn)行解碼,假定(非正確地)第一編碼值的長度是3;依此類推。合成長度解碼器214使用信號211的被置(第二)位來激活傳遞解碼器212b(第二解碼裝置212中的解碼器212a至212p的第二個)的輸出信號傳遞。被激活輸出信號213b具有16位。這樣一來,第二編碼值長度等于17,輸出信號213b的第15位的值被置1,而信號213b的第1至第14位以及第16位被置0。
在示例實施例中,合成長度解碼器214輸出一個40位信號215。第一編碼值可能的長度(對于圖2的AC系數(shù)來說,是2-11、13-17、24)能與第二編碼值可能的長度(2-11、13-17、24,定義在MPEG標(biāo)準(zhǔn)的表B14和B15中)相結(jié)合,產(chǎn)生40個不同的合成長度,與合成長度2-35、37-41及48相對應(yīng)。40位中有1位被置位,指示第一和第二編碼值的合成長度。信號215中其余39位全被置0。這個40位輸出信號L3標(biāo)識了兩個編碼數(shù)據(jù)值的合成長度。信號L1和L3被傳送給VLD運行值/水平值解碼功能120(如圖1所示)。
VLD長度解碼電路同樣也包括一個移位控制裝置(包括功能218、222、234和236),用于接收第一和第二編碼數(shù)據(jù)值的合成長度215。移位控制裝置形成了移位控制信號235,用于確定傳遞給長度解碼功能208的子集中包含有哪些編碼數(shù)據(jù)值,并將移位控制信號235傳遞給移位多路轉(zhuǎn)接器206。移位控制裝置同樣也形成一個移位激活信號238并將其傳遞給寄存器202和204,以便隨時將新數(shù)據(jù)加載到移位多路轉(zhuǎn)接器206上,保證移位多路轉(zhuǎn)接器206中的“在流水線上”有足夠多的編碼數(shù)據(jù),從而在長度解碼的過程中避免了中斷。
移位控制裝置的寄存器234和236具有移位多路轉(zhuǎn)接器206中一個位置的6個最小有效位(LSB)。這些最小有效位指示了1到48之間的一個比特位置(bit position),那里放有第一編碼數(shù)據(jù)值的最小有效位。
通過信號235,將寄存器234中的值加到移位多路轉(zhuǎn)接器206中的多路轉(zhuǎn)接選擇終端206a中去,致使移位多路轉(zhuǎn)接器206提供其開始位在信號235中標(biāo)識的48位。
通過信號237,將寄存器236中的值加至一個求和生成塊218的輸入端。求和生成塊218的目的是在移位多路轉(zhuǎn)接器206中為DATA_IN數(shù)據(jù)流中的第3和第4編碼數(shù)據(jù)值(即緊跟著第一和第二編碼數(shù)據(jù)值的兩個值)計算下一個起始比特位置。該計算過程與長度解碼器210和第二長度解碼裝置212的長度解碼操作同時進(jìn)行。求和生成塊218包括多個加法器2201-22040。每個加法器2201-22040分別與合成長度215(即合成長度的每個可能的值的各個相應(yīng)的加法器)的一個不同的值相對應(yīng)。每個加法器同時生成相應(yīng)的候選移位控制信號。每個加法器相應(yīng)地將一個不同的常數(shù)加到第一編碼數(shù)據(jù)值的位置上,這與長度解碼器212a至212p對第二編碼數(shù)據(jù)值的長度解碼發(fā)生在同一時鐘周期(好處在于加法器復(fù)雜度降低,因為每個加法器只需加一個常數(shù))。于是,40個不同的候選位置被同時計算,每個對應(yīng)一個可能的合成長度。每個加法器中相應(yīng)的常數(shù)是加法器對應(yīng)的合成長度。每個加法器進(jìn)行一次模為48的加法。每個加法器的輸出是一個7位信號2211-22140。加法器輸出信號的6個最小有效位用來識別由加法器計算出的模48的和。最大有效位(MSB)是一個標(biāo)志位,當(dāng)求和大于或等于48時它便置位。加法器2201-22040的輸出信號2211-22140被傳遞給一個求和選擇器功能222。
當(dāng)求和選擇器222的輸出信號223中的MSB238被置為1的時候,第二編碼數(shù)據(jù)值的最大有效位位于移位多路轉(zhuǎn)接器206的48個最大有效位以內(nèi)。為了使移位多路轉(zhuǎn)接器206裝滿未被解碼的數(shù)據(jù),輸出信號223的最大有效位238被用來激活從寄存器202和204向移位多路轉(zhuǎn)接器206加載新數(shù)據(jù)。如上文所述,加載操作導(dǎo)致移位多路轉(zhuǎn)接器206中的數(shù)據(jù)下移,因此,先前的47個最大有效位現(xiàn)在是47個最小有效位。另有48位的新數(shù)據(jù)被移入移位多路轉(zhuǎn)接器206的最大有效位位置。
求和選擇器222接收40個候選移位控制信號,它們代表40個候選位置。求和選擇器222也從寄存器236接收當(dāng)前多路轉(zhuǎn)換器的位置237、以及接收從外部提供的多路轉(zhuǎn)換器位置240,下文對兩者都有闡述。合成長度解碼器214的輸出信號215被用來控制求和選擇器222。合成長度信號215的唯一被置位被用作激活信號,可激活從求和選擇器222傳送的加法器2201-22040之一的輸出。
在圖2的實施例中,當(dāng)內(nèi)部DC系數(shù)正在第一長度解碼器210中被處理時,合成長度解碼器214輸出一個與DC系數(shù)長度相等的合成長度215,于是第一和第二AC系數(shù)將在下一個周期中被處理。因此,完全可能在分別的周期中對內(nèi)部DC系數(shù)長度進(jìn)行解碼,以僅僅16個解碼器212a至212p構(gòu)成第二長度解碼裝置212。
在兩種情況下,40個輸出信號2211-22140中可能沒有一個被求和選擇器222選中。第一種情況是當(dāng)系統(tǒng)通過給控制邏輯216傳遞重起信號而被初始化時,控制邏輯216給求和選擇器222發(fā)出一個加載外部信號,使得求和選擇器222輸出外部提供的多路轉(zhuǎn)接器位置240??刂七壿?16在下文將參照圖3作詳細(xì)解釋。
另一種加法器輸出信號2211-22140中沒有一個被選中的情況是在塊的處理已經(jīng)完成,而且塊尾被檢測到的時候??刂七壿?16向求和選擇器222發(fā)出旁路(Bypass)信號。求和選擇器222選擇了當(dāng)前的多路轉(zhuǎn)接器的位置237作為輸出值223,位置237在旁路輸入終端222a處被檢測到。于是,移位多路轉(zhuǎn)接器206保持當(dāng)前狀態(tài),而不進(jìn)行進(jìn)一步的索引。
圖3是一個方框圖,顯示VLD長度解碼控制邏輯216的典型邏輯結(jié)構(gòu)??刂七壿嫿邮諑讉€由外部指定的參數(shù),包括BP_OVRD(HOLD)、RESTART、TEST_MODE、MACROBLOCK_INIRA、LUMA/CHROMA、以及INTRA_VLC_FORMAT。解碼功能208為控制邏輯216提供了一個指示,確定檢測到的究竟是塊尾(End of Block)還是錯誤??刂七壿?16為解碼器210和212a至212p識別下列參數(shù)(1)系數(shù)是DC系數(shù)還是其他類型;(2)為第一和第二編碼值使用了系數(shù)表B12-B15中的哪個。
如果信號BP_OVRD(HOLD)被置于邏輯高狀態(tài)、檢測到了塊尾(END_OF_BLOCK處于邏輯高狀態(tài))、檢測到了錯誤(ERR_FLAG處于邏輯高狀態(tài)),或者標(biāo)識位BYPASS先前被置位邏輯高狀態(tài),則“或”門314將把標(biāo)識位BYPASS置于邏輯高狀態(tài)。一旦標(biāo)識位BYPASS被置于邏輯高狀態(tài),它將保持那個狀態(tài),直到信號RESTART被置于邏輯高為止。標(biāo)識位BYPASS被傳遞給求和選擇器222(如圖2所示)并使移位多路轉(zhuǎn)接器206保持同一狀態(tài),直到信號RESET被置于邏輯高狀態(tài)。
當(dāng)信號END_OF_BLOCK處于邏輯高狀態(tài)時,“或”門316將雙穩(wěn)態(tài)多諧振蕩器318(輸出EOB_FLAG)置于邏輯高狀態(tài),雙穩(wěn)態(tài)多諧振蕩器318保持該狀態(tài)直到信號RESTART被置于邏輯高狀態(tài)為止。信號END_OF_BLOCK被提供給輸出控制器140(如圖1所示)。
當(dāng)信號ERROR處于邏輯高狀態(tài)時,并且信號END_OF_BLOCK和雙穩(wěn)態(tài)多諧振蕩器312的輸出BYPASS都沒有處于邏輯高狀態(tài)時,“或”門324將雙穩(wěn)態(tài)多諧振蕩器326的D終端置為邏輯高(為的是將信號ERR_FLAG置于邏輯高)。信號ERR_FLAG被提供給輸出控制器140(圖1)。一旦ERR_FLAG已經(jīng)被置于邏輯高狀態(tài),它將保持邏輯高,直到雙穩(wěn)態(tài)多諧振蕩器326被信號RESTART重置為止。
“或”門328輸出一個信號LOAD_EXTERNAL,當(dāng)信號TEST_MODE或信號RESTART處于邏輯高狀態(tài)時,該信號具有邏輯高狀態(tài)。信號LOAD_EXTERNAL被提供給求和選擇器222(如圖2所示)。當(dāng)信號LOAD_EXTERNAL處于邏輯高狀態(tài)時,移位多路轉(zhuǎn)接器206將使用外部指定的多路轉(zhuǎn)接器位置(如圖2所示)。
當(dāng)RESTART處于邏輯高狀態(tài)時,雙穩(wěn)態(tài)多諧振蕩器330的D終端被置于邏輯高狀態(tài)(為的是將信號COEFF_1置于邏輯高狀態(tài))。在塊處理操作一開始且DC系數(shù)正在被處理時,信號COEFF_1被置于邏輯高狀態(tài)。信號COEFF_1被傳遞給長度解碼器功能210(去配置解碼器210,以確定DC系數(shù)的長度),并提供給VLD內(nèi)部DC系數(shù)解碼功能130。
當(dāng)信號RESTART和MACROBLOCK_INTRA處于邏輯高狀態(tài),并且信號LUMA/CHROMA處于邏輯低狀態(tài)時,“與”門332將雙穩(wěn)態(tài)多諧振蕩器334的D終端置于邏輯高狀態(tài),為的是將輸出信號B12置為邏輯高狀態(tài)。這發(fā)生在處理一個內(nèi)編碼亮度塊的第一(DC)系數(shù)時。信號B12被傳遞給長度解碼器210(圖2)。
當(dāng)信號RESTART、MACROBLOCK INTRA、和LUMA/CHROMA都處于邏輯高狀態(tài)時,“與”門336將雙穩(wěn)態(tài)多諧振蕩器338的D終端置于邏輯高狀態(tài),為的是將標(biāo)識位B13置為邏輯高狀態(tài)。這發(fā)生在處理一個內(nèi)編碼色度塊的第一(DC)系數(shù)時。信號B13被傳遞給長度解碼器210(圖2)。
圖3中編號為340-354的邏輯部件使用了“DCT系數(shù)VLC表的選擇”,它規(guī)定于MPEG標(biāo)準(zhǔn)的表7-3中。當(dāng)標(biāo)識位MACRO_BLOCK_INTRA處于邏輯低狀態(tài)時,或者當(dāng)標(biāo)識位MACRO_BLOCK_INTRA處于邏輯高狀態(tài)而RESTART和INTRA_VLC_FORMAT都處于邏輯低狀態(tài)時,“或”門342將雙穩(wěn)態(tài)多諧振蕩器344的D終端置于邏輯高狀態(tài),為的是將標(biāo)識位B14置為邏輯高狀態(tài)。這使得標(biāo)識位B14置位,從而解碼器212a至212p針對以下塊的系數(shù)使用表B14非內(nèi)編碼塊的系數(shù);內(nèi)編碼塊系數(shù)中的非DC系數(shù),其中值INTRA_VLC_FORMAT是0。
當(dāng)標(biāo)識位MACRO_BLOCK_INTRA和INTRA_VLC_FORMAT處于邏輯高狀態(tài),而RESTART處于邏輯低狀態(tài)時,“與”門346將雙穩(wěn)態(tài)多諧振蕩器348的D終端置于邏輯高狀態(tài),為的是將標(biāo)識位B15置為邏輯高狀態(tài)。這使得標(biāo)識位B15置位,于是解碼器212a至212p針對內(nèi)編碼塊的系數(shù)(非DC系數(shù))使用表B15,其中值INTRA_VLC_FORMAT是1。
當(dāng)標(biāo)識位MACROBLOCK_INTRA被置于邏輯低,或者當(dāng)標(biāo)識位MACROBLOCK_INTRA被置于邏輯高而信號RESTART被置于邏輯低時,“或”門352將雙穩(wěn)態(tài)多諧振蕩器354的D終端置于邏輯高狀態(tài),為的是將標(biāo)識位B14_B15置為邏輯高狀態(tài)。因此,每當(dāng)解碼器212a至212p要使用表B14或B15時(即對于非內(nèi)編碼宏塊,或內(nèi)編碼宏塊的AC系數(shù)),標(biāo)識位B14_B15被置于邏輯高狀態(tài)。
圖4是方框圖,顯示圖1所示的典型VLD運行值/水平值解碼器120。因為對DC系數(shù)使用了一個單獨的功能(VLD內(nèi)部DC系數(shù)解碼器130),塊120在遇到一個內(nèi)編碼塊時就不用處理DC系數(shù)。該電路只需處理具有以下長度的代碼2-11、13-17、以及24。在VLD運行值/水平值解碼功能120內(nèi)部用來處理第一和第二編碼數(shù)據(jù)值的各個相應(yīng)運行值/水平值解碼電路非常類似,它們之間只有一些微小的區(qū)別,下文有解釋。因此,只使用信號L1(如圖1所示)的16位(即0-9、11-15和19),這16位由圖4左上角的L1(15∶0)指示。
一個代碼1/數(shù)據(jù)2(Code1/Data2)選擇器410對第一代碼的長度L1進(jìn)行處理。如果長度L1是24位(即16位信號的最后1位被置位),那么第一值經(jīng)過了逃逸編碼。16位信號L1的最后一位被作為信號ESC_1輸出。對于一個逃逸編碼值來說,前6位指示該逃逸代碼,接下來6位是運行值(Run value),最后12位是水平值(level value)。于是,當(dāng)長度是24位時,標(biāo)識位ESC_1被置于邏輯高狀態(tài)。信號DATA_IN的6-11號位(第7至第12位)被作為值RUN_1_ESC進(jìn)行傳遞,當(dāng)標(biāo)識位ESC_1被置位時,它便由輸出多路轉(zhuǎn)接器150(圖1)輸出。信號DATA_IN的12-23號位(第13至第24位)被作為值LEVEL_1_ESC進(jìn)行傳遞,當(dāng)標(biāo)識位ESC_1被置位時,它便由輸出多路轉(zhuǎn)接器150(圖1)輸出。
對于其他VLC(非逃逸編碼值)來說,因為VLC的長度已經(jīng)被12(最多12)個最小有效位所識別,所以有可能最多使用5位就能確定運行值和水平值,如圖4中Code_1(4∶0)和Code_2(4∶0)所示。舉例來說,在表B-14中,有16個VLC,其長度為17位。所有這16個VLC具有相同的12個最小有效位,而接下來的5位分別用來識別每個17位VLC的運行值和水平值的不同組合。
Code_1(4∶0)的5位被傳遞給運行值解碼器420和水平值解碼器430。解碼器420和430包含了這樣一些查尋表,它們存儲了來自表B-14和B-15的運行值和水平值。當(dāng)信號B14具有邏輯高值時,使用表B14;當(dāng)信號B15具有邏輯高值時,使用表B15(如上文所述,參照圖2和圖3)。如給定Code_1(4∶0)位、L1、以及信號B14和B15的話,運行值解碼器420和水平值解碼器430可分別確定運行值和水平值。
代碼1/數(shù)據(jù)2(Code 1/Data 2)選擇器410也對第二編碼數(shù)據(jù)值Data_2進(jìn)行分析(基于值L1),并且(1)將第二編碼數(shù)據(jù)值Data_2的前17位(即Data_2(16∶0))傳遞給代碼2(Code2)選擇器450;(2)將Data_2的第7至第12位(即Data_2(11∶6))作為信號RUN_2_ESC傳遞給寄存器480;以及(3)將Data_2的第13至第24位(即Data_2(23∶12))作為信號LEVEL_2_ESC傳遞給寄存器480。
VLD運行值/水平值解碼器120包括一個長度2解碼器440,它能處理信號L1(15∶0)和合成長度L3(37∶0),以確定第二編碼數(shù)據(jù)值的長度。因為L1和L3都是以多位信號的形式提供的,而且其中只有一位被置“1”,所以長度2解碼器440能使用邏輯門代替減法器來有效地識別第二編碼數(shù)據(jù)值的長度,并以一個只有一位置“1”的16位值輸出該長度。與代碼1/數(shù)據(jù)2選擇器410的情況相同的是,對于一個經(jīng)過逃逸編碼的24位編碼數(shù)據(jù)值來說,L2的第16位(15號位)也被置于邏輯低狀態(tài)。本領(lǐng)域內(nèi)的一般技術(shù)人員可以輕易地構(gòu)成長度2解碼器440。
一個代碼2選擇器處理信號L2的方式與選擇器410分離5位Data_2(4∶0)的方式相同,以便分析5位Data_2(4∶0),它們是識別非逃逸編碼值的運行值和水平值所必須的。代碼2選擇器將值Code2(4∶0)傳遞給運行值解碼器460和水平解碼器470,其方式與代碼1選擇器410將此信息傳遞給解碼器420和430的方式相同。運行值解碼器460和水平值解碼器470與運行值解碼器420及水平值解碼器430相同,在此對其不再贅述。
圖5是一個方框圖,顯示一個第二示例長度解碼功能510。圖5中的部件和信號與圖2中的相同,并且其索引編號也一樣,在此不再贅述。
長度解碼功能510能夠在第二長度解碼裝置512對第一AC系數(shù)進(jìn)行解碼的同時在長度1解碼器510中對內(nèi)DC系數(shù)進(jìn)行解碼。如果要提供這種能力的話,需要提供額外解碼器512q至512t,這樣一來,第二長度解碼裝置512就包括了一個長度解碼器,用于處理每一種可能的內(nèi)DC系數(shù)(2-4、6-20)或AC系數(shù)(2-11、13-17、或24)。這意味著有20個解碼器512a至512t用于處理第一編碼值中所有可能的長度(2-20或24),而不管第一值代表的是DC還是AC系數(shù)。
在這種配置中,合成長度L3可能有44個值,與合成長度2-44及48相對應(yīng)。因此,提供了44個加法器5201-52044(而不是圖2中的40個加法器),分別與這44種可能的組合長度相對應(yīng)。于是,求和選擇器522必須選擇46個值(44個可能的長度、旁路、或外部提供的位置)中的一個。
參照示例的DCT系數(shù)長度解碼器對可變長解碼器進(jìn)行了敘述。一個與系數(shù)解碼器100(圖1)相似的電路配置可以被用于對高級句法元素進(jìn)行解碼,如MPEG標(biāo)準(zhǔn)的段落6.1至6.13中所定義的。當(dāng)在系數(shù)解碼器100中到達(dá)塊尾時,標(biāo)識位BYPASS(在上文結(jié)合圖3講述過)被置于邏輯高,控制以及下一代碼的位置都被傳送給高級句法解碼器。然后,當(dāng)高級代碼解碼完畢時,信號RESTART被置于邏輯高狀態(tài),以對下兩個DCT系數(shù)進(jìn)行解碼。
另外,盡管本發(fā)明的論述是以實施例的形式來進(jìn)行的(該實施例使用MPEG編碼的視頻數(shù)據(jù)流),但是它在其他形式的可變長解碼器中也有實用價值。
盡管本發(fā)明的論述參照了實施例,但它并不局限于此。相反,所附的權(quán)利要求應(yīng)當(dāng)被理解成包含了本發(fā)明的其他變型和實現(xiàn)形式,它們可以由本技術(shù)領(lǐng)域內(nèi)的一般技術(shù)人員在不脫離本發(fā)明的真正精神和范圍的條件下實施。
權(quán)利要求
1.一種用于在一個時鐘周期內(nèi)確定數(shù)據(jù)流中包括的多個可變長編碼數(shù)據(jù)值的長度的裝置,其特征在于包括移位裝置,用于接收數(shù)據(jù)流并響應(yīng)移位控制信號傳遞多個可變長編碼數(shù)據(jù)值的子集;第一長度解碼裝置,用于接收所述多個編碼數(shù)據(jù)值的子集以進(jìn)行第一解碼操作,從而確定所述子集中第一編碼數(shù)據(jù)值的長度;第二長度解碼裝置,用于接收所述多個編碼數(shù)據(jù)值的子集以進(jìn)行第二解碼操作,從而單獨確定該子集中第二編碼數(shù)據(jù)值的長度,所述第二編碼數(shù)據(jù)值在子集中緊跟著第一編碼數(shù)據(jù)值,所述第一和第二解碼操作同時進(jìn)行;合成長度解碼裝置,它響應(yīng)所述第一和第二編碼數(shù)據(jù)值的長度輸出一個第一和第二數(shù)據(jù)值的合成長度;以及移位控制裝置,所述移位控制裝置響應(yīng)第一和第二數(shù)據(jù)值的合成長度形成所述移位控制信號,從而在所述移位裝置中識別下一編碼數(shù)據(jù)值的位置,所述下一編碼數(shù)據(jù)值緊跟著所述第二編碼數(shù)據(jù)值,所述移位控制裝置將所述移位控制信號傳遞給所述移位裝置。
2.根據(jù)權(quán)利要求1所述的裝置,其中所述的第二長度解碼裝置包括對應(yīng)所述第一編碼數(shù)據(jù)值的每個可能長度的長度解碼器,每個長度解碼器同時對多個編碼數(shù)據(jù)值的子集的不同部分進(jìn)行解碼;其中,每個長度解碼器基于所述第一編碼數(shù)據(jù)值相應(yīng)的可能長度同時確定第二編碼數(shù)據(jù)值的相應(yīng)長度值。
3.根據(jù)權(quán)利要求2所述的裝置,其中所述的第一長度解碼裝置生成并傳遞一個第一長度信號,該第一長度信號指示第一編碼數(shù)據(jù)值的長度,所述第二長度解碼裝置的每個長度解碼器生成并傳遞一個相應(yīng)的輸出信號,該裝置還包括響應(yīng)第一長度信號的裝置選擇所述長度解碼器的一個輸出信號的裝置,該長度解碼器與所述第一長度信號指示的第一編碼數(shù)據(jù)值的長度相對應(yīng),所述被選定的輸出信號指示第二編碼數(shù)據(jù)值的長度。
4.根據(jù)權(quán)利要求2所述的裝置,其中所述第一長度解碼裝置為所述第一編碼數(shù)據(jù)值的每種可能的長度輸出一個相應(yīng)的位,由所述第一長度解碼裝置輸出的位之一被置位,該被設(shè)置位與所述第一長度解碼裝置所確定的第一編碼數(shù)據(jù)值的長度相對應(yīng),所述第二長度解碼裝置的每一個長度解碼器生成一個相應(yīng)的輸出信號,代表由所述長度解碼器所確定的第二編碼數(shù)據(jù)值的長度,所述合成長度解碼裝置響應(yīng)所述被置位激活相應(yīng)長度解碼器以傳遞輸出信號,所述的相應(yīng)長度解碼器與所述第一編碼數(shù)據(jù)值的長度相對應(yīng),代表該長度的位被所述第一長度解碼裝置置位。
5.根據(jù)權(quán)利要求4所述的裝置,其中所述移位控制裝置包括用于所述第一和第二編碼數(shù)據(jù)值的每種可能的合成長度值的加法器,每個加法器生成一個相應(yīng)的候選移位控制信號;所述合成長度解碼裝置為所述第一和第二編碼數(shù)據(jù)值的每種可能的合成長度輸出一個相應(yīng)的位;所述合成長度解碼裝置輸出的位之一被置位,該被設(shè)置的位對應(yīng)所述第一和第二編碼數(shù)據(jù)的合成長度;以及所述移位控制裝置使用由所述合成長度解碼裝置的輸出置位以激活對由加法器之一輸出的候選移位控制信號的傳送,該加法器對應(yīng)于所述第一和第二編碼數(shù)據(jù)值的合成長度。
6.根據(jù)權(quán)利要求1所述的裝置,其中所述移位裝置包括一個移位多路轉(zhuǎn)接器,由于接收所述數(shù)據(jù)流并向所述第一和第二長度解碼裝置傳遞具有固定數(shù)目的數(shù)據(jù)位;以及所述移位控制信號識別所述移位多路轉(zhuǎn)接器內(nèi)固定數(shù)目數(shù)據(jù)位中的一個第一位置。
7.根據(jù)權(quán)利要求1所述的裝置,其中所述的移位控制裝置包括用于所述第一和第二編碼數(shù)據(jù)值的每個可能的合成長度值的加法器,每個加法器同時形成并傳遞相應(yīng)的候選移位控制信號;以及響應(yīng)所述第一和第二編碼數(shù)據(jù)值的合成長度來選擇候選移位控制信號,并將選中者作為移位控制信號傳遞給移位裝置的求和選擇裝置,該候選移位控制信號與第一和第二編碼數(shù)據(jù)值的合成長度對應(yīng)。
8.根據(jù)權(quán)利要求7所述的裝置,其中,每個加法器進(jìn)行相應(yīng)的模算術(shù)運算,以形成所述加法器的所述候選移位控制信號。
9.根據(jù)權(quán)利要求8所述的裝置,其中所述移位裝置包括一個所述移位多路轉(zhuǎn)接器,用于接收數(shù)據(jù)流并將定長數(shù)目的連續(xù)數(shù)據(jù)位傳遞給所述第一和第二長度解碼裝置,所述移位控制信號在移位多路轉(zhuǎn)接器中識別定長數(shù)目的連續(xù)數(shù)據(jù)位的一個第一位置。
10.根據(jù)權(quán)利要求1所述的裝置,其中所述的數(shù)據(jù)流包括編碼視頻信號,所述第一和第二編碼數(shù)據(jù)值代表視頻信號的離散余弦變換系數(shù)。
11.一種用于在一個時鐘周期內(nèi)對可變長編碼數(shù)據(jù)值的數(shù)據(jù)流進(jìn)行解碼的裝置,其特征在于包括用于接收所述數(shù)據(jù)流并響應(yīng)移位控制信號來傳遞多個可變長編碼數(shù)據(jù)值的子集的移位裝置;第一長度解碼裝置,用于接收多個編碼數(shù)據(jù)值的子集來進(jìn)行第一解碼操作,以確定所述子集中的一個第一編碼數(shù)據(jù)值的長度;第二長度解碼裝置,用于接收多個編碼數(shù)據(jù)值的子集來進(jìn)行第二解碼操作,從而單獨確定子集中一個第二編碼數(shù)據(jù)值的長度,所述第二編碼數(shù)據(jù)值在所述子集中緊跟著所述第一編碼數(shù)據(jù)值,所述第一、第二解碼操作同時進(jìn)行;合成長度解碼裝置,它響應(yīng)所述第一和第二編碼數(shù)據(jù)值的長度輸出所述第一和第二編碼數(shù)據(jù)值的合成長度;移位控制裝置,它通過響應(yīng)所述第一和第二數(shù)據(jù)值的合成長度形成所述移位控制信號,以便在所述移位裝置中識別下一編碼數(shù)據(jù)值的位置,所述下一編碼數(shù)據(jù)值緊跟著所述第二編碼數(shù)據(jù)值,所述述移位控制裝置可將所述移位控制信號傳遞給所述移位裝置;數(shù)值解碼裝置,用于接收多個編碼數(shù)據(jù)值的子集、所述第一編碼數(shù)據(jù)值的長度、所述第一和第二編碼數(shù)據(jù)值的合成長度,并將所述第一和第二編碼數(shù)據(jù)值分別轉(zhuǎn)換成第一和第二解碼值。
12.一種在一個時鐘周期內(nèi)確定數(shù)據(jù)流中的多個可變長編碼數(shù)據(jù)值的長度的方法,該方法的特征在于包括以下步驟接收所述數(shù)據(jù)流和一個移位控制信號;進(jìn)行第一解碼操作以確定所述子集中的一個第一編碼數(shù)據(jù)值的長度;進(jìn)行第二解碼操作以單獨確定所述子集中的一個第二編碼數(shù)據(jù)值的長度,所述第二編碼數(shù)據(jù)值在所述子集中緊跟著所述第一編碼數(shù)據(jù)值,所述第一、第二解碼操作同時進(jìn)行;輸出一個所述第一和第二數(shù)據(jù)值的合成長度;形成所述移位控制信號以確定包含在所述子集中的多個編碼數(shù)據(jù)值;以及將所述移位控制信號傳遞給所述移位裝置。
全文摘要
本文闡述了一套設(shè)備和方法,可在單個時鐘周期里確定一個數(shù)據(jù)流中多個可變長編碼數(shù)據(jù)值的長度。該設(shè)備包括一個可接收數(shù)據(jù)流的移位器。一個第一長度解碼裝置被耦合以接收多個編碼數(shù)據(jù)值的子集。一個第二長度解碼裝置也同樣耦合以接收多個編碼數(shù)據(jù)值的子集。一個合成長度解碼器響應(yīng)第一和第二編碼數(shù)據(jù)值的長度以輸出它們的合成長度。一個移位控制器響應(yīng)該合成長度形成移位控制信號。移位控制器將移位控制信號傳遞給移位器。
文檔編號H04N7/50GK1171699SQ97103738
公開日1998年1月28日 申請日期1997年3月31日 優(yōu)先權(quán)日1996年3月29日
發(fā)明者理查·西塔, 愛德華·M·布羅茲 申請人:松下電器產(chǎn)業(yè)株式會社