本發(fā)明涉及用于處理視頻信號(hào)的方法和設(shè)備,并且更具體地,涉及一種用于利用約束進(jìn)位運(yùn)算執(zhí)行算術(shù)編譯的技術(shù)。
背景技術(shù):
熵編譯是用最少平均數(shù)量的比特表示數(shù)據(jù)的過程,并且因此是關(guān)于所有媒體壓縮方法的基本技術(shù)。算術(shù)編譯是與類似前綴編譯(例如,霍夫曼(Huffman)、萊斯(Rice)、exp-Golomb碼)的其它編譯技術(shù)相比具有更高的計(jì)算復(fù)雜性的熵編譯方法,但是因?yàn)樗a(chǎn)生更好的壓縮(接近理論極限),所以它已經(jīng)在最近的視頻編譯標(biāo)準(zhǔn)H.265/HEVC和VP9中作為唯一熵編譯方法被采用,并且因此期望為將來標(biāo)準(zhǔn)的單一熵編譯方法。
技術(shù)實(shí)現(xiàn)要素:
技術(shù)問題
存在用于實(shí)踐上實(shí)現(xiàn)算術(shù)編譯的數(shù)個(gè)選項(xiàng),并且其中每個(gè)可以取決于實(shí)施方式是用通用處理器和常規(guī)軟件工具、還是專門硬件(ASIC)來完成的而具有優(yōu)點(diǎn)和缺點(diǎn)。
因此,本發(fā)明定義一種能夠基于在通用或?qū)iT硬件中有效地實(shí)現(xiàn)的字節(jié)重新歸一化來使得能夠?qū)崿F(xiàn)算術(shù)編譯的技術(shù)。
定制硬件的一個(gè)問題是,在數(shù)據(jù)符號(hào)被編碼之后,對(duì)壓縮的數(shù)據(jù)字節(jié)的改變的最大數(shù)量可能是無界的。因此,本發(fā)明提供用于以小的壓縮損失有效地限制這個(gè)數(shù)量的方法。
技術(shù)方案
本發(fā)明的實(shí)施例定義了基于在通用或?qū)iT硬件中有效地實(shí)現(xiàn)的字節(jié)重新歸一化來使得能夠?qū)崿F(xiàn)算術(shù)編譯的技術(shù)。
此外,本發(fā)明提供用于以小的壓縮損失有效地限制對(duì)壓縮的數(shù)據(jù)字節(jié)的改變的最大數(shù)量的方法。
此外,本發(fā)明提供用于調(diào)整區(qū)間的方法。
此外,本發(fā)明提供用于針對(duì)區(qū)間重新歸一化執(zhí)行延遲判定的方法。
此外,本發(fā)明提供用于執(zhí)行受緩沖器值約束的判定的方法。
此外,本發(fā)明提供用于消除在擴(kuò)展精度寄存器中溢出或者在具有未決比特(outstanding bits)的緩沖器中等效地溢出的可能性。
有益效果
本發(fā)明能夠通過基于字節(jié)重新歸一化使得能夠?qū)崿F(xiàn)算術(shù)編譯來用通用或?qū)iT硬件有效地實(shí)現(xiàn)。
此外,本發(fā)明能夠以小的壓縮損失有效地限制對(duì)壓縮的數(shù)據(jù)字節(jié)的改變的最大數(shù)量。
附圖說明
圖1和圖2圖示根據(jù)本發(fā)明被應(yīng)用于的實(shí)施例的處理視頻信號(hào)的編碼器和解碼器的示意框圖。
圖3是圖示根據(jù)本發(fā)明被應(yīng)用于的實(shí)施例的更新算術(shù)編譯區(qū)間數(shù)據(jù)所需要的操作的集合的流程圖。
圖4和圖5圖示根據(jù)本發(fā)明被應(yīng)用于的實(shí)施例的基于二進(jìn)制算術(shù)編譯來處理視頻信號(hào)的熵編碼單元和熵解碼單元的示意框圖。
圖6是用于圖示根據(jù)本發(fā)明被應(yīng)用于的實(shí)施例的在有效比特的窗口處利用算術(shù)的編譯過程的圖。
圖7是用于圖示根據(jù)本發(fā)明被應(yīng)用于的實(shí)施例的針對(duì)算術(shù)編譯區(qū)間的重新歸一化的操作的圖。
圖8是用于圖示根據(jù)本發(fā)明被應(yīng)用于的實(shí)施例的算術(shù)編譯區(qū)間的可能的位置的圖。
圖9是用于圖示根據(jù)本發(fā)明被應(yīng)用于的實(shí)施例的調(diào)整算術(shù)編譯區(qū)間的過程的圖。
圖10是圖示根據(jù)本發(fā)明被應(yīng)用于的實(shí)施例的利用約束進(jìn)位操作執(zhí)行算術(shù)編譯的方法的流程圖。
圖11是圖示根據(jù)本發(fā)明被應(yīng)用于的實(shí)施例的重新歸一化算術(shù)編譯區(qū)間的方法的圖。
圖12是圖示根據(jù)本發(fā)明被應(yīng)用于的實(shí)施例的調(diào)整算術(shù)編譯區(qū)間的方法的圖。
圖13和圖14是圖示根據(jù)本發(fā)明被應(yīng)用于的另一實(shí)施例的調(diào)整算術(shù)編譯區(qū)間的另一方法的流程圖。
具體實(shí)施方式
根據(jù)本發(fā)明的一個(gè)方面,提供了針對(duì)數(shù)據(jù)符號(hào)執(zhí)行算術(shù)編譯的方法,包括:為所述數(shù)據(jù)符號(hào)中的每一個(gè)創(chuàng)建區(qū)間,該區(qū)間基于區(qū)間的起始點(diǎn)和長(zhǎng)度來表示;針對(duì)數(shù)據(jù)符號(hào)中的每一個(gè)來更新區(qū)間;檢查所更新的區(qū)間是否被包括在特定范圍中;以及基于檢查的結(jié)果重新歸一化所更新的區(qū)間。
在本發(fā)明中,該方法還由重新歸一化所調(diào)整的區(qū)間組成。
在本發(fā)明中,如果所更新的區(qū)間未被包括在特定范圍中,則該方法還由選擇所更新的區(qū)間的頂部部分和底部部分中的一個(gè)組成,其中,所更新的區(qū)間基于選擇的部分被調(diào)整。
在本發(fā)明中,該方法還由以下步驟組成:在所更新的區(qū)間內(nèi)計(jì)算閾值點(diǎn);以及將第一距離與第二距離進(jìn)行比較,其中,第一距離指示從閾值點(diǎn)到頂部部分的長(zhǎng)度并且第二距離指示從閾值點(diǎn)到底部部分的長(zhǎng)度,并且其中,所更新的區(qū)間基于比較步驟的結(jié)果被調(diào)整。
在本發(fā)明中,如果第一距離小于第二距離,則所更新的區(qū)間的長(zhǎng)度被設(shè)定為第二距離。
在本發(fā)明中,如果第一距離不小于第二距離,則所更新的區(qū)間的長(zhǎng)度被設(shè)定為第一距離,并且由閾值點(diǎn)設(shè)定所更新的區(qū)間的起始點(diǎn)。
根據(jù)本發(fā)明的另一方面,提供了針對(duì)數(shù)據(jù)符號(hào)執(zhí)行算術(shù)編譯的設(shè)備,該設(shè)備包括二進(jìn)制算術(shù)編譯單元,包括:二進(jìn)制算術(shù)編譯單元,該二進(jìn)制算術(shù)編譯單元被配置成:為數(shù)據(jù)符號(hào)中的每一個(gè)創(chuàng)建區(qū)間,該區(qū)間基于區(qū)間的起始點(diǎn)和長(zhǎng)度來表示;針對(duì)數(shù)據(jù)符號(hào)中的每一個(gè)來更新區(qū)間;檢查所更新的區(qū)間是否被包括在特定范圍中;并且基于檢查的結(jié)果重新歸一化所更新的區(qū)間。
發(fā)明的模式
在下文中,參考附圖描述根據(jù)本發(fā)明的實(shí)施例的示例性元素和操作。然而應(yīng)當(dāng)注意,參考附圖所描述的本發(fā)明的元素和操作僅作為實(shí)施例被提供,并且本發(fā)明的技術(shù)精神以及核心配置和操作不限于此。
此外,本說明書中使用的術(shù)語是現(xiàn)在廣泛地使用的常見術(shù)語,但是在特殊情況下,使用由本申請(qǐng)人隨機(jī)地選擇的術(shù)語。在這種情況下,在對(duì)應(yīng)部分的詳細(xì)描述中清楚地描述對(duì)應(yīng)術(shù)語的含義。因此,應(yīng)當(dāng)注意,本發(fā)明不應(yīng)該被解釋為基于僅本說明書的對(duì)應(yīng)描述中使用的術(shù)語的名稱并且本發(fā)明應(yīng)該通過甚至檢查對(duì)應(yīng)術(shù)語的含義來解釋。
此外,本說明書中使用的術(shù)語是被選擇來描述本發(fā)明的常見術(shù)語,但是在存在具有類似含義的這些術(shù)語的情況下,可以為了更適當(dāng)?shù)姆治鲇闷渌g(shù)語替換。例如,可以在每個(gè)編譯過程中適當(dāng)?shù)靥鎿Q并解釋信號(hào)、數(shù)據(jù)、樣本、圖片、幀和塊。另外,可以在每個(gè)算術(shù)編譯過程中適當(dāng)?shù)靥鎿Q并解釋范圍、長(zhǎng)度、區(qū)間(或編譯區(qū)間、算術(shù)編譯區(qū)間)以及區(qū)間長(zhǎng)度。
圖1和圖2圖示根據(jù)本發(fā)明被應(yīng)用于的實(shí)施例的處理視頻信號(hào)的編碼器和解碼器的示意框圖。
圖1的編碼器100包括變換單元110、量化單元120以及熵編碼單元130。圖2的解碼器200包括熵解碼單元210、去量化單元220以及逆變換單元230。
編碼器100接收視頻信號(hào)并且通過將該視頻信號(hào)減去預(yù)測(cè)信號(hào)來生成預(yù)測(cè)誤差。
所生成的預(yù)測(cè)誤差被發(fā)送到變換單元110。變換單元110通過對(duì)預(yù)測(cè)誤差應(yīng)用變換方案來生成變換系數(shù)。
量化單元120對(duì)所生成的變換系數(shù)進(jìn)行量化并且將所量化的系數(shù)發(fā)送到熵編碼單元130。
熵編碼單元130對(duì)所量化的信號(hào)執(zhí)行熵編譯并且輸出熵編譯的信號(hào)。在這種情況下,熵編譯是用來最優(yōu)地定義進(jìn)入壓縮數(shù)據(jù)序列的比特的數(shù)量的過程。作為最優(yōu)熵編譯技術(shù)之一的算術(shù)編譯是通過單個(gè)實(shí)數(shù)來表示多個(gè)符號(hào)的方法。
在常規(guī)編譯條件下,壓縮的數(shù)據(jù)緩沖器中的比特的值是幾乎同樣概率的,并且因此未決比特的非常長(zhǎng)的序列是非常不可能的,因?yàn)閚個(gè)未決比特的序列的概率是1/2n。然而,必須將算術(shù)編譯的實(shí)際實(shí)施方式設(shè)計(jì)成與任意輸入數(shù)據(jù)和符號(hào)概率集合一起工作,包括可能偶然地(或故意地)產(chǎn)生未決比特的無界數(shù)的那些。
為軟件(通用處理器)實(shí)施方式而設(shè)計(jì)的編碼器采用了未決比特的計(jì)數(shù)器,或者簡(jiǎn)單地假定了壓縮的數(shù)據(jù)緩沖器上的進(jìn)位。然而,另一方面,使用專門處理器(ASIC)實(shí)現(xiàn)的編碼器通常對(duì)每個(gè)操作所需要的周期的數(shù)量需要強(qiáng)限制,并且因此不能夠適應(yīng)平均情況與最壞情況之間的非常大的變化。
針對(duì)這個(gè)問題的一個(gè)解決方案(被稱作“比特填充”)是為一次生產(chǎn)一個(gè)比特的算術(shù)編譯器而開發(fā)的:當(dāng)連續(xù)的“1”比特的數(shù)量超過特定限制時(shí),可以人為地插入“0”比特以限制進(jìn)位傳播。在壓縮方面存在一些損失,因?yàn)槟切╊~外的比特不攜帶任何有用的信息,但是能夠使它保持相對(duì)小。
這個(gè)解決方案的問題是它在生成全字節(jié)(8比特字,而不是單個(gè)比特)的集合的算術(shù)編譯的新實(shí)施方式中是無效的。新實(shí)施方式意指當(dāng)在難以提高時(shí)鐘速度的同時(shí)數(shù)據(jù)總線和并行處理便宜時(shí),由算術(shù)編碼器生成除了單個(gè)比特單位信息以外的字節(jié)單位信息的方案。
對(duì)于那些實(shí)施方式能夠?qū)ⅰ氨忍靥畛洹狈椒〝U(kuò)展到“字節(jié)填充”,即,人為地添加零字節(jié)以限制進(jìn)位傳播。雖然這實(shí)現(xiàn)所期望的結(jié)果,但是這是不實(shí)際的,因?yàn)楸仨毺砑硬粋鬟_(dá)任何信息的8個(gè)比特,并且相對(duì)壓縮損失變得過度。
因此,本發(fā)明定義基于要用通用或?qū)iT硬件有效地實(shí)現(xiàn)的字節(jié)重新歸一化使得能夠?qū)崿F(xiàn)算術(shù)編譯的技術(shù)。
此外,本發(fā)明提供用于以小的壓縮損失有效地限制對(duì)壓縮的數(shù)據(jù)字節(jié)的改變的最大數(shù)量的方法。
在本發(fā)明的一個(gè)方面中,熵編碼單元130可以為數(shù)據(jù)符號(hào)中的每一個(gè)創(chuàng)建一個(gè)區(qū)間,并且針對(duì)數(shù)據(jù)符號(hào)中的每一個(gè)來更新該區(qū)間。在這種情況下,可以基于區(qū)間的起始點(diǎn)和長(zhǎng)度來表示區(qū)間。
熵編碼單元130可以檢查所更新的區(qū)間是否被包括在特定范圍中,并且基于檢查的結(jié)果重新歸一化所更新的區(qū)間。
如果所更新的區(qū)間被包括在特定范圍中,則熵編碼單元130可以在緩沖器中存儲(chǔ)該位于特定范圍內(nèi)的比特,并且重新歸一化所更新的區(qū)間。
圖2的解碼器200接收由圖1的編碼器100所輸出的信號(hào)。
熵解碼單元210對(duì)所接收到的信號(hào)執(zhí)行熵解碼。例如,熵解碼單元210可以接收包括碼值的位置信息的信號(hào),檢查與碼值的位置信息相對(duì)應(yīng)的符號(hào),并且對(duì)經(jīng)檢查的符號(hào)進(jìn)行解碼。
在算術(shù)編譯中,可以通過壓縮的序列的碼值來確定所解碼的序列。在解碼過程中,碼值能夠被用于對(duì)正確的序列進(jìn)行解碼。
熵解碼單元210可以從第k個(gè)歸一化碼值中搜索第k個(gè)正確值,然后可以根據(jù)第k個(gè)正確值和第k個(gè)歸一化碼值來計(jì)算第(k+1)個(gè)歸一化碼值。
此外,去量化單元220基于關(guān)于量化步長(zhǎng)的信息來從經(jīng)熵解碼的信號(hào)獲得變換系數(shù)。
逆變換單元230通過對(duì)變換系數(shù)執(zhí)行逆變換來獲得預(yù)測(cè)誤差。重建信號(hào)是通過將所獲得的預(yù)測(cè)誤差加到預(yù)測(cè)信號(hào)而生成的。
圖3是圖示更新算術(shù)編譯區(qū)間數(shù)據(jù)所需要的操作的集合的流程圖。
本發(fā)明被應(yīng)用于的算術(shù)編譯器能夠包括數(shù)據(jù)源單元(310)、數(shù)據(jù)建模單元(320)、第一延遲單元(330)和第二延遲單元。
數(shù)據(jù)源單元(310)能夠如以下等式1那樣每個(gè)從M個(gè)符號(hào)的字母表生成N個(gè)隨機(jī)符號(hào)的序列。
[等式1]
S={s1,s2,s3,...,sN},sk∈{0,1,2,...,M-1}
在這種情況下,本發(fā)明假定數(shù)據(jù)符號(hào)是完全獨(dú)立且同分布的(i.i.d.),如以下等式2具有非零概率。
[等式2]
Prob{sk=n}=p(n)>0,k=1,2,...,N,n=0,1,...,M-1
另外,本發(fā)明能夠如以下等式3定義累計(jì)概率分布。
[等式3]
在這種情況下,c(s)是嚴(yán)格單調(diào)的,并且c(0)=0以及c(M)=1。
即使那些條件可以似乎與在實(shí)際的復(fù)雜媒體信號(hào)中發(fā)現(xiàn)的條件大不相同,實(shí)際上所有熵編譯工具基于從那些假定得到的技術(shù),所以本發(fā)明也能夠提供受這個(gè)更簡(jiǎn)單模型約束的實(shí)施例。
算術(shù)編譯主要由以形式[bk,bk+lk)更新實(shí)數(shù)線中的半開區(qū)間,其中bk表示區(qū)間基并且lk表示其長(zhǎng)度。可以根據(jù)每個(gè)數(shù)據(jù)符號(hào)sk并且從初始條件b1=0和l1=1開始更新區(qū)間,它們使用以下等式4和等式5來針對(duì)k=1,2,…,N遞歸地更新。
[等式4]
lk+1=p(sk)lk
[等式5]
bk+1=bk+c(sk)lk
在這種情況下,區(qū)間可以如以下等式6漸進(jìn)地嵌套。
[等式6]
[bk,bk+lk)[bi,bi+li),k=1,2,...,i–1,i=2,3,...,N+1
如上所述,參考圖3,數(shù)據(jù)建模單元(320)能夠接收N個(gè)隨機(jī)符號(hào)的序列Sk,并且輸出累計(jì)概率分布C(Sk)和符號(hào)概率p(Sk)。
能夠通過從數(shù)據(jù)建模單元(320)輸出的Sk以及從第一延遲單元(330)輸出的lk的乘法運(yùn)算來獲得區(qū)間長(zhǎng)度lk+1。
另外,能夠通過從第二延遲單元(340)輸出的bk的加法運(yùn)算以及C(Sk)和lk的乘法來獲得區(qū)間基bk+1。
能夠通過乘法和加法的算術(shù)運(yùn)算來定義本發(fā)明被應(yīng)用于的算術(shù)編譯。在這種情況下,能夠以無限精度表示bk和lk,但是完成這個(gè)以首先在直觀簡(jiǎn)單的版本中引入記數(shù)法。稍后本發(fā)明提供用于使用有限精度運(yùn)算來近似地實(shí)現(xiàn)算術(shù)編譯的方法。
在已經(jīng)計(jì)算最終區(qū)間[bN+1,bN+1+lN+1)之后,由碼值來定義算術(shù)編碼的消息??梢宰C明存在一個(gè)能夠使用至多1+log2(lN+1)個(gè)比特來表示的這樣的值。
為了使用碼值來對(duì)序列S進(jìn)行解碼,本發(fā)明再次從初始條件b1=0和l1=1開始,然后使用以下等式7至等式9來漸進(jìn)地獲得sk、lk和bk。
[等式7]
[式8]
lk+1=p(sk)lk
[等式9]
bk+1=bk+c(sk)lk
能夠從所有區(qū)間被嵌套、并且假定解碼器完美地再現(xiàn)由編碼器所做的操作的特性推斷出這個(gè)解碼過程的正確性。
本發(fā)明能夠分別使用符號(hào)Bk、Lk和Dk來表示bk、lk和的有限精度值(通常被換算為整型(integer)值)。編碼的方面能夠通過以下等式10和等式11來定義。
[等式10]
Lk+1=[[c(sk+1)Lk]]-[[c(sk)Lk]]
[等式11]
Bk+1=Bk+[[c(sk)Lk]]
在這種情況下,圍繞乘積的雙方括號(hào)表示乘法是有限精度近似。
等式10對(duì)應(yīng)于等式4,因?yàn)閜(s)=c(s+1)-c(s)(s=1,2,...,M)。
因此,解碼過程能夠通過以下等式12至等式14來定義。
[等式12]
Sk={s:[[c(s)Lk]]≤Dk<[[c(s+1)Lk]]}
[等式13]
Lk+1=[[c(sk+1)Lk]]-[[c(sk)Lk]]
[等式14]
Bk+1=Bk+[[c(sk)Lk]]
圖4和圖5圖示根據(jù)本發(fā)明被應(yīng)用于的實(shí)施例的基于二進(jìn)制算術(shù)編譯來處理視頻信號(hào)的熵編碼單元和熵解碼單元的示意框圖。
參考圖4,熵編碼單元(130)包括二值化單元(410)、上下文建模單元(420)以及二進(jìn)制算術(shù)編碼單元(430)。
二值化單元(410)可以接收數(shù)據(jù)符號(hào)的序列并且通過執(zhí)行二值化來輸出由二值化值0或1構(gòu)成的二進(jìn)制串(bin string)。二值化單元(410)可以將語法元素映射到二進(jìn)制符號(hào)(bin)。數(shù)個(gè)不同的二值化過程(例如,一元(U)、截?cái)嘁辉?TU)、k階Exp-Golomb(EGK)和固定長(zhǎng)度(FL))可以被用于二值化??梢曰谡Z法元素的類型來選擇二值化過程。
所輸出的二進(jìn)制串被發(fā)送到上下文建模單元(420)。上下文建模單元(420)針對(duì)熵編碼執(zhí)行概率估計(jì)。也就是說,上下文建模單元(420)可以估計(jì)二進(jìn)制(bins)的概率。
上下文建模單元(420)可以提供實(shí)現(xiàn)高編譯效率所需要的準(zhǔn)確的概率估計(jì)。因此,高度自適應(yīng)且不同的上下文模型能夠被用于不同的二進(jìn)制并且可以基于先前編譯的二進(jìn)制的值來更新該上下文模型的概率。
具有類似分布的二進(jìn)制可以共享同一上下文模型。能夠基于語法元素的類型、二進(jìn)制在語法元素中的位置(binIdx)、亮度/色度、鄰近信息等中的至少一個(gè)來選擇用于每個(gè)二進(jìn)制的上下文模型。
二進(jìn)制算術(shù)編碼單元(430)對(duì)所輸出的二進(jìn)制串進(jìn)行熵編碼并且輸出壓縮數(shù)據(jù)比特。
二進(jìn)制算術(shù)編碼單元(430)基于遞歸區(qū)間劃分來執(zhí)行算術(shù)編譯。
具有0至1的初始值的區(qū)間(或范圍)基于二進(jìn)制的概率被劃分成兩個(gè)子區(qū)間。編碼的比特當(dāng)被轉(zhuǎn)換為二進(jìn)制小數(shù)時(shí)提供選擇兩個(gè)子區(qū)間中的指示所解碼的二進(jìn)制的值的一個(gè)的偏移。
在每個(gè)解碼的二進(jìn)制之后,可以更新區(qū)間以等于所選擇的子區(qū)間,并且區(qū)間劃分過程重復(fù)其本身。區(qū)間和偏移值具有有限比特精度,所以每當(dāng)區(qū)間落在特定值以下時(shí)可能需要重新歸一化以防止下溢??赡茉诿總€(gè)二進(jìn)制被解碼之后發(fā)生重新歸一化。
能夠使用估計(jì)概率或者假定0.5的相等概率來完成算術(shù)編譯。對(duì)于繞開編譯的二進(jìn)制,能夠通過移位來完成范圍變成子區(qū)間的劃分,然而對(duì)于上下文編譯的二進(jìn)制可能需要查找表。
參考圖5,熵解碼單元(210)包括二值制算術(shù)解碼單元(510)、上下文建模單元(520)以及去二值化單元(530)。
熵解碼單元(210)能夠逆執(zhí)行在圖4的描述中所說明的以上編碼過程。
在二進(jìn)制算術(shù)解碼單元(510)處,可以反饋所更新的區(qū)間以用于遞歸區(qū)間劃分??梢詫⑺碌纳舷挛膹亩M(jìn)制算術(shù)解碼單元(510)反饋給上下文建模單元(520)以用于準(zhǔn)確的概率估計(jì)。
上下文建模單元(520)可以基于語法元素的類型來選擇上下文。在熵解碼單元(210)處,可以反饋所解碼的二進(jìn)制以確定是否繼續(xù)處理同一語法元素還是切換到另一語法元素。上下文建模單元(520)也可以基于二進(jìn)制在語法元素中的位置(binIdx)來選擇上下文。
去二值化單元(530)可以將二進(jìn)制符號(hào)串轉(zhuǎn)換為多值符號(hào)。
圖6是用于圖示根據(jù)本發(fā)明被應(yīng)用于的實(shí)施例的在有效比特的窗口處利用算術(shù)的編譯過程的圖。
對(duì)于算術(shù)編譯的實(shí)際實(shí)施方式,本發(fā)明可能認(rèn)為所有加法是按無限精度來完成的,但是乘法被以保存一些特性的方式使用有限精度來近似。本說明書將僅涵蓋理解本發(fā)明所需的方面。
算術(shù)編譯的一個(gè)重要方面是它可能被認(rèn)為是針對(duì)加法按無限精度完成算術(shù)但是用保證所有運(yùn)算隱式地在無限精度寄存器中完成的近似來替換確切的乘法的過程。
基于這個(gè)解釋,如圖6中所示,編譯過程能夠在有效比特的“窗口”處利用算術(shù)來完成。在圖6中,符號(hào)‘a(chǎn)’表示任意比特值,并且B表示將換算的bk的十進(jìn)制值乘以2P并且使它成為整型值的值。
因?yàn)閰^(qū)間長(zhǎng)度lk減小,所以有必要周期性地增加P,并且在被稱作重新歸一化的過程中重新?lián)Q算L=2PL的值。在重新歸一化期間,可以將獨(dú)立比特或完整字節(jié)從寄存器字復(fù)制到包含壓縮的數(shù)據(jù)的緩沖器。
在圖6中,被稱作“已決”和“未決”的比特表示已經(jīng)被移動(dòng)到具有壓縮數(shù)據(jù)的緩沖器的比特,并且因此可以未被有效地用在算術(shù)運(yùn)算中。然而,能夠在圖6中觀察到的本發(fā)明的一個(gè)重要方面是可能存在可能由于來自進(jìn)一步加法的二進(jìn)制算術(shù)進(jìn)位而可能改變的任何數(shù)量的未決比特。
圖7是用于圖示根據(jù)本發(fā)明被應(yīng)用于的實(shí)施例的針對(duì)算術(shù)編譯區(qū)間的重新歸一化的操作的圖。
對(duì)于算術(shù)編譯的實(shí)際實(shí)施方式,因?yàn)樵谟邢蘧燃拇嫫髦型瓿刹僮?,所以?dāng)要輸出的區(qū)間的上部比特被確定時(shí),可以輸出該比特并且可以執(zhí)行重新歸一化以便擴(kuò)展區(qū)間的寬度。
如圖7中所示,粗線表示所選擇的區(qū)間。在圖7的第二條線中,因?yàn)橐敵龅膮^(qū)間[0.64,0.8)的比特值明顯大于0.5,所以可以在這個(gè)時(shí)間點(diǎn)輸出編譯的比特‘1’,并且區(qū)段[0.5,1.0)可以與擴(kuò)展區(qū)段[0.0,1.0)相匹配。通過這些步驟,可以使所選擇的區(qū)間重新歸一化。
圖8是用于圖示根據(jù)本發(fā)明被應(yīng)用于的實(shí)施例的算術(shù)編譯區(qū)間的可能的位置的圖。
在以下說明中,本發(fā)明假定可以利用P位寄存器(例如,P=32或P=64)完成算術(shù)編譯操作,但是為了簡(jiǎn)化記數(shù)法,本發(fā)明能夠定義Pc位的“進(jìn)位精度”,其可以包括為進(jìn)位傳播而預(yù)留的額外的存儲(chǔ)器字節(jié)。例如,使用具有P=32位的寄存器但是具有為進(jìn)位傳播而預(yù)留的單獨(dú)字節(jié)的處理器的實(shí)施方式為了方便被解釋為使用具有Pc=40位的寄存器的實(shí)施方式。此外,本發(fā)明假定區(qū)間基Bk和長(zhǎng)度Lk中的索引k被省略并且B和L表示最新索引值。
本發(fā)明提出了調(diào)整區(qū)間的方法。在這種情況下,編碼器和解碼器能夠保持跟蹤B和L,并且兩者均能夠識(shí)別當(dāng)期望限制進(jìn)位傳播時(shí)的情形。
本發(fā)明能夠執(zhí)行正確的解碼,只要編碼器和解碼器使用相同規(guī)則來改變B和L并且該規(guī)則不違反正確的算術(shù)解碼的條件即可。
在本發(fā)明的一個(gè)方面中,有限精度算術(shù)編譯需要在其區(qū)間長(zhǎng)度L小于特定值時(shí)重新歸一化其區(qū)間長(zhǎng)度L。
圖8示出當(dāng)滿足特定條件時(shí)的可能的情形的圖。例如,當(dāng)滿足條件L<2R(例如,R=24能夠被用于32位算術(shù))時(shí),可以像圖8中所示出的表示區(qū)間的可能的情形。在這種情況下,本發(fā)明能夠如以下等式15定義比特位置。
[等式15]
[等式16]
另外,如果如等式16嵌套區(qū)間,則在位置R及之上的比特將不因進(jìn)位而改變,并且因此能夠被立即保存到壓縮的數(shù)據(jù)緩沖器,并且能夠重新歸一化區(qū)間。
圖9是用于圖示根據(jù)本發(fā)明被應(yīng)用于的實(shí)施例的調(diào)整算術(shù)編譯區(qū)間的過程的圖。
如果區(qū)間[C,D]不包含區(qū)間[B,B+L),則編碼器不能夠知道是否將發(fā)生進(jìn)位。在這種情況下,本發(fā)明提出兩個(gè)實(shí)施例。
在第一實(shí)施例中,本發(fā)明不假定未決比特的任何暫時(shí)存儲(chǔ),即,Pc=P。在第二實(shí)施例中,本發(fā)明認(rèn)為存儲(chǔ)少量的未決字節(jié)以允許一些進(jìn)位,并且Pc>P。
在本發(fā)明的一個(gè)方面中,要由編碼器和解碼器使用的以下算法完整地描述針對(duì)區(qū)間重新歸一化的判定。在圖9中,可以根據(jù)對(duì)頂部區(qū)間的選擇隱式地確定是否發(fā)生了進(jìn)位。
熵編碼單元可以如以下等式17計(jì)算比特位置。
[等式17]
熵編碼單元可以檢查T是否大于B。如果T大于B,則熵編碼單元可以檢查L(zhǎng)是否大于2S。如果L大于2S,則返回。另外,熵編碼單元可以檢查頂部部分的長(zhǎng)度(B+L-T)是否小于底部部分的長(zhǎng)度(T-B)或者T是否等于0。
如果頂部部分的長(zhǎng)度(B+L-T)小于底部部分的長(zhǎng)度(T-B)或者T等于0,則熵編碼單元可以將L設(shè)定為(T-B)。否則,熵編碼單元可以將L設(shè)定為(B+L-T)并且將B設(shè)定為T。
然后,熵編碼單元可以使區(qū)間歸一化。
在這種情況下,本發(fā)明假定L<2R并且S≤R,以及條件T=0僅在存在無符號(hào)整型算術(shù)溢出時(shí)才發(fā)生。這與用來在一些實(shí)施方式上開始進(jìn)位傳播的條件有關(guān)。
在第二實(shí)施例中,熵編碼單元可以執(zhí)行受緩沖器值約束的判定。本發(fā)明可以將最新數(shù)據(jù)字節(jié)存儲(chǔ)在短緩沖器中,僅在那些字節(jié)中具有可能的進(jìn)位。如上面所說明的,這可能等效于具有帶附加比特的寄存器,并且本發(fā)明能夠使用以下算法。
熵編碼單元可以如以上等式17計(jì)算比特位置。在這種情況下,本發(fā)明可以假定Pc個(gè)比特的精度。
另外,熵編碼單元可以檢查T是否等于0。
如果T等于0,則熵編碼單元可以將L設(shè)定為(T-B)。然后,熵編碼單元可以使區(qū)間歸一化。
如所說明的,本發(fā)明可以調(diào)整區(qū)間以消除在擴(kuò)展精度寄存器中溢出或者在具有未決比特的緩沖器中等效地溢出的可能性。
圖10是圖示根據(jù)本發(fā)明被應(yīng)用于的實(shí)施例的利用約束進(jìn)位操作執(zhí)行算術(shù)編譯的方法的流程圖。
二進(jìn)制算術(shù)編碼單元(440)可以執(zhí)行遞歸區(qū)間劃分。也就是說,能夠基于二進(jìn)制的概率將具有初始值0至1的區(qū)間劃分成兩個(gè)子區(qū)間。
二進(jìn)制算術(shù)編碼單元(440)可以選擇兩個(gè)子區(qū)間中的指示編譯的二進(jìn)制的值的一個(gè)。能夠更新區(qū)間以等于所選擇的子區(qū)間。在這種情況下,編譯區(qū)間的范圍和基數(shù)通過有限數(shù)量的比特來表示,有必要重新歸一化區(qū)間以防止精度降級(jí)。另外,在重新歸一化期間可以作為編譯的比特輸出基數(shù)的上部比特。可以在范圍小于閾值時(shí)重新歸一化編譯區(qū)間(基數(shù)、基數(shù)+范圍)。
對(duì)于編譯的比特的進(jìn)位傳播和輸出的處理,不輸出編譯的比特直到確認(rèn)了進(jìn)一步進(jìn)位傳播將不影響比特值為止。
在本發(fā)明的一個(gè)方面中,二進(jìn)制算術(shù)編碼單元(440)可以為數(shù)據(jù)符號(hào)中的每一個(gè)創(chuàng)建一個(gè)區(qū)間(S1010)。可以基于二進(jìn)制的概率來更新為數(shù)據(jù)符號(hào)中的每一個(gè)所創(chuàng)建的區(qū)間(S1020)。
二進(jìn)制算術(shù)編碼單元(440)可以檢查區(qū)間是否被嵌套(S1030)。例如,二進(jìn)制算術(shù)編碼單元(440)可以檢查所更新的區(qū)間是否被包括在特定范圍中。也就是說,參考圖8,圖8(a)示出了區(qū)間[B,B+L)被包括在特定范圍[C,D)中,并且圖8(b)示出了區(qū)間[B,B+L)未被包括在特定范圍[C,D)中。因此,如圖8(a)中所示,如果區(qū)間[B,B+L)被包括在特定范圍[C,D)中,則在位置R及之上的比特可能不因進(jìn)位而改變。因此,可以將在位置R及之上的比特保存到緩沖器。
然后,二進(jìn)制算術(shù)編碼單元(440)可以基于檢查的結(jié)果重新歸一化所更新的區(qū)間(S1040)。
圖11是圖示根據(jù)本發(fā)明被應(yīng)用于的實(shí)施例的重新歸一化算術(shù)編譯區(qū)間的方法的圖。
在本發(fā)明的一個(gè)方面中,二進(jìn)制算術(shù)編碼單元(440)可以執(zhí)行區(qū)間調(diào)整。
首先,二進(jìn)制算術(shù)編碼單元(440)可以定義特定范圍(S1110)。參考圖9,可以如等式15定義特定范圍[C,D)。
二進(jìn)制算術(shù)編碼單元(440)可以檢查區(qū)間是否被包括在特定范圍中(S1120)。例如,二進(jìn)制算術(shù)編碼單元(440)能夠檢查區(qū)間是否對(duì)應(yīng)于圖8(a)或圖8(b)。
如果區(qū)間被包括在特定范圍中,則二進(jìn)制算術(shù)編碼單元(440)能夠?qū)⑽挥谔囟ǚ秶鷥?nèi)的比特存儲(chǔ)到緩沖器(S1130)。否則,二進(jìn)制算術(shù)編碼單元(440)可以在特定條件下選擇區(qū)間的頂部部分或底部部分中的一個(gè)(S1140)。
另外,二進(jìn)制算術(shù)編碼單元(440)可以重新歸一化區(qū)間(S1150)。
圖12是圖示根據(jù)本發(fā)明被應(yīng)用于的實(shí)施例的調(diào)整算術(shù)編譯區(qū)間的方法的圖。
在本發(fā)明的一個(gè)方面中,二進(jìn)制算術(shù)編碼單元(440)可以執(zhí)行針對(duì)區(qū)間重新歸一化的判定。
熵編碼單元可以如等式17計(jì)算比特位置(S1210)。
熵編碼單元(440)可以檢查比特位置的值是否大于區(qū)間基的值(S1220)。例如,參考圖9,熵編碼單元(440)可以檢查T是否大于B。
如果比特位置的值大于區(qū)間基的值,則熵編碼單元(440)也可以檢查區(qū)間的頂部部分的長(zhǎng)度是否小于底部部分的長(zhǎng)度(S1230)。例如,參考圖9,熵編碼單元(440)可以檢查頂部部分的長(zhǎng)度(B+L-T)是否小于底部部分的長(zhǎng)度(T-B)。或者,熵編碼單元(440)可以檢查。
如果頂部部分的長(zhǎng)度小于底部部分的長(zhǎng)度,則熵編碼單元(440)可以將區(qū)間的長(zhǎng)度設(shè)定為底部部分的長(zhǎng)度(S1240)。
否則,熵編碼單元(440)可以將區(qū)間的長(zhǎng)度設(shè)定為頂部部分的長(zhǎng)度,并且將區(qū)間的起始點(diǎn)設(shè)定為比特位置(S1250)。
然后,熵編碼單元(440)可以重新歸一化區(qū)間(S1260)。
圖13和圖14是圖示根據(jù)本發(fā)明被應(yīng)用于的另一實(shí)施例的調(diào)整算術(shù)編譯區(qū)間的另一方法的流程圖。
在本發(fā)明的另一方面中,熵編碼單元(440)可以執(zhí)行受緩沖器值約束的判定。本發(fā)明可以將最新數(shù)據(jù)字節(jié)存儲(chǔ)在短緩沖器中,僅在那些字節(jié)中具有可能的進(jìn)位。如上面所說明的,這可能等效于具有帶附加比特的寄存器,并且本發(fā)明能夠使用以下算法。
二進(jìn)制算術(shù)編碼單元(440)可以定義特定范圍(S1310)。參考圖9,可以如等式15定義特定范圍[C,D)。
二進(jìn)制算術(shù)編碼單元(440)可以檢查區(qū)間是否被包括在特定范圍中(S1320)。例如,二進(jìn)制算術(shù)編碼單元(440)能夠檢查區(qū)間是否對(duì)應(yīng)于圖8(a)或圖8(b)。
如果區(qū)間被包括在特定范圍中,則二進(jìn)制算術(shù)編碼單元(440)能夠?qū)⑽挥谔囟ǚ秶鷥?nèi)的比特存儲(chǔ)到緩沖器(S1330)。否則,二進(jìn)制算術(shù)編碼單元(440)可以調(diào)整區(qū)間以消除在擴(kuò)展精度寄存器中溢出或者在具有未決比特的緩沖器中等效地溢出的可能性(S1340)。另外,二進(jìn)制算術(shù)編碼單元(440)可以重新歸一化區(qū)間(S1350)。
在本發(fā)明的另一實(shí)施例中,熵編碼單元(440)可以如以上等式17計(jì)算比特位置(S1410)。
熵編碼單元(440)可以檢查比特位置是否等于0(S1420)。
如果比特位置等于0,則熵編碼單元(440)可以將區(qū)間長(zhǎng)度設(shè)定為將比特位置減去區(qū)間基的值(S1430)。
然后,熵編碼單元(440)可以重新歸一化區(qū)間(S1440)。
如上所述,可以在處理器、微處理器、控制器或芯片上實(shí)現(xiàn)和執(zhí)行本發(fā)明中所說明的實(shí)施例。例如,可以在計(jì)算機(jī)、處理器、微處理器、控制器或芯片上實(shí)現(xiàn)和執(zhí)行圖1至圖5中所說明的功能單元。
此外,本發(fā)明被應(yīng)用于的解碼器和編碼器可以被包括在多媒體廣播傳輸/接收設(shè)備、移動(dòng)通信終端、家庭影院視頻設(shè)備、數(shù)碼影院視頻設(shè)備、監(jiān)視相機(jī)、視頻聊天設(shè)備、實(shí)時(shí)通信設(shè)備(諸如視頻通信)、移動(dòng)流設(shè)備、存儲(chǔ)介質(zhì)、錄像機(jī)、VoD服務(wù)提供設(shè)備、互聯(lián)網(wǎng)流服務(wù)提供設(shè)備、三維(3D)視頻設(shè)備、電話會(huì)議視頻設(shè)備以及醫(yī)療視頻設(shè)備中,并且可以被用來處理視頻信號(hào)和數(shù)據(jù)信號(hào)。
此外,可以以程序的形式產(chǎn)生本發(fā)明被應(yīng)用于的處理方法,所述程序?qū)⒂捎?jì)算機(jī)執(zhí)行并且可以被存儲(chǔ)在計(jì)算機(jī)可讀記錄介質(zhì)中。具有根據(jù)本發(fā)明的數(shù)據(jù)結(jié)構(gòu)的多媒體數(shù)據(jù)也可以被存儲(chǔ)在計(jì)算機(jī)可讀記錄介質(zhì)中。計(jì)算機(jī)可讀記錄介質(zhì)包括可由計(jì)算機(jī)系統(tǒng)讀取的數(shù)據(jù)被存儲(chǔ)在其中的所有類型的存儲(chǔ)裝置。例如,計(jì)算機(jī)可讀記錄介質(zhì)可以包括BD、USB、ROM、RAM、CD-ROM、磁帶、軟盤以及光學(xué)數(shù)據(jù)存儲(chǔ)裝置。此外,計(jì)算機(jī)可讀記錄介質(zhì)包括以載波(例如,通過互聯(lián)網(wǎng)的傳輸)的形式實(shí)現(xiàn)的介質(zhì)。此外,通過編碼方法所生成的比特流可以被存儲(chǔ)在計(jì)算機(jī)可讀記錄介質(zhì)中或者可以通過有線/無線通信網(wǎng)絡(luò)來發(fā)送。
工業(yè)適用性
已經(jīng)出于說明性目的公開了本發(fā)明的示例性實(shí)施例,并且本領(lǐng)域的技術(shù)人員可以在所附權(quán)利要求中所公開的本發(fā)明的技術(shù)精神和范圍內(nèi)改進(jìn)、改變、替換或者添加各種其它實(shí)施例。