專利名稱:在算術(shù)碼解碼器或編碼器與逆二值化設(shè)備或二值化設(shè)備之間插入中間緩沖器的解碼設(shè)備 ...的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及算術(shù)解碼和算術(shù)編碼。更具體地,本發(fā)明涉及其中對(duì)多值符號(hào)進(jìn)行了二值化的二進(jìn)制符號(hào)串的算術(shù)碼的解碼和編碼的封裝。
背景技術(shù):
二進(jìn)制算術(shù)編碼是一種壓縮編碼技術(shù)。在二進(jìn)制算術(shù)編碼中,對(duì)一個(gè)多值符號(hào)進(jìn)行二值化,以生成二進(jìn)制符號(hào)串,然后對(duì)此二進(jìn)制符號(hào)串進(jìn)行算術(shù)編碼,以獲得最終二進(jìn)制算術(shù)碼。算術(shù)碼的處理成本高于Huffman碼,并且只是應(yīng)用于不需要實(shí)時(shí)能力的應(yīng)用中,例如文件壓縮和靜態(tài)圖像壓縮。然而,隨著近年來在LSI中實(shí)現(xiàn)的速度越來越高,算術(shù)碼已經(jīng)開始用于圖像編碼。一個(gè)示例是國際電信聯(lián)盟電信標(biāo)準(zhǔn)化部門(ITU-T)所建立的新視頻編解碼器的國際標(biāo)準(zhǔn)H.264的主類(Main Profile)。
在H.264中,二進(jìn)制算術(shù)編碼被稱作“基于上下文的自適應(yīng)二進(jìn)制算術(shù)編碼(CABAC)”。在IEEE的International Conferences onImage Processing(ICIP)中,D.Marpe等在2002年的會(huì)議上所著的題為“Context-based adaptive binary arithmetic coding inJVT/H.26L”(2002 IEEE International Conference on ImageProcessing,ISBN0-7803-7623-4 IEEE Catalog No.02CH37396,p.2-513-2-536);以及在2001年的會(huì)議上所著的題為“Videocompression using context-based adaptive arithmetic coding”(2001 IEEE International Conference on Image Processing,ISBN0-7803-6725-1,p.558-561)中描述了關(guān)于CABAC的詳情。
在CABAC中,首先將要編碼的多值符號(hào)二值化為二進(jìn)制符號(hào)(Bin)的串,然后根據(jù)針對(duì)每一Bin所確定的上下文的概率估計(jì)值,對(duì)每一Bin進(jìn)行二進(jìn)制算術(shù)編碼。在二值化中,將數(shù)字設(shè)置為由公式所規(guī)定的格式,以將多個(gè)值轉(zhuǎn)換為比特模式,但是這可以被視為簡單的可變長度編碼(VLC)。上下文選擇中可以使用的環(huán)境包括原始多值符號(hào)的表示的對(duì)象、周圍塊的參數(shù)、以及二進(jìn)制符號(hào)串中的順序。另一方面,在解碼中,從現(xiàn)在要解碼的二進(jìn)制符號(hào)的上下文獲得概率估計(jì)值,然后對(duì)算術(shù)碼進(jìn)行解碼。如果恢復(fù)了二進(jìn)制符號(hào),則更新概率估計(jì)值,并且進(jìn)一步選擇接下來要解碼的二進(jìn)制符號(hào)的上下文。
在理想的算術(shù)編碼中,可以將數(shù)據(jù)壓縮到熵的極限,并且一個(gè)比特可以邏輯表達(dá)無限的Bin。然而,因?yàn)檫@在實(shí)際中難以封裝,所以在CABAC中,采用簡化算術(shù)編碼,并且將上限設(shè)置在每比特的平均Bin數(shù)上。為了簡化,通過參考表來代替乘法,因此解碼一個(gè)Bin所需的計(jì)算受限于對(duì)表的參考、比較和相減。
在諸如H.264 CABAC之類的二進(jìn)制算術(shù)編碼中,解碼和編碼算術(shù)碼的處理成本較高。
圖1示出了H.264解碼器的總體配置。
H.264解碼器的配置包括用于接收并保持流的CPB緩沖器41;以及用于通過幀間隔來解碼每一幀的即時(shí)解碼器42。即時(shí)解碼器42由CABAC解碼器43和塊解碼器44組成。塊解碼器44執(zhí)行逆量化、逆離散整數(shù)變換、運(yùn)動(dòng)補(bǔ)償預(yù)測、以及環(huán)內(nèi)(in-loop)濾波過程,并且處理成本與畫面元素?cái)?shù)目成比例。
相反,CABAC解碼器43的處理成本與Bin數(shù)目成比例。
圖2示出了CABAC解碼器的詳情。
CABAC解碼器51包括二進(jìn)制算術(shù)碼解碼器54、逆二值化單元55、用于保存每一上下文的概率估計(jì)值的存儲(chǔ)器52、以及用于控制這些組件的控制單元53。處理單位是Bin的解碼,并且控制單元53利用Bin的每一解碼來更新概率估計(jì)值,并且還使內(nèi)部狀態(tài)根據(jù)H.264標(biāo)準(zhǔn)的語法來轉(zhuǎn)變。這些過程不能對(duì)多個(gè)Bin一起執(zhí)行,因此Bin的數(shù)目確定了處理成本。
接下來計(jì)算實(shí)際的處理成本。每一幀的壓縮率根據(jù)幀的編碼類型(幀內(nèi)或幀間)以及預(yù)測準(zhǔn)確度或圖像質(zhì)量而不同,因此每一幀中的比特?cái)?shù)隨著每一幀而波動(dòng)。換句話說,CABAC解碼器的成本隨著每一幀而波動(dòng)。根據(jù)此標(biāo)準(zhǔn),一幀的最大比特?cái)?shù)由如下公式給出2048×最大MBPS×Delta時(shí)間×色度格式因子/最小CR,并且,如果這被轉(zhuǎn)換為平均幀間隔的最大比特率,則是2048×最大MBPS×色度格式因子/最小CR。這里,最大MBPS是每秒的最大宏塊數(shù),Delta時(shí)間是幀時(shí)間間隔,色度格式因子是在色彩信號(hào)加到亮度信號(hào)時(shí)的樣本數(shù)目比,并且最小CR是最小壓縮率。
在附錄A中所描述的級(jí)別4.1中,最大MBPS是245760,色度格式因子是1.5,并且最小CR是2,得到的最大比特率是377Mbps。Bin到比特的壓縮率被指定為1.33或更小,并且將此轉(zhuǎn)換為最大Bin速率,得到503Mbin/sec。因?yàn)楦鶕?jù)平均幀間隔得到最大比特率,所以這種情形中的最大Bin速率是通過將在平均幀間隔中要處理的Bin數(shù)目除以幀間隔得到的值。如果解碼器的性能不能達(dá)到此最大Bin速率,則解碼過程將不能在要顯示此幀時(shí)完成,這導(dǎo)致幀的刪除,即,圖像質(zhì)量的嚴(yán)重惡化。
前面關(guān)于解碼器封裝的解釋也適用于執(zhí)行逆操作的編碼器的情形。
圖3示出了H.264編碼器的配置。
塊編碼器63執(zhí)行的操作例如運(yùn)動(dòng)補(bǔ)償預(yù)測、離散整數(shù)變換、量化、逆量化、逆離散整數(shù)變換、以及以畫面元素輸入速率進(jìn)行的環(huán)內(nèi)濾波過程。然后,由二進(jìn)制轉(zhuǎn)換器64將塊信息轉(zhuǎn)換為編碼Bin串。由算術(shù)編碼器65將Bin串轉(zhuǎn)換為編碼比特串,然后發(fā)送到輸出緩沖器66。輸出緩沖器66的累積量被反饋到塊編碼器63,并且用于控制塊編碼器63中的編碼量。
在二值化中,塊信息的一個(gè)元素(例如,轉(zhuǎn)換系數(shù))被轉(zhuǎn)換成多個(gè)Bin。結(jié)果,Bin串的生成速率至少是突發(fā)中的畫面元素速率的十倍。隨后處理Bin串的控制單元62以及存儲(chǔ)器61和算術(shù)編碼器65必須以此速度操作。如果考慮幀之間的處理,H.264編碼器的最大Bin速率是503Mbin/sec,對(duì)于H.264解碼器亦是如此。
在現(xiàn)有技術(shù)中,高比特率的實(shí)時(shí)處理仍然是成問題的。例如,如果如H.264標(biāo)準(zhǔn)中所描述的那樣執(zhí)行解碼過程,則要處理的Bin速率變?yōu)椴磺袑?shí)際的值。滿足H.264級(jí)別4.1標(biāo)準(zhǔn)的最大Bin速率是503Mbin/sec,并且即使在兩個(gè)周期中處理一個(gè)Bin,CABAC解碼器或算術(shù)編碼器必須以1 GHz或更高的頻率來操作。該值是現(xiàn)有LSI以低成本能容易實(shí)現(xiàn)的速度的數(shù)倍。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種以比現(xiàn)有技術(shù)低的最大Bin速率來實(shí)時(shí)編碼二進(jìn)制算術(shù)碼的編碼器以及實(shí)時(shí)解碼二進(jìn)制算術(shù)碼的解碼器。
為了實(shí)現(xiàn)上述目的,本發(fā)明的解碼器包括算術(shù)碼解碼裝置,用于根據(jù)二進(jìn)制算術(shù)碼的輸入來解碼二進(jìn)制算術(shù)碼,以獲得二進(jìn)制符號(hào);中間緩沖器,用于累積已經(jīng)解碼的二進(jìn)制符號(hào);以及逆二值化裝置,用于當(dāng)從緩沖器提取二進(jìn)制符號(hào)時(shí),根據(jù)逆二值化裝置的輸出來提取二進(jìn)制符號(hào),轉(zhuǎn)換為多值符號(hào),并且提供結(jié)果作為輸出。
在這種配置中,算術(shù)碼解碼裝置和逆二值化裝置獨(dú)立操作,并且通常以不同速度來進(jìn)行處理。
為了實(shí)現(xiàn)上述目的,本發(fā)明的編碼器包括二值化裝置,用于根據(jù)多值符號(hào)的輸入,將多值符號(hào)轉(zhuǎn)換為二進(jìn)制符號(hào);緩沖器,用于累積二進(jìn)制符號(hào);以及算術(shù)編碼裝置,用于當(dāng)從緩沖器提取二進(jìn)制符號(hào)時(shí),根據(jù)算術(shù)編碼裝置的輸出來提取二進(jìn)制符號(hào),并生成二進(jìn)制算術(shù)碼。
在這種配置中,算術(shù)編碼裝置和二值化裝置通常以不同速度進(jìn)行處理。可以將算術(shù)編碼裝置要實(shí)現(xiàn)的處理性能規(guī)定為輸出碼率的最大值。另一方面,以多值符號(hào)為單位的處理在二值化裝置中變?yōu)榭赡埽纱丝梢詫⒍祷b置要實(shí)現(xiàn)的處理性能規(guī)定為輸入多值符號(hào)速率的最大值。
根據(jù)本發(fā)明,可以大大降低二進(jìn)制算術(shù)碼解碼器和編碼器要實(shí)現(xiàn)的二進(jìn)制符號(hào)處理速率的最大值??梢詫⒈景l(fā)明的算術(shù)碼解碼裝置要實(shí)現(xiàn)的處理性能規(guī)定為輸入碼率的最大值,類似地,可以將算術(shù)碼編碼裝置要實(shí)現(xiàn)的處理性能規(guī)定為輸出碼率的最大值。
作為示例,當(dāng)應(yīng)用于H.264的級(jí)別4.1時(shí),最大視頻比特率是50Mbps,因此最大Bin速率是66.7Mbin/sec。該值小于或等于現(xiàn)有技術(shù)的七分之一,由此看得出可以極大地有助于封裝。
在現(xiàn)有技術(shù)中,CPB緩沖器保持流,但是該緩沖器在本發(fā)明中不是必需的。實(shí)際上,需要比CPB緩沖器稍大的存儲(chǔ)器裝置。在H.264的情形中,算術(shù)碼的壓縮率被限制到1.33或更低,并且存儲(chǔ)器裝置可以是CPB緩沖器的1.33倍。
本發(fā)明的編碼器包括用于二進(jìn)制或多值符號(hào)的緩沖器,因此被減慢到緩沖器延遲的程度,但是編碼器卻能提供與延遲無關(guān)的估計(jì)值,因?yàn)榭梢垣@得比特?cái)?shù)估計(jì)裝置所生成的實(shí)際碼比特?cái)?shù)目。在需要控制編碼數(shù)量的情形中,例如視頻編碼器,使用被延遲的生成比特?cái)?shù)目導(dǎo)致控制的不穩(wěn)定,但是使用本發(fā)明中的估計(jì)值允許抑制緩沖器延遲的波動(dòng)。
圖1是根據(jù)國際標(biāo)準(zhǔn)ITU-T H.264的解碼器的方框圖;圖2是H.264 CABAC解碼器的內(nèi)部方框圖;圖3是H.264編碼器的方框圖;圖4是使用本發(fā)明的二進(jìn)制算術(shù)碼解碼器的視頻解碼器的方框圖;圖5是使用本發(fā)明的二進(jìn)制算術(shù)碼編碼器的視頻編碼器的方框圖;圖6是本發(fā)明的二進(jìn)制算術(shù)碼解碼器或編碼器的方框圖;圖7是示出了根據(jù)本發(fā)明的二進(jìn)制算術(shù)碼解碼過程的流程圖;圖8是本發(fā)明的解碼過程的子例程的流程圖;圖9是示出了根據(jù)本發(fā)明的二進(jìn)制算術(shù)碼編碼過程的流程圖;以及圖10是本發(fā)明的編碼過程的子例程的流程圖具體實(shí)施方式
本發(fā)明的算術(shù)碼解碼器具有算術(shù)碼解碼器,用于根據(jù)二進(jìn)制算術(shù)碼的輸入來解碼,以獲得二進(jìn)制符號(hào);中間緩沖器,用于存儲(chǔ)二進(jìn)制符號(hào);以及逆二值化裝置,用于從中間緩沖器提取二進(jìn)制符號(hào)串,以轉(zhuǎn)換為多值符號(hào)并提供結(jié)果,并且根據(jù)這些多值符號(hào)的輸出,從中間緩沖器提取二進(jìn)制符號(hào)串。
另外,本發(fā)明的算術(shù)碼編碼器具有二值化裝置,用于根據(jù)多值符號(hào)的輸入,將多值符號(hào)轉(zhuǎn)換為二進(jìn)制符號(hào);緩沖器,用于存儲(chǔ)二進(jìn)制符號(hào);以及算術(shù)編碼裝置,用于在從緩沖器提取二進(jìn)制符號(hào)時(shí),根據(jù)其自身的輸出來提取二進(jìn)制符號(hào),以生成二進(jìn)制算術(shù)碼。
本發(fā)明的另一算術(shù)碼解碼器具有算術(shù)碼解碼裝置,用于根據(jù)算術(shù)碼的輸入來解碼算術(shù)碼,以獲得多值符號(hào);緩沖器,用于存儲(chǔ)多值符號(hào);以及逆轉(zhuǎn)換裝置,用于當(dāng)從緩沖器提取多值符號(hào)時(shí),根據(jù)其自身的輸出來提取多值符號(hào),以輸出符號(hào),并提供結(jié)果作為輸出。
本發(fā)明的另一算術(shù)碼解碼器具有轉(zhuǎn)換裝置,用于根據(jù)輸入符號(hào)的輸入,將輸入符號(hào)轉(zhuǎn)換為多值符號(hào);緩沖器,用于存儲(chǔ)多值符號(hào);以及算術(shù)碼編碼裝置,用于在從緩沖器提取多值符號(hào)時(shí),根據(jù)其自身輸出來提取多值符號(hào),以生成算術(shù)碼。
圖4是使用本發(fā)明的二進(jìn)制算術(shù)碼解碼器的視頻解碼器的方框圖。
算術(shù)碼解碼器10將作為輸入接收到的流的算術(shù)碼進(jìn)行解碼,以獲得二進(jìn)制符號(hào)(Bin),并且將二進(jìn)制符號(hào)提供給控制單元11以及逆二值化單元12,并且將二進(jìn)制符號(hào)存儲(chǔ)在中間緩沖器14中。從控制單元11提供解碼所必需的上下文的概率估計(jì)值。
控制單元11根據(jù)流的語法,從當(dāng)前要解碼的二進(jìn)制符號(hào)中選擇上下文,并且從存儲(chǔ)器13獲取概率估計(jì)值,并將概率估計(jì)值提供給算術(shù)碼解碼器10。在上下文的選擇中,如果必要的話,使用存儲(chǔ)器13中存儲(chǔ)的塊信息??刂茊卧?1在從算術(shù)碼解碼器10獲得二進(jìn)制符號(hào)時(shí),更新存儲(chǔ)器13中存儲(chǔ)的概率估計(jì)值,并且將二進(jìn)制符號(hào)串的組成信息提供給逆二值化單元12。組成信息例如包括多值符號(hào)所指示的參數(shù)名稱、二進(jìn)制符號(hào)串的格式信息、以及用于執(zhí)行逆轉(zhuǎn)換的定時(shí)。
基于從算術(shù)碼解碼器10提供的二進(jìn)制符號(hào)以及從控制單元11提供的組成信息,逆二值化單元12在必要時(shí)將二進(jìn)制符號(hào)串轉(zhuǎn)換為多值符號(hào),并且將作為結(jié)果獲得的塊信息存儲(chǔ)在存儲(chǔ)器13中。流中所包括的塊信息例如包括量化轉(zhuǎn)換系數(shù)、量化參數(shù)、有效塊模式、預(yù)測模式、以及運(yùn)動(dòng)向量,但是要存儲(chǔ)在存儲(chǔ)器13中的塊信息是控制單元11所參考的信息。
中間緩沖器14存儲(chǔ)算術(shù)碼解碼器10已經(jīng)獲得的二進(jìn)制符號(hào),并且將二進(jìn)制符號(hào)提供給控制單元15和逆二值化單元16。中間緩沖器14基于來自控制單元15的指令來提供二進(jìn)制符號(hào)。
控制單元15根據(jù)流的語法從中間緩沖器14獲得二進(jìn)制符號(hào)串,并且將組成信息提供給逆二值化單元16。
逆二值化單元16從中間緩沖器14獲取二進(jìn)制符號(hào)串,并且基于從控制單元15提供的組成信息,將二進(jìn)制符號(hào)串轉(zhuǎn)換為多值符號(hào),并且將作為結(jié)果獲得的塊信息提供給塊解碼器17。
基于從逆二值化單元16提供的塊信息,塊解碼器17執(zhí)行逆量化、逆整數(shù)轉(zhuǎn)換、運(yùn)動(dòng)補(bǔ)償預(yù)測、以及環(huán)內(nèi)濾波過程,以獲得解碼圖像,并且提供所獲得的解碼圖像作為輸出。
算術(shù)碼解碼器10、控制單元11、逆二值化單元12和存儲(chǔ)器13構(gòu)成了中間緩沖器14之前的級(jí)的模塊,它們執(zhí)行與作為輸入提供給算術(shù)碼解碼器10的流的比特、字節(jié)或字節(jié)串相匹配的處理。相反,控制單元15、逆二值化單元16和塊解碼器17構(gòu)成了中間緩沖器14之后的模塊,它們執(zhí)行與解碼圖像的輸出相匹配的處理。因此,算術(shù)碼解碼器10和逆二值化單元16獨(dú)立操作,通常以不同的速度來執(zhí)行處理。中間緩沖器14吸收前后級(jí)的處理速度之間的差。
圖5是使用本發(fā)明的二進(jìn)制算術(shù)碼編碼器的視頻編碼器的方框圖。
塊編碼器20考慮從比特?cái)?shù)估計(jì)單元27提供的所生成比特的估計(jì)數(shù)目,針對(duì)輸入圖像執(zhí)行運(yùn)動(dòng)向量搜索、運(yùn)動(dòng)補(bǔ)償預(yù)測、離散整數(shù)變換、量化、逆量化、逆離散整數(shù)變換以及環(huán)內(nèi)濾波過程,并生成塊信息。塊信息是組成流所必需的信息,并且包含這樣的信息,例如量化轉(zhuǎn)換系數(shù)、量化參數(shù)、有效塊模式、預(yù)測模式以及運(yùn)動(dòng)向量。
二值化單元21將獲得的塊信息轉(zhuǎn)換為二進(jìn)制符號(hào)串,并且將結(jié)果存儲(chǔ)在中間緩沖器22中。
中間緩沖器22存儲(chǔ)二值化單元21已經(jīng)轉(zhuǎn)換的二進(jìn)制符號(hào)串,并且基于來自算術(shù)編碼器25的指令,將二進(jìn)制符號(hào)提供給算術(shù)編碼器25。中間緩沖器22還將累積量提供給比特?cái)?shù)估計(jì)單元27。
逆二值化單元23基于從中間緩沖器22獲得的二進(jìn)制符號(hào)串以及從控制單元24提供的組成信息,恢復(fù)塊信息,并且將信息存儲(chǔ)在存儲(chǔ)器26中。這里要恢復(fù)的塊信息是控制單元24所參考的信息。
根據(jù)流的語法,控制單元24從當(dāng)前要編碼的二進(jìn)制符號(hào)中選擇上下文,并且從存儲(chǔ)器26獲取概率估計(jì)值,并將概率估計(jì)值提供給算術(shù)編碼器25。如果必要,控制單元24在選擇上下文時(shí)使用存儲(chǔ)器26中存儲(chǔ)的塊信息。在從中間緩沖器22獲得二進(jìn)制符號(hào)時(shí),控制單元24更新存儲(chǔ)器26中存儲(chǔ)的概率估計(jì)值,并且將二進(jìn)制符號(hào)串的組成信息提供給逆二值化單元23。
算術(shù)編碼器25基于從中間緩沖器22獲得的二進(jìn)制符號(hào)以及從控制單元24獲得的概率估計(jì)值,執(zhí)行二進(jìn)制算術(shù)編碼,并提供所獲得的流作為輸出。算術(shù)編碼器25還將在算術(shù)編碼時(shí)所讀取的二進(jìn)制符號(hào)數(shù)目以及所生成的碼的比特?cái)?shù)目提供給比特?cái)?shù)估計(jì)單元27。
比特?cái)?shù)估計(jì)單元27估計(jì)從算術(shù)編碼器25提供的二進(jìn)制符號(hào)數(shù)目和根據(jù)二進(jìn)制符號(hào)數(shù)目的碼比特?cái)?shù)目以及碼比特?cái)?shù)目之間的關(guān)系,將從中間緩沖器22提供的累積量轉(zhuǎn)換為比特?cái)?shù)目,以得到生成比特的數(shù)目,并且將結(jié)果提供給塊編碼器20。
塊編碼器20、二進(jìn)制單元21和比特?cái)?shù)估計(jì)單元27是中間緩沖器22之前的模塊,它們執(zhí)行與作為輸入提供給塊編碼器20的圖像的流的比特、字節(jié)和字節(jié)串相匹配的處理。相反,逆二值化單元23、控制單元24、算術(shù)編碼器25和存儲(chǔ)器26是中間緩沖器22之后的模塊,它們執(zhí)行與流輸出相匹配的處理。因此,二值化單元21和算術(shù)編碼器25獨(dú)立操作,并且通常以不同速度來執(zhí)行處理。之后緩沖器22吸收前后級(jí)之間的處理速度差。
圖6是示出了本發(fā)明另一實(shí)施例的方框圖。
在構(gòu)成圖6所示的本發(fā)明的二進(jìn)制算術(shù)碼解碼器時(shí),處理器31執(zhí)行算術(shù)碼的解碼,并且處理器32執(zhí)行逆二值化??梢詮奶幚砥?1和處理器32訪問存儲(chǔ)器33,并且存儲(chǔ)器33保持作為處理器31輸入的碼串、作為處理器31輸出的二進(jìn)制符號(hào)串,此外還保持處理器32的輸入、作為處理器32輸出的多值符號(hào)、以及處理時(shí)必需的概率期望和塊信息。
在圖6中將處理器31和處理器32分開,以表示邏輯配置,但是當(dāng)操作系統(tǒng)提供多重處理能力時(shí),或者當(dāng)通過諸如包括Intel(美國)的Hyper Threading的CPU之類的單個(gè)處理器可以實(shí)現(xiàn)多重處理時(shí),這兩個(gè)處理器可以變?yōu)橐粋€(gè)組件。另外,存儲(chǔ)器33不需要是一個(gè)存儲(chǔ)器,而是可以具有這樣的配置其中,只能從處理器31訪問的變量不是總線連接而是直接連接到處理器31。
參考圖7,接下來解釋在處理器31執(zhí)行算術(shù)碼解碼時(shí)的操作。
編碼句法包括編碼模式、運(yùn)動(dòng)向量、編碼標(biāo)記和系數(shù),并且假設(shè)它們已經(jīng)經(jīng)歷了二進(jìn)制算術(shù)編碼。在這種情形中,可以從編碼模式得知運(yùn)動(dòng)向量信息的存在,并且可以從編碼標(biāo)記得知系數(shù)的存在。
首先在步驟A100中執(zhí)行初始化。在初始化中,針對(duì)每一上下文,將概率估計(jì)值設(shè)置為初始值。在步驟A110中,解碼塊的編碼模式。在步驟A111中,取決于運(yùn)動(dòng)向量信息的存在,出現(xiàn)分支。如果運(yùn)動(dòng)向量信息存在,則過程前進(jìn)到步驟A120,并且如果運(yùn)動(dòng)向量信息不存在,則過程前進(jìn)到步驟A130。
在步驟A120中,解碼運(yùn)動(dòng)向量的水平值。在步驟A121中解碼運(yùn)動(dòng)向量的垂直值。在步驟A130中,解碼編碼標(biāo)記。在步驟A131中,取決于系數(shù)的存在,過程出現(xiàn)分支。如果系數(shù)存在,過程前進(jìn)到步驟A140,但是如果系數(shù)不存在,則前進(jìn)到步驟A150。
在步驟A140中,解碼系數(shù)。在步驟A141,取決于系數(shù)的完成,操作出現(xiàn)分支。如果完成,則操作前進(jìn)到步驟A150,但是如果系數(shù)繼續(xù),則操作前進(jìn)到步驟A140。
在步驟A150,取決于碼串的完成,操作出現(xiàn)分支。如果沒有完成,操作前進(jìn)到步驟A110。
在以這些步驟執(zhí)行解碼時(shí),調(diào)用用于解碼多值符號(hào)的子例程。在此子例程中,處理器31執(zhí)行圖8所示的操作。
接下來參考圖8解釋此子例程。
首先在步驟A10中清空符號(hào)串緩沖器。在步驟A11中,選擇符合當(dāng)前句法的上下文。如果必要,使用相鄰塊的信息。在步驟A12中,獲取當(dāng)前上下文的概率估計(jì)值。在步驟A13中,解碼算術(shù)碼。等待碼的輸入,并且在作為輸入接收到碼時(shí),將碼字的當(dāng)前值與概率估計(jì)值比較,以根據(jù)大小關(guān)系獲得二進(jìn)制符號(hào)。如果執(zhí)行相對(duì)于二進(jìn)制符號(hào)的“0”和“1”對(duì)稱的操作,則概率估計(jì)值也可以通過MPS值(對(duì)稱表達(dá))和MPS的概率估計(jì)值來表達(dá)。MPS是其出現(xiàn)概率具有高估計(jì)值的符號(hào),MPS概率估計(jì)值的值從0.5到1。在步驟A14中,所獲得的二進(jìn)制符號(hào)存儲(chǔ)在符號(hào)串緩沖器中,并作為輸出提供給存儲(chǔ)器。在步驟A15中,根據(jù)二進(jìn)制符號(hào)的值更新概率估計(jì)值。當(dāng)概率估計(jì)值是對(duì)稱表達(dá),并且MPS概率估計(jì)值沒有達(dá)到0.5時(shí),反轉(zhuǎn)MPS。在步驟A16中,取決于符號(hào)串緩沖器中的二進(jìn)制符號(hào)串是否構(gòu)成完整的二進(jìn)制符號(hào)串,操作出現(xiàn)分支。如果實(shí)現(xiàn)了完整的二進(jìn)制符號(hào)串,則操作前進(jìn)到步驟A17,并且如果不完整,則操作返回步驟A11,以繼續(xù)解碼算術(shù)碼。
必要時(shí)在步驟A17中執(zhí)行逆二值化。決定必要性的條件包括與句法相關(guān)的元素以及上下文選擇時(shí)可能考慮的元素。
接下來解釋處理器32執(zhí)行逆二值化時(shí)的操作。整個(gè)過程的流程根據(jù)圖7的流程來操作,與處理器31類似。然而,所調(diào)用的解碼子例程與處理器31不同。處理器32中所使用的解碼子例程是逆二值化,由此從二進(jìn)制符號(hào)串解碼多值符號(hào)。處理器32與算術(shù)碼沒有關(guān)系,因此不需要在步驟A100中將概率估計(jì)值設(shè)置為初始值。
在圖6中,當(dāng)實(shí)現(xiàn)本發(fā)明的二進(jìn)制算術(shù)碼編碼器時(shí),處理器31執(zhí)行二值化,并且處理器32執(zhí)行算術(shù)編碼。可以從處理器31和處理器32訪問存儲(chǔ)器33,并且存儲(chǔ)器33保持這樣的信息,例如作為處理器31輸入的多值符號(hào)、作為處理器31輸出的二進(jìn)制符號(hào)串,此外還保持處理器32的輸入、作為處理器32輸出的碼串、以及處理中必需的概率估計(jì)值和塊信息。
接下來參考圖9解釋在處理器31中執(zhí)行二值化時(shí)的操作。
首先在步驟A200中執(zhí)行初始化。在步驟A210中,執(zhí)行塊編碼模式的編碼過程。在步驟A211中,取決于運(yùn)動(dòng)向量信息的存在,操作出現(xiàn)分支。如果運(yùn)動(dòng)向量信息存在,則操作前進(jìn)到步驟A220,但是如果信息不存在,則操作前進(jìn)到步驟A230。
在步驟A220中,編碼運(yùn)動(dòng)向量的水平值。在步驟A221中,編碼運(yùn)動(dòng)向量的垂直值。在步驟A230中,對(duì)編碼標(biāo)記進(jìn)行編碼。在步驟A231中,取決于系數(shù)是否存在,操作出現(xiàn)分支。如果存在系數(shù),則操作前進(jìn)到步驟A240,但是如果不存在系數(shù),則操作前進(jìn)到步驟A250。
在步驟A240中,編碼系數(shù)。在步驟A241中,取決于系數(shù)是否完成,操作出現(xiàn)分支。如果完成,則操作前進(jìn)到步驟A250,但是如果系數(shù)繼續(xù),則操作在步驟A240中繼續(xù)。
在步驟A250中,取決于編碼是否完成,操作出現(xiàn)分支。如果編碼尚未完成,則過程前進(jìn)到步驟A210。以這些步驟執(zhí)行的編碼過程是二值化,由此調(diào)用輸出子例程,用于將多值符號(hào)轉(zhuǎn)換為二進(jìn)制符號(hào)串,并提供結(jié)果作為輸出。在輸出子例程中,對(duì)作為輸出提供的二進(jìn)制符號(hào)的數(shù)目進(jìn)行計(jì)數(shù),并且使得可從外部獲得,以允許參考。
接下來解釋處理器32中執(zhí)行算術(shù)編碼時(shí)的操作。處理的整個(gè)流程根據(jù)圖9的流程來操作,如處理器31。然而,步驟A200的初始化以及所調(diào)用的編碼過程子例程與處理器31不同。在處理器32中所使用的編碼過程子例程中,通過逆二值化從二進(jìn)制符號(hào)串解碼多值符號(hào),并且對(duì)二進(jìn)制符號(hào)串進(jìn)行算術(shù)編碼。在執(zhí)行算術(shù)編碼時(shí),在步驟A200的初始化中將概率期望設(shè)置為初始值。
接下來參考圖10解釋處理器32的編碼過程子例程的操作。
首先,在步驟A20中,執(zhí)行逆二值化,由此提供多值符號(hào)作為輸出,并將相應(yīng)的二進(jìn)制符號(hào)串存儲(chǔ)在符號(hào)串緩沖器中。在步驟A21,獲取當(dāng)前上下文的概率估計(jì)值。
在步驟A23中,從符號(hào)串緩沖器的頭部提取一個(gè)二進(jìn)制符號(hào),執(zhí)行算術(shù)編碼,并且提供結(jié)果作為輸出。對(duì)算術(shù)編碼的實(shí)例數(shù)目以及生成比特的數(shù)目進(jìn)行計(jì)數(shù),并且使得可從外部獲得用于參考。
在步驟A24中,根據(jù)二進(jìn)制符號(hào)的值更新概率估計(jì)值。如果概率估計(jì)值是對(duì)稱表達(dá),則當(dāng)MPS概率估計(jì)值小于0.5時(shí)反轉(zhuǎn)MPS。在步驟A25中,取決于符號(hào)串緩沖器是否為空,操作出現(xiàn)分支。如果符號(hào)串緩沖器為空,則操作結(jié)束,但是如果符號(hào)串緩沖器不空,則操作返回步驟A21,以繼續(xù)算術(shù)編碼。
得到處理器31中作為輸出提供的二進(jìn)制符號(hào)數(shù)目以及處理器32中的算術(shù)編碼實(shí)例數(shù)目和生成比特?cái)?shù)目。通過從作為輸出提供的二進(jìn)制符號(hào)數(shù)目減去算術(shù)編碼實(shí)例數(shù)目,得到存儲(chǔ)器中存儲(chǔ)的二進(jìn)制符號(hào)數(shù)目。另外,可以根據(jù)算術(shù)編碼實(shí)例數(shù)目和生成比特?cái)?shù)目,得到二進(jìn)制符號(hào)數(shù)目和碼比特?cái)?shù)目之間的關(guān)系。可以根據(jù)這些值計(jì)算估計(jì)的生成比特?cái)?shù)目。可以在處理器31的輸出子例程中計(jì)算估計(jì)的生成比特?cái)?shù)目,并且使得可從外部獲得用于參考,或者可以在外部根據(jù)作為基礎(chǔ)的值來計(jì)算。
接下來解釋由計(jì)算機(jī)系統(tǒng)實(shí)現(xiàn)上述用于解碼二進(jìn)制算術(shù)碼的解碼器和編碼器的示例。
計(jì)算機(jī)系統(tǒng)具有CPU,并且CPU連接到緩沖器和存儲(chǔ)器。
在存儲(chǔ)器中,存儲(chǔ)用于執(zhí)行本發(fā)明的解碼過程和編碼過程的程序。本發(fā)明的解碼過程和編碼過程通過CPU執(zhí)行該程序來執(zhí)行。
在上述實(shí)施例中描述了處理二進(jìn)制算術(shù)碼的情形,但是本發(fā)明不限于應(yīng)用于二進(jìn)制算術(shù)碼。如果要使用四進(jìn)制算術(shù)碼,通過將附圖和解釋中的二進(jìn)制簡單改變?yōu)樗倪M(jìn)制,可以實(shí)現(xiàn)本發(fā)明的四進(jìn)制算術(shù)碼解碼器和編碼器。即使在混合了二進(jìn)制和三進(jìn)制算術(shù)碼時(shí),也可以將本發(fā)明配置為從二進(jìn)制算術(shù)碼的處理切換到三進(jìn)制算術(shù)碼的處理,以匹配上下文。
雖然采用視頻解碼器和視頻編碼器作為示例,解釋了本發(fā)明的實(shí)施例,但是本發(fā)明不限于在這些形式中的應(yīng)用。通過將塊解碼器17替換為語言幀解碼器并且將塊編碼器20替換為語音幀編碼器,本發(fā)明可以容易地應(yīng)用于語音解碼器和語音編碼器。本發(fā)明的二進(jìn)制算術(shù)碼解碼器和編碼器還可以應(yīng)用于與視頻和語音相類似的使用二進(jìn)制算術(shù)碼的其他媒體或數(shù)據(jù)的其他編碼器和解碼器。
權(quán)利要求
1.一種二進(jìn)制算術(shù)碼解碼器,包括算術(shù)碼解碼裝置,用于根據(jù)二進(jìn)制算術(shù)碼的輸入來解碼二進(jìn)制算術(shù)碼,以獲得二進(jìn)制符號(hào);緩沖器,用于累積已經(jīng)解碼的所述二進(jìn)制符號(hào);以及逆二值化裝置,用于當(dāng)從所述緩沖器提取二進(jìn)制符號(hào)時(shí),根據(jù)所述逆二值化裝置的輸出來提取二進(jìn)制符號(hào),轉(zhuǎn)換為多值符號(hào),并且提供結(jié)果作為輸出。
2.一種二進(jìn)制算術(shù)碼編碼器,包括二值化裝置,用于根據(jù)多值符號(hào)的輸入,將多值符號(hào)轉(zhuǎn)換為二進(jìn)制符號(hào);緩沖器,用于累積所述二進(jìn)制符號(hào);以及算術(shù)編碼裝置,用于當(dāng)從所述緩沖器提取二進(jìn)制符號(hào)時(shí),根據(jù)所述算術(shù)編碼裝置的輸出來提取二進(jìn)制符號(hào),并生成二進(jìn)制算術(shù)碼。
3.一種算術(shù)碼解碼器,包括算術(shù)碼解碼裝置,用于根據(jù)算術(shù)碼的輸入來解碼算術(shù)碼,以獲得多值符號(hào);緩沖器,用于累積所述多值符號(hào);以及逆轉(zhuǎn)換裝置,用于當(dāng)從所述緩沖器提取多值符號(hào)時(shí),根據(jù)所述逆轉(zhuǎn)換裝置的輸出來提取多值符號(hào),轉(zhuǎn)換為輸出符號(hào),并提供結(jié)果作為輸出。
4.一種算術(shù)碼編碼器,包括轉(zhuǎn)換裝置,用于根據(jù)輸入符號(hào)的輸入,將輸入符號(hào)轉(zhuǎn)換為多值符號(hào);緩沖器,用于累積所述多值符號(hào);以及算術(shù)編碼裝置,用于當(dāng)從所述緩沖器提取多值符號(hào)時(shí),根據(jù)所述算術(shù)編碼裝置的輸出來提取多值符號(hào),并生成算術(shù)碼。
5.根據(jù)權(quán)利要求2所述的二進(jìn)制算術(shù)碼編碼器,還包括比特?cái)?shù)估計(jì)裝置,用于估計(jì)二進(jìn)制符號(hào)數(shù)目和根據(jù)所述算術(shù)編碼裝置已經(jīng)提取的二進(jìn)制符號(hào)數(shù)目的碼比特?cái)?shù)目以及已經(jīng)生成的碼比特?cái)?shù)目之間的關(guān)系;并且用于根據(jù)所述緩沖器的累積數(shù)量來估計(jì)算術(shù)編碼之后生成的碼比特?cái)?shù)目。
6.根據(jù)權(quán)利要求4所述的算術(shù)碼編碼器,還包括比特?cái)?shù)估計(jì)裝置,用于估計(jì)多值符號(hào)數(shù)目和根據(jù)所述算術(shù)編碼裝置已經(jīng)提取的多值符號(hào)數(shù)目的碼比特?cái)?shù)目以及已經(jīng)生成的碼比特?cái)?shù)目之間的關(guān)系;并且用于根據(jù)所述緩沖器的累積數(shù)量來估計(jì)算術(shù)編碼之后生成的碼比特?cái)?shù)目。
7.一種解碼器中解碼二進(jìn)制算術(shù)碼的方法,所述解碼器包括用于累積已經(jīng)解碼的二進(jìn)制符號(hào)的緩沖器,所述方法包括算術(shù)碼解碼步驟,根據(jù)二進(jìn)制算術(shù)碼的輸入來解碼二進(jìn)制算術(shù)碼,以獲得二進(jìn)制符號(hào);以及逆二值化步驟,在從所述緩沖器提取二進(jìn)制符號(hào)時(shí),根據(jù)此步驟的輸出來提取二進(jìn)制符號(hào),轉(zhuǎn)換為多值符號(hào),并且提供結(jié)果作為輸出。
8.一種編碼器中編碼二進(jìn)制算術(shù)碼的方法,所述編碼器包括用于累積已經(jīng)轉(zhuǎn)換的二進(jìn)制符號(hào)的緩沖器,所述方法包括二值化步驟,根據(jù)多值符號(hào)的輸入,將多值符號(hào)轉(zhuǎn)換為二進(jìn)制符號(hào);以及算術(shù)編碼步驟,在從所述緩沖器提取二進(jìn)制符號(hào)時(shí),根據(jù)此步驟的輸出來提取二進(jìn)制符號(hào),并生成二進(jìn)制算術(shù)碼。
9.一種解碼器中解碼算術(shù)碼的方法,所述解碼器包括用于累積已經(jīng)解碼的多值符號(hào)的緩沖器,所述方法包括算術(shù)碼解碼步驟,根據(jù)算術(shù)碼的輸入來解碼算術(shù)碼,以獲得多值符號(hào);以及逆轉(zhuǎn)換步驟,當(dāng)從所述緩沖器提取多值符號(hào)時(shí),根據(jù)此步驟的輸出來提取多值符號(hào),轉(zhuǎn)換為輸出符號(hào),并提供結(jié)果作為輸出。
10.一種編碼器中編碼算術(shù)碼的方法,所述編碼器包括用于累積已經(jīng)轉(zhuǎn)換的多值符號(hào)的緩沖器,所述方法包括轉(zhuǎn)換步驟,根據(jù)輸入符號(hào)的輸入,將輸入符號(hào)轉(zhuǎn)換為多值符號(hào);以及算術(shù)編碼步驟,在從所述緩沖器提取多值符號(hào)時(shí),根據(jù)此步驟的輸出來提取多值符號(hào),并生成算術(shù)碼。
11.根據(jù)權(quán)利要求8所述的二進(jìn)制算術(shù)碼編碼方法,還包括比特?cái)?shù)估計(jì)步驟,用于估計(jì)二進(jìn)制符號(hào)數(shù)目和根據(jù)已經(jīng)提取的二進(jìn)制符號(hào)數(shù)目的碼比特?cái)?shù)目以及已經(jīng)生成的碼比特?cái)?shù)目之間的關(guān)系,并且根據(jù)所述緩沖器的累積數(shù)量來估計(jì)算術(shù)編碼之后生成的碼比特?cái)?shù)目。
12.根據(jù)權(quán)利要求10所述的算術(shù)碼編碼方法,還包括比特?cái)?shù)估計(jì)步驟,用于估計(jì)多值符號(hào)數(shù)目和根據(jù)已經(jīng)提取的多值符號(hào)數(shù)目的碼比特?cái)?shù)目以及已經(jīng)生成的碼比特?cái)?shù)目之間的關(guān)系,并且根據(jù)所述緩沖器的累積數(shù)量來估計(jì)算術(shù)編碼之后生成的碼比特?cái)?shù)目。
13.一種計(jì)算機(jī)程序,所述計(jì)算機(jī)具有用于累積已經(jīng)解碼的二進(jìn)制符號(hào)的緩沖器,所述程序使所述計(jì)算機(jī)用作算術(shù)碼解碼裝置,用于根據(jù)二進(jìn)制算術(shù)碼的輸入來解碼二進(jìn)制算術(shù)碼,以獲得二進(jìn)制符號(hào);以及逆二值化裝置,用于當(dāng)從所述緩沖器提取二進(jìn)制符號(hào)時(shí),根據(jù)所述逆二值化裝置的輸出來提取二進(jìn)制符號(hào),轉(zhuǎn)換為多值符號(hào),并且提供結(jié)果作為輸出。
14.一種計(jì)算機(jī)程序,所述計(jì)算機(jī)具有用于累積已經(jīng)轉(zhuǎn)換的二進(jìn)制符號(hào)串的緩沖器,所述程序使所述計(jì)算機(jī)用作二值化裝置,用于根據(jù)多值符號(hào)的輸入,將多值符號(hào)轉(zhuǎn)換為二進(jìn)制符號(hào)串;以及算術(shù)編碼裝置,用于當(dāng)從所述緩沖器提取二進(jìn)制符號(hào)時(shí),根據(jù)所述算術(shù)編碼裝置的輸出來提取二進(jìn)制符號(hào),并生成二進(jìn)制算術(shù)碼。
15.一種計(jì)算機(jī)程序,所述計(jì)算機(jī)具有用于累積已經(jīng)解碼的多值符號(hào)的緩沖器,所述程序使所述計(jì)算機(jī)用作算術(shù)碼解碼裝置,用于根據(jù)算術(shù)碼的輸入來解碼,以獲得多值符號(hào);以及逆轉(zhuǎn)換裝置,用于當(dāng)從所述緩沖器提取多值符號(hào)時(shí),根據(jù)所述逆轉(zhuǎn)換裝置的輸出來提取多值符號(hào),轉(zhuǎn)換為輸出符號(hào),并提供結(jié)果作為輸出。
16.一種計(jì)算機(jī)程序,所述計(jì)算機(jī)具有用于累積已經(jīng)轉(zhuǎn)換的多值符號(hào)串的緩沖器,所述程序使所述計(jì)算機(jī)用作轉(zhuǎn)換裝置,用于根據(jù)輸入符號(hào)的輸入,將輸入符號(hào)轉(zhuǎn)換為多值符號(hào)串;以及算術(shù)編碼裝置,用于當(dāng)從所述緩沖器提取多值符號(hào)串時(shí),根據(jù)所述算術(shù)編碼裝置的輸出來提取多值符號(hào)串,并生成算術(shù)碼。
17.根據(jù)權(quán)利要求14所述的程序,還使所述計(jì)算機(jī)用作比特?cái)?shù)估計(jì)裝置,用于估計(jì)二進(jìn)制符號(hào)數(shù)目和根據(jù)所述算術(shù)編碼裝置已經(jīng)提取的二進(jìn)制符號(hào)數(shù)目的碼比特?cái)?shù)目以及已經(jīng)生成的碼比特?cái)?shù)目之間的關(guān)系,并且根據(jù)所述緩沖器的累積數(shù)量估計(jì)算術(shù)編碼之后生成的碼比特?cái)?shù)目。
18.根據(jù)權(quán)利要求16所述的程序,還使所述計(jì)算機(jī)用作比特?cái)?shù)估計(jì)裝置,用于估計(jì)多值符號(hào)數(shù)目和根據(jù)所述算術(shù)編碼裝置已經(jīng)提取的多值符號(hào)數(shù)目的碼比特?cái)?shù)目以及已經(jīng)生成的碼比特?cái)?shù)目之間的關(guān)系,并且根據(jù)所述緩沖器的累積數(shù)量估計(jì)算術(shù)編碼之后生成的碼比特?cái)?shù)目。
全文摘要
在本發(fā)明的二進(jìn)制算術(shù)碼解碼器中,分離算術(shù)碼的解碼和逆二值化,并且插入較大的中間緩沖器。在輸入流時(shí)首先執(zhí)行算術(shù)碼的解碼,由此可以以解碼器的最大輸入比特率來解碼算術(shù)碼。所獲得的二進(jìn)制符號(hào)串首先被保持在中間緩沖器中,隨后執(zhí)行與下一級(jí)的塊解碼器的處理相匹配的、從二進(jìn)制符號(hào)串到多值符號(hào)的逆二值化。
文檔編號(hào)H04N1/413GK1875545SQ20048003233
公開日2006年12月6日 申請(qǐng)日期2004年10月28日 優(yōu)先權(quán)日2003年10月29日
發(fā)明者仙田裕三 申請(qǐng)人:日本電氣株式會(huì)社