專(zhuān)利名稱(chēng):對(duì)數(shù)據(jù)重新格式化以減小視頻編碼器和緩沖器之間的帶寬的制作方法
對(duì)數(shù)據(jù)重新格式化以減小視頻編碼器和緩沖器之間的帶寬
背景技術(shù):
本申請(qǐng)一般涉及視頻編碼器。視頻編碼器用于獲得視頻數(shù)據(jù)并將其編碼成占用較少空間的格式。作為結(jié)果,可以更加有效地使用發(fā)送視頻信息的設(shè)備與接收視頻信息的設(shè)備之間所消耗的帶寬,或者同時(shí)可以在這些設(shè)備之間發(fā)送更多的數(shù)據(jù)。通常,將編碼器所使用的視頻數(shù)據(jù)格式化成16X16大小的塊,其被稱(chēng)為宏塊。宏塊的使用廣泛地應(yīng)用于視頻壓縮領(lǐng)域的各個(gè)地方。作為結(jié)果,在大部分常規(guī)操作中,使用16X16大小的宏塊。例如,存儲(chǔ)器可以存儲(chǔ)(之前編碼的)參考幀。將當(dāng)前處理的幀與參考幀進(jìn)行比較以去除冗余。編碼過(guò)程可以依賴(lài)于這些參考幀以及這些參考幀與當(dāng)前處理的幀之間的差。一般地,因?yàn)橐曨l數(shù)據(jù)是存儲(chǔ)在16X16大小的塊中的,所以使用16X16大小的塊的格式來(lái)在視頻編碼器所使用的存儲(chǔ)器中存儲(chǔ)參考幀。然而,一些存儲(chǔ)器,例如雙倍數(shù)據(jù)速率3 (DDR3)靜態(tài)動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(參見(jiàn)可從 JEDEC 獲得的 DDR3SDRAM 標(biāo)準(zhǔn),JESD79-3D,2009 年 9 月,Arlington,VA22201),響應(yīng)于對(duì)數(shù)據(jù)宏塊的請(qǐng)求,提供兩個(gè)宏塊而不是一個(gè)宏塊。實(shí)際上,在一般的視頻編碼器中,從存儲(chǔ)器中獲取參考圖像消耗了編碼器和存儲(chǔ)器之間的大部分帶寬。因而,在編碼器每次請(qǐng)求來(lái)自參考圖像的16X16大小的宏塊時(shí),存儲(chǔ)器可能返回兩個(gè)并肩的16 X 16大小的宏塊,而不是一個(gè)16 X 16大小的宏塊。這是因?yàn)樵贒DR3標(biāo)準(zhǔn)中規(guī)定了 32字節(jié)的最小突發(fā)長(zhǎng)度。從DDR3存儲(chǔ)器中獲取的32字節(jié)包含所請(qǐng)求的宏塊中的一個(gè)16字節(jié)的行以及右側(cè)宏塊中的一個(gè)16字節(jié)的行。視頻編碼器僅僅消耗所請(qǐng)求的16X 16大小的宏塊,并且丟棄右側(cè)的宏塊。這導(dǎo)致消耗了兩倍的帶寬,這是因?yàn)閷?duì)單獨(dú)的16X16大小的宏塊的每個(gè)請(qǐng)求導(dǎo)致消耗了兩個(gè)宏塊的帶寬。
圖1是本發(fā)明一個(gè)實(shí)施例的示意圖;圖2是一個(gè)實(shí)施例的流程圖;圖3是根據(jù)本發(fā)明一個(gè)實(shí)施例的塊格式;以及圖4是根據(jù)本發(fā)明另一實(shí)施例的塊格式。
具體實(shí)施例方式根據(jù)一些實(shí)施例,存儲(chǔ)在視頻編碼器參考圖像緩沖器中的宏塊的寬高比可以從常規(guī)寬度變化到與某些存儲(chǔ)器(例如DDR3存儲(chǔ)器)的最小突發(fā)長(zhǎng)度相匹配的寬度。在一些實(shí)施例中,常規(guī)的宏塊寬度16個(gè)字節(jié)以及高度16個(gè)行在一個(gè)實(shí)施例中可以變化成非對(duì)稱(chēng)的寬度32個(gè)字節(jié)以及高度8個(gè)行。隨后,將16X16大小的宏塊中的兩個(gè)連續(xù)的16字節(jié)的行重新映射到32X8大小的宏塊中的一個(gè)32字節(jié)的行(被稱(chēng)為“排(row)”以區(qū)分對(duì)稱(chēng)的(例如16X 16)宏塊和非對(duì)稱(chēng)的(例如32X8)宏塊中的“行(Iine)”)。新的宏塊寬度32個(gè)字節(jié)與某些存儲(chǔ)器(例如DDR3存儲(chǔ)器)所使用的最小突發(fā)長(zhǎng)度32個(gè)字節(jié)相匹配。將16X16大小的宏塊重新格式化成32X8大小的宏塊,使得其可以在八個(gè)32字節(jié)的請(qǐng)求中在參考圖像緩沖器中被訪問(wèn)。八個(gè)32字節(jié)的請(qǐng)求正好返回來(lái)自存儲(chǔ)器的32X8或256個(gè)字節(jié),從而在一些實(shí)施例中產(chǎn)生了帶寬效率。相反,使用DDR3存儲(chǔ)器的常規(guī)視頻編碼器響應(yīng)于八個(gè)請(qǐng)求而接收512個(gè)字節(jié),從而與本發(fā)明的一些實(shí)施例相比產(chǎn)生了兩倍的帶寬消耗。參考圖1,視頻編碼系統(tǒng)10包括視頻編碼器12。視頻編碼器12接收?qǐng)D像數(shù)據(jù)并輸出已編碼的流。編碼器12從圖像幀的左角開(kāi)始寫(xiě)出參考圖像,作為宏塊。與視頻編碼器通信的橋14將對(duì)稱(chēng)的宏塊重新格式化成非對(duì)稱(chēng)的宏塊。在一個(gè)實(shí)施例中,該橋可以是存儲(chǔ)器橋。在一個(gè)實(shí)施例中,重新格式化可以涉及調(diào)整(swizzling)。存儲(chǔ)器或緩沖器15隨后存儲(chǔ)重新格式化后的宏塊。視頻編碼器12從緩存器15中讀取的參考圖像的非對(duì)稱(chēng)宏塊被橋14重新格式化成對(duì)稱(chēng)宏塊。在一個(gè)實(shí)施例中,緩沖器15可以是最小突發(fā)長(zhǎng)度比常規(guī)16 X 16大小的宏塊的寬度更長(zhǎng)的任意存儲(chǔ)器,包括具有32字節(jié)的最小突發(fā)長(zhǎng)度的DDR3SDRAM存儲(chǔ)器。當(dāng)然,未來(lái)可能使用甚至更大的突發(fā)長(zhǎng)度,在這種情況下,可以進(jìn)行塊非對(duì)稱(chēng)性的相應(yīng)調(diào)整。例如,如果參考圖像緩沖器使用64字節(jié)的最小突發(fā)長(zhǎng)度,那么將簡(jiǎn)單地將宏塊中的高度或排數(shù)切成兩半,使得重新格式化后的宏塊為64X4個(gè)像素。參考圖2,在一個(gè)實(shí)施例中,可以由橋14實(shí)現(xiàn)的序列17可以是硬件、軟件或固件。在軟件實(shí)施例中,序列17可以由存儲(chǔ)在非暫時(shí)性計(jì)算機(jī)可讀介質(zhì)上的指令來(lái)實(shí)現(xiàn)。這些指令可以由適當(dāng)?shù)奶幚砥鱽?lái)執(zhí)行。例如,在軟件實(shí)施例中,存儲(chǔ)設(shè)備可以存儲(chǔ)指令。存儲(chǔ)設(shè)備可以是磁、光或半導(dǎo)體存儲(chǔ)器。因而,例如,作為一個(gè)實(shí)施例,橋14可以包括存儲(chǔ)指令的存儲(chǔ)設(shè)備以及執(zhí)行這些指令的處理器。在另一實(shí)施例中,該序列可以實(shí)現(xiàn)成編碼器12的一部分。圖2中所示的序列17初始確定(方塊18)所涉及的編碼類(lèi)型。橋14通常已經(jīng)知道編碼器12所處的模式。在一個(gè)實(shí)施例中,如果編碼需要參考圖像,如菱形20中所確定的,那么將參考圖像作為第一類(lèi)型的32X8大小的宏塊存儲(chǔ)在緩沖器14中(方塊22)。在這種情況中,重新格式化僅僅涉及一次組合來(lái)自16X16大小的宏塊的兩個(gè)行,以形成32X8大小的宏塊的每個(gè)行。否則,如果菱形20處的檢查失敗了,那么菱形24處的檢查確定系統(tǒng)是否正在使用圖像自適應(yīng)幀場(chǎng)編碼。如果是,則以第二類(lèi)型的格式以32X8大小來(lái)處理宏塊,如方塊26中所指示的。在圖像自適應(yīng)幀場(chǎng)編碼中,幀可以被漸進(jìn)地寫(xiě)入,以及交錯(cuò)地讀回,以作為頂場(chǎng)或底場(chǎng)。幀也可以被交錯(cuò)地寫(xiě)入,以及被漸進(jìn)地讀回。在另一實(shí)施例中,還可以針對(duì)宏塊自適應(yīng)幀場(chǎng)(MBAFF)編碼進(jìn)行28處的檢查。在這種情況中,在一些實(shí)施例中,可以針對(duì)這種類(lèi)型的編碼來(lái)優(yōu)化非對(duì)稱(chēng)宏塊,如方塊30中所指示的。因而,參考圖3,描繪了第一類(lèi)型的參考?jí)K格式。其具有從0到31或者32字節(jié)的長(zhǎng)度以及8行的深度。符號(hào)“In”與漸進(jìn)的宏塊行號(hào)相對(duì)應(yīng)。因而,圖3示出了總共十六個(gè)宏塊中的第一組五個(gè)宏塊中的每個(gè)32X8大小的宏塊內(nèi)的行的布置。其余的宏塊簡(jiǎn)單地重復(fù)所描繪的序列。
對(duì)于圖像自適應(yīng)幀場(chǎng)編碼訪問(wèn)(也稱(chēng)為圖像級(jí)幀/場(chǎng)編碼)而言,可以使用圖4中所示的格式。Tn是指行η處的頂場(chǎng)(其包括幀在宏塊中的奇數(shù)行),并且Bn是指行η處的底場(chǎng)(其包括宏塊的偶數(shù)行)。如圖4中所示的,在一個(gè)實(shí)施例中,針對(duì)圖像自適應(yīng)幀場(chǎng)編碼,將頂場(chǎng)和底場(chǎng)的行重新映射到32X8大小的宏塊的格式上,以?xún)?yōu)化帶寬效率。第一行包括來(lái)自16X 16大小的宏塊的兩個(gè)偶數(shù)行(L2和L0)。第二行包括來(lái)自16X16大小的宏塊的兩個(gè)奇數(shù)行(L3和LI)。因而,奇數(shù)行組成頂場(chǎng),并且偶數(shù)行組成底場(chǎng)。在圖像自適應(yīng)幀場(chǎng)編碼中,視頻編碼器12可以逐幀(漸進(jìn)地)或逐場(chǎng)(用于交錯(cuò)的圖像)進(jìn)行讀取。如果對(duì)參考圖像中的32X8大小的宏塊進(jìn)行參考以進(jìn)行基于場(chǎng)的編碼,那么編碼器獲取第一、第三、第五和第七行來(lái)進(jìn)行頂場(chǎng)編碼,并且單獨(dú)地獲取第二、第四、第六和第八行來(lái)進(jìn)行底場(chǎng)編碼。如果對(duì)參考圖像中的32X8大小的宏塊進(jìn)行參考以進(jìn)行基于幀的編碼,那么在基于場(chǎng)和基于幀的編碼的例子中,編碼器獲取第一、第二、第三和第八行。在一個(gè)實(shí)施例中,編碼器使用32X8大小的宏塊的行的全部,從而在一些實(shí)施例中優(yōu)化帶寬。在一些實(shí)施例中,來(lái)自32X8大小的宏塊的每個(gè)行的32字節(jié)可以組成連續(xù)的場(chǎng)行。使用連續(xù)的場(chǎng)行確保了針對(duì)所有32字節(jié)的突發(fā)的場(chǎng)編碼來(lái)自相同的場(chǎng),頂場(chǎng)或底場(chǎng)。在PAFF中,如果從緩沖器15中漸進(jìn)地讀出宏塊,那么讀出的行將是亂序的。在一個(gè)實(shí)施例中,橋14負(fù)責(zé)對(duì)行進(jìn)行重新排序,使得編碼器12注意不到重新格式化。貫穿本說(shuō)明書(shū)提及“一個(gè)實(shí)施例”或“實(shí)施例”是指結(jié)合該實(shí)施例描述的特定特征、結(jié)構(gòu)或特性包括在涵蓋于本發(fā)明內(nèi)的至少一個(gè)實(shí)現(xiàn)中。因而,短語(yǔ)“一個(gè)實(shí)施例”或“在實(shí)施例中”的出現(xiàn)未必是指同一實(shí)施例。此外,除了所示的特定實(shí)施例以外,可以以其它適當(dāng)?shù)男问絹?lái)實(shí)現(xiàn)所述特定特征、結(jié)構(gòu)或特性,并且所有這樣的形式都可以涵蓋在本申請(qǐng)的權(quán)利要求內(nèi)。雖然上面討論了 32X8大小的宏塊,但是通常,可以以相同的方式來(lái)處理亮度宏塊、色度宏塊的大小。一般地,色度宏塊是32X4大小的宏塊,這是因?yàn)榇嬖诘牧炼葦?shù)據(jù)是色度數(shù)據(jù)的兩倍。因而,本發(fā)明應(yīng)用于亮度宏塊和色度宏塊。雖然已經(jīng)關(guān)于有限數(shù)量的實(shí)施例描述了本發(fā)明,但是本領(lǐng)域技術(shù)人員將理解從其而來(lái)的多種修改和變形。所附權(quán)利要求旨在涵蓋落入本發(fā)明真實(shí)精神和范圍內(nèi)的所有這些修改和變形。
權(quán)利要求
1.一種方法,包括: 針對(duì)從視頻編碼器到最小突發(fā)長(zhǎng)度大于16個(gè)字節(jié)的緩沖器的每個(gè)請(qǐng)求,僅使一個(gè)宏塊突發(fā)。
2.如權(quán)利要求1所述的方法,還包括: 從所述緩沖器向所述視頻編碼器提供數(shù)據(jù)的宏塊,所述宏塊的大小被調(diào)整以與所述緩沖器的最小突發(fā)長(zhǎng)度相匹配;以及 僅從所述緩沖器供應(yīng)能夠被所述視頻編碼器充分使用的數(shù)據(jù)。
3.如權(quán)利要求1所述的方法,包括:提供32字節(jié)寬X8行的宏塊的突發(fā)傳輸。
4.如權(quán)利要求1所述的方法,包括:將DDR3靜態(tài)動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器用作所述緩沖器。
5.如權(quán)利要求1所述的方法,包括:響應(yīng)于從所述視頻編碼器到所述緩沖器的對(duì)于參考圖像數(shù)據(jù)的請(qǐng)求,而提供大小被非對(duì)稱(chēng)地調(diào)整的宏塊。
6.如權(quán)利要求1所述的方法,包括:在所述緩沖器中將頂場(chǎng)存儲(chǔ)成偶數(shù)行或奇數(shù)行中的一個(gè),并且將底場(chǎng)存儲(chǔ)成所述偶數(shù)行或所述奇數(shù)行中的另一個(gè)。
7.如權(quán)利要求2所述的方法,包括:選擇性地對(duì)宏塊進(jìn)行重新格式化,以用于圖像自適應(yīng)幀場(chǎng)編碼或非圖像自適應(yīng)幀場(chǎng)編碼。
8.如權(quán)利要求1所述的方法,包括:使用寬度至少等于與所述緩沖器的最小突發(fā)長(zhǎng)度相關(guān)聯(lián)的字節(jié)數(shù)量的宏塊。
9.一種裝置,包括: 最小突發(fā)長(zhǎng)度大于16個(gè)字節(jié)的緩沖器;以及 耦合到所述緩沖器的編碼器,用于針對(duì)每一個(gè)對(duì)所述緩沖器的請(qǐng)求,僅使一個(gè)宏塊突發(fā)。
10.如權(quán)利要求9所述的裝置,其中,所述編碼器提供32字節(jié)寬X8行的宏塊的突發(fā)傳輸。
11.如權(quán)利要求9所述的裝置,所述緩沖器用于向所述編碼器提供數(shù)據(jù)的宏塊,所述宏塊的大小與所述緩沖器的最小突發(fā)長(zhǎng)度相匹配,并且所述緩沖器用于僅供應(yīng)能夠被所述視頻編碼器充分使用的數(shù)據(jù)。
12.如權(quán)利要求9所述的裝置,其中,所述緩沖器是DDR3靜態(tài)動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器。
13.如權(quán)利要求9所述的裝置,所述編碼器用于響應(yīng)于從所述視頻編碼器到所述緩沖器的對(duì)于參考圖像數(shù)據(jù)的請(qǐng)求而提供大小被非對(duì)稱(chēng)地調(diào)整的宏塊。
14.如權(quán)利要求9所述的裝置,所述緩沖器將頂場(chǎng)存儲(chǔ)成偶數(shù)行或奇數(shù)行中的一個(gè),并且將底場(chǎng)存儲(chǔ)成偶數(shù)行或奇數(shù)行中的另一個(gè)。
15.如權(quán)利要求11所述的裝置,所述編碼器用于選擇性地對(duì)數(shù)據(jù)的宏塊進(jìn)行重新格式化,以用于圖像自適應(yīng)幀場(chǎng)編碼或非圖像非自適應(yīng)幀場(chǎng)編碼。
16.一種存儲(chǔ)指令的計(jì)算機(jī)可讀介質(zhì),所述指令被視頻編碼器執(zhí)行以: 針對(duì)從所述視頻編碼器到最小突發(fā)長(zhǎng)度大于16個(gè)字節(jié)的緩沖器的每個(gè)請(qǐng)求,僅使一個(gè)宏塊突發(fā)。
17.如權(quán)利要求16所述的介質(zhì),還存儲(chǔ)用于從所述緩沖器向所述視頻編碼器提供數(shù)據(jù)的宏塊以及僅從所述緩沖器供應(yīng)能夠被所述視頻編碼器充分使用的數(shù)據(jù)的指令,所述宏塊的大小與所述緩沖器的最小突發(fā)長(zhǎng)度相匹配。
18.如權(quán)利要求16所述的介質(zhì),還存儲(chǔ)用于響應(yīng)于從所述視頻編碼器到所述緩沖器的對(duì)于參考圖像數(shù)據(jù)的請(qǐng)求而提供大小被非對(duì)稱(chēng)地調(diào)整的宏塊的指令。
19.如權(quán)利要求16所述的介質(zhì),還存儲(chǔ)用于在緩沖器中將頂場(chǎng)存儲(chǔ)成偶數(shù)行或奇數(shù)行中的一個(gè)并且將底場(chǎng)存儲(chǔ)成偶數(shù)行或奇數(shù)行中的另一個(gè)的指令。
20.如權(quán)利要求17所述的介質(zhì),還存儲(chǔ)用于選擇性地對(duì)宏塊進(jìn)行重新格式化以用于圖像自適應(yīng)幀場(chǎng)編碼或非圖像自適應(yīng) 幀場(chǎng)編碼的指令。
全文摘要
參考圖像緩沖器可以向視頻編碼器供應(yīng)非對(duì)稱(chēng)的宏塊,以改善編碼器與緩沖器之間的帶寬。宏塊的寬度可以被調(diào)整以與緩沖器的最小突發(fā)長(zhǎng)度相匹配??梢酝ㄟ^(guò)減小宏塊的高度來(lái)使得宏塊的大小保持不變。
文檔編號(hào)H04N5/232GK103210640SQ201180054601
公開(kāi)日2013年7月17日 申請(qǐng)日期2011年9月8日 優(yōu)先權(quán)日2010年9月15日
發(fā)明者M·L·庫(kù)爾特 申請(qǐng)人:英特爾公司