專利名稱:具有用于運動向量存儲的地址管理機制的幀間預測處理器的制作方法
技術領域:
本發(fā)明涉及用于根據(jù)其他幀預測幀的設備和方法,并且涉及使用這種 設備和方法的視頻編碼和解碼設備。更具體而言,本發(fā)明涉及基于可變尺 寸的塊執(zhí)行視頻幀的幀間預測的幀間預測處理器和其方法、視頻編碼設備 以及視頻解碼設備。
背景技術:
數(shù)字視頻壓縮技術被廣泛用于許多應用中。MPEG和H.264是該技術 領域中的標準規(guī)范,其中MPEG代表"運動圖片專家組"。用在這些標準 中的編碼和解碼算法將每個給定圖片劃分為小的區(qū)域,并且利用運動補償 技術處理這些區(qū)域。這種區(qū)域被稱為"宏塊"(macroblock)。視頻編碼 過程涉及幀內預測和幀間預測。幀內預測通過利用正交變換、量化和其他 數(shù)據(jù)處理算法減少了單個幀內的冗余。另一方面,幀間預測通過對運動補 償殘余(即,當前幀和經(jīng)運動補償?shù)膮⒖紟g的差)編碼減少了連續(xù)幀 之間的冗余。所得到的視頻數(shù)據(jù)隨后被進行熵編碼以用于傳輸或存儲。視 頻解碼過程反轉上述步驟以從經(jīng)壓縮的視頻中重構原始視頻。這種視頻編碼算法的大部分工作是計算運動向量以用于幀間預測。因 此,希望開發(fā)一種更快速和更有效的運動向量計算方法。 一種方法例如在 日本未審查專利申請公開No. 2004-266731中提出。所提出的視頻編碼方法通過選擇性地存儲己被確定為用在下一經(jīng)運動補償?shù)膸g編碼中的有限 數(shù)目的參考宏塊,減輕了對存儲器容量的需求。為了提高用于包含邊(edge)和框(outline)的宏塊的運動向量預測 的精度,某些現(xiàn)有的編碼算法將這種宏塊分割為更小的塊,并且針對每個 塊計算運動向量。例如,R264支持將16X16像素的基本宏塊按需要劃分 為各種塊尺寸(包括4X4像素的子分區(qū))的宏塊分區(qū)。
圖24示出了在R264中定義的塊尺寸,其中箭頭指示處理順序。在圖 24的最上部示出了尺寸為16X16像素的基本宏塊91。在該規(guī)范中,塊的 尺寸被適當?shù)刂付榇韺挾萖高度的前綴(如"16X16宏塊91")。 16X16基本宏塊91可被垂直分區(qū)為兩個16X8宏塊92,或被水平分區(qū)為 兩個8X16宏塊93,或被以兩種方式同時分區(qū)為四個8X8宏塊94。 16X 8宏塊92被從上到下地加以處理。8 X 16宏塊93被從左到右地加以處理。 8X8宏塊94被從左上到右上,然后從左下到右下地加以處理。H.264還允許8X8宏塊94被劃分為更小的分區(qū),稱為"子宏塊"。 上述尺寸的前綴也可被應用于這些子宏塊。在圖24所示的示例中,左上8 X 8宏塊94被劃分為兩個8 X4子宏塊95a,右上8 X 8宏塊94被劃分為兩 個4X8子宏塊95b,右下8X8宏塊94被劃分為四個4X4子宏塊95c。子 宏塊假定按與在上述宏塊分區(qū)中相同的順序加以處理。從上文中可見,視頻編碼設備被允許使用更小的塊來進行運動補償, 以更好地跟蹤視頻中對象的更快和/或更精細的運動。然而,該技術的使用 導致運動向量的編碼數(shù)據(jù)量增大。因此,若千研究者提出了一種視頻編碼 設備,該設備可以通過根據(jù)用在運動向量預測中的宏塊尺寸動態(tài)確定虛擬 樣本的精度,從而減少產(chǎn)生虛擬樣本所需的存儲器帶寬。例如見日本未審 查專利申請公開No. 2004-48552。這種現(xiàn)有幀間預測技術的一個缺點是必 須根據(jù)最小塊尺寸對參考圖片數(shù)據(jù)公式化,以使得其可以應對各種尺寸的 宏塊。視頻編碼設備計算與每個個別宏塊相對應的運動向量(在適當?shù)那闆r 下縮寫為"MV"),然后根據(jù)所計算的當前宏塊的周圍宏塊的運動向量 確定當前宏塊的運動向量預測值(在適當?shù)那闆r下縮寫為"MVP")。視 頻編碼設備隨后對MV和MVP之間的運動向量差(在適當?shù)那闆r下縮寫 為"MVD")編碼,并將其與宏塊信息一起輸出作為經(jīng)編碼的視頻數(shù)據(jù) 流。該視頻流被視頻解碼設備接收。視頻解碼設備對經(jīng)編碼的MVD和宏 塊信息解碼,并根據(jù)MVD和MVP計算運動向量,其中宏塊的MVP可以 根據(jù)已經(jīng)被解碼的周圍塊的運動向量確定。利用這些運動向量,視頻解碼 設備重構原始視頻流。
更具體而言,視頻解碼設備以以下方式產(chǎn)生運動向量。圖25是傳統(tǒng) 的視頻解碼設備中的運動向量計算器的框圖。該視頻解碼設備具有存儲器901、 MVP計算控制器902、運動向量計算控制器903、 4X4塊存儲處理 器904、 MB-A向量存儲管理器905和MB-BCD向量存儲管理器906。符 號"MB-A"指相鄰宏塊A, "MB-BCD"指相鄰宏塊B、 C和D (將在下 面描述)。存儲器901提供向量存儲位置以存儲與最小尺寸塊(即,4X4 子宏塊)相對應的運動向量以供以后參考。這些向量存儲位置被用于存儲 當前被處理的宏塊的運動向量,以及已對與當前宏塊相鄰的宏塊計算的運 動向量。在操作中,圖示的視頻解碼設備在接收到以下幾條信息后開始產(chǎn)生運 動向量宏塊尺寸、子宏塊尺寸和經(jīng)解碼的MVD。 MVP計算控制器902 讀出與當前宏塊相鄰的宏塊的運動向量。基于這些運動向量,MVP計算控 制器902產(chǎn)生當前宏塊的MVP。這里,MVP計算控制器902以最小塊尺 寸為基礎指定要讀取哪些相鄰塊。運動向量計算控制器903隨后從所計算 的MVP和經(jīng)解碼的MVD中再現(xiàn)運動向量。對于每個4X4像素塊(即, 最小塊尺寸),4X4塊存儲處理器904在為當前宏塊保留的向量存儲位置 上復制經(jīng)再現(xiàn)的運動向量。存儲器901還提供向量存儲位置以存儲所計算 的相鄰宏塊的運動向量,與當前宏塊的情形類似,這些向量存儲位置是以 最小塊尺寸為基礎保留的。MB-A和MB-BCD向量存儲管理器905和906 利用相鄰宏塊的運動向量填充這些向量存儲位置(假定4X4最小塊尺 寸)。圖26示出了 16X16宏塊910和其相鄰宏塊,其中運動向量被擴展。 當前被處理的宏塊由符號"Cu"指代,其周圍宏塊被稱為"MB-A"(緊 挨著左邊的)、"MB-B"(緊挨著上面的)、"MB-C"(對角線右上 角)、"MB-D"(對角線左上角)。當讀取參考運動向量時,MVP計算 控制器902以最小塊為基礎指定這些相鄰宏塊。在圖26的示例中,當前焦點(focus)在16X16宏塊910上。則其相 鄰宏塊MB-A是4X4子宏塊911,在當前宏塊910的左側的四個子宏塊的 最上部。類似地,MB-B是4X4子宏塊912,在當前宏塊910的緊挨著上
面的四個子宏塊的最左側。MB-C是4X4子宏塊913,位于當前宏塊910 的右上角的對角線上方。MB-D是4X4子宏塊914,位于當前宏塊910的 左上角的對角線上方。根據(jù)針對這些子宏塊計算的運動向量確定當前宏塊 910的MVP,然后根據(jù)確定的MVP和給定的MVD計算當前宏塊910的 運動向量MVO。 4X4塊存儲處理器904將所計算的運動向量MVO保存在 與當前宏塊910相對應的多個向量存儲位置910-1中。如上所述,多個向量存儲位置910-1被保留在存儲器901中以容納與 最小尺寸塊數(shù)目相等的運動向量。更具體而言,預備了十六個向量存儲位 置,假定尺寸為16X16像素的宏塊被分區(qū)為4X4像素的最小尺寸塊。4 X4塊存儲處理器904將MVO存儲到所有十六個向量存儲位置中。(注 意,圖26只示出了向量存儲位置和宏塊之間的邏輯關系,而不是存儲器 區(qū)域的物理布置。)圖26中所示的配置將所計算的運動向量MVO與構成當前宏塊910的 每一個子宏塊相關聯(lián)。當焦點移到下一宏塊時,宏塊910隨后將被參考作 為針對新的當前宏塊的相鄰宏塊。例如,宏塊910的右上子宏塊現(xiàn)在被參 考作為新的當前宏塊的MB-A。圖26的邏輯配置允許該MB-A的運動向量 被從相應的向量存儲位置911-1讀出。類似地,宏塊910的左下子宏塊在 以后的處理中可被參考作為MB-B或MB-C,在這種情形中MB-B和MB-C的運動向量可以從存儲器901中的向量存儲位置912-1取得。宏塊910 的右下子宏塊可被參考作為MB-D,在這種情形中其運動向量可以在向量 存儲位置914-1處得到。圖27示出了與16X8宏塊相鄰的宏塊。圖示的16X8宏塊921和922 是16X16基本宏塊的上分區(qū)和下分區(qū)。假定當前焦點在上16X8宏塊921 上。隨后參考四個相鄰宏塊MB-A 921a、 MB-B 921b、 MB-C921c和MB-D 921d的現(xiàn)有運動向量計算該宏塊的運動向量。當焦點移到下16X8宏塊 922上時,參考另一組相鄰宏塊MB-A 922a、 MB-B 922b、 MB-C 922c和 MB-D 922d處的現(xiàn)有運動向量計算其運動向量。注意,與相鄰宏塊MB-B 922b相對應的運動向量已被計算作為上16X8宏塊921的運動向量。從以上示例中可見,傳統(tǒng)的方法在與4X4子宏塊相對應的向量存儲
位置中保存了先前已計算的運動向量的多個拷貝。這些存儲的運動向量可 以在以后用于計算另一宏塊的運動向量。圖28A和28B示出了運動向量是如何在多個向量存儲位置中復制的。 具體而言,圖28A示出了寫入16X16宏塊的運動向量的序列,圖28B示 出了寫入16X8宏塊的運動向量的序列。在16X16宏塊的情形中,針對一個基本宏塊產(chǎn)生一個運動向量 MVO,并且該運動向量MVO被寫入在十六個向量存儲位置中。在圖28A 的示例中可見,寫序列由寫使能信號(EN)的上升沿觸發(fā)以在將寫地址 (WAD)從O增大到15的同時寫入相同的運動向量MV0。該操作允許后 續(xù)的運動向量計算過程從這十六個地址中的任何一個取得相同的MVO。在16X8宏塊的情形中,針對16X16基本宏塊的上半部分和下半部 分計算兩個運動向量MVO禾n MV1。 MVO被寫入在與上16X8宏塊921 (圖27)相對應的向量存儲位置中,而MV1被寫入在與下16X8宏塊 922 (圖27)相對應的向量存儲位置中。如圖28B所示,由EN的上升沿 觸發(fā)的向量寫序列開始通過將WAD從0增大到7將MVO寫入到前八個向 量存儲位置中。緊接著,另一系列八個存儲器周期通過將WAD從8增大 到15將MV1寫入到后八個向量存儲位置中。因此,可以通過指定范圍從 0到7的地址,從與上16X8宏塊921相對應的向量存儲位置中取得 MVO。另外,可以通過指定范圍從8到15的地址,從與下16X8宏塊922 相對應的向量存儲位置中取得MV1 。由于先前計算的運動向量的多個拷貝被存儲在與16X16宏塊相對應 的向量存儲位置中,因此后續(xù)對于其他宏塊的處理可以在這些向量存儲位 置中的任何一個處得到該參考運動向量。然而,將運動向量重復地寫入與 16X16宏塊相對應的所有向量存儲位置是費時的。這對于其他尺寸和形狀 的宏塊來說也是一樣的。返回圖25, MB-A向量存儲管理器905將相鄰宏塊MB-A的數(shù)據(jù)存儲 在被保留作為存儲器901的一部分的存儲位置中,以供后續(xù)處理中使用。 在假定宏塊被分區(qū)為4X4子宏塊的情形中,也必需復制數(shù)據(jù)。該假設導 致運動向量計算的處理時間增大。H.264的幀間編碼允許在前向和后向兩個方向上使用多個參考幀以提高預測精度。該特征必然需要更大數(shù)目的向量存儲位置。隨后屏幕尺寸或 像素數(shù)目的增大,視頻編碼和解碼設備將不得不處理更大數(shù)目的宏塊。從 而,在多個位置中復制運動向量的任務將越來越費時。因此,需要開發(fā)一種能加速MVP計算從而可以以高精度預測具有大圖片尺寸的視頻幀的新技術。發(fā)明內容考慮到上述內容,本發(fā)明的目的是提供一種用于處理可變尺寸宏塊以 實現(xiàn)高速幀間預測的設備和方法。本發(fā)明的另一個目的是提供一種采用所 提出的幀間預測設備的視頻編碼設備和視頻解碼設備。為了實現(xiàn)上述第一目的,本發(fā)明提供了一種以塊為基礎執(zhí)行視頻幀的幀間預測的幀間預測處理器。該幀間預測處理器包括以下元件(a)參考圖片存儲器,其提供與最小尺寸塊相對應的向量存儲位置以存儲針對可變尺寸的塊計算的運動向量;(b)地址計算器,其至少基于被指定的塊 的尺寸計算參考圖片存儲器中向量存儲位置的地址;(c)預測值計算 器,其向地址計算器指定與當前塊相鄰的塊以便從其獲得針對被指定的相 鄰塊計算的運動向量的地址,從所獲得的參考圖片存儲器的地址中讀出運 動向量,并基于從參考圖片存儲器中讀出的運動向量確定當前塊的運動向 量預測值;以及(d)參考圖片存儲管理器,其將所計算的運動向量寫入 到在參考圖片存儲器內保留的向量存儲位置中。另外,為了實現(xiàn)上述第二目的,本發(fā)明提供了一種通過以塊為基礎執(zhí) 行源圖片和參考圖片之間的運動補償預測來將視頻幀編碼為壓縮視頻數(shù)據(jù) 的視頻編碼設備。該視頻編碼設備包括以下元件(a)參考圖片存儲 器,其提供與最小尺寸塊相對應的向量存儲位置以存儲針對可變尺寸的塊 計算的運動向量;(b)地址計算器,其至少基于被指定的塊的尺寸計算 參考圖片存儲器中向量存儲位置的地址;(c)預測值計算器,其向地址 計算器指定與當前塊相鄰的塊以便從其獲得針對被指定的相鄰塊計算的運 動向量的地址,從所獲得的參考圖片存儲器的地址中讀出運動向量,并基
于從參考圖片存儲器中讀出的運動向量確定當前塊的運動向量預測值;以 及(d)參考圖片存儲管理器,其將所計算的運動向量寫入到在參考圖片 存儲器內保留的向量存儲位置中。另外,為了實現(xiàn)上述第二目的,本發(fā)明提供了一種從壓縮視頻信號中 重構原始視頻幀的視頻解碼設備,所述壓縮視頻信號是通過以塊為基礎執(zhí) 行運動補償幀間預測產(chǎn)生的。該視頻解碼設備包括以下元件(a)參考 圖片存儲器,其提供與最小尺寸塊相對應的向量存儲位置以存儲針對可變 尺寸的塊計算的運動向量;(b)地址計算器,其至少基于被指定的塊的 尺寸計算參考圖片存儲器中向量存儲位置的地址;(C)預測值計算器, 其向地址計算器指定與當前塊相鄰的塊以便從其獲得針對被指定的相鄰塊 計算的運動向量的地址,從所獲得的參考圖片存儲器的地址中讀出運動向 量,基于從參考圖片存儲器中讀出的運動向量確定當前塊的運動向量預測 值,并從所確定的運動向量預測值和經(jīng)解碼的運動向量差重構所述當前塊 的運動向量;以及(d)參考圖片存儲管理器,其將經(jīng)重構的運動向量寫 入到在參考圖片存儲器內保留的向量存儲位置中。本發(fā)明的以上和其他的目的、特征和優(yōu)點將從下面結合附圖的描述中 變清楚,附圖以示例方式圖示了本發(fā)明的優(yōu)選實施例。
圖1示出了實現(xiàn)本發(fā)明的幀間預測處理器的概念。圖2是根據(jù)本發(fā)明實施例的視頻編碼設備的框圖。圖3是根據(jù)本發(fā)明實施例的視頻解碼設備的框圖。圖4是作為所提出的視頻解碼設備的一個元件的幀間預測器的功能框 圖,其在幀間預測模式中產(chǎn)生運動向量。圖5示出了根據(jù)本實施例的幀結構和向量存儲位置之間的關系。圖6示出了構成16X16基本宏塊的4X4塊和其塊號。圖7A和7B示出了在16X16宏塊的情形中本實施例是如何計算并保 存運動向量的。圖8A和8B示出了在16X8宏塊的情形中本實施例是如何計算并保存
運動向量的。圖9A和9B示出了在8X16宏塊的情形中本實施例是如何計算并保存 運動向量的。圖IOA和IOB示出了在8X8宏塊的情形中本實施例是如何計算并保 存運動向量的。圖IIA和IIB示出了本實施例是如何將宏塊分區(qū)為子宏塊以及如何為 其產(chǎn)生代表性運動向量的。圖12A是另一副示出了本實施例是如何產(chǎn)生子宏塊的運動向量的圖。 圖12B示出了本實施例是如何將代表性運動向量保存在存儲器中的。 圖13示出了地址翻譯表是如何被用于參考16X16宏塊和16X8宏塊的。圖14示出了地址翻譯表是如何被用于參考8X16宏塊、8X8宏塊、8 X4子宏塊、4X8子宏塊和4X4子宏塊的。圖15示出了本實施例是如何將相鄰宏塊的運動向量保存在MB-A向 量存儲位置中的。圖16示出了本實施例是如何將相鄰宏塊的運動向量保存在MB-BCD 向量存儲位置中的。圖17A和17B示出了根據(jù)本實施例的相鄰16X16宏塊和16X8宏塊 的代表性向量存儲位置。圖18A和18B示出了根據(jù)本實施例的相鄰8X16宏塊和8X8宏塊的 代表性向量存儲位置。圖19示出了根據(jù)本實施例的相鄰4X4子宏塊的代表性向量存儲位置。圖20和21示出了地址翻譯表是如何被用于參考MB-A向量存儲位置的。圖22和23示出了地址翻譯表是如何被用于參考MB-BCD向量存儲位 置的。圖24示出了在H.264中定義的宏塊的各種尺寸。
圖26示出了與16X16宏塊相鄰的宏塊和在4X4塊上擴展的運動向圖27示出了與16X8宏塊相鄰的宏塊。圖28A和28B示出了在多個存儲位置中復制運動向量的過程。
具體實施方式
下面將參考附圖描述本發(fā)明的優(yōu)選實施例,附圖中相似的標號在全文 中指代相似的元件。首先描述本發(fā)明的概述,然后描述本發(fā)明的特定實施 例。在該文件的以下部分,宏塊(及其分區(qū))的尺寸和形狀由代表其寬度 和高度的前綴指示。例如,術語"16X8宏塊"表示該宏塊為16個像素寬 以及8個像素高。盡管本實施例應對各種塊尺寸,但是16X16像素的全 尺寸宏塊被稱為"基本宏塊"。還要注意,術語"宏塊"(或簡稱 "塊")在該說明書中用來指用于運動補償?shù)臄?shù)字圖像的基本單元。除非 這種區(qū)別是必要的,否則這種意義上的宏塊指16X16基本宏塊,以及具 有在前面部分中說明的規(guī)定尺寸的宏塊分區(qū)和宏塊子分區(qū)(或子宏塊)。圖1示出了實現(xiàn)本發(fā)明的幀間預測處理器的概念。該實施例意圖用在 視頻編碼設備和視頻解碼設備中,這些設備通過將每個給定的圖片幀劃分 為具有適當尺寸的小區(qū)域(被稱為宏塊)以用于運動向量預測目的來處理 視頻數(shù)據(jù)流。塊尺寸(即,宏塊的面積尺寸)是取決于圖像運動幅度或冃 標的所需分辨率而從若干個規(guī)定尺寸中選出的。本發(fā)明并不討論如何確定 塊尺寸的細節(jié),因為某些現(xiàn)有的技術文獻已經(jīng)提供了這些信息。幀間預測處理器用于參考周圍塊的運動向量(MV)計算特定宏塊的 運動向量預測值(MVP)。為此,所提出的幀間預測處理器包括以下元 件參考圖片存儲器1、預測值計算器2、地址計算器3和參考圖片存儲 管理器4。參考圖片存儲器1存儲包括與當前被處理的宏塊相鄰的那些宏塊的多 個宏塊的運動向量,這些相鄰宏塊可以在計算該當前宏塊的MVP時被參 考。參考圖片存儲器1提供至少兩組保留的向量存儲位置。 一組用于存儲 在當前被處理的基本宏塊中包括的宏塊的運動向量。另一組用于存儲與當
前宏塊相鄰的被參考宏塊的運動向量。每組向量存儲位置可以容納最大數(shù) 目的運動向量,該最大數(shù)目是根據(jù)基本宏塊的分區(qū)的最小尺寸確定的。例如,在H.264的情形中, 一個16X16基本宏塊可被劃分為16個4X4子宏 塊。在假定該分區(qū)的最小尺寸的情況下,參考圖片存儲器l針對每個16X 16基本宏塊提供了 16個向量存儲位置。針對可變尺寸宏塊計算的運動向 量可被存儲在與一個基本宏塊相對應的這十六個向量存儲位置之一中。 即,當當前被處理的宏塊例如是16X16基本宏塊時,其運動向量不被輸 入到全部十六個向量存儲位置,而是被輸入到從這十六個位置中選出的-個向量存儲位置。根據(jù)規(guī)定規(guī)則進行適當?shù)倪x擇,這種規(guī)則對于每種不同 形狀的宏塊是唯一的。選出的向量存儲位置在下文中將被稱為"代表性向 量存儲位置",并且存儲在該位置中的運動向量將被稱為"代表性向預測值計算器2向地址計算器3指定具體的相鄰宏塊以獲得其在參考 圖片存儲器1中的相應代表性向量存儲位置的存儲器地址。所獲得的存儲 器地址被用于從參考圖片存儲器1中讀出期望的運動向量?;谶@些運動 向量,預測值計算器2計算當前塊的MVP。在視頻編碼的情形中,這種 MVP和MV之間的運動向量差(MVD)被計算并被壓縮以遞送到解碼器 設備。在視頻解碼的情形中,預測值計算器2從所計算的MVP和解碼的 MVD中再現(xiàn)運動向量。再現(xiàn)的運動向量被用于重構視頻圖片。當從預測值計算器2接收到指定相鄰宏塊的地址請求時,地址計算器 3基于所指定的相鄰宏塊的塊尺寸確定其相應代表性向量在參考圖片存儲 器1中的存儲器地址。針對在先宏塊計算的運動向量可以在與這些宏塊相 對應的代表性向量存儲位置中得到。由于與特定宏塊相對應的代表性向量 存儲位置可以唯一地從該宏塊的塊尺寸確定,因此地址計算器3首先杳看 給定的地址請求以指出指定宏塊的尺寸。地址計算器3根據(jù)塊尺寸計算存 儲器地址,并將其傳遞回預測值計算器2。如下文中詳細所述,地址計算 器3可被設計為使用將代表性向量存儲位置的存儲器地址值與不同的塊尺 寸相關聯(lián)的翻譯表。參考圖片存儲管理器4在適當?shù)南蛄看鎯ξ恢弥写鎯Υ硇韵蛄恳怨?參考,以計算下一宏塊和后續(xù)宏塊的運動向量。相鄰的宏塊向量存儲位置 已被保留在參考圖片存儲器1中,以存儲用于計算其他宏塊的MVP的運 動向量。在操作中,預測值計算器2按預定順序連續(xù)選擇給定源圖片的宏塊,以計算每個宏塊的運動向量。參考圖片存儲器1在先前保留的代表性向量 存儲位置中尺寸針對在先宏塊計算的代表性運動向量。為了計算當前選擇的宏塊的MVP,預測值計算器2需要與圍繞當前宏塊的相鄰宏塊相對應的 每個代表性向量存儲位置的存儲器地址。因此,預測值計算器2將地址請 求發(fā)送到地址計算器3,指定想要知道的這些相鄰宏塊。地址計算器3基 于該宏塊的塊尺寸計算每個指定的相鄰宏塊的存儲器地址。利用從地址計 算器3接收到的存儲器地址,預測值計算器2從參考圖片存儲器1中取得 相關的運動向量,從而產(chǎn)生MVP。在視頻編碼應用中,MVP被用于計算 要編碼的運動向量差MVD。在視頻解碼應用中,MVP被用于從解碼后的 MVD中重構運動向量。參考圖片存儲管理器4在向量存儲位置之一中保 存所計算的當前宏塊的運動向量,以便該向量可以在以后被參考作為相鄰 宏塊的運動向量。從上文中可見,所提出的幀間預測處理器采用地址計算器3來提供存 儲先前計算的運動向量的代表性向量存儲位置的地址。地址計算器3消除 了在參考圖片存儲器1中的多個存儲位置內復制所計算的運動向量以允許 使用最小塊尺寸的需要。從而,本實施例減少了運動向量計算的處理時 間。H.264視頻編碼設備這一部分和以下的部分將討論H.264視頻編碼和解碼設備作為本發(fā)明 的更加具體的實施例。如前所述,H.264標準提供了以下的宏塊尺寸選 項16X16、 16X8、 8X16禾卩8X8。如果選擇8X8,則這四個8X8宏塊 分區(qū)中的每一個可被分割為具有以下尺寸的更小的塊8X8、 8X4、 4X8 和4X4 (被稱為宏塊子分區(qū))。基線編碼算法以宏塊為基礎對每個給定的 源幀進行編碼,在利用一個幀內的空間冗余的幀內編碼和利用連續(xù)幀之間 的時間冗余的幀間編碼之間切換。解碼算法遵循與之相反的過程。
盡管H.264允許雙向運動預測,但是下面的描述假定了前向預測以進行簡化。然而,本發(fā)明不應當限于前向預測。本領域技術人員將意識到, 通過添加某些存儲器區(qū)域以存儲過去和未來參考幀的運動向量,本發(fā)明也 可以應用于雙向預測。圖2是根據(jù)本發(fā)明實施例的視頻編碼設備的框圖。圖示的視頻編碼設 備IOO包括以下元件宏塊劃分器101、運動向量估計器102、過去幀緩 沖器103、幀間預測器104、幀內預測器105、當前幀緩沖器106、預測模 式選擇器107、減法器108、正交變換和量化單元109、熵編碼器110、解 量化和反向正交變換單元111、加法器112、解塊濾波器113和幀緩沖器 管理器114。宏塊劃分器101將給定源圖片劃分為預定尺寸的宏塊。運動向量估計 器102將源宏塊的視頻信號分量與存儲在過去幀緩沖器103中的參考宏塊 的視頻信號分量相比較,從而計算該源宏塊的運動向量。由于鄰近塊的運 動向量經(jīng)常是高度相關的,因此可以從周圍塊的向量中預測出某個塊的運 動向量。從而,幀間預測器104根據(jù)周圍的運動向量計算運動向量預測值 MVP,然后通過從真實運動向量中減去MVP來計算運動向量差MVD。另 一方面,幀內預測器105執(zhí)行存儲在當前幀緩沖器106中的幀的幀內編 碼。預測模式選擇器107例如通過將幀間預測器104的預測誤差與幀內預 測器105的預測誤差相比較,來選擇使得當前宏塊的編碼效率最大的編碼 模式。預測模式選擇器107創(chuàng)建編碼模式參數(shù)以指示選擇結果。編碼模式 參數(shù)被傳遞到熵編碼器110,作為要進行熵編碼的數(shù)據(jù)的一部分。編碼模 式參數(shù)包括宏塊分區(qū)的尺寸和子宏塊分區(qū)的尺寸。當選擇幀內模式時,劃分后的源宏塊被原樣從宏塊劃分器101提供給 正交變換和量化單元109。這些宏塊被進行正交變換和量化,所得到的變 換系數(shù)被傳遞到熵編碼器110以進行熵編碼和傳輸。變換系數(shù)還被解量化 和反向正交變換單元111解碼并被發(fā)送到當前幀緩沖器106中。當選擇幀間模式時,幀間預測器104向熵編碼器110提供MVD以用 于熵編碼。另外,利用MVP預測的圖片通過預測模式選擇器107被給予
減法器108。減法器108以宏塊為基礎從源圖片中減去預測的圖片,并將結果發(fā)送到正交變換和量化單元109。經(jīng)量化的輸出數(shù)據(jù)被解量化和反向 正交變換單元111本地解碼并被導向加法器112,在加法器112處添加通 過預測模式選擇器107提供的預測圖片。所得到的圖片被寫入到當前幀緩 沖器106中。熵編碼器IIO利用熵編碼算法對給定數(shù)據(jù)編碼,從而輸出攜 帶有壓縮形式的視頻數(shù)據(jù)的經(jīng)編碼視頻信號。存儲在當前幀緩沖器106中 的參考圖片受到解塊濾波器113的處理,在解塊濾波器113處對宏塊之間 的邊界區(qū)域進行平滑。所得到的圖片被通過幀緩沖器管理器U4輸入到過 去幀緩沖器103。H.264視頻解碼設備圖3是根據(jù)本發(fā)明實施例的視頻解碼設備的框圖。圖示的視頻解碼設 備200由以下元件構成熵解碼器201、解量化和反向正交變換單元 202、加法器203、當前幀緩沖器204、幀內預測器205、預測模式選擇器 206、解塊濾波器207、幀緩沖器管理器208、過去幀緩沖器209和幀間預 測器210。利用這些元件,視頻解碼設備200對由圖2的視頻編碼設備 100產(chǎn)生的經(jīng)編碼視頻信號進行解碼。給定的經(jīng)編碼視頻信號被熵解碼器201進行熵解碼,然后被解量化和 反向正交變換單元202解量化并反向變換。該解碼過程的結果包括MVD 形式的運動向量數(shù)據(jù)和編碼模式參數(shù)等等?;诰幋a模式參數(shù),預測模式 選擇器206選擇幀內預測器205或幀間預測器210。當選擇幀內預測器205時,由解量化和反向正交變換單元202重構的 圖片幀被路由到當前幀緩沖器204。當選擇預測模式選擇器206時,運動 向量差MVD被解碼回視頻編碼設備100針對各個宏塊產(chǎn)生的原始運動向 量。利用所得到的運動向量,幀間預測器210再現(xiàn)預測圖片,并將預測圖 片通過預測模式選擇器206提供給加法器203。在解量化和反向正交變換 單元202處解碼的預測誤差隨后被添加到該預測圖片。所得到的經(jīng)解碼圖 片被輸入到當前幀緩沖器204。當前幀緩沖器204中的該圖片數(shù)據(jù)被通過 解塊濾波器207和幀緩沖器管理器208傳送到過去幀緩沖器209之一。上述視頻解碼設備中的幀間預測器210按以下方式對運動向量解碼。 圖4是幀間預測器210的功能框圖。具體而言,幀間預測器210包括以下 元件存儲器211、 MVP計算器212、地址翻譯器213、運動向量計算器 214、 MB-A向量存儲管理器215和MB-BCD向量存儲管理器216。如前 所述,當前宏塊由符號"Cu"指代,其相鄰宏塊被稱為"MB-A"(緊挨 著左邊的)、"MB-B"(緊挨著上面的)、"MB-C"(對角線右上 角)、"MB-D"(對角線左上角)。另外,三個相鄰宏塊MB-B、 MB-C 和MB-D被統(tǒng)稱為符號"MB-BCD"。存儲器211存儲先前已針對在先宏塊計算的運動向量。這些運動向量 中的某一些被用于計算當前宏塊的MVP。存儲器211還提供用于當前塊的 運動向量的存儲空間。更多細節(jié)將在下面描述。MVP計算器212向地址翻譯器213指定圍繞當前宏塊的每個相關的相 鄰宏塊,從而獲得存儲器211中每個相應的代表性向量存儲位置的地址。 利用從所獲得的地址中讀出的代表性向量,MVP計算器212計算MVP。 盡管有各種確定MVP的方式,但是本實施例計算相鄰宏塊的運動向量的 中值作為運動向量預測值MVP:MVP-中值(MV畫A, MV-B, MV-C) ......(1)其中MV-A、 MV-B和MV-C分別指相鄰宏塊MB-A、 MB-B和MB-C的運動向量。在當前宏塊位于幀的右邊的情形中(其中不可獲得MV-C),公式(1)中的運動向量MV-C可被替換以另一個宏塊MB-D的運動向量MV-D。三個變量x、 y和z的中值表達如下中值(x, y, z)=x+y+z-Min(x, Min(y, z))-Max(x, Max(y, z))......(2)其中Min(x, y)指x和y中的較小值,Max(x, y)指x和y中的較大值。 地址翻譯器213將給定的相鄰宏塊尺寸(或子宏塊尺寸)翻譯為代表性向量存儲位置地址。運動向量計算器214按以下方式根據(jù)由MVP計算器212計算的MVP和經(jīng)解碼MVD重構運動向量 MV=MVP+MVD......(3)所得到的運動向量MV被保存在存儲器211中,更具體而言,是保存 在與當前宏塊相對應的代表性向量存儲位置中。存儲器211維護先前針對每個宏塊計算的運動向量。MB-A向量存儲
管理器215讀出這些存儲中與一個宏塊相對應的運動向量之一,以在后續(xù)的向量預測過程中被參考作為相鄰宏塊MB-A,并將其輸入到MB-A向量 存儲位置。類似地,MB-BCD向量存儲管理器216讀出與宏塊相對應的存 儲的運動向量,以在后續(xù)的向量預測過程中被參考作為相鄰宏塊MB-B、 MB-C和MB-D,并將其輸入到同一存儲器211中保留的MB-BCD向量存 儲位置。上述幀間預測器210根據(jù)在本實施例中提出的幀間預測方法進行操 作。幀間預測的細節(jié)將在下面的部分中給出。 運動向量的存儲器布置根據(jù)本實施例,存儲器211提供針對計算的運動向量保留的向量存儲 位置。具體而言,圖5示出了根據(jù)本實施例幀結構和若干類向量存儲位置 之間的關系。對于幀間預測,給定幀300被劃分為多個16X16基本宏塊 301,其中宏塊的尺寸可以按需要變化。根據(jù)本實施例,存儲器211提供當前塊向量存儲位置310以存儲針對 當前宏塊Cu計算的運動向量。還提供了相鄰塊數(shù)據(jù)存儲位置320、 331和 332以存儲相鄰宏塊MB-A和MB-BCD的運動向量。假定16X16基本宏 塊被分區(qū)為十六個4X4基本宏塊,即最小尺寸分區(qū),當前宏塊存儲位置 310可以容納高達十六個向量。相鄰塊向量存儲位置被劃分為兩類。 一類是用于存儲作為相鄰宏塊 MB-A被參考的宏塊的運動向量的MB-A向量存儲位置320。 MB-A向量 存儲位置320被映射到當前宏塊Cu左邊的四個垂直對齊的4X4子宏塊 上。當當前宏塊Cu 310的運動向量在當前塊向量存儲位置中變得可用時, MB-A向量存儲管理器215將它們拷貝到這些MB-A向量存儲位置320。 細節(jié)將在后面參考圖15描述。另一類是被保留來存儲作為相鄰宏塊MB-B、 MB-C和MB-D被參考 的宏塊的運動向量的MB-BCD向量存儲位置331和332。 MB-BCD向量存 儲位置331被映射到緊挨著當前宏塊Cu 310上方的4X4子宏塊的最下一 行上。該行包括相鄰宏塊MB-B、 MB-C和MB-D。 MB-BCD向量存儲位 置332被映射到當前宏塊Cu 310所屬的幀線上的4X4子宏塊的最下一行 上。當當前宏塊CU的運動向量在當前塊向量存儲位置310中變得可用時,MB-BCD向量存儲管理器216將它們拷貝到MB-BCD存儲位置332。 MB-BCD存儲位置332中的這些運動向量將在焦點到達幀的下一條線時被 參考。更多細節(jié)將在后面參考圖16描述。隨著處理焦點的移動,存儲在存儲器211中的以上向量存儲位置內的 運動向量被更新。例如,假定焦點從當前宏塊移到下一宏塊311。已被用 于存儲在先宏塊的運動向量的向量存儲位置隨后開始為新的當前宏塊311 服務。從而,MB-A向量存儲位置320被用于存儲前一宏塊的運動向量。 MB-BCD向量存儲位置331和332也以類似方式被重寫。子宏塊標號為了說明方便,基本宏塊的4X4子宏塊分區(qū)按以下方式標號。圖6 示出了被分配給構成16X16基本宏塊340的十六個子宏塊的框號。具體 而言,圖示的16X16基本宏塊340首先被分區(qū)為四個8X8宏塊,并且標 號過程按左上、右上、左下和右下的順序進行。另外,每個8X8宏塊被 分區(qū)為四個4X4子宏塊,并且所得到的左上、右上、左下和右下的塊按 該順序標號。因此,構成左上8X8宏塊的左上、右上、左下和右下子塊 分別被標號為bO、 bl、 b2和b3。然后構成右上8X8宏塊的左上、右上、 左下和右下子塊分別被標號為b4、 b5、 b6和b7。類似地,構成左下8X8 宏塊的四個4X4子宏塊被標號為b8到bll,構成右下8X8宏塊的四個4 X4子宏塊被標號為b12到b15。在下一部分中,以上定義的塊號b0到b15將被用于指代與宏塊分區(qū) 相對應的向量存儲位置。運動向量計算和存儲管理再次參考圖5, MVP計算器212咨詢地址翻譯器213以獲得存儲有每 個被參考的相鄰宏塊的運動向量的存儲器地址。MVP計算器212從所獲得 的存儲器地址中讀出所需的運動向量,并根據(jù)公式(1)計算MVP。然后 利用公式(3),運動向量計算器214根據(jù)所計算的MVP和經(jīng)解碼MVD 產(chǎn)生運動向量MVO,然后將結果寫到存儲器211中的代表性向量存儲位置 中?,F(xiàn)在假設該代表性向量存儲位置對應于當前宏塊的左上角處的4X4
子宏塊。圖7A和圖7B示出了在16X16宏塊的情形中本實施例如何產(chǎn)生運動 向量和如何將它們存儲到存儲器中。MVP計算器212讀出與16X16當前 宏塊Cu 400相鄰的MB-A的b5 400a、 MB-B的b10 400b、 MB-C的b10 400c和MB-D的b15 400d的運動向量,從而根據(jù)公式(1)計算MVP。然 后利用公式(3),運動向量計算器214根據(jù)所計算的MVP和經(jīng)解碼的 MVD產(chǎn)生運動向量MVO。所計算的運動向量MVO被存儲在位于當前宏 塊Cu400的左上角的bO 401中。參考圖7B的序列圖,EN信號發(fā)起將MVO寫入到地址WAD=0的存 儲位置bO中的寫周期。當隨后的MVP計算過程參考該向量時,地址翻譯 器213自動提供上述存儲地址,從而消除了在存儲器211中的預定向量存 儲位置上復制同一向量的需要。即,所提出的方法只寫入一個地址,而傳 統(tǒng)方法寫入十六個地址。本實施例極大地減少了處理時間。圖8A和8B示出了本實施例是如何產(chǎn)生代表性運動向量以及在16X8宏塊的情形中是如何將其保存到存儲器中的過程。假定當前焦點在上16X8宏塊CuO 411上。MVP計算器212從與16X 8當前宏塊CuO 411相鄰的MB-A的b5 411a、 MB陽B的b10 411b、 MB-C 的b10 411c和MB-D的b15 411d讀取運動向量。MVP計算器212根據(jù)這 些運動向量確定MVP,從而允許運動向量計算器214計算當前宏塊CuO 411的運動向量MVO。所計算的運動向量MVO被存儲在位于當前宏塊 CuO 411的左上角的塊b0 412中?,F(xiàn)在假定焦點移到下16X8宏塊Cul 413。 MVP計算器212從與16X 8當前宏塊Cul 413相鄰的MB-A的b13 413a、 CuO 411的b2 413b (如同 MB-B —樣)和MB-D的b7 413d讀取運動向量。MVP計算器212根據(jù)這 些運動向量確定MVP,從而允許運動向量計算器214計算當前宏塊Cul 413的運動向量MV1。注意,對于位于相鄰宏塊MB-C位置處的宏塊X 413c沒有計算運動向量。由此,運動向量MV1通過修改公式(1)以使得 運動向量MV-A、 MV-B和MV-D的中值被選擇來計算。所計算的MV1 隨后被存儲在位于當前宏塊Cul 413的左上角的b8 414中。
參考圖8B的序列圖,EN信號被兩次斷言以發(fā)起兩個寫周期。第一寫 周期將MVO存儲到地址WAD=0的存儲位置b0中。第二寫周期將MV1 存儲到地址WAD=8的另一個存儲位置b8中。圖9A和9B示出了本實施例是如何產(chǎn)生代表性運動向量以及在8X16 宏塊的情形中是如何將其保存到存儲器中的過程。假定當前焦點在左8X 16宏塊CuO 421上。MVP計算器212從與8X16當前宏塊CuO 421相鄰的 MB-A的b5 421a、 MB-B的b10 421b、 MB-C的b14 421c和MB-D的b15 421d讀取運動向量。MVP計算器212根據(jù)這些運動向量確定MVP,從而 允許運動向量計算器214計算當前宏塊CuO 421的運動向量MVO。所計算 的運動向量MVO被存儲在位于當前宏塊CuO 421的左上角的b0 422中?,F(xiàn)在假定焦點移到右8X16宏塊Cul 423。 MVP計算器212從與16X 8當前宏塊CuO 411相鄰的MB-A的bl 423a (=前一 8X 16宏塊CuO)、 MB-B的b14 423b、 MB-C的blO 423c和MB-D的bll 423d讀取運動向 量。MVP計算器212根據(jù)這些運動向量確定MVP,從而允許運動向量計 算器214計算當前宏塊Oil 423的運動向量MV1。所計算的運動向量 MV1被存儲在位于當前宏塊Cul 423的左上角的b4 424中。參考圖9B的序列圖,EN信號被兩次斷言以發(fā)起兩個寫周期。第一寫 周期將MV0存儲到地址WAD=0的存儲位置b0中。第二寫周期將MV1 存儲到地址WAD=4的另一個存儲位置b4中。圖IOA和IOB示出了本實施例是如何產(chǎn)生代表性運動向量以及在8X8宏塊的情形中是如何將其保存到存儲器中的過程。假定當前焦點在左上 8X8宏塊Cu0 431上。MVP計算器212從與當前宏塊Cu0 431相鄰的MB-A的b5 431a、 MB-B的b10 431b、 MB-C的b14 431c和MB-D的b15 431d 讀取運動向量。MVP計算器212根據(jù)這些運動向量確定MVP,從而允許 運動向量計算器214計算當前宏塊Cu0 431的運動向量MV0。所計算的運 動向量MV0被存儲在位于當前宏塊Cu0 431的左上角的b0 432中。假定焦點移到右上8X8宏塊Cul 433。則MVP計算器212從圍繞當 前宏塊Cul 433的MB-A的bl 433a (=前一 8X8宏塊CuO) 、 MB-B的 bl4 433b、 MB-C的bl0 433c和MB-D的b11 433d讀取運動向量。MVP計
算器212根據(jù)這些運動向量確定MVP,從而允許運動向量計算器214計算 當前宏塊Cul 433的運動向量MV1。所計算的運動向量MV1被存儲在位 于當前宏塊Cul 433的左上角的b4 434中。
假定焦點移到左下8X8宏塊Cu2 435。則MVP計算器212從圍繞當 前宏塊Cu2 435的MB-A的b13 435a、 MB-B的b2 435b (=左上8 X 8宏塊 CuO 431) 、 MB誦C的b6 435c (=右上8X8宏塊Cul 433)禾卩MB-D的b7 435d讀取運動向量。MVP計算器212根據(jù)這些運動向量確定MVP,從而 允許運動向量計算器214計算當前宏塊Cu2 435的運動向量MV2。所計算 的運動向量MV2被存儲在位于當前宏塊Cu2 435的左上角的b8 436中。
假定焦點移到右下8X8宏±央Cu3 437。則MVP計算器212從圍繞當 前宏塊Cu3 437的MB-A的b9 437a (=在先8X8宏塊Cu2 435) 、 MB-B 的b6 437b (=右上宏塊Cul 433)和b3 437d (=左上宏塊CuO 431)讀取 運動向量。MVP計算器212根據(jù)這些運動向量確定MVP,從而允許運動 向量計算器214計算當前宏塊Cu3 437的運動向量MV3。注意,在該過程 中不考慮在MB-C位置處的分區(qū)X 437c。所得到的向量MV3被存儲在位 于當前宏塊Cu3 437的左上角的b12 438中。
參考圖10B的序列圖,EN信號被四次斷言以發(fā)起四個寫周期。第-寫周期將MVO存儲到地址WAD=0的存儲位置b0中。第二寫周期將MV1 存儲到地址WAD=4的另一個存儲位置b4中。第三寫周期將MV2存儲到 地址WAD=8的另一個存儲位置b8中。第四寫周期將MV3存儲到地址 WAD=12的另一個存儲位置b12中。
圖IIA、 IIB、 12A和12B示出了本實施例是如何將宏塊分區(qū)為子宏塊以及如何產(chǎn)生并保存子宏塊的代表性運動向量的過程。具體而言,圖 IIA示出了宏塊子分區(qū)的示例,圖UB示出了針對子宏塊SB0到SB2產(chǎn)生 的代表性運動向量。圖12A示出了針對另一個子宏塊SB3產(chǎn)生的代表性運 動向量。圖12B是示出了如何在存儲器211中保存所得到的運動向量的序 列圖。
參考圖IIA,圖IIA示出了宏塊子分區(qū)的示例。每個8X8宏塊可被 分區(qū)為更小的塊。具體而言,左上8X8宏塊實際不被分區(qū),而是仍保持
為單個8X8塊SB0 441。右上8X8宏塊被劃分為兩個8X4塊,SB1-0 451 和SB1陽1 453。左下8X8宏塊被劃分為兩個4X8塊,SB2誦0 461和SB2-1 463。右下8X8宏塊被劃分為四個4X4塊,SB3-0 471、 SB3-1 472、 SB3-2 473和SB3-3 474。參考圖IIB,按以下方式確定這些子宏塊的運動向量。針對左上子宏 塊SB0 441,根據(jù)周圍塊的運動向量確定運動向量MVO,并保存在位于 SBO 441的左上角的bO 442中。針對上8X4子宏塊SB1-0 451 ,根據(jù)周圍 塊的運動向量確定運動向量MV1,并保存在與SB1-0 451的左半部分相對 應的b4 452中。類似地,針對下8X4子宏塊SB1-1 453產(chǎn)生運動向量 MV2,并保存在與SB1-1 453的左半部分相對應的b6 454中。以類似方 式,針對左4X8子宏塊SB2-0 461產(chǎn)生運動向量MV3,并保存在b8 462 中,針對右4X8子宏塊產(chǎn)生運動向量MV4,并保存在b9464中。參考圖12A,分別針對最小尺寸的子宏塊SB3-0 471、 SB3-1 472、 SB3-2 473禾卩SB3-3 474確定運動向量MV5、 MV6、 MV7禾卩MV8。這些 運動向量被保存在其相應的存儲位置b12、 b13、 bl4和bl5中。參考圖12B的序列圖,EN信號發(fā)起九個寫周期。第一寫周期將MVO 存儲到地址WAD=0的b0中,第二寫周期將MV1存儲到地址WAD=4的 b4中。第三寫周期將MV2存儲到地址WAD=6的b6中,第四寫周期將 MV3存儲到地址WAD=8的b8中。第五寫周期將MV4存儲到地址 WAD=9的b9中,第六寫周期將MV5存儲到地址WAD=12的b12中。第 七寫周期將MV6存儲到地址WAD=13的b13中,第八寫周期將MV7存 儲到地址WAD=14的b14中。最后,第九寫周期將MV8存儲到地址 WAD=15的bl5中。本實施例僅在特定的向量存儲位置(例如,與左上塊相對應的一個位 置)中保存所產(chǎn)生的運動向量,該特定存儲位置代表了產(chǎn)生該向量的宏塊 域。從圖7A到10B中可見,對于被分區(qū)的基本宏塊的預測過程在分區(qū)尺 寸為8X8或更大時至多涉及四個寫周期。只有當每個分區(qū)是4X4塊時,基本宏塊的全部十六個存儲位置才被填滿。在大多數(shù)情形中,與傳統(tǒng)過程 不同,利用較小數(shù)目的寫周期完成了預測過程。從而,本實施例減少了預 測運動向量所需的時間。上述過程允許運動向量被存儲在向量存儲位置310、 320、 331和332 中,這些向量存儲位置是為當前宏塊Cu和其周圍的宏塊MB-A和MB-BCD保留的,如圖5中所述。地址翻譯地址翻譯器213通過將指定相鄰宏塊的給定信息翻譯為與該宏塊相對 應的代表性向量存儲位置的特定地址,來為MVP計算器212服務。艮IJ, 地址翻譯器213從MVP計算器212接收指定要參考的4X4相鄰宏塊的一 條信息。更具體而言,MVP計算器212發(fā)送期望的16X16基本宏塊的標 識符以及特定的塊號(例如,圖6中所示的b0到b15)。地址翻譯器213 具有地址翻譯表,該表將宏塊尺寸和子宏塊尺寸與代表性向量存儲位置相 關聯(lián),以提供與指定的相鄰宏塊相對應的地址。如前在圖5中所述,本實施例從與相鄰宏塊MB-A和MB-BCD相對 應的向量存儲位置320、 331和332中讀出參考運動向量(當該參考運動 向量位于當前被處理的宏塊Cu外部時)。具體的參考運動向量是外部向 量還是內部向量不僅取決于當前宏塊的形狀,還取決于當前宏塊的位置。 這一部分將首先說明內部運動向量的情形,然后說明外部運動向量的情 形。出于說明目的,我們假定外部向量可以按與內部向量相同的方式處 理。即,假定每一宏塊中的運動向量按與圖5的當前宏塊Cu相同的方式 存儲。圖13和14示出了地址翻譯表在本實施例中是如何起作用的。具體而 言,圖13示出了地址翻譯表是如何用于參考16X16宏塊和16X8宏塊 的。圖14示出了地址翻譯表是如何用于參考8X16宏塊、8X8宏塊、8X 4子宏塊、4X8子宏塊和4X4子宏塊的。當相鄰宏塊是16X16宏塊時,MVP計算器212可以在其地址請求中 指定十六個塊b0到b15之一。然而,這種情形中,代表性向量只存儲在 與塊b0相對應的一個向量存儲位置中,如圖7中所述。因此,響應于來 自MVP計算器212的請求,地址翻譯器213返回塊b0的向量存儲位置地
址,而不論在該請求中指定了哪一個塊。被參考作為相鄰宏塊的宏塊已經(jīng) 經(jīng)受了向量預測處理,這意味著其尺寸是已知的。因此,該實施例可被配 置為將這種相鄰宏塊的尺寸信息保留在存儲器中的某處以供以后參考。當相鄰宏塊是上16X8宏塊時,MVP計算器212可以在其地址請求中 指定前八個塊b0到b7之一。這種情形中,代表性向量被存儲在與塊bO相 對應的向量存儲位置中,如圖8中所述。因此,響應于來自MVP計算器 212的請求,地址翻譯器213返回塊b0的向量存儲位置地址,而不論在該 請求中指定了哪一個塊。當相鄰宏塊是下16X8宏塊(未示出)時,MVP計算器212可以在其 地址請求中指定后八個塊b8到b15之一。這種情形中,代表性向量被存 儲在與塊b8相對應的向量存儲位置中,如圖8中所述。因此,地址翻譯 器213向MVP計算器212返回塊b8的向量存儲位置地址,而不論在該請 求中指定了哪一個塊。參考圖14,當相鄰宏塊是左8X16宏塊時,MVP計算器212可以在 其地址請求中指定以下塊之一b0、 bl、 b2、 b3、 b8、 b9、 b10禾n bll。 這種情形中,代表性向量被存儲在與塊b0相對應的向量存儲位置中,如 圖9中所述。因此,地址翻譯器213向MVP計算器212返回塊b0的地 址。當相鄰宏塊是右8X16宏塊(未在圖14中示出)時,MVP計算器 212可以在其地址請求中指定以下塊之一b4、 b5、 b6、 b7、 b12、 b13、 bl4和bl5。這種情形中,代表性向量被存儲在與塊b4相對應的向量存儲 位置中,如圖9中所述。因此,地址翻譯器213向MVP計算器212返回 塊b4的地址。當相鄰宏塊是左上8X8宏塊時,MVP計算器212可以指定塊b0、 bl、 b2或b3。這種情形中,代表性向量被存儲在與塊bO相對應的向量存 儲位置中,如圖10中所述。因此,地址翻譯器213向MVP計算器212返 回塊b0的地址。類似地,當MVP計算器212指定右上8X8宏塊(未在 圖14中示出)和塊b4、 b5、 b6或b7時,地址翻譯器213返回塊b4的代 表性向量存儲位置的地址。當MVP計算器212指定左下8X8宏塊(未在
圖14中示出)和塊b8、 b9、 blO或bll時,地址翻譯器213返回塊b8的 代表性向量存儲位置的地址。當MVP計算器212指定右下8X8宏塊(未 在圖14中示出)和塊b12、 b13、 b14或b15時,地址翻譯器213返回塊 b12的代表性向量存儲位置的地址。運動向量計算器214可以請求子宏塊的地址。下面的描述說明了地址 翻譯器213是如何處理該請求的,為了簡化,假定所指定的子宏塊屬于左 上8X8宏塊。地址翻譯器213以類似的方式處理其他類型的子宏塊,以 根據(jù)指定的塊尺寸和位置唯一地確定代表性向量存儲位置。在左上8X8宏塊的上8X4子宏塊的情形中,運動向量計算器214可 以指定塊b0或塊bl作為相鄰宏塊。這種情形中,代表性向量存儲位置是 與塊b0相對應的向量存儲位置。因此,地址翻譯器213向運動向量計算 器214返回該向量存儲位置的地址。在左上8X8宏塊的左8X4子宏塊的情形中,運動向量計算器214可 以指定塊b0或塊b2作為相鄰宏塊。這種情形中,代表性向量存儲位置是 與塊b0相對應的向量存儲位置。因此,地址翻譯器213向運動向量計算 器214返回該向量存儲位置的地址。在左上8X8宏塊的左上4X4子宏塊的情形中,運動向量計算器214 可以指定塊b0作為相鄰宏塊。這種情形中,代表性向量存儲位置是與塊 bO相對應的向量存儲位置。因此,地址翻譯器213向運動向量計算器214返回該向量存儲位置的地址。從上文中可見,代表性向量存儲位置可以通過利用相鄰宏塊的宏塊尺 寸和子宏塊尺寸以及指定的塊位置(b0到b15)對翻譯表執(zhí)行查找來加以 確定。該特征允許MVP計算器212得到由運動向量計算器214存儲在代 表性向量存儲位置中的運動向量。盡管圖13和14中所示的并不是每se的翻譯表,但是所提出的地址翻譯表的基本功能是從指定的相鄰宏塊尺寸和塊位置的組合中導出存儲地 址。因此,該翻譯表可以是能夠將相鄰宏塊的宏塊尺寸和子宏塊尺寸以及 指定的塊位置(b0到b15)與特定的代表性向量存儲位置相關聯(lián)的任何形 式。
代表性向量存儲位置在期望參考運動向量位于當前宏塊Cu外部的情形中,本實施例按以下方式操作。例如,假定當前焦點在16X16基本宏塊上。這種情形中, 每個參考運動向量必須在為相鄰宏塊MB-A和MB-BCD保留的向量存儲 位置320、 331和332 (圖5)中的某處找到。圖15示出了本實施例是如何將相鄰宏塊的運動向量保存在MB-A向 量存儲位置中的。假定當前焦點在宏塊501上。用于該當前宏塊501的向 量預測過程參考其相鄰塊MB-A (AO、 Al、 A2、 A3)。在當前宏塊501 之前的宏塊502已被處理,并且所得到的運動向量被存儲在向量存儲位置 中作為代表性運動向量。MB-A向量存儲管理器215讀出相關的代表性運 動向量,并將其存儲在與MB-A (A0、 Al、 A2、 A3)相對應的存儲位置 中。在多個代表性運動向量存在于同一行上的情形中,MB-A向量存儲管 理器215選擇最右側的向量,并將其輸入到相應的MB-A向量存儲位置。 例如,當宏塊502被水平分區(qū)為8X 16宏塊時,針對AO行上的兩個塊b0 和b4計算代表性運動向量。在這種情形中,MB-A向量存儲管理器215選 擇塊b4的向量并將其存儲在AO中,因為b4位于b0右側。圖16示出了本實施例是如何將相鄰宏塊的運動向量保存在MB-BCD 向量存儲位置中的。用于當前宏塊501的向量預測過程按需要分別訪問 MB-BCD向量存儲位置N0、 Nl、 N2、 N3、 N4和N5。宏塊503、 504和 505已被處理,并且所得到的運動向量被存儲在向量存儲位置中作為代表 性運動向量。MB-BCD向量存儲管理器216讀出例如塊503的相關的代表 性運動向量,并將其存儲在MB-BCD向量存儲位置Nl、 N2、 N3和N4 中。類似地,MB-BCD向量存儲位置NO和N5分別接收針對宏塊504和 505產(chǎn)生的代表性運動向量。在多個代表性運動向量存在于同一列上的情 形中,MB-BCD向量存儲管理器216選擇最下側的向量,并將其輸入到相 應的MB-BCD向量存儲位置。例如,當宏塊503被垂直分區(qū)為16X8宏塊 時,針對Nl列上的兩個塊b0和b8計算代表性運動向量。在這種情形 中,MB-BCD向量存儲管理器216選擇塊b9的向量并將其存儲在Nl中, 因為b8比bO更靠近底部。
代表性運動向量的存儲地址取決于塊尺寸。下面將描述存儲每個塊尺寸的運動向量的過程。圖17A到19B示出了根據(jù)本實施例的相鄰宏塊的代 表性向量存儲位置。更具體而言,圖17示出了 16X16宏塊的代表性向量 存儲位置。運動向量計算器214針對16X16宏塊510產(chǎn)生一個代表性運動 向量MVO,并將其存儲在塊bO中。MB-A向量存儲管理器215從塊bO'l' 讀出MVO,并將其存儲在位于b0右側的MB-A向量存儲位置AO 511中。 另外,MB-BCD向量存儲管理器216讀出塊b0的MVO,并將其存儲在位 于b0下方的MB-BCD向量存儲位置Nl 512中。圖17B示出了相鄰16X8宏塊的代表性向量存儲位置。在16X16基 本宏塊被分區(qū)為兩個16X8宏塊520的情形中,運動向量計算器214產(chǎn)生 兩個代表性運動向量MVO和MV8。運動向量計算器214將MVO存儲在 塊b0中,將MV8存儲在塊b8中。MB-A向量存儲管理器215從塊b0和 b8中讀出MVO和MV8,并將其分別存儲在位于b0和b8右側的MB-A向 量存儲位置AO 521和A2 522中。另一方面,MB-BCD向量存儲管理器 216選擇MV8,因為b8比b0更靠近底邊。MB-BCD向量存儲管理器216 隨后將該MV8存儲在位于b0和b8下方的MB-BCD向量存儲位置Nl 523 中。圖18A示出了相鄰8X16宏塊的代表性向量存儲位置。在16X16基 本宏塊被分區(qū)為兩個8X16宏塊530的情形中,運動向量計算器214產(chǎn)生 兩個代表性運動向量MVO和MV4,并將其分別存儲在塊b0和b4中。在 這種情形中,MB-A向量存儲管理器215選擇性地從塊b4中讀出MV4, 因為b4比b0更接近右邊。MB-A向量存儲管理器215隨后將其存儲在位 于b4右側的MB-A向量存儲位置AO 531中。另一方面,MB-BCD向量存 儲管理器216從塊b0和b4中讀出MVO和MV4,并將其分別存儲在位于 b0和b4下方的MB-BCD向量存儲位置Nl 532和N3 533中。圖18B示出了相鄰8X8宏塊的代表性向量存儲位置。在16X16基本 宏塊被分區(qū)為8X8宏塊540的情形中,運動向量計算器214產(chǎn)生四個代表 性運動向量MVO、 MV4、 MV8和MV12,并將其分別存儲在塊b0、 M、 b8和b12中。在這種情形中,MB-A向量存儲管理器215分別從塊b4和bl2中讀出MV4和MV12,因為b4和b12比b0和b8更接近右邊。MB-A 向量存儲管理器215隨后將MV4和MV12存儲在MB-A向量存儲位置AO 541和A2 542中。另一方面,MB-BCD向量存儲管理器216讀出MV8和 MV12,因為b8和b12比b0和b4更靠近底邊。MB-BCD向量存儲管理器 216隨后將MV8和MV12分別存儲在MB-BCD向量存儲位置Nl 543和 N3 544中。
圖19示出了相鄰4X4宏塊的代表性向量存儲位置。在16X16基本宏 塊被分區(qū)為兩個4X4子宏塊550的情形中,運動向量計算器214產(chǎn)生十六 個代表性運動向量MV0到MV15,并將其分別存儲在塊b0到bl5中。在 這種情形中,MB-A向量存儲管理器215選擇最右側的運動向量MV5、 MV7、 MV13和MV15,并將其分別存儲在MB-A向量存儲位置A0、 Al、 A2和A3中。類似地,MB-BCD向量存儲管理器216選擇最底側的 運動向量MVIO、 MVll、 MV14和MV15,并將其分別存儲在MB-BCD 向量存儲位置N1、 N2、 N3禾QN4中。盡管未在圖19中示出,但是MB-A 向量存儲管理器215和MB-BCD向量存儲管理器216在8X4子宏塊和4 X8子宏塊的情形中將以類似方式工作。
向量預測中的地址翻譯
這一部分描述了在MVP計算器212參考MB-A或MB-BCD向量存儲 位置中的外部運動向量時是如何翻譯地址的。MVP計算器212給予地址翻 譯器213 —條指定特定的相鄰4X4塊的信息。在接收到該信息后,地址 翻譯器213確定是否有與指定的塊直接對應的MB-A或MB-BCD向量存 儲位置。如果沒有,則先前在圖13和14中討論的翻譯表被用于提供相關 向量存儲位置的地址。如果有,則地址翻譯器213通過咨詢另一個翻譯表 來產(chǎn)生地址,該另一個翻譯表將參考圖20到23描述。
圖20和21示出了地址翻譯表是如何被用于參考MB-A向量存儲位置 的。具體而言,圖20示出了存儲在MB-A向量存儲位置中的運動向量的 源宏塊是16X16、 16X8、 8X16或8X8宏塊的情形。圖21示出了 8X 4、 4X8或4X4子宏塊的情形。
在MB-A的源宏塊尺寸是16X16的情形中,只有單個運動向量MVO
被存儲在為MB-A保留的四個可用向量存儲位置內的AO中。在這種情形 中,盡管MVP計算器212可以指定AO、 Al、 A2或A3,但是翻譯表將所 有這些位置翻譯為AO的地址,從而允許MVP計算器212從同一位置AO 讀出MVO。
在16X8源宏塊的情形中,兩個運動向量MVO和MV8分別被存儲在 向量存儲位置AO和A2中。當MVP計算器212指定AO或Al時,翻譯表 將其翻譯為AO的地址。當MVP計算器212指定A2或A3時,翻譯表將 其翻譯為A2的地址。因此,MVP計算器212對于AO和Al可以獲得 MVO,對于A2和A3可以獲得MV2。
在8X16源宏塊的情形中, 一個運動向量MV4被存儲在最頂端的向 量存儲位置AO中。當MVP計算器212指定AO、 Al 、 A2或A3時,翻譯 表將所有這些位置翻譯為AO的地址。因此,在這種情形中,MVP計算器 212讀出MV0,而不論其指定哪一個塊。
在8X8源宏塊的情形中,兩個運動向量MV4和MV12被分別存儲在 向量存儲位置AO和A2中。當MVP計算器212指定A0或A1時,翻譯表 將其翻譯為AO的地址。當MVP計算器212指定A2或A3時,翻譯表將 其翻譯為A2的地址。因此,MVP計算器212對于AO和Al可以獲得 MV4,對于A2和A3可以獲得MV12。
圖21示出了在子分區(qū)MB-A塊的情形中是如何翻譯地址的。圖21省 略了每個基本宏塊的左半部分的圖示,因為MB-A向量存儲位置存儲相同 組的代表性運動向量,而不論左半部分可能采取什么樣的塊結構。
在源宏塊被分區(qū)為8X4子宏塊的情形中,運動向量MV4、 MV6、 MV12和MV14被分別存儲在向量存儲位置AO、 Al、 A2禾P A3中。當 MVP計算器212指定AO、 Al、 A2或A3時,翻譯表將這些位置翻譯為其 各自的地址。
在4X8子宏塊的情形中,運動向量MV5和MV13被分別存儲在向量 存儲位置AO和A2中。當MVP計算器212指定AO或Al時,翻譯表將其 翻譯為AO的地址。當MVP計算器212指定A2或A3時,翻譯表將其翻 譯為A2的地址。 在4X4子宏塊的情形中,運動向量MV5、 MV7、 MV13和MV15被 分別存儲在向量存儲位置A0、 Al、 A2禾nA3中。當MVP計算器212指定 AO、 Al、 A2或A3時,翻譯表將這些位置翻譯為其各自的地址。
從圖20和21中可見,地址翻譯器213通過咨詢其本地地址翻譯表, 將指定的MB-A塊位置翻譯為規(guī)定的存儲器地址。所獲得的地址被傳遞到 MVP計算器212以用于讀出期望的代表性運動向量。
對于MB-BCD向量存儲位置發(fā)生類似的地址翻譯過程。具體而言,圖 22和23示出了地址翻譯器213是如何使用地址翻譯表來參考MB-BCD向 量存儲位置的。更具體而言,圖22示出了在存儲在MB-BCD向量存儲位 置中的運動向量的源宏塊是16X16、 16X8、 8X16或8X8宏塊的情形中 的地址翻譯,而圖23示出了8X4、 4X8或4X4子宏塊的情形。
在源宏塊尺寸是16X16的情形中,單個運動向量MVO被存儲在MB-BCD 的四個可用向量存儲位置外的 Nl中。當MVP計算器212指定Nl、 N2、 N3或N4時,翻譯表將其翻譯為Nl的地址,從而允許MVP計算器 212讀出MV0,而不論其指定了哪一個塊。
在16X8宏塊的情形中,單個運動向量MV8被存儲在向量存儲位置 Nl中。當MVP計算器212指定Nl、 N2、 N3或N4時,翻譯表將其翻譯 為Nl的地址,從而允許MVP計算器212讀出MV8,而不論其指定了哪 一個塊。
在8X 16宏塊的情形中,運動向量MVO和MV4被分別存儲在向量存 儲位置N1和N3中。當MVP計算器212指定N1或N2時,翻譯表將其翻 譯為Nl的地址。當MVP計算器212指定N3或N4時,翻譯表將其翻譯 為N3的地址。因此,MVP計算器212對于Nl和N2可以獲得MVO,對 于N3和N4可以獲得MV4。
在8X8宏塊的情形中,運動向量MV8和MV12被分別存儲在向量存 儲位置N1和N3中。當MVP計算器212指定N1或N2時,翻譯表將其翻 譯為Nl的地址。當MVP計算器212指定N3或N4時,翻譯表將其翻譯 為N3的地址。因此,MVP計算器212對于Nl和N2可以獲得MV8,對 于N3和N4可以獲得MV12。
圖23示出了在子分區(qū)MB-BCD塊的情形中是如何翻譯地址的。圖23 省略了每個基本宏塊的上半部分的圖示,因為MB-BCD向量存儲位置存儲 相同組的代表性運動向量,而不論上半部分可能采取什么樣的塊結構。
在8X4子宏塊的情形中,運動向量MV8禾卩MV12被存儲在向量存儲 位置Nl禾卩N3中。當MVP計算器212指定Nl或N2時,翻譯表將其翻譯 為Nl的地址。當MVP計算器212指定N3或N4時,翻譯表將其翻譯為 N3的地址。
在4X8子宏塊的情形中,運動向量MV8、 MV9、 MV12和MV13被 分別存儲在向量存儲位置Nl 、 N2、 N3禾n N4中。當MVP計算器212指定 Nl、 N2、 N3或N4時,翻譯表將這些位置翻譯為其各自的地址。
在4X4子宏塊的情形中,運動向量MVIO、 MVll、 MV14禾卩MV15 被分別存儲在向量存儲位置N1、 N2、 N3和N4中。當MVP計算器212指 定N1、 N2、 N3或N4時,翻譯表將這些位置翻譯為其各自的地址。
從圖22和23中可見,地址翻譯器213通過咨詢其本地地址翻譯表, 將指定的MB-BCD塊位置翻譯為規(guī)定的存儲器地址。所獲得的地址被傳遞 到MVP計算器212以用于讀出期望的代表性運動向量。
向量寫周期的減少
上述部分已經(jīng)描述了地址翻譯器213是如何提供存儲器地址以供MVP 計算器212讀取參考運動向量來進行向量預測的。本實施例的這種布置消 除了運動向量計算器214在多個存儲器位置中擴展每個計算的運動向量以 供以后參考的需要。
通過去除不必要的向量寫周期,本實施例減少了計算運動向量所需的 時間。例如,在16X16宏塊的情形中,傳統(tǒng)的向量計算過程花費十六個 寫周期來保存計算的運動向量,花費四個寫周期來填充MB-A向量存儲位 置,并花費另外四個寫周期來填充MB-BCD向量存儲位置。這意味著該過 程包括24個存儲器寫周期。與此相反,本實施例花費一個寫周期來保存 計算的運動向量,花費另一個寫周期來填充MB-A向量存儲位置,并花費 另一個寫周期來填充MB-BCD向量存儲位置。即,本實施例只需要三個寫 周期來處理16X16宏塊。這意味著寫周期的數(shù)目最大可減少21個周期。
對于另一種情況,考慮8X8宏塊。盡管如同16X16宏塊的情形 樣,傳統(tǒng)過程花費十六個寫周期,但是本實施例花費八個周期來保存計算 的運動向量,花費兩個周期來填充MB-A向量存儲位置,并花費另外兩個 周期來填充MB-BCD向量存儲位置。本實施例只需要12個存儲器寫周 期,最大減少了 12個周期。當向量計算過程應對更大尺寸的宏塊時,或 者當其處理更寬和更精細的圖片時,該寫周期減少的效果將更加明顯??偨Y根據(jù)本發(fā)明,所提出的幀間預測處理器采用地址計算器來自動提供在 幀間預測過程中參考的每個運動向量的存儲器地址。該地址計算器消除了 在存儲器的多個存儲位置中復制計算的運動向量以允許使用最小塊尺寸的 需要。從而,所提出的幀間預測處理器減少了運動向量計算的處理時間。 本發(fā)明可用于利用其快速運動補償?shù)膬?yōu)點增大視頻編碼和解碼設備的處理 速度。前述內容被認為僅是說明了本發(fā)明的原理。另外,由于本領域技術人 員將很容易進行大量修改和改變,因此并不希望將本發(fā)明限制在這里示出 和描述的實際構造和應用,所以,所有合適的修改和等同物都可被認為落 在權利要求及其等同物中的本發(fā)明的范圍內。
權利要求
1.一種以塊為基礎執(zhí)行視頻幀的幀間預測的幀間預測處理器,包括參考圖片存儲器,其提供與最小尺寸塊相對應的向量存儲位置以存儲針對可變尺寸的塊計算的運動向量;地址計算器,其至少基于被指定的塊的尺寸計算所述參考圖片存儲器中向量存儲位置的地址;預測值計算器,其向所述地址計算器指定與當前塊相鄰的塊以便從其獲得針對被指定的相鄰塊計算的運動向量的地址,從所獲得的所述參考圖片存儲器的地址中讀出所述運動向量,并基于從所述參考圖片存儲器中讀出的運動向量確定所述當前塊的運動向量預測值;以及參考圖片存儲管理器,其將所計算的運動向量寫入到在所述參考圖片存儲器內保留的向量存儲位置中。
2. 如權利要求1所述的幀間預測處理器,其中所述地址計算器包括翻譯表,所述翻譯表將塊尺寸和塊位置的每個組 合與所述參考圖片存儲器的特定地址相關聯(lián);并且所述地址計算器使用所述翻譯表來基于所述被指定的塊的塊尺寸和塊 位置確定所述參考圖片存儲器中運動向量的地址。
3. 如權利要求1所述的幀間預測處理器,其中所述參考圖片存儲器中的向量存儲位置包括用于存儲所述當前塊內的 多個塊的運動向量的當前塊向量存儲位置和用于存儲與所述當前塊相鄰的多個塊的運動向量的相鄰塊向量存儲位置;并且在緊接著所述當前塊的一個塊被選為新的當前塊之前,所述參考圖片 存儲管理器將所計算的運動向量從所述當前塊向量存儲位置拷貝到所述相鄰塊向量存儲位置。
4. 如權利要求3所述的幀間預測處理器,其中所述地址計算器包括 第一翻譯表,其將所述塊尺寸和塊位置的每個組合與所述當前塊向量存儲位置之一的地址相關聯(lián);以及第二翻譯表,其將所述塊尺寸和塊位置的每個組合與所述相鄰塊向量 存儲位置之一的地址相關聯(lián),其中所述地址計算器使用所述第一和第二翻譯表來確定與所述被指定 的塊相對應的向量存儲位置的地址。
5. —種以塊為基礎執(zhí)行視頻幀的幀間預測的方法,包括以下步驟 提供與最小尺寸塊相對應的向量存儲位置以存儲針對可變尺寸的塊計算的運動向量;指定與當前塊相鄰的多個塊;至少基于所述被指定的相鄰塊中每一個的尺寸來計算與所述被指定的 相鄰塊相對應的向量存儲位置的地址; 從所計算的地址中讀出運動向量;基于被讀出的運動向量確定所述當前塊的運動向量預測值;以及 將所計算的運動向量寫入到所述向量存儲位置中。
6. —種通過以塊為基礎執(zhí)行源圖片和參考圖片之間的運動補償預測來將視頻幀編碼為壓縮視頻數(shù)據(jù)的視頻編碼設備,包括參考圖片存儲器,其提供與最小尺寸塊相對應的向量存儲位置以存儲 針對可變尺寸的塊計算的運動向量;地址計算器,其至少基于被指定的塊的尺寸計算所述參考圖片存儲器 中向量存儲位置的地址;預測值計算器,其向所述地址計算器指定與當前塊相鄰的塊以便從其 獲得針對被指定的相鄰塊計算的運動向量的地址,從所獲得的所述參考圖 片存儲器的地址中讀出所述運動向量,并基于從所述參考圖片存儲器中讀 出的運動向量確定所述當前塊的運動向量預測值;以及參考圖片存儲管理器,其將所計算的運動向量寫入到在所述參考圖片 存儲器內保留的向量存儲位置中。
7. —種從壓縮視頻信號中重構原始視頻幀的視頻解碼設備,所述壓縮 視頻信號是通過以塊為基礎執(zhí)行運動補償幀間預測產(chǎn)生的,所述設備包 括參考圖片存儲器,其提供與最小尺寸塊相對應的向量存儲位置以存儲 針對可變尺寸的塊計算的運動向量; 地址計算器,其至少基于被指定的塊的尺寸計算所述參考圖片存儲器中向量存儲位置的地址;預測值計算器,其向所述地址計算器指定與當前塊相鄰的塊以便從其 獲得針對被指定的相鄰塊計算的運動向量的地址,從所獲得的所述參考圖 片存儲器的地址中讀出所述運動向量,基于從所述參考圖片存儲器中讀出 的運動向量確定所述當前塊的運動向量預測值,并從所確定的運動向量預測值和經(jīng)解碼的運動向量差重構所述當前塊的運動向量;以及參考圖片存儲管理器,其將經(jīng)重構的運動向量寫入到在所述參考圖片 存儲器內保留的向量存儲位置中。
全文摘要
本發(fā)明公開了一種用于處理可變尺寸宏塊以實現(xiàn)高速幀間預測的設備。預測值計算器根據(jù)與當前宏塊相鄰的其他宏塊的運動向量,確定當前宏塊的運動向量預測值(MVP)。為此,預測值計算器向地址計算器指定相鄰宏塊。地址計算器基于被指定的宏塊的塊尺寸來計算每個被指定的相鄰宏塊的向量存儲器地址。預測值計算器從接收到的地址中讀出運動向量,并確定當前宏塊的MVP。
文檔編號H04N7/50GK101127902SQ20071000040
公開日2008年2月20日 申請日期2007年1月25日 優(yōu)先權日2006年8月17日
發(fā)明者仲石英典 申請人:富士通株式會社