亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

具有提供參考運動向量的讀取緩沖器的運動預測處理器的制作方法

文檔序號:7659129閱讀:251來源:國知局
專利名稱:具有提供參考運動向量的讀取緩沖器的運動預測處理器的制作方法
具有提供參考運動向量的讀取緩沖器的運動預測處理器
絲艦
本發(fā)明涉及逐塊地執(zhí)行視頻幀的幀間預測的設備,以及利用該設備的 視頻編碼和解碼設備。更具體而言,本發(fā)明涉及適合于這樣一種操作模式 的幀間預測處理器、視頻編碼設備和視頻解碼設備,在該操作模式中,當
前塊(current block)的運動向量是直接根據(jù)先前計算出的參考圖片中共位 塊(co-locatedblock)的運動向量來計算的。
絲絲
數(shù)字視頻壓縮技術被廣泛用于許多應用中。MPEG和IL264就是該技 術領域中的標準規(guī)范中的兩種,其中MPEG代表"運動圖片專家組"。這 些標準中使用的編碼和解碼算法將每個給定圖片劃分成小的區(qū)域,并且利 用運動補償技術來處理這些小區(qū)域。這種圖片區(qū)域被稱為"宏塊
(macroblock)"。視頻編碼過程包括幀內(nèi)預測和幀間預測。幀內(nèi)預測通 過利用正交變換、量化和其他數(shù)據(jù)壓縮算法減小了單個幀內(nèi)的冗余。另一 方面,幀間預測通過對運動補償殘余(即當前幀和經(jīng)運動補償?shù)膮⒖紟?間的差)進行提取和編碼來減小連續(xù)的幀之間的冗余。所得到的視頻數(shù)據(jù) 隨后被進行熵編碼以便傳輸或存儲。視頻解碼過程顛倒上述步驟,以根據(jù) 壓縮視頻重建原始視頻。
一些標準的編碼算法包括MPEG-2和H.264,它們自適應性地選擇基 于幀的編碼模式或基于場的編碼模式來處理交織的視頻信號。這些算法還 允許對于每兩個垂直相鄰的宏塊(或"宏塊對")在幀間預測和場間預測 之間切換以進行運動向量計算。該編碼模式被稱為"宏塊自適應場/幀"
(MBAFF)模式。使用這三種模式中的哪一種可由"編碼類型"參數(shù)逐個 圖片地指定。在本說明書中,這三種編碼模式將被稱為"FRM"(幀)、
"FLD"(場)和"MBAFF"模式。
圖33說明了對于每種不同的編碼類型要處理的宏塊的順序。圖33最 上方部分示出了編碼過程以何種順序選擇構(gòu)成一幅圖片的16x16像素宏 塊。具體而言,圖33的左上部分示出了FRM編碼類型的情況,在該種模 式中,構(gòu)成一幀的16x16個像素的宏塊被從左到右、從上到下地處理。這 意味著奇數(shù)行和偶數(shù)行被交替選擇以供處理。圖33的上方中間部分示出 了 "FLD"編碼類型的情況,在該種模式中,視頻數(shù)據(jù)作為兩個單獨的場 (即前場(top field)和后場(bottom field))被處理。編碼過程從前場 (或奇數(shù)行)開始,然后在后續(xù)的場同步時段中進行到后場(或偶數(shù) 行),如圖33的下方中間部分所示。
圖33的右上角示出了 MBAFF編碼類型的情況,其中逐宏塊對地處理 幀。場行的處理順序取決于所關注的宏塊對是要被幀間編碼還是場間編碼 的。在幀間編碼宏塊對(以下稱為"幀對")的情況下,奇數(shù)行和偶數(shù)行 被交替處理,如圖33的右下部分所示。在場間編碼宏塊對(以下稱為 "場對")的情況下,奇數(shù)行先于偶數(shù)行被處理,因為這種對的第一和第 二宏塊分別對應于前場數(shù)據(jù)和后場數(shù)據(jù)。
為了提高包含邊緣和輪廓的宏塊的運動向量預測的精度, 一些現(xiàn)有的 編碼算法將這種宏塊分割成更小的塊,并且計算每個塊的運動向量。例 如,H.264支持宏塊分區(qū),這種宏塊分區(qū)根據(jù)需要將大小為16x16像素的 基本宏塊劃分成各種塊大小,包括最小的4x4像素的子分區(qū)。
圖34A至34E示出了 H.264中定義的宏塊和子宏塊的各種大小。圖 34A所示的是大小為16x16像素的基本宏塊。在本說明書中適當時,塊的 大小以表示寬度乘高度的前綴的形式指定(例如"16x16宏塊")。
圖34A的16x16基本宏塊可被垂直分區(qū)成兩個16x8宏塊12 (圖 34B),或被水平分區(qū)成兩個8x16宏塊13 (圖34),或者在兩個方向上 被分區(qū)成四個8x8宏塊14 (圖34D)。如虛線所示,16x8宏塊12被從上 到下處理。8x16宏塊13被從左到右處理。8x8宏塊14被從左上到右上然 后從左下到右下處理。
R264還允許8x8宏塊14被劃分成更小的稱為"子宏塊"的分區(qū)。上 述大小前綴也可應用到這些子宏塊。在圖34E所示的示例中,右上的8x8宏塊被劃分成兩個8x4子宏塊,左下的8x8宏塊被劃分成兩個4x8子宏 塊,而右下的8x8宏塊被劃分成四個4x4子宏塊。假定子宏塊被按與圖 34A至34D所示的宏塊分區(qū)中相同的順序處理。
上述視頻編碼系統(tǒng)中的幀間預測過程通過逐宏塊地將當前幀與過去幀 相比較來計算運動向量。通過只對根據(jù)每個幀的宏塊圖像計算的運動向量 和根據(jù)周圍塊的宏塊圖像預測出的運動向量之間的差進行編碼,減少了被 編碼的數(shù)據(jù)的量。為了減少被編碼數(shù)據(jù)的量,H.264規(guī)范允許視頻編碼設 備選擇直接模式編碼,這種直接模式編碼僅基于先前計算出的另一幀的同 一塊的運動向量來計算當前塊的運動向量。
圖35示出了直接模式中的運動向量計算的概念。直接模式編碼可應 用到雙向編碼的圖片(B圖片)。在該模式中,直接根據(jù)參考圖片中同一 位置處的宏塊(共位宏塊或MBcol)的運動向量計算當前圖片(CurrPic) 中當前宏塊(CuitMB)的運動向量。在適當時,參考圖片可由符號 "ColPic"來指代,意思是包含共位宏塊的圖片。
在直接模式中,當前宏塊的前向和后向運動向量是根據(jù)先前針對在顯 示順序上在當前圖片之后的參考圖片中的共位塊計算的共位運動向量來得 出的。具體而言,直接模式向量計算是通過根據(jù)當前圖片和參考圖片之間 的時間距離來縮放共位向量而實現(xiàn)的。
直接模式向量計算要求計算出的運動向量被保存在存儲器中,并且之 后被讀出作為共位塊處的參考向量。但是,如上所述,圖片可能是按不同 模式編碼的,并且宏塊可能是按各種方式來分區(qū)的。因此,控制存儲器讀 取操作以讀出用于直接模式預測的運動向量將會是一個復雜的過程。具體 而言,當除了 FRM和FLD模式外還允許MBAFF模式時,對于當前宏塊 和參考宏塊都會存在大量的塊大小和塊位置樣式(pattern)。這種組合的 多樣性使得非常難以控制向量讀取操作。
在未經(jīng)實審日本專利申請公布No. 2006-166459的第0078至0092段 和圖IO中提出了一種提高MBAFF模式中運動向量預測的效率的技術。根 據(jù)該技術,所提出的設備使用上側(cè)(top-side)存儲器來存儲上方相鄰宏塊 中的下方塊群組的運動向量,并使用左側(cè)存儲器來存儲左方相鄰宏塊中的 右方塊群組的運動向量。上側(cè)存儲器提供了單獨的存儲體來存儲宏塊對的 上方部分和下方部分的運動向量。當前塊的預測運動向量是參考存儲在這 些存儲器中的運動向量來計算的。
從上文可以看出,具有所有的FRM、 FLD和MBAFF編碼類型的直接 模式的實現(xiàn)要求對參考運動向量的讀取操作進行復雜控制,從而給處理器 施加了沉重的處理負荷,并且向電路設計中引入了更高的復雜度。簡化直 接模式處理的傳統(tǒng)方法是將宏塊分區(qū)成最小大小塊(即大小為4x4像素的 塊),并且針對每一個這樣的塊存儲運動向量。即,傳統(tǒng)方法保留并實際 使用了與最小大小分區(qū)的數(shù)目相同數(shù)目的存儲器地址,而不管參考宏塊實 際是如何被分區(qū)的。所產(chǎn)生的問題是編碼和解碼過程必須應對由大量存儲 器訪問周期和運動向量計算量增加引起的沉重的處理負荷。另一個問題是 編碼過程可能會經(jīng)歷較差的視頻壓縮比,這是由于所產(chǎn)生的被編碼數(shù)據(jù)量 增加而造成的。

發(fā)明內(nèi)容
基于以上原因,本發(fā)明的一個目的是提供一種使得直接模式運動預測 能夠得到更廣泛使用并且減輕處理負荷的運動預測處理器。本發(fā)明的另一 個目的是提供使用這種運動預測處理器的視頻編碼和解碼設備。
為了實現(xiàn)上述第一目的,本發(fā)明提供了一種逐基本塊地執(zhí)行幀間運動 預測的運動預測處理器。該運動預測處理器被耦合到提供多個存儲器區(qū)域 的向量存儲器以及組織成先進先出數(shù)據(jù)存儲裝置的第一和第二緩沖器。該 運動預測處理器包括寫入控制器、讀取控制器和向量計算器等等元件。寫 入控制器將構(gòu)成參考圖片的多個塊行(block line)的運動向量寫入在與塊 行相對應的存儲器區(qū)域中,以便用在針對當前圖片的運動預測過程中,其 中每個塊行由多個水平對齊的基本塊形成。讀取控制器將存儲的運動向量 從向量存儲器的每個存儲器區(qū)域傳送到第一和第二緩沖器中的至少一個。 進行該數(shù)據(jù)傳送的方式是根據(jù)若干個參數(shù)確定的,這些參數(shù)是當前圖片 是幀圖片還是場圖片、參考圖片是幀圖片還是場圖片,以及是否指定了塊 自適應預測模式。在這里塊自適應預測模式是指允許針對每個基本塊選擇
幀預測或場預測的操作模式。向量計算器基于從第一和第二緩沖器順序地 讀出的運動向量,計算當前圖片的每個基本塊的運動向量。
另外,為了實現(xiàn)上述第二目的,本發(fā)明提供了一種通過逐基本塊地執(zhí) 行幀間運動預測來將視頻信號編碼成壓縮視頻數(shù)據(jù)的視頻編碼設備。該視 頻編碼設備包括向量存儲器、第一和第二緩沖器、寫入控制器、讀取控制 器和向量計算器等元件。向量存儲器提供多個存儲器區(qū)域。第一和第二緩 沖器被組織成先進先出數(shù)據(jù)存儲裝置。寫入控制器將構(gòu)成參考圖片的多個 塊行的運動向量寫入在與塊行相對應的存儲器區(qū)域中,以便用在針對當前 圖片的運動預測過程中,其中每個塊行由多個水平對齊的基本塊形成。讀 取控制器將存儲的運動向量從向量存儲器的每個存儲器區(qū)域傳送到第一和 第二緩沖器中的至少一個。進行該數(shù)據(jù)傳送的方式是根據(jù)若干個參數(shù)確定 的,這些參數(shù)是當前圖片是幀圖片還是場圖片、參考圖片是幀圖片還是 場圖片以及是否指定了塊自適應預測模式。在這里,塊自適應預測模式是 指允許針對每個基本塊選擇幀預測或場預測的操作模式。向量計算器基于 從第一和第二緩沖器順序地讀出的運動向量,計算當前圖片的每個基本塊 的運動向量。
此外,為了實現(xiàn)上述第二目的,本發(fā)明提供了一種根據(jù)通過逐基本塊 地執(zhí)行幀間運動預測而產(chǎn)生的壓縮視頻信號重建原始視頻圖片的視頻解碼 設備。該視頻解碼設備包括向量存儲器、第一和第二緩沖器、寫入控制 器、讀取控制器和向量計算器等元件。向量存儲器提供多個存儲器區(qū)域。 第一和第二緩沖器被組織成先進先出數(shù)據(jù)存儲裝置。寫入控制器將構(gòu)成參
考圖片的多個塊行的運動向量寫入在與塊行相對應的存儲器區(qū)域中,以便 用在針對當前圖片的運動預測過程中,其中每個塊行由多個水平對齊的基 本塊形成。讀取控制器將存儲的運動向量從向量存儲器的每個存儲器區(qū)域 傳送到第一和第二緩沖器中的至少一個。進行該數(shù)據(jù)傳送的方式是根據(jù)若 干個參數(shù)確定的,這些參數(shù)是當前圖片是幀圖片還是場圖片、參考圖片 是幀圖片還是場圖片以及是否指定了塊自適應預測模式。在這里,塊自適 應預測模式是指允許針對每個基本塊選擇幀預測或場預測的操作模式。向 量計算器基于從第一和第二緩沖器順序地讀出的運動向量,計算當前圖片的每個基本塊的運動向量。
當結(jié)合附圖理解以下描述時,可以很清楚地看出本發(fā)明的上述和其他 目的、特征和優(yōu)點,其中附圖以示例方式圖示了本發(fā)明的優(yōu)選實施例。


圖1是根據(jù)本發(fā)明一個實施例的運動預測處理器的框圖。
圖2是根據(jù)本發(fā)明一個實施例的視頻編碼設備的框圖。
圖3是根據(jù)本發(fā)明一個實施例的視頻解碼設備的框圖。
圖4是圖示用于直接模式的存儲器控制功能的框圖。
圖5是示出向量寫入控制器的示例性內(nèi)部結(jié)構(gòu)的框圖。
圖6A至6C示出參考圖片數(shù)據(jù)如何被存儲在外部存儲器中。
圖7示出讀取模式判決表。
圖8A、 8B和9A至9C示出了在幀/場類型的各種組合中當前塊和共 位塊之間的關系。
圖IOA、 IOB、 IIA、 IIB和12A至12C示出了在不同讀取模式中如
何讀取數(shù)據(jù)。
圖13說明了讀取模式0中的宏塊順序。
圖14說明了讀取模式1中的宏塊順序。
圖15說明了讀取模式2中的宏塊順序。
圖16說明了讀取模式3中的宏塊順序。
圖17說明了讀取模式4中的宏塊順序。
圖18說明了讀取模式5中的宏塊順序。
圖19說明了讀取模式6中的宏塊順序。
圖20是向量讀取控制器的框圖,重點在于其針對內(nèi)部緩沖器的讀取 控制功能。
圖21示意性地示出了數(shù)據(jù)如何被傳送到兩個內(nèi)部緩沖器。
圖22示意性地示出了數(shù)據(jù)如何被傳送到單個內(nèi)部緩沖器。
圖23A和23B示出了宏塊行的示例性塊配置,用于說明數(shù)據(jù)讀取會話。
圖24是示出相鄰宏塊行的數(shù)據(jù)如何被存儲在兩個內(nèi)部緩沖器中的定 時圖。
圖25是示出從兩個內(nèi)部緩沖器讀取數(shù)據(jù)的過程的定時圖。
圖26示出了圖片中部的切片(slice)類型的改變。
圖27A和27B示出了在切片邊界處選擇新的參考圖片的情況。
圖28示出了宏塊類型查找表。
圖29示出了針對MBColMode=0的當前宏塊類型的示例。
圖30示出了針對MBColMode=l的當前宏塊類型的示例。
圖31示出了針對MBColMode=2或3的當前宏塊類型的示例。
圖32示出了針對MBColMod"的當前宏塊類型的示例。
圖33說明了對于每種不同編碼類型將要處理的宏塊的順序。
圖34A至34E示出了 H.264中定義的宏塊和子宏塊的各種大小。
圖35示出了直接模式中的運動向量計算的概念。
現(xiàn)在將參考附圖詳細描述本發(fā)明的優(yōu)選實施例,在所有附圖中,類似 的標號指代類似的元素。本說明書開始于對本發(fā)明的概述,然后描述本發(fā) 明的更具體的實施例。在本文的其余部分,塊(即圖片分區(qū))的大小和形 狀以NxM的形式指示,其中N和M分別表示寬度和髙度。例如,術語 "16x8塊"表示寬為16像素并且髙為8像素的塊。
圖1是根據(jù)本發(fā)明一個實施例的運動預測處理器的框圖。圖示的運動 預測處理器1提供了幀間運動估計功能,以用于以壓縮形式對視頻信號進 行編碼的編碼設備中,以及根據(jù)編碼的信號再現(xiàn)原始視頻信號的視頻解碼 設備中。運動預測處理器1將視頻幀劃分成固定大小的基本塊,例如 16x16塊,以逐塊地執(zhí)行運動估計。
運動預測處理器1被用于直接根據(jù)所選參考圖片的運動向量計算當前 圖片的每個塊的運動向量。該計算被稱為直接模式預測。根據(jù)本實施例, 運動預測處理器1包括寫入控制器2、讀取控制器3和向量計算器4,以 實現(xiàn)該目的。運動預測處理器1還使用了向量存儲器10以及兩個緩沖器11和12來進行直接模式處理。向量存儲器10被劃分成多個存儲器區(qū)域 10-1、 10-2、 10-3等等,每個區(qū)域允許順序?qū)ぶ芬赃M行讀取訪問和寫入訪 問。緩沖器11和12充當先進先出(FIFO)數(shù)據(jù)存儲裝置。向量存儲器IO 以及緩沖器11和12可實現(xiàn)為運動預測處理器1的集成部分,或者實現(xiàn)為 單獨的組件。
寫入控制器2將構(gòu)成參考圖片20的多個塊行20-l、 20-2、 20-3等等的 運動向量寫入相應的存儲器區(qū)域10-1、 10-2、 10-3等等中,以便用于后續(xù) 的針對當前圖片的運動預測過程中。參考圖片20的每個塊行由多個水平 對齊的基本塊形成。寫入控制器2逐塊行地寫入?yún)⒖歼\動向量。
讀取控制器3將存儲的運動向量從每個存儲器區(qū)域10-1、 10-2、 10-3 等等傳送到兩個緩沖器11和12。此時,讀取控制器3根據(jù)以下條件確定 存儲器區(qū)域10-1、 10-2、 10-3等等中的數(shù)據(jù)應當如何被傳送到緩沖器11 和12:當前圖片是幀圖片還是場圖片,參考圖片20是幀圖片還是場圖 片,塊自適應預測模式是否被使用。在這里,術語"塊自適應預測模式" 是指允許為每個基本塊選擇幀預測或場預測的操作模式,就像H.264的 MBAFF模式中那樣。
利用從每個緩沖器11和12順序讀出的運動向量,向量計算器4預測 當前圖片的每個基本塊的運動向量,從而執(zhí)行直接模式運動向量計算。
在直接模式和塊自適應預測模式被組合的情況下,讀取控制器3必須 應對大量樣式的圖片類型和條件。為了簡化控制,傳統(tǒng)方法將參考圖片的 塊劃分成具有最小大小(例如4x4)的子塊,并且將這些子塊的每一個實 例的運動向量存儲在存儲器中。這意味著存儲器存儲的運動向量比原本針 對參考圖片20計算的要多,從而導致針對直接模式計算的存儲器訪問周 期數(shù)目增大。
另一方面,根據(jù)所提出的運動預測處理器l,向量存儲器10只存儲原 本針對參考圖片20計算的那么多的運動向量,而無需為了適應于最小大 小的塊而對它們進行相乘。另外,對向量存儲器10的讀取和寫入操作是 逐塊行地執(zhí)行的。艮卩,與不同的塊行20-1、 20-2、 20-3等等相對應的運動 向量被存儲在單獨的存儲器區(qū)域10-1、 10-2、 10-3等等中,從而使得能夠
利用順序?qū)ぶ吩趩未未鎯ζ髟L問會話中讀取或?qū)懭胨璧淖钌倭康倪\動向
量。從而,本實施例使對向量存儲器10的訪問周期的數(shù)目達到最低限
度,進而減輕了直接模式計算的處理負荷。這還導致處理速度的增大和功 耗的下降。
讀取控制器3根據(jù)當前圖片和參考圖片20的編碼模式(即它們是幀 圖片還是場圖片)以及塊自適應預測模式的使用,控制向量存儲器10的 存儲器讀取周期,以將運動向量從每個存儲器區(qū)域10-1、 10-2、 10-3等等 傳送到兩個緩沖器11和12。讀取控制器3的這種機制根據(jù)圖片和塊的各 種編碼條件,確保了向量計算器4按所需順序從緩沖器11和12接收所需 的運動向量。即,向量計算器4可通過簡單地從緩沖器ll和12讀出向量 數(shù)據(jù)序列來獲得所需的基本塊位置的運動向量,從而利用最少量的讀取操 作執(zhí)行向量計算。
讀取控制器3可根據(jù)上述圖片條件使用一些預定義的表來控制從每個 存儲器區(qū)域10-1、 10-2、 10-3等等到緩沖器11和12的數(shù)據(jù)傳送操作。這 種基于表的實現(xiàn)方式簡化了對存儲器讀取操作的控制。
根據(jù)本發(fā)明的上述實施例的運動預測處理器1使得能夠擴展直接模式 運動預測的應用,而不會增大處理負荷。本實施例利用合理量的計算執(zhí)行 直接模式預測,尤其是在參考圖片20和當前圖片具有不同的幀/場編碼類 型的情況下或者在對兩幅圖片中的至少一個指定了塊自適應預測模式的情 況下更是如此。
視頻編碼設備
這一部分和隨后的部分將討論H.264視頻編碼和解碼設備,作為本發(fā) 明的更具體實施例。IL264標準提供了以下宏塊大小選項16x16、 16x8、 8x16和8x8。如果選擇8x8模式,則四個8x8宏塊分區(qū)中的每一個可被分 割成具有以下大小的更小的塊8x8、 8x4、 4x8和4x4 (被稱為宏塊子分 區(qū))。基線編碼(baseline coding)算法逐宏塊地對每個給定的源幀進行編 碼,在利用幀內(nèi)的空間冗余的幀內(nèi)編碼和利用連續(xù)的幀之間的時間冗余的 幀間編碼之間切換。視頻解碼過程顛倒上述步驟,以根據(jù)壓縮視頻重建原 始視頻。
圖2是根據(jù)本發(fā)明一個實施例的視頻編碼設備的框圖。圖示的視頻編 碼設備100包括以下元件宏塊劃分器101、運動向量估計器102、過去 幀緩沖器103、幀間預測器104、幀內(nèi)預測器105、當前幀緩沖器106、預 測模式選擇器107、減法器108、正交變換和量化單元109、熵編碼器 110、解量化和逆正交變換單元111、加法器112、解塊濾波器113和幀緩 沖器管理器114。
宏塊劃分器101將給定的源圖片劃分成預定大小的宏塊。運動向量估 計器102將源宏塊的視頻信號分量與存儲在過去幀緩沖器103中的參考宏 塊的視頻信號分量相比較,從而計算該源宏塊的運動向量。由于相鄰塊的 運動向量經(jīng)常是彼此非常相關的,因此特定塊的運動向量可以根據(jù)其周圍 塊的向量來預測。從而,幀間預測器104根據(jù)這種周圍運動向量計算運動 向量預測值(MVP),然后通過從由運動向量估計器102計算出的真實運 動向量中減去MVP來計算運動向量差(MVD)。另一方面,幀內(nèi)預測器 105對存儲在當前幀緩沖器106中的幀執(zhí)行幀內(nèi)編碼。
預測模式選擇器107例如通過將幀間預測器104的預測誤差與幀內(nèi)預 測器105的預測誤差相比較,來選擇使當前宏塊的編碼效率達到最大的編 碼模式。預測模式選擇器107創(chuàng)建編碼模式參數(shù)以指示選擇結(jié)果。編碼模 式參數(shù)被傳遞到熵編碼器110,作為要被熵編碼的數(shù)據(jù)的一部分。編碼模 式參數(shù)包括宏塊分區(qū)的大小和子宏塊分區(qū)的大小。
當選擇幀內(nèi)模式時,經(jīng)劃分的源宏塊被從宏塊劃分器101按原樣提供 到正交變換和量化單元109。這些宏塊被進行正交變換和量化,并且所得 到的變換系數(shù)被傳遞到熵編碼器110以便進行熵編碼和傳輸。變換系數(shù)還 被解量化和逆正交變換單元111解碼并被發(fā)送到當前幀緩沖器106。
當選擇幀間模式時,幀間預測器104向熵編碼器110提供MVD以用 于熵編碼。此夕卜,幀間預測器104產(chǎn)生利用MVP和過去幀緩沖器103中 的圖片數(shù)據(jù)預測的圖片,并通過預測模式選擇器107將其發(fā)送到減法器 108。減法器108逐宏塊地從源圖片中減去預測的圖片,并將結(jié)果發(fā)送到 正交變換和量化單元109。經(jīng)量化的輸出數(shù)據(jù)被解量化和逆正交變換單元 111在本地解碼,并被引導到加法器112,在這里與通過預測模式選擇器 107提供的預測圖片相加。所得到的圖片被寫入到當前幀緩沖器106中。
熵編碼器110利用熵編碼算法對給定的數(shù)據(jù)進行編碼,從而輸出以壓 縮形式攜帶視頻數(shù)據(jù)的經(jīng)編碼視頻信號。存儲在當前幀緩沖器106中的參 考圖片經(jīng)過解塊濾波器113,以平滑宏塊之間的邊緣區(qū)域。所得到的圖片 通過幀緩沖器管理器114被輸入到過去幀緩沖器103。
視頻解碼設備
圖3是根據(jù)本發(fā)明一個實施例的視頻解碼設備的框圖。圖示的視頻解 碼設備200由以下元件形成熵解碼器201、解量化和逆正交變換單元 202、加法器203、當前幀緩沖器204、幀內(nèi)預測器205、預測模式選擇器 206、解塊濾波器207、幀緩沖器管理器208、過去幀緩沖器209和幀間預 測器210。利用這些元件,視頻解碼設備200對由圖2的視頻編碼設備 IOO產(chǎn)生的經(jīng)編碼的視頻信號進行解碼。
給定的經(jīng)編碼視頻信號被熵解碼器201進行熵解碼,然后被解量化和 逆正交變換單元202進行解量化和反變換。該解碼過程的結(jié)果包括編碼模 式參數(shù)等等,并且在幀間編碼的情況下還包括MVD形式的運動向量數(shù) 據(jù)?;诮?jīng)解碼的編碼模式參數(shù),預測模式選擇器206選擇幀內(nèi)預測器 205或幀間預測器210。
當選擇幀內(nèi)預測器20 時,由解量化和逆正交變換單元202重建的圖 片幀被發(fā)送到當前幀緩沖器204。當選擇幀間預測器210時,幀間預測器 210通過將MVD和MVP相加來再現(xiàn)原始運動向量。利用所得到的運動向 量,幀間預測器210再現(xiàn)預測圖片并通過預測模式選擇器206將其提供到 加法器203。在解量化和逆正交變換單元202處解碼的預測誤差隨后被與 該預測圖片相加。所得到的經(jīng)解碼圖片被輸入到當前幀緩沖器204。除了 作為經(jīng)解碼的視頻信號輸出之外,當前幀緩沖器204中的該圖片數(shù)據(jù)還通 過解塊濾波器207和幀緩沖器管理器208被傳送到過去幀緩沖器209之 一,在這里解塊濾波器207平滑宏塊邊界。
本發(fā)明尤其涉及直接模式中B圖片的編碼和解碼,其中當前塊的運動 向量是直接根據(jù)參考圖片中其共位塊的運動向量計算出的。具體而言,當 視頻編碼設備100在直接模式中工作時,幀間預測器104通過參考在顯示
順序上緊接著的后一個參考圖片的同一塊,來計算當前所選塊的運動向
量。幀間預測器104按與圖片之間的時間距離成比例的方式插入該塊的運 動向量,從而產(chǎn)生在兩個方向上當前塊的預測運動向量。如果這些預測的 向量相對于由運動向量估計器102計算的向量具有足夠高的精度,則視頻 編碼設備100產(chǎn)生指示直接模式被用于該圖片的代碼,而不是對運動向量 差進行編碼,從而減少了經(jīng)編碼數(shù)據(jù)的量。當視頻解碼設備200在直接模 式中對B圖片進行解碼時,幀間預測器210基于同一算法,根據(jù)參考圖片 中其共位塊的運動向量再現(xiàn)當前塊的運動向量。
用于直接模式編碼的存儲器控制
直接模式向量計算要求計算出的運動向量被存儲在存儲器中并在之后 被讀出作為共位塊的參考向量。這意味著視頻編碼設備100中的幀間預測 器104以及視頻解碼設備200中的幀間預測器210必須具有運動向量存儲 器和用于該存儲器的讀取/寫入控制器。
本部分將說明用于直接模式編碼的存儲器控制功能。本實施例允許每 幅圖片在FRM、 FLD或MBAFF模式中被編碼。由于對于當前圖片和參考 圖片可能存在編碼模式和塊分區(qū)的多種組合,因此對于傳統(tǒng)的編碼器和解 碼器來說,要控制用于在直接模式中讀出運動向量的頻繁的存儲器訪問操 作,是一個很復雜的過程。相反,本實施例只將所需的最少量的運動向量 存儲在存儲器中,從而避免了頻繁的存儲器訪問。本實施例還通過使用兩 個內(nèi)部緩沖器以及用于從編碼模式和塊分區(qū)的組合中查找存儲器地址的 表,從而簡化了存儲器訪問控制。
圖4是圖示用于直接模式的存儲器控制功能的框圖。雖然以下描述假 定這些功能是作為上述視頻解碼設備200 (圖3)中的幀間預測器210的 一部分實現(xiàn)的,但它們也可應用到視頻編碼設備100 (圖2)的幀間預測 器104。
如圖4所示,幀間預測器210具有用于運動向量計算的運動向量計算 器310和作為直接模式中運動向量的臨時存儲裝置的外部存儲器320。為 了實現(xiàn)前述存儲器控制功能,幀間預測器210包括向量寫入控制器330、 第一和第二內(nèi)部緩沖器341和342、向量讀取控制器350以及分區(qū)大小管
理器360。這里假定外部存儲器320被實現(xiàn)為與幀間預測器210 (或視頻 解碼設備200)分開的單獨的電路。該外部存儲器320還可與一些其他功 能塊共享。
運動向量計算器310計算用于運動補償編碼的運動向量,其主要功能 是根據(jù)從給定壓縮視頻流解碼的運動向量差來再現(xiàn)原始運動向量。該運動 向量計算器310包括直接運動向量計算器311,用于基于從外部存儲器 320讀出的參考圖片的共位運動向量計算當前圖片的運動向量。當對非直 接模式塊進行解碼時,幀間預測器210使用運動向量差來再現(xiàn)用于運動補 償?shù)南蛄?。當對直接模式塊進行解碼時,幀間預測器210使用直接運動向 量計算器311的輸出來執(zhí)行運動補償。為了供以后參考,該補償中使用的 運動向量在向量寫入控制器330的控制下被保存在外部存儲器320中。
圖4的配置也可被應用到視頻編碼設備100,如上所述。在這種情況 下,運動向量計算器310為向量寫入控制器330提供在運動向量估計器 102處針對非直接模式塊計算的運動向量。對于直接模式塊,在直接運動 向量計算器311處計算的運動向量被提供給向量寫入控制器330。
外部存儲器320是具有足以存儲至少一幀的參考運動向量的容量的先 進先出(FIFO)存儲器。外部存儲器320例如可利用同步動態(tài)隨機訪問存 儲器(SDRAM)設備來實現(xiàn)。如后面更詳細描述的,其存儲空間被劃分 成多個(N個)存儲器區(qū)域320-1至320-N (NS),其中N表示宏塊行 (即水平對齊的大小為16x16像素的基本宏塊)的數(shù)目。這些存儲器區(qū)域 320-1至320-N具有相等的容量。
向量寫入控制器330控制對外部存儲器320的寫入操作,以存儲從運 動向量計算器310提供的作為參考向量的運動向量。如后面將描述的,向 量寫入控制器330被設計為選擇外部存儲器320的適當?shù)拇鎯ζ骺臻g,以 使得存儲的向量可以與當前圖片和參考圖片的各種編碼類型組合相適應地 被很容易地取得作為參考向量。
向量寫入控制器330包括偏移量生成器331,用于為外部存儲器320 提供寫入地址偏移量。該偏移量生成器331通過檢査給定的當前圖片的 MBAFF和FIELDFLG標志來識別其編碼類型。MBAFF標志指示當前圖片
是否是在MBAFF模式中編碼的,而FIELDFLG指示當前圖片是否是在場 模式中編碼的。另外,當場模式被選擇用于當前宏塊時,偏移量生成器 331測試給定的BOTTOMFLG標志,以確定其場類型(即其是前場還是后 場)。偏移量生成器331還測試給定的參數(shù)MBPOSY以確定當前宏塊
(這里假定它是16x16基本宏塊)的垂直位置。基于這些測試的結(jié)果,偏 移量生成器331產(chǎn)生偏移量,偏移量被向量寫入控制器330用來在寫入運 動向量時確定存儲器區(qū)域的前列地址(top address)。在這種向量寫入過 程中,向量寫入控制器330向外部存儲器320輸出運動向量作為寫入數(shù)據(jù)
(WDT),生成寫入地址(WAD)并斷言寫入使能(WEN)信號。
第一和第二內(nèi)部緩沖器341和342是FIFO存儲器,其在向量讀取控 制器350的控制之下,在從外部存儲器320讀出的運動向量被傳送到向量 讀取控制器350之前,充當其臨時存儲裝置。
向量讀取控制器350和分區(qū)大小管理器360共享偏移量生成器370, 該偏移量生成器370在每次當前圖片的MBPOSY參數(shù)改變時產(chǎn)生讀取地 址的新的偏移量,使得外部存儲器320的適當?shù)拇鎯ζ鲄^(qū)域320-1至320-N將會被選擇。與向量讀取控制器350和分區(qū)大小管理器360相耦合的還 有讀取模式判決表381和宏塊類型査找表382。在從外部存儲器320讀出 運動向量時,它們使用讀取模式判決表381來根據(jù)當前圖片和參考圖片的 編碼類型的組合確定適當?shù)淖x取模式。宏塊類型查找表382被用于根據(jù)以 上確定的讀取模式以及共位宏塊的宏塊類型選擇當前宏塊的適當宏塊類 型。術語"宏塊類型"是指所關注的基本宏塊被分區(qū)或者將被分區(qū)的方 式。
向量讀取控制器350利用當前圖片以及參考圖片的編碼類型(由 MBAFF、 FIELDFLG和BOTTOMFLG指定)和幀/場類型咨詢讀取模式判 決表381,從外部存儲器320讀出運動向量。向量讀取控制器350通過第 一和第二內(nèi)部緩沖器341和342將這些運動向量傳送到分區(qū)大小管理器 360。讀取模式判決表381指定如何將從外部存儲器320讀出的運動向量 引導到第一和第二內(nèi)部緩沖器341和342,從而確保運動向量計算器310 以適當?shù)捻樞蚪邮盏奖匾膮⒖歼\動向量,以便計算當前宏塊內(nèi)每個塊處的運動向量。
分區(qū)大小管理器360的任務是選擇從向量讀取控制器350提供來的運 動向量應當被應用到的當前圖片的適當宏塊類型。分區(qū)大小管理器360通 過利用參考圖片中共位宏塊的宏塊類型來咨詢宏塊類型査找表382,從而 完成此任務。這樣,分區(qū)大小管理器360合并當前宏塊的一些分區(qū),從而 減少要經(jīng)過直接運動向量計算器311的塊的數(shù)目及其相應運動向量的數(shù) 目。在視頻編碼的上下文中,這也意味著要編碼的運動向量的數(shù)目的減 少。
外部存儲器寫入操作
下面將更詳細描述上述存儲器控制功能。先說明運動向量如何被寫入 外部存儲器320中。圖5是示出向量寫入控制器330的示例性內(nèi)部結(jié)構(gòu)的 框圖。可以看出,向量寫入控制器330包括偏移量生成器331、寫入地址 生成器332和寫入數(shù)據(jù)生成器333 。
寫入地址生成器332產(chǎn)生寫入地址WAD,該寫入地址WAD用于將 從運動向量計算器310提供來的寫入運動向量MV以及每個宏塊的頭部信 息寫入到外部存儲器320中。這種寫入操作對于每個宏塊行發(fā)生,該宏塊 行的前列地址由偏移量生成器331提供的偏移量值確定。寫入數(shù)據(jù)生成器 333根據(jù)在運動向量計算器310產(chǎn)生運動向量MV時已識別的關于宏塊的 分區(qū)大小信息編譯頭部信息。寫入數(shù)據(jù)生成器333向外部存儲器320提供 寫入數(shù)據(jù)WDT,其中包括這些運動向量和它們相應的頭部信息。
利用上述元件,向量寫入控制器330將參考圖片的運動向量MV寫入 在外部存儲器320中。圖6A至6B示出參考圖片數(shù)據(jù)如何被存儲在外部存 儲器320中,其中"MB_POS"表示圖片內(nèi)的16x16基本宏塊的水平位置 和垂直位置。"LINE_SIZE"表示外部存儲器320中分配的與每個宏塊行 相對應的單個存儲器區(qū)域320-1至320-N的容量。
當FRM被指定為當前編碼類型時,每個宏塊行的運動向量被假設為 被順序輸入到其相應的存儲器區(qū)域320-1至320-N。在FLD類型的情況 下,前場宏塊行的運動向量首先進入奇數(shù)存儲器區(qū)域320-1至320-N,然 后后場宏塊行的運動向量被引導到偶數(shù)存儲器區(qū)域。該過程對于每一宏塊
行重復。結(jié)果,外部存儲器320中的存儲器區(qū)域320-1至320-N被交替填 充以前場宏塊行的運動向量和后場宏塊行的運動向量。這意味著圖片的數(shù) 據(jù)結(jié)構(gòu)最終被從場模式轉(zhuǎn)換成幀模式。
在MBAFF類型的情況下,給定的圖片是逐宏塊對地處理的,即編碼 器將每對垂直相鄰的基本宏塊作為單個單元來處理。因此,外部存儲器 320應當被劃分成大小為(LINE_SIZE x 2)的更大的分區(qū)。具體而言,每 兩個連續(xù)的存儲器區(qū)域320-1至320-N被指派給宏塊對的水平行(稱為 "宏塊對行")。外部存儲器320按處理順序存儲這種宏塊對行的運動向
獨立于上述圖片編碼類型,每個宏塊可按不同方式被分區(qū)成多個塊。 因此,每個存儲器區(qū)域320-1至320-N (或者在MBAFF模式情況下每兩 個存儲器區(qū)域)可包含不同量的數(shù)據(jù)。存儲器區(qū)域320-1至320-N實際上 可存儲比它們能容納的量更少量的運動向量。在FRAM或FIELD編碼模 式中,向量寫入控制器330利用不同宏塊行的運動向量,從前列地址開始 填充每個存儲器區(qū)域,而將剩余空間留空。同樣,在MBAFF編碼模式 中,向量寫入控制器330利用不同的宏塊對行的運動向量,從前列地址開 始填充每個存儲器區(qū)域,而將剩余空間留空。
通過以上述方式存儲參考運動向量,本實施例消除了將參考圖片中的 每個基本宏塊轉(zhuǎn)換成4x4子宏塊并寫入與子宏塊數(shù)目相同數(shù)目的運動向量 的需要。由于存儲器在大多數(shù)情況下只需要容納較少的向量,因此本實施 例減少了用于運動向量存儲和取得的存儲器寫入訪問以及后續(xù)的存儲器讀 取訪問(通過向量讀取控制器350),從而提高了處理速度。
外部存儲器讀取操作
圖7示出讀取模式判決表381。圖示的讀取模式判決表381是由以下 用于其主要目的的數(shù)據(jù)字段形成的"當前圖片類型"、"參考圖片類 型"和"讀取模式"。圖7的讀取模式判決表381還提供了用于說明目的 的"內(nèi)部緩沖器"和"MBColMODE"字段(后面描述)。
具體而言,當前圖片類型字段包含當前圖片的編碼類型和幀/場類型。 參考圖片類型字段包含參考圖片的編碼類型和幀/場類型。對于當前圖片和
參考圖片的編碼類型和幀/場類型的每種特定組合,定義了 0至6范圍內(nèi)的 讀取模式值。為了避免可能的混淆,圖7和后面的圖使用了小寫字母 "fim"和"fld"來分別表示幀宏塊和場宏塊,與之相對照的是大寫字母 "FRM"和"FLD"表示圖片編碼類型。
向量讀取控制器350利用當前圖片和參考圖片的指定編碼類型和幀/場 類型來咨詢讀取模式判決表381,從而獲得相應的讀取模式。該讀取模式 告訴向量讀取控制器350如何從外部存儲器320讀出運動向量以及如何將 它們發(fā)送到第一和第二內(nèi)部緩沖器341和342。
為了提供額外的信息,圖7的讀取模式判決表381給出了 "內(nèi)部緩沖 器"字段來指示每種讀取模式中要使用的內(nèi)部緩沖器的數(shù)目。字段值 "1"意味著只有第一內(nèi)部緩沖器341被使用,而值"2"表示第一和第二 內(nèi)部緩沖器341和342都將被使用。圖7的讀取模式判決表381中還包括 "MBColMode"字段,它表明根據(jù)當前宏塊和共位宏塊的編碼類型和幀/ 場類型的組合確定的模式。
注意H.264不包括MBAFF當前圖片和FRM參考圖片的組合。因此, 讀取模式判決表381不具有針對該特定組合的條目。
現(xiàn)參考圖8A-8B和9A-9C,將描述由MBColMode值0至4分類的當 前宏塊和共位宏塊之間的關系。然后給出每種模式中的讀取序列的更具體 示例。
圖8A、 8B和9A至9C示出了在其幀/場類型的各種組合中當前宏塊
和參考宏塊的塊之間的關系。
在MBColMode=0 (圖8A)中,當前宏塊(CuitMB)和共位宏塊 (MBCol)都是幀編碼的圖片中的幀宏塊。在這種情況下,對于當前宏塊 和共位塊,最小塊大小都是4x4像素。當前宏塊中的每個這種塊的運動向 量可根據(jù)共位宏塊內(nèi)的共位運動向量直接得出。該直接計算過程只要求這 些塊的參考運動向量按它們被處理的順序取得。注意,對圖8A-8B和9A-9C中的當前宏塊和共位宏塊的每個塊賦予了一個塊號。這表明這些當前塊 的運動向量是根據(jù)具有相應號碼的共位塊計算的。
在MBColMode=l的情況下(圖8B),當前宏塊和共位宏塊都是MBAFF圖片中的幀宏塊或者FRM或MBAFF圖片中的場宏塊。圖8B示 出了這種情況下的最小塊大小對于共位宏塊是4x4,而對于當前宏塊是 8x8。因此,在計算當前塊501至504的直接模式運動向量時,只參考共 位宏塊的四個子宏塊505至508。
在MBColMode2 (圖9A)或者MBColMode=3 (圖9B)的情況下, 當前宏塊是FRM或MBAFF圖片中的幀宏塊,而共位宏塊是FLD圖片中 的場宏塊。注意,當處理當前宏塊的奇數(shù)行時應用MBColMode=2,而當 處理其偶數(shù)行時應用MBColMode=3。在這些情況下,最小塊大小對于共 位宏塊是4x4,而對于當前宏塊是8x8。
更具體而言,在MBColMode=2的情況下(圖9A),在計算當前塊 511至514的直接模式運動向量時,參考了共位宏塊中的四個子宏塊515 至518。另一方面,在MBColMode=3的情況下(圖9B),在計算當前 8x8塊521至524的直接模式運動向量時,參考了共位宏塊中的四個子宏 塊525至528。從而,對于當前宏塊的奇數(shù)行和偶數(shù)行的個別向量計算, 編碼類型的上述組合要求讀出相同的共位宏塊數(shù)據(jù)。
對于所有其他情況應用MBColMode=4。但是,圖9C只示出了當前宏 塊是場宏塊而共位宏塊是幀宏塊的情況。在這種情況下,當前宏塊的運動 估計必須參考兩個垂直對齊的共位宏塊以便進行前場預測和后場預測。當 前宏塊被分區(qū)成四個宏塊531至534。從圖9C可以看出,宏塊531和532 的運動向量分別是根據(jù)上方共位宏塊的子宏塊535和536直接得出的。同 樣地,宏塊533和534的運動向量分別是根據(jù)下方共位宏塊的子宏塊537 和538直接得出的。
圖IOA、 IOB、 IIA、 IIB和12A至12C示出了在每種不同讀取模式 中如何讀出數(shù)據(jù),其中圈中的數(shù)字表示讀取數(shù)據(jù)的順序。另外,圖13至 19示出了每種不同的讀取模式中的宏塊順序。圖13至19各自是由三部分 形成的。最上方部分示出了在外部存儲器320中寫入共位宏塊的順序。中 間部分示出了從外部存儲器320讀取共位宏塊的順序,其中假定了某種特 定的讀取模式。最下方部分示出了當前宏塊中直接模式處理的順序。順序 由虛線指示。注意,圖示的基本宏塊分區(qū)只是一個示例。符號MV0、
MV1等等表示根據(jù)每個基本宏塊中的處理順序包含在該基本宏塊中的運動 向量。
當當前圖片和參考圖片都是FLD圖片時,選擇讀取模式0。在這種編 碼類型組合中,共位宏塊以圖8B所示的方式與當前宏塊相關聯(lián)。當前宏 塊的個別場的運動向量可通過讀取外部存儲器320以獲得每個相應共位宏 塊的數(shù)據(jù)來預測。圖10A示出了讀取模式0中的這個過程。具體而言,前 場數(shù)據(jù)被有選擇地從外部存儲器320中的前場宏塊行Top一0、 Top_l等等 讀出,并被發(fā)送到第一內(nèi)部緩沖器341。這是通過從存儲器區(qū)域320-1至 320-N中選擇奇數(shù)存儲器區(qū)域并將其數(shù)據(jù)順序地傳送到第一內(nèi)部緩沖器 341來實現(xiàn)的。同樣地(雖然圖10A中未示出),后場數(shù)據(jù)被有選擇地從 后場宏塊行BottomJ)、 BottomJ等等(即外部存儲器320的偶數(shù)存儲器 區(qū)域)讀出,并被順序傳送到第一內(nèi)部緩沖器341。
更具體而言,圖13示出了前場參考圖片601和前場當前圖片602,作 為上述編碼類型組合的示例。外部存儲器320按圖13最上方部分所示的 順序存儲參考圖片601。通過簡單地遵循這種存儲順序,必要的共位宏塊 的數(shù)據(jù)完全根據(jù)每個場的當前宏塊的處理順序(參見圖13的最下方部 分)從外部存儲器320中出來(參見圖13的中間部分)。
最終,通過按圖10A所示的順序讀出前場(或后場)共位宏塊的數(shù) 據(jù),可以獲得對于當前宏塊的直接模式運動估計來說必要的共位宏塊(例 如宏塊604)的一系列參考運動向量。讀取的數(shù)據(jù)按該順序被一次傳送到 第一內(nèi)部緩沖器341,然后經(jīng)過向量計算過程,同時保持相同的順序。
當當前圖片是FLD圖片而參考圖片是FRM圖片時,選擇讀取模式 1。在這種編碼類型組合中,當前宏塊和共位宏塊是以圖9C所示的方式相 關聯(lián)的。為了計算當前宏塊的前場和后場的運動向量,必須參考參考圖片 中作為共位宏塊的兩個垂直相鄰宏塊。圖10B示出了讀取模式1中的這種 存儲器讀取過程。具體而言,第一和第二內(nèi)部緩沖器341和342都被用于 接收從外部存儲器320讀出的相鄰的每對宏塊行(例如MBLineJ)和 MBLine一l)的數(shù)據(jù)。
更具體而言,圖14的最上方部分示出了參考圖片611的數(shù)據(jù)如何被存儲在外部存儲器320中。另一方面,當前圖片612按圖14的最下方部分 所示的順序被處理。例如,假設選擇當前圖片612中的直接模式宏塊 613。由于當前圖片612是FLD類型的,因此當前宏塊613的直接向量計 算需要參考圖片611中的兩個宏塊614和615的數(shù)據(jù)。因此,存儲器讀取 序列按圖14中間部分所示的方式發(fā)生。即,包含上方宏塊614的宏塊行 被提供到第一內(nèi)部緩沖器341,而包含下方宏塊615的另一宏塊行被提供 到第二內(nèi)部緩沖器342。所需的共位宏塊(例如在此示例中是宏塊614和 615)的向量數(shù)據(jù)可通過從兩個內(nèi)部緩沖器341和342順序地讀取數(shù)據(jù)來 同時獲得。
當當前圖片是FLD圖片而參考圖片是MBAFF圖片時,選擇讀取模式
2。 圖15的最上方部分示出了這種MBAFF參考圖片621,其每個宏塊對 行被存儲在外部存儲器320的相應的存儲器區(qū)域320-1至320-N中。另一 方面,當前圖片622按圖15最下方部分所示的順序被處理。當前宏塊的 直接向量計算必須參考參考圖片621中的相應的宏塊對。例如,假設當前 圖片622中的直接模式宏塊623被選擇用于進行預測。在這種情況下,為 了計算當前宏塊623的運動向量,需要參考圖片621中的兩個宏塊624和 625的數(shù)據(jù)。
因此,讀取模式2中的存儲器讀取序列按圖15中間部分和圖IIA所 示的方式進行,以將一系列宏塊對行(例如圖11A中的MBLine一O和_1, MBLine_2和_3,...)從外部存儲器320傳送到第一內(nèi)部緩沖器341。這是 通過將數(shù)據(jù)從存儲器區(qū)域320-1, 320-2,…,320-N順序地傳送到第一內(nèi)部緩 沖器341來實現(xiàn)的。向量讀取控制器350隨后從第一內(nèi)部緩沖器341讀出 每個宏塊對的存儲數(shù)據(jù),從而將所需的共位宏塊的運動向量提供給運動向 量計算器310。
當當前圖片是FRM圖片而參考圖片是FLD圖片時,選擇讀取模式
3。 在這種編碼類型組合中,參考圖片宏塊數(shù)據(jù)的同一宏塊行的數(shù)據(jù)首先 被用于當前圖片的奇數(shù)行,然后用于當前圖片的偶數(shù)行。圖IIB示出了讀 取模式3中的這種存儲器讀取過程。具體而言,前場宏塊行(即T叩J), Top一l,...)的數(shù)據(jù)被每行兩次地從奇數(shù)存儲器區(qū)域讀出,并被發(fā)送到第一
內(nèi)部緩沖器341。
更具體而言,圖16的最上方部分示出了參考圖片631的數(shù)據(jù)如何被 存儲在外部存儲器320中。即,前場宏塊行的數(shù)據(jù)被寫入到外部存儲器 320的奇數(shù)存儲器區(qū)域中。然后,后場宏塊行的數(shù)據(jù)被寫入到偶數(shù)存儲器 區(qū)域中。當需要外部存儲器320中的參考向量數(shù)據(jù)時,向量讀取控制器 350按圖16中間部分所示的方式將其讀出。即,它讀取奇數(shù)存儲器區(qū)域兩 次,然后讀取偶數(shù)存儲器區(qū)域兩次。所有讀取的數(shù)據(jù)被傳送到第一內(nèi)部緩 沖器341,從而允許同一宏塊行上的共位宏塊的數(shù)據(jù)被不間斷地從同一第 一內(nèi)部緩沖器341讀出兩次。例如,假設當前圖片632中的宏塊633被選 擇用于進行直接模式預測,如圖16的最下方部分所示。第一內(nèi)部緩沖器 341輸出其相應宏塊634的數(shù)據(jù)以用于奇數(shù)行的計算,然后輸出相同數(shù)據(jù) 用于偶數(shù)行。
當當前圖片和參考圖片都是FRM圖片時,選擇讀取模式4。圖8A示 出了在這種讀取模式中當前宏塊和共位宏塊之間的塊與塊關系。對于直接 模式計算,運動向量計算器310要求共位宏塊的數(shù)據(jù)的順序與其通過當前 圖片的順序相同。因此,向量讀取控制器350從外部存儲器320的其相應 的存儲器區(qū)域320-1至320-N中讀取一系列宏塊行(MBLineJ), MBLine一l,...),并將它們?nèi)及l(fā)送到第一內(nèi)部緩沖器341,如圖12A所 示。具體而言,圖17示出了向量讀取控制器350按與運動向量計算器310 處理當前圖片642的當前宏塊的順序相同的順序,從外部存儲器320讀出 參考圖片641的共位宏塊的數(shù)據(jù)。
當當前圖片是MBAFF圖片而參考圖片是FLD圖片時,選擇讀取模式 5。在當前宏塊和共位宏塊的這種組合中的塊與塊關系與圖9A和9B分別 被應用到宏塊對的上方部分和下方部分的情況等同。由于MBAFF當前圖 片是逐宏塊對地被處理的,因此運動向量計算器310必須被提供以來自外 部存儲器320的每一對上方共位宏塊和下方共位宏塊的數(shù)據(jù)。因此,向量 讀取控制器350按圖12B所示的并行的方式,將上方宏塊行(例如 Top一O)的數(shù)據(jù)傳送到第一內(nèi)部緩沖器341,并將下方宏塊行(例如 BottomJ))的數(shù)據(jù)傳送到第二內(nèi)部緩沖器342。換言之,它從存儲器區(qū)域320-1至320-N中選擇奇數(shù)存儲器區(qū)域用于第一內(nèi)部緩沖器341,并選擇偶 數(shù)存儲器區(qū)域用于第二內(nèi)部緩沖器342。
圖18的最上方部分示出了參考圖片651的宏塊數(shù)據(jù)如何被寫入在外 部存儲器320中。該FLD參考圖片651由前場651a和后場651b組成。在 外部存儲器320中,宏塊行的前場數(shù)據(jù)和后場數(shù)據(jù)根據(jù)圖6B所示的格式 被存儲在連續(xù)的存儲器區(qū)域中。另一方面,運動向量計算器310逐宏塊對 地針對MBAFF當前圖片652執(zhí)行直接模式預測,如圖18的最下方部分所 示。因此,向量讀取控制器350使得運動向量計算器310能夠從第一和第 二內(nèi)部緩沖器341和342接收每個宏塊對的數(shù)據(jù),如圖18的中間部分所 示。這是通過預先將上方宏塊行和下方宏塊行的數(shù)據(jù)分別傳送到第一和第 二內(nèi)部緩沖器341和342來實現(xiàn)的。例如,假設對當前圖片652中的宏塊 對653指定了直接模式。在這種情況下,其相應的宏塊654和655被連續(xù) 讀出,以供運動向量計算器310使用。
當當前圖片和參考圖片都是MBAFF圖片時,選擇讀取模式6。從圖 19的最上方部分和最下方部分可以看出,在這種編碼類型的組合中,當前 圖片622中的宏塊數(shù)據(jù)的處理順序與參考圖片661中的宏塊數(shù)據(jù)的寫入順 序一致。因此,向量讀取控制器350從外部存儲器320順序地讀出宏塊對 行(例如MBLineJ)和一l,MBLine一2和-3,...)的數(shù)據(jù),并將數(shù)據(jù)傳送到第 一內(nèi)部緩沖器341,如圖12C和圖19中間部分所示。即,數(shù)據(jù)被按圖示順 序從存儲器區(qū)域320-1至320-N傳送到第一內(nèi)部緩沖器341 。
內(nèi)部緩沖器結(jié)構(gòu)
圖20是示出向量讀取控制器350的示例性結(jié)構(gòu)的框圖,重點在于針 對內(nèi)部緩沖器的讀取控制功能。為了實現(xiàn)預期的功能,向量讀取控制器 350采用了第一和第二讀取地址生成器351和352、第一和第二頭部信息 解析器353和354、第一和第二共位向量緩沖器355和356以及選擇器 (SEL) 357。
第一和第二讀取地址生成器351和352分別針對第一和第二內(nèi)部緩沖 器341和342產(chǎn)生讀取地址信號。具體而言,第一和第二讀取地址生成器 351和352基于偏移量生成器370輸出偏移量值的定時,使其自身與對給
定當前圖片的宏塊行的處理同步。選擇器357向第一和第二內(nèi)部緩沖器 341和342提供產(chǎn)生的讀取地址信號。
第一和第二頭部信息解析器353和354分別耦合到第一和第二內(nèi)部緩 沖器341和342,以接收添加到存儲在其中的參考圖片的每個共位宏塊的 頭部信息。頭部信息描述了共位宏塊的分區(qū)大小等等。第一和第二頭部信 息解析器353和354解析信息以確定共位宏塊被劃分成了多少個塊。它們 各自的判決被傳遞到第一和第二讀取地址生成器351和352。從頭部信息 提取的分區(qū)大小信息還被發(fā)送到分區(qū)大小管理器360 (圖4)。
第一和第二讀取地址生成器351和352產(chǎn)生與確定出的塊分區(qū)的數(shù)目 相同數(shù)目的地址。這允許了共位宏塊中包含的每個運動向量被從第一和第 二內(nèi)部緩沖器341和342讀出。這些運動向量在被送出到分區(qū)大小管理器 360之前被臨時保存在第一和第二共位向量緩沖器355和356中。
圖21示意性地示出了數(shù)據(jù)如何被傳送到兩個內(nèi)部緩沖器341和342。
圖21 (以及下面的圖22)使用了諸如"MVO"和"MV1"之類的一系列 符號,以按其使用順序指示與基本宏塊內(nèi)的個別塊相對應的運動向量。
具體而言,圖21示出了讀取模式1的示例。針對參考圖片701計算的 運動向量被存儲在外部存儲器320中的多個存儲器區(qū)域320-1至320-N 中,其中對于每個不同宏塊行,這些運動向量被分開存儲。參考圖片701 包括以后將作為共位宏塊被參考的以各種方式分區(qū)的基本宏塊。因此,每 個存儲器區(qū)域320-1至320-3可容納不同數(shù)目的運動向量。即,針對單個 宏塊行計算的每組運動向量作為可變長度數(shù)據(jù)對象被存儲在外部存儲器 320中。
以這種方式寫入的數(shù)據(jù)以并行方式被從兩個連續(xù)的存儲器區(qū)域(在本 示例中是320-1和320-2)讀出,以分別輸入到第一和第二內(nèi)部緩沖器341 和342中。向量讀取控制器350利用一系列連續(xù)的讀取地址對每個存儲器 區(qū)域進行順序訪問,從而取得與單個宏塊行相對應的一組運動向量。圖21 的最下方部分示出了因此得到的第一和第二內(nèi)部緩沖器341和342的狀 態(tài)。第一和第二頭部信息解析器353和354以并行方式從第一和第二內(nèi)部 緩沖器341和342讀出頭部信息,并且將塊分區(qū)的數(shù)目通知給第一和第二
讀取地址生成器351和352。這使得第一和第二內(nèi)部緩沖器341和342能 夠輸出與塊分區(qū)的數(shù)目相同數(shù)目的運動向量。
利用上述控制,第一和第二內(nèi)部緩沖器341和342同時地或連續(xù)地輸 出例如基本宏塊702和703的運動向量,以便用作直接模式預測中的參考
圖22示意性地示出了在讀取模式6中數(shù)據(jù)如何被傳送到單個內(nèi)部緩 沖器。圖22的最上方部分示出了 MBAFF模式中的參考圖片711以及其運 動向量的布置。與每個宏塊對相對應的運動向量被存儲在從設置在外部存 儲器320中的多個存儲器區(qū)域320-1至320-N中選擇出的兩個連續(xù)的存儲 器區(qū)域中。正如圖21所示的情況一樣,它們是作為可變長度數(shù)據(jù)對象被 存儲的。
通過生成用于讀出與宏塊對行相對應的運動向量的連續(xù)地址,以這種 方式寫入的數(shù)據(jù)被從兩個連續(xù)的存儲器區(qū)域(在本示例中是320-1和320-2)傳送到第一內(nèi)部緩沖器341。因此得到的第一和第二內(nèi)部緩沖器341和 342的狀態(tài)在圖22的最下方部分示出。注意,第二內(nèi)部緩沖器342不包含 數(shù)據(jù)。在這種情況下,只有第一頭部信息解析器353進行操作以從第一內(nèi) 部緩沖器341讀取頭部信息并將塊分區(qū)的數(shù)目通知給第一讀取地址生成器 351。第一內(nèi)部緩沖器341從而輸出與塊分區(qū)的數(shù)目相同數(shù)目的運動向 量。這使得運動向量計算器310能夠利用例如參考圖片711中的一對基本 宏塊712和713的一系列運動向量來執(zhí)行直接模式預測。
下面將描述使用兩個內(nèi)部緩沖器341和342的讀取模式1的更具體示 例。圖23A和23B示出了兩個示例性宏塊行721和722,用于說明數(shù)據(jù)讀 取會話。假設這些宏塊行721和722的運動向量數(shù)據(jù)被存儲在外部存儲器 320中的兩個相鄰的存儲器區(qū)域中。更具體而言,圖23A的宏塊行721是 由五個基本宏塊731至735形成的。同樣地,圖23B的宏塊行722是由五 個基本宏塊741至745形成的。就塊分區(qū)的數(shù)目和每個塊的大小來說,這 兩個宏塊行721和722彼此從頭到尾都是完全不同的。
圖24是示出圖23A和23B所示的相鄰宏塊行的數(shù)據(jù)如何被存儲在兩 個內(nèi)部緩沖器中的定時圖。在該圖24中,WEN_Bufl和WEN一Buf2分別
表示用于第一和第二內(nèi)部緩沖器341和342的寫入使能信號。WAD一Bufl 和WAD_Buf2分別是第一和第二內(nèi)部緩沖器341和342的寫入地址。 WDT_Bufl和WDT一Buf2分別是第一和第二內(nèi)部緩沖器341和342的寫入 數(shù)據(jù)。
圖24的示例假定了圖23A和23B所示的宏塊行721和722的數(shù)據(jù)以 并行方式分別被傳送到第一和第二內(nèi)部緩沖器341和342。前述向量寫入 控制器330已將共位宏塊的運動向量以及在前的頭部信息字段寫入在外部 存儲器320中。頭部信息包括名為"宏塊分區(qū)大小"(MB SIZE)和"子 宏塊分區(qū)大小"(SUB-MB SIZE)的參數(shù)。宏塊分區(qū)大小參數(shù)指示構(gòu)成一 個宏塊的塊的大小。這種塊的最小大小是8x8。另一方面,子宏塊分區(qū)大 小參數(shù)指示8x8宏塊的子分區(qū)的大小。后綴(0)至(3)被添加用來示出16x16 基本宏塊內(nèi)的8x8宏塊的位置。參數(shù)SUB-MB SIZE (O)至SUB-MB SIZE (3) 只在宏塊分區(qū)大小是8x8時產(chǎn)生。
本切片開始于宏塊行721和722的上部。針對這兩行的數(shù)據(jù)讀取會話 在時刻Tl同時開始。在后續(xù)的時段Pll至P15中,宏塊行721中的共位 宏塊731至735的運動向量和頭部信息被傳送到第一內(nèi)部緩沖器341。另 外,在時段P21至P25中,宏塊行722中的共位宏塊741至745的運動向 量和頭部信息被傳送到第二內(nèi)部緩沖器342。
圖25是示出從兩個內(nèi)部緩沖器341和342讀取數(shù)據(jù)的過程的定時圖。 在該圖25中,REN一Bufl和RE!SLBuf2分別表示用于第一和第二內(nèi)部緩沖 器341和342的讀取使能信號。RAD一Bufl和RAD一Buf2分別是第一和第 二內(nèi)部緩沖器341和342的讀取地址信號。RDT_Bufl和RDT一Buf2分別 是從第一和第二內(nèi)部緩沖器341和342讀取的數(shù)據(jù)。
時段P31、 P33、 P35和P37是第一內(nèi)部緩沖器341輸出數(shù)據(jù)的時段, 時段P32、 P34、 P36和P38是第二內(nèi)部緩沖器342輸出數(shù)據(jù)的時段。每個 時段開始于第一階段,在該第一階段中,第一頭部信息解析器353或第二 頭部信息解析器354讀取頭部信息。這之后是第二階段,在該第二階段 中,從針對在頭部信息中指定的那么多的塊分區(qū)生成的一系列讀取地址中 讀出 一個共位宏塊的運動向量。
在圖25的示例中,第一和第二頭部信息解析器353和354交替地從第 一和第二內(nèi)部緩沖器341和342接收頭部信息。頭部信息被用于針對每對 垂直相鄰的共位宏塊(例如圖23A和23B中的宏塊731和741、宏塊732 和742)以串行方式讀取運動向量。
應當注意,本發(fā)明不限于圖25所示的操作。作為一個替換實施例, 第一和第二內(nèi)部緩沖器341和342可被設計為同時向其相應的第一和第二 頭部信息解析器353和354提供宏塊對的頭部信息并向相應的共位向量緩 沖器355和356提供運動向量。每當針對一個共位宏塊的數(shù)據(jù)讀取會話完 成時,第一和第二頭部信息解析器353和354就取入下一宏塊的頭部信 息。
從以上內(nèi)容可以看出,本實施例根據(jù)當前圖片和參考圖片的編碼類 型、幀/場類型以及塊分區(qū)的數(shù)目的組合,針對直接模式運動向量預測從外 部存儲器320讀取共位宏塊的數(shù)據(jù)。本實施例使用表來管理這種組合并針 對給定組合選擇適當?shù)淖x取方法。本實施例還被設計為將外部存儲器320 劃分成多個固定長度的區(qū)域以逐宏塊行地或逐宏塊對行地存儲參考圖片。 此外,本實施例具有兩個內(nèi)部緩沖器341和342,作為從外部存儲器320 讀出的數(shù)據(jù)的臨時存儲裝置。因此,前述功能可利用相對簡單的電路結(jié)構(gòu) 來實現(xiàn)。具體而言,在參考圖片和當前圖片彼此就幀/場類型而言不同的情 況下或者在它們被指定為MBAFF圖片的情況下,本實施例對于直接模式 操作是有利的。
本實施例的另一個優(yōu)點在于就頻率和持續(xù)時間而言它減少了對外部存 儲器320的讀取和寫入訪問。這是通過只存儲原始共位宏塊的參考運動向 量而不復制針對4x4像素的最小大小塊計算出的運動向量來實現(xiàn)的。雖然 宏塊行或宏塊對行的運動向量是作為可變長度數(shù)據(jù)被存儲的,但是本實施 例卻能夠以減少的時間和功耗對這種數(shù)據(jù)進行順序訪問。由于必須讀取的 運動向量的數(shù)目的減少,被編碼的數(shù)據(jù)的量也減少了。因而本實施例能夠 更高效地壓縮視頻數(shù)據(jù),而不會犧牲圖片質(zhì)量。
切片類型切換
本實施例使得對當前宏塊的移動的處理變得簡單,這是因為必定能夠
取得所期望的共位宏塊。另外,本實施例的上述結(jié)構(gòu)支持圖片中部的切片 類型切換。本實施例還支持可能發(fā)生在不同切片類型之間的邊界處的對新 參考圖片的選擇。
H.264允許在圖片中部改變切片類型。圖26示出了在宏塊802和803 之間的邊界處切片類型從P切換到B的示例。本實施例以前面部分所述的 方式將參考圖片的數(shù)據(jù)存儲在外部存儲器320中。雖然可對宏塊803指定 直接模式,但可以很容易地從參考圖片中的共位宏塊取得每個所需的參考 運動向量。具體而言,本實施例被設計為逐宏塊行地或者逐宏塊對行地從 外部存儲器320讀出參考運動向量,從而自然會從新宏塊行的最上方共位 宏塊開始處理每個切片,而無需在切片類型的邊界處進行額外的處理。
IL264還允許在切片邊界處改變參考圖片。圖27A和27B示出了這種 改變的示例。具體而言,圖27A示出了包含B切片814和815的當前圖片 811,所述B切片814和815的邊界位于宏塊812和M13之間。另一方 面,圖27B示出了當前圖片811與在切片邊界附近所使用的它的參考圖片 816和817之間的關系。具體而言,包含宏塊812的上方切片814是參考 在前圖片816編碼的,而包含宏塊813的下方切片815是參考另一在前圖 片817編碼的。外部存儲器320可按與上述相同的方式存儲圖片816和 817的運動向量以供以后參考,從而提供了不同參考圖片的共位運動向 量。
分區(qū)大小管理
本部分描述分區(qū)大小管理器360的操作。圖28示出了宏塊類型査找 表。圖示的宏塊類型查找表382的最左邊三個數(shù)據(jù)字段是 "MBColMode"、"當前宏塊"和"共位宏塊"。第一字段MBColMode 對當前宏塊和共位宏塊的幀/場模式的組合進行分類。對于每種 MBColMode ,表382的第四列給出了特定的共位宏塊類型 ("MBCol一MBTYPE "字段),以及相應的當前宏塊類型 ("CurrMB—MBTYPE"字段)。
分區(qū)大小管理器360咨詢該讀取模式判決表381以找出與當前圖片和 參考圖片的編碼類型和幀/場模式的給定組合相對應的可能的MBColMode。然后,每當當前圖片中的新的宏塊被選擇用于處理時,分區(qū) 大小管理器360通過再次咨詢宏塊類型查找表382,根據(jù)與新的當前宏塊 相對應的新的共位宏塊的幀/場模式和當前圖片的行類型的組合,來判定 MBColMode。分區(qū)大小管理器360還使用宏塊類型查找表382來根據(jù)與共 位宏塊有關的MBCol一MBTYPE確定CurrMB_MBTYPE,從而從提供自向 量讀取控制器350的那些運動向量中選擇必要的運動向量。以這種方式選 擇的運動向量被發(fā)送到直接運動向量計算器311。
圖28的宏塊類型查找表382具有用于說明目的的名為"合并 (CONSOLIDATE)"的額外字段。該字段指示當前宏塊中的塊分區(qū)的數(shù) 目是否可以小于共位宏塊中的塊分區(qū)的數(shù)目。正如后面將描述的,如果能 夠?qū)Ξ斍昂陦K應用塊合并,則可以減少直接模式運動向量的數(shù)目(從而減 少被編碼的數(shù)據(jù)的量)。該功能使得編碼器能夠提高視頻壓縮比,而不會 降低圖片質(zhì)量。它還使得解碼器能夠減輕運動向量計算和運動補償?shù)奶幚?負荷,而不會降低圖片質(zhì)量。
現(xiàn)參考圖29至32,下面將給出關于如何根據(jù)當前宏塊的共位宏塊的 宏塊類型來確定當前宏塊的宏塊類型的一些細節(jié)。共位宏塊(MBCol)的 各種類型在每幅圖的右側(cè)示出,其相應的當前宏塊(CurrMB)的類型在左 側(cè)示出。宏塊類型組合的最上方樣式是當前宏塊和共位宏塊都被分區(qū)成最 小大小塊的情況,這實際上與圖8A至9C所示的情況相同。如圖8A至9C 所示,塊號被附加到各個塊,以指示當前宏塊的每個塊的運動向量可以根 據(jù)共位宏塊中其相應的、相同編號的塊來得出。
圖29示出了針對MBColMode=0的當前宏塊類型的示例。 MBCOlMode=0意味著當前宏塊和共位宏塊都是幀形式的(并且它們的圖 片編碼類型是FRM)。在這種情況下,當前宏塊的每個塊的運動向量是直 接根據(jù)先前計算出的共位塊的運動向量來得出的。因此,在 MBColModeO時,當前宏塊被賦予與共位宏塊相同的宏塊類型,如圖29 的PT1至PT6所示。
圖30給出了針對MBColMode=l的當前宏塊類型的示例。 MBColMode=l意味著由于標準規(guī)范共位宏塊可被分區(qū)成4x4塊而當前宏
塊的最小大小分區(qū)是8x8塊,如之前在圖犯中所述。具體而言,圖30的 樣式PT11示出了 8x8宏塊分區(qū)901至904。它們的直接模式運動向量是僅 分別參考相應的子宏塊905至卯8計算出的。艮卩,樣式PT11允許共位宏 塊中的四個子宏塊的左上群組在被映射在當前宏塊上時被合并成一個8x8 宏塊901。同樣地,右上、左下和右下子宏塊的其他群組可分別被合并成 三個8x8宏塊902、 903和904。
基于樣式PT11的概念,圖30所示的接下來的四個樣式PT12至PT15 都不允許塊合并,因為這些類型的共位宏塊的最小大小塊的大小為8x8像 素。這些樣式PT12至PT15的當前宏塊因而將被賦予與共位宏塊相同的宏 塊類型。另一方面,圖30的最下方樣式PT16涉及作為共位宏塊的一部分 的更小的分區(qū)(4x4、 4x8和8x4子宏塊)。在這種情況下,這些子宏塊中 的一些在被映射在當前宏塊上時將被合并成8x8。例如,子宏塊909和 910可被合并成單個8x8宏塊911,從而該宏塊911的運動向量將直接根據(jù) 子宏塊910的運動向量得出。即,分區(qū)大小管理器360選擇8x8作為與這 些共位子宏塊909和910相對應的當前宏塊類型,并因而將子宏塊910的 運動向量和該宏塊類型信息一起發(fā)送到直接運動向量計算器311。
圖31示出了針對MBColMode=2或3的當前宏塊類型的示例。參考圖 31的樣式PT21,同一個共位宏塊被示為兩個宏塊;左邊那個被用于在 MBColMode=2的情況下處理當前宏塊的奇數(shù)行;右邊那個被用于在 MBColMode=3的情況下處理當前宏塊的偶數(shù)行。當MBColMode=2或3 時,最小塊大小對于共位宏塊來說是4x4,而對于當前宏塊來說是8x8, 如樣式PT21所示。
如圖9A所討論的,在MBColMode=2的情況下,四個當前宏塊911 至914的奇數(shù)行的運動向量分別是根據(jù)共位子宏塊915至918得出的。如 圖9B所討論的,在MBColMod^3的情況下,四個當前宏塊911至914的 偶數(shù)行的運動向量分別是根據(jù)共位子宏塊919至922得出的。這意味著第 一行中最左邊的兩個共位子宏塊和第三行中最左邊的兩個共位子宏塊被映 射到大小為8x8的單個合并的當前宏塊911上。同樣地,第一行中最右邊 的兩個共位子宏塊和第三行中最右邊的兩個共位子宏塊被映射到單個合并
的當前宏塊912上。第二行中最左邊的兩個共位子宏塊和第四行中最左邊 的兩個共位子宏塊被映射到單個合并的當前宏塊913上。第二行中最右邊 的兩個共位子宏塊和第四行中最右邊的兩個共位子宏塊被映射到單個合并 的當前宏塊914上。
將樣式PT21的概念應用到圖31所示的隨后的三個樣式PT23至 PT25,如果它們的共位宏塊的上方或下方的16x8塊都不被垂直分區(qū)成子 宏塊,則不需要它們的當前宏塊具有垂直分區(qū)。該條件對于圖31中的樣 式PT23至PT25成立,并且兩個樣式PT23和PT25受到了塊的垂直合 并。
另一方面,在最下方的樣式PT26中,共位宏塊包括在其上半部和下 半部的垂直子分區(qū)。因此,當前宏塊應當被分區(qū)成8x8宏塊。例如考慮那 些8x8宏塊923和924。分區(qū)大小管理器360通過向直接運動向量計算器 311提供針對奇數(shù)行的子宏塊925的運動向量和針對偶數(shù)行的子宏塊926 和927的運動向量,來幫助直接運動向量計算器311計算這些宏塊的運動
口參考樣式PT22,共位宏塊不經(jīng)歷分區(qū)。因此,16x16當前宏塊維持了 其原始的單塊結(jié)構(gòu)。
圖32示出了針對MBColMode=4的當前宏塊類型的示例。從樣式 PT31中可以看出,在MBColMode=4的情況下可能的最小塊大小對于共位 宏塊而言是4x4,而對于當前宏塊而言是8x8。在該樣式PT31中,共位宏 塊和當前宏塊以圖9C所示的方式相關聯(lián)。為了計算這樣的當前宏塊的前 場和后場的運動向量,必須參考參考圖片中作為共位宏塊的兩個垂直相鄰 的宏塊。圖28的宏塊類型査找表382給出在MBColMode=4時關于此的信 息。具體而言,MBCol_MBTYPE字段的列包括描述"上方MBCol"和 "下方MBCol"的條目。該條目是指共位宏塊的兩個垂直相鄰的分區(qū)。
返回參考圖32,分區(qū)大小管理器360因此向直接運動向量計算器311 提供共位子宏塊935和936的運動向量,以用于上方兩個當前宏塊分區(qū) 931和932的直接模式向量預測。它還提供共位子宏塊937和938的運動 向量,以用于下方兩個當前宏塊分區(qū)933和934的直接模式向量預測?;跇邮絇T31的概念,圖30所示的接下來的兩個樣式PT32和PT33 都將允許塊合并,如果它們的共位宏塊的上半部和下半部沒有8x8或更小 的子宏塊分區(qū)的話。具體而言,樣式PT32中的當前宏塊被形成為垂直相 鄰的一對16x8宏塊,其中每個宏塊可能是兩個共位宏塊合并的結(jié)果。在 除上述情況外的其他情況下,當前宏塊將被分區(qū)成四個8x8宏塊,如PT33 所示。
從以上說明可以看出,本實施例的分區(qū)大小管理器360根據(jù)其相應的 共位宏塊的宏塊類型來確定當前圖片中的宏塊的分區(qū)大小,以盡可能地使 當前宏塊的分區(qū)最大化。利用最大化的分區(qū),最少量的共位運動向量被選 擇并經(jīng)歷針對當前宏塊分區(qū)的直接模式向量預測。直接模式預測中使用的 這種運動向量的數(shù)目的減少還意味著對用于運動補償?shù)膮⒖紙D片存儲器的 訪問減少,從而放松了對存儲器帶寬的要求。因此所得到的優(yōu)點包括處理 負荷更輕、功耗更小以及編碼器/解碼器電路的制造成本降低。本實施例在 不犧牲運動補償?shù)木鹊那闆r下實現(xiàn)了這些優(yōu)點。在視頻編碼應用中,本 實施例減少了被編碼的數(shù)據(jù)的量(或者換言之提高了視頻壓縮比),而不 會降低圖片質(zhì)量。
傳統(tǒng)的技術只能將4x4塊組合成8x8宏塊,因為它們通過將針對一個 宏塊計算的運動向量映射到均一大小(4x4)的塊上來將這些運動向量存 儲在外部存儲器中,就像圖29至32的樣式PT1、 PTll、 PT21和PT31中 那樣。相反,根據(jù)本實施例,共位宏塊在經(jīng)過分區(qū)大小管理器360時維持 了其原始的宏塊類型,從而能夠?qū)斍昂陦K劃分成大于8x8像素的塊。因 此,本實施例減少了在直接模式中計算的運動向量的數(shù)目。此外,分區(qū)大 小管理器360確定宏塊類型的處理負擔可得以減輕,因為與傳統(tǒng)的均一 4x4分區(qū)的情況相比,分區(qū)大小管理器360接收的共位運動向量的數(shù)目更 少。這也為功耗降低作出了貢獻。
上述實施例將參考圖片的運動向量存儲在外部存儲器320中,該外部 存儲器320被用作與幀間預測器210 (或視頻解碼設備200)分開的單獨 組件。但是,本發(fā)明并不限于這種外部存儲器配置。存儲器可實現(xiàn)為幀間 預測器210或視頻解碼設備200的集成部分。第一和第二內(nèi)部緩沖器341 和342進而可以實現(xiàn)為外部組件。此外,外部存儲器320以及第一和第二 內(nèi)部緩沖器341和342可實現(xiàn)在單個存儲器子系統(tǒng)上。上述變化不僅適用 于視頻解碼設備200 (圖3)的幀間預測器210,還適用于視頻編碼設備 100 (圖2)的幀間預測器104。
計算機可讀介質(zhì)
所提出的運動預測處理器的上述處理機制實際上是實現(xiàn)在計算機系統(tǒng) 上的。用于前述視頻編碼器和解碼器的計算機指令是以計算機程序的形式 編碼的。計算機系統(tǒng)執(zhí)行這些程序以提供本發(fā)明的預期功能。出于存儲和 分發(fā)的目的,這些程序可被存儲在計算機可讀存儲介質(zhì)中。合適的計算機 可讀存儲介質(zhì)包括磁存儲介質(zhì)、光盤、磁光存儲介質(zhì)和固態(tài)存儲器設備。
諸如DVD和CD-ROM之類的便攜式存儲介質(zhì)適合于程序產(chǎn)品的分 發(fā)。軟件程序的基于網(wǎng)絡的分發(fā)也是可能實現(xiàn)的,在這種情況下,在服務 器計算機上提供若干個主程序文件以便經(jīng)由網(wǎng)絡下載到其他計算機。
用戶計算機將必要的軟件組件存儲在其本地存儲單元中,這些軟件組 件先前已從便攜式存儲介質(zhì)安裝或從服務器計算機下載下來。計算機執(zhí)行 從本地存儲單元讀出的程序,從而執(zhí)行所編程的功能。作為程序執(zhí)行的替 換方式,計算機可在直接從便攜式存儲介質(zhì)讀出程序代碼的同時執(zhí)行程 序。另一種替換方法是用戶計算機在需要時動態(tài)地從服務器計算機下載程 序并在遞送時執(zhí)行這些程序。
結(jié)論
根據(jù)本發(fā)明,運動預測處理器使用了一個向量存儲器,該向量存儲器 提供了與參考圖片的多個塊行相對應的多個存儲器區(qū)域。所提出的運動預 測處理器被設計為逐個塊行地只寫入和讀取向量存儲器中的有限數(shù)目的參 考運動向量,以使對向量存儲器的訪問達到最低限度。存儲的運動向量按 根據(jù)以下因素確定的方式被讀出當前圖片是幀圖片還是場圖片。參考圖 片是幀圖片還是場圖片,在每幅圖片中是否使用塊自適應預測模式。該特 征允許向量計算器從每個緩沖器接收所需的運動向量,而不論當前圖片和 參考圖片是如何組織的。本發(fā)明因而擴展了直接模式運動預測的應用范 圍,并且減輕了運動估計的處理負荷。前述內(nèi)容被認為只是對本發(fā)明原理的說明。此外,由于本領域的技術 人員將很容易想到許多修改和改變,因此不希望將本發(fā)明限制到所示出和 描述的確切構(gòu)造和應用,并且因此所有合適的修改和等同都可被認為是落 在所附權利要求及其等同物所限定的本發(fā)明的范圍之內(nèi)。
權利要求
1.一種逐基本塊地執(zhí)行幀間運動預測的運動預測處理器,該運動預測處理器被耦合到提供多個存儲器區(qū)域的向量存儲器以及組織成先進先出數(shù)據(jù)存儲裝置的第一和第二緩沖器,該運動預測處理器包括寫入控制器,該寫入控制器將構(gòu)成參考圖片的多個塊行的運動向量寫入在與所述塊行相對應的存儲器區(qū)域中,以便用在針對當前圖片的運動預測過程中,其中每個塊行由多個水平對齊的基本塊形成;讀取控制器,該讀取控制器以根據(jù)下述因素確定的方式將存儲的運動向量從所述向量存儲器的每個存儲器區(qū)域傳送到所述第一和第二緩沖器中的至少一個所述當前圖片是幀圖片還是場圖片、所述參考圖片是幀圖片還是場圖片以及是否指定了塊自適應預測模式,其中所述塊自適應預測模式是允許針對每個基本塊選擇幀預測或場預測的操作模式;以及向量計算器,該向量計算器基于從所述第一和第二緩沖器順序地讀出的運動向量,計算所述當前圖片的每個基本塊的運動向量。
2. 如權利要求1所述的運動預測處理器,其中如果所述參考圖片是場圖片,并且沒有使用所述塊自適應預測模式, 則所述寫入控制器將前場的運動向量寫入到所述第一緩沖器,并將后場的 運動向量寫入到所述第二緩沖器;如果所述參考圖片和所述當前圖片都不處于所述塊自適應預測模式, 并且所述參考圖片是幀圖片,所述當前圖片是場圖片,則所述讀取控制器 以并行方式將運動向量從指派給所述參考圖片的奇數(shù)塊行的存儲器區(qū)域傳 送到所述第一緩沖器并從指派給所述參考圖片的偶數(shù)塊行的存儲器區(qū)域傳 送到所述第二緩沖器;如果所述參考圖片是場圖片但不處于所述塊自適應預測模式,并且所 述當前圖片處于所述塊自適應預測模式,則所述讀取控制器以并行方式將 運動向量從指派給所述參考圖片的前場的存儲器區(qū)域傳送到所述第一緩沖 器并從指派給所述參考圖片的后場的存儲器區(qū)域傳送到所述第二緩沖器; 并且 在其他情況下,所述讀取控制器將運動向量從所述存儲器區(qū)域傳送到 所述第一緩沖器。
3. 如權利要求2所述的運動預測處理器,其中如果所述參考圖片處于所述塊自適應預測模式,則所述寫入控制器將 運動向量寫入到指派給所述參考圖片的兩個垂直相鄰的塊行的兩個存儲器區(qū)域;并且如果所述參考圖片處于所述塊自適應預測模式,則所述讀取控制器順 序地將每兩個塊行的運動向量從相應的存儲器區(qū)域僅傳送到所述第一緩沖器。
4. 如權利要求2所述的運動預測處理器,其中,如果所述參考圖片和 當前圖片都是場圖片但都不處于所述塊自適應預測模式,則所述讀取控制 器僅從指派給所述前場的存儲器區(qū)域讀出運動向量并將所述運動向量僅輸 入到所述第一緩沖器。
5. 如權利要求2所述的運動預測處理器,其中,如果所述參考圖片是 場圖片但不處于所述塊自適應預測模式,并且所述當前圖片是幀圖片但不 處于所述塊自適應預測模式,則所述讀取控制器從指派給所述前場的存儲 器區(qū)域讀出每個運動向量兩次并將所述運動向量僅輸入到所述第一緩沖 器。
6. 如權利要求1所述的運動預測處理器,其中,所述讀取控制器包括根據(jù)以下因素描述用于傳送運動向量的方式的表所述當前圖片是幀圖片 還是場圖片、所述參考圖片是幀圖片還是場圖片以及是否指定了塊自適應 預測模式。
7. 如權利要求1所述的運動預測處理器,其中所述向量計算器或者以交替從所述第一和第二緩沖器的方式,或者以只從所述第一緩沖器的方 式,逐個基本塊地接收存儲的運動向量。
8. 如權利要求1所述的運動預測處理器,還包括分區(qū)大小管理器,該 分區(qū)大小管理器根據(jù)表示下述因素的參數(shù)的組合,確定是以與參考塊相同 的方式對當前塊分區(qū)還是以所述當前塊的一個分區(qū)的大小等于所述參考塊的兩個或更多個分區(qū)的大小的方式來對所述當前塊分區(qū)所述當前圖片中 的當前宏塊是幀形式的還是場形式的、所述參考圖片中的參考宏塊是幀形 式的還是場形式的,所述當前圖片是否處于塊自適應預測模式以及所述參 考圖片是否處于塊自適應預測模式。
9. 如權利要求8所述的運動預測處理器,其中,如果所述當前圖片和 所述參考圖片都不處于所述塊自適應預測模式,所述當前塊是幀形式的而 所述參考塊是場形式的,并且所述參考塊的上半部和下半部都未曾經(jīng)歷進 一步的垂直分區(qū),則所述分區(qū)大小管理器不向所述當前塊應用垂直分區(qū)。
10. 如權利要求8所述的運動預測處理器,其中,如果所述當前圖片 和所述參考圖片都不處于所述塊自適應預測模式,所述當前塊是場形式的 而所述參考塊是幀形式的,并且與所述當前塊相對應的兩個垂直相鄰的參 考塊都未曾被分區(qū)成小于四分之一大小塊的塊,則所述分區(qū)大小管理器將 所述當前塊分區(qū)成兩個垂直相鄰的塊而不是兩個水平相鄰的塊。
11. 一種通過逐基本塊地執(zhí)行幀間運動預測來將視頻信號編碼成壓縮 視頻數(shù)據(jù)的視頻編碼設備,該視頻編碼設備包括提供多個存儲器區(qū)域的向量存儲器;組織成先進先出數(shù)據(jù)存儲裝置的第一和第二緩沖器;寫入控制器,該寫入控制器將構(gòu)成參考圖片的多個塊行的運動向量寫入在與所述塊行相對應的存儲器區(qū)域中,以便用在針對當前圖片的運動預測過程中,其中每個塊行由多個水平對齊的基本塊形成;讀取控制器,該讀取控制器以根據(jù)下述因素確定的方式將存儲的運動向量從所述向量存儲器的每個存儲器區(qū)域傳送到所述第一和第二緩沖器中 的至少一個所述當前圖片是幀圖片還是場圖片、所述參考圖片是幀圖片還是場圖片以及是否指定了塊自適應預測模式,其中所述塊自適應預測模 式是允許針對每個基本塊選擇幀預測或場預測的操作模式;以及向量計算器,該向量計算器基于從所述第一和第二緩沖器順序地讀出 的運動向量,計算所述當前圖片的每個基本塊的運動向量。
12. —種根據(jù)通過逐基本塊地執(zhí)行幀間運動預測而產(chǎn)生的壓縮視頻信 號重建原始視頻圖片的視頻解碼設備,該視頻解碼設備包括提供多個存儲器區(qū)域的向量存儲器; 組織成先進先出數(shù)據(jù)存儲裝置的第一和第二緩沖器;寫入控制器,該寫入控制器將構(gòu)成參考圖片的多個塊行的運動向量寫入在與所述塊行相對應的存儲器區(qū)域中,以便用在針對當前圖片的運動預測過程中,其中每個塊行由多個水平對齊的基本塊形成;讀取控制器,該讀取控制器以根據(jù)下述因素確定的方式將存儲的運動向量從所述向量存儲器的每個存儲器區(qū)域傳送到所述第一和第二緩沖器中 的至少一個所述當前圖片是幀圖片還是場圖片、所述參考圖片是幀圖片還是場圖片以及是否指定了塊自適應預測模式,其中所述塊自適應預測模 式是允許針對每個基本塊選擇幀預測或場預測的操作模式;以及向量計算器,該向量計算器基于從所述第一和第二緩沖器順序地讀出 的運動向量,計算所述當前圖片的每個基本塊的運動向量。
13. —種逐基本塊地執(zhí)行幀間運動預測的方法,包括以下步驟 提供向量存儲器,該向量存儲器提供多個存儲器區(qū)域; 提供組織成先進先出數(shù)據(jù)存儲裝置的第一和第二緩沖器; 將構(gòu)成參考圖片的多個塊行的運動向量寫入在與所述塊行相對應的存儲器區(qū)域中,以便用在針對當前圖片的運動預測過程中,其中每個塊行山 多個水平對齊的基本塊形成;以根據(jù)下述因素確定的方式將存儲的運動向量從所述向量存儲器的每 個存儲器區(qū)域傳送到所述第一和第二緩沖器中的至少一個所述當前圖片 是幀圖片還是場圖片,所述參考圖片是幀圖片還是場圖片以及是否指定了 塊自適應預測模式,其中所述塊自適應預測模式是允許針對每個基本塊選 擇幀預測或場預測的操作模式;以及基于從所述第一和第二緩沖器順序地讀出的運動向量,計算所述當前 圖片的每個基本塊的運動向量。
14. 一種存儲用于逐基本塊地執(zhí)行幀間運動預測的程序的計算機可讀 存儲介質(zhì),該程序致使計算機系統(tǒng)實現(xiàn)以下部分的功能提供多個存儲器區(qū)域的向量存儲器;組織成先進先出數(shù)據(jù)存儲裝置的第一和第二緩沖器;寫入控制器,該寫入控制器將構(gòu)成參考圖片的多個塊行的運動向量寫 入在與所述塊行相對應的存儲器區(qū)域中,以便用在針對當前圖片的運動預測過程中,其中每個塊行由多個水平對齊的基本塊形成;讀取控制器,該讀取控制器以根據(jù)下述因素確定的方式將存儲的運動 向量從所述向量存儲器的每個存儲器區(qū)域傳送到所述第一和第二緩沖器中 的至少一個所述當前圖片是幀圖片還是場圖片、所述參考圖片是幀圖片還是場圖片以及是否指定了塊自適應預測模式,其中所述塊自適應預測模 式是允許針對每個基本塊選擇幀預測或場預測的操作模式;以及向量計算器,該向量計算器基于從所述第一和第二緩沖器順序地讀出 的運動向量,計算所述當前圖片的每個基本塊的運動向量。
全文摘要
本發(fā)明提供了一種使得直接模式運動預測能夠得到更廣泛使用并且減輕處理負荷的運動預測處理器。一種運動預測過程參考參考圖片以計算當前圖片的運動向量。寫入控制器將參考圖片的多個塊行的運動向量寫入在與這些塊行相對應的存儲器區(qū)域中。讀取控制器將存儲的運動向量從每個存儲器區(qū)域傳送到兩個緩沖器中的至少一個。讀取控制器根據(jù)以下因素確定如何傳送這些運動向量當前圖片是幀圖片還是場圖片、參考圖片是幀圖片還是場圖片,以及在每幅圖片中是否指定了塊自適應預測模式。
文檔編號H04N7/26GK101198057SQ20071013802
公開日2008年6月11日 申請日期2007年8月2日 優(yōu)先權日2006年8月17日
發(fā)明者仲石英典 申請人:富士通株式會社
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1