專利名稱:具有提供參考運動向量的位置的機制的幀間預(yù)測處理器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于根據(jù)其他幀預(yù)測幀的設(shè)備,并且涉及使用這種設(shè)備的 視頻編碼和解碼設(shè)備。更具體而言,本發(fā)明涉及基于塊執(zhí)行視頻幀的幀間 預(yù)測的幀間預(yù)測處理器、視頻編碼設(shè)備以及視頻解碼設(shè)備。魏駄數(shù)字視頻壓縮技術(shù)被廣泛用于許多應(yīng)用中。MPEG和H.264是該技術(shù) 領(lǐng)域中的標(biāo)準(zhǔn)規(guī)范,其中MPEG代表"運動圖片專家組"。用在這些標(biāo)準(zhǔn) 中的編碼和解碼算法將每個給定圖片劃分為小的區(qū)域,并且利用運動補償 技術(shù)處理這些區(qū)域。這種圖片區(qū)域被稱為"宏塊"(macroblock)。視頻 編碼過程涉及幀內(nèi)預(yù)測和幀間預(yù)測。幀內(nèi)預(yù)測通過利用正交變換、量化和 其他數(shù)據(jù)壓縮算法減少了單個幀內(nèi)的冗余。另一方面,幀間預(yù)測通過提取 運動補償殘余(即,當(dāng)前幀和經(jīng)運動補償?shù)膮⒖紟g的差)并對其編碼 減少了連續(xù)幀之間的冗余。所得到的視頻數(shù)據(jù)隨后被進(jìn)行熵編碼以用于傳 輸或存儲。視頻解碼過程反向執(zhí)行上述步驟以從經(jīng)壓縮的視頻中重構(gòu)原始 視頻。包括MPEG和H.264的一些標(biāo)準(zhǔn)編碼算法自適應(yīng)地選擇基于幀的編碼 模式或基于場的編碼模式來對經(jīng)交織的視頻信號進(jìn)行處理。這些算法還允 許對于每兩個垂直相鄰的宏塊(或者"宏塊對")在幀間預(yù)測和場間預(yù)測 之間進(jìn)行切換,以進(jìn)行運動向量計算。這種編碼模式被稱作"宏塊自適應(yīng) 場/幀"(MBAFF)模式。要使用這三種模式中的哪種模式可以基于單個 圖片用"編碼類型"參數(shù)來指定。在本說明中,這三種編碼模式將被稱作 "幀"、"場"和"MBAFF"模式。前兩種模式在適當(dāng)?shù)那闆r下也被總地 稱作非MBAFF模式。圖56說明了對于每種不同的編碼類型宏塊要被處理的順序。圖56的
最上面的部分示出了編碼過程選擇構(gòu)成圖片的16X16像素的宏塊所依照 的順序。具體而言,圖56的上方左邊部分示出了 "幀"編碼類型,在該 模式中構(gòu)成幀的16X16個像素的宏塊從左到右從上到下地被處理。這意 味著奇數(shù)行和偶數(shù)行被交替選出進(jìn)行處理。圖56的上方中間部分示出了 "場"編碼類型的情況,在該模式中視 頻數(shù)據(jù)作為兩個分離的場被處理,這兩個場即上場和下場。該編碼處理開 始于上場(或者奇數(shù)行),然后在后續(xù)場同步期間繼續(xù)到下場(或者偶數(shù) 行),如圖56中下方中間部分所示。圖56的右上角示出了 "MBAFF"編碼類型的情況,其中基于宏塊處 理幀。場行的處理順序取決于感興趣的宏塊對是要被幀間編碼還是場間編 碼。在幀間編碼宏塊對(下文稱作"幀對")的情況下,奇數(shù)行和偶數(shù)行 交替被處理,如圖56中的右下部分所示。在場間編碼宏塊對(下文稱作 "場對")的情況下,奇數(shù)行在偶數(shù)行之前被處理,這是因為第一和第二 宏塊對分別與上場數(shù)據(jù)和下場數(shù)據(jù)相對應(yīng)。為了提高用于包含邊(edge)和框(outline)的宏塊的運動向量預(yù)測 的準(zhǔn)確度, 一些現(xiàn)有的編碼算法將這種宏塊分割為更小的塊,并且針對每 個塊計算運動向量。例如,R264支持將尺寸為16X16像素的基本宏塊按 需要劃分為各種塊尺寸(包括4X4像素的最小子分區(qū))的宏塊分區(qū)。上述視頻編碼算法的大部分工作是計算運動向量以用于幀間預(yù)測。因 此,希望開發(fā)一種更快速和更有效的運動向量計算方法。 一種方法例如在 日本未審查專利申請公開No. 2004-266731中提出的。所提出的視頻編碼 方法通過選擇性地存儲已被確定為用在下一個經(jīng)運動補償?shù)慕换ゾ幋a (inter-coded)的幀中的有限數(shù)目的參考宏塊,減輕了對參考圖片的存儲 器容量的需求。視頻編碼設(shè)備計算與每個個體宏塊相對應(yīng)的運動向量(在適當(dāng)?shù)那闆r 下縮寫為"MV"),然后根據(jù)之前計算的當(dāng)前宏塊的周圍宏塊的運動向 量確定當(dāng)前宏塊的運動向量預(yù)測值(在適當(dāng)?shù)那闆r下縮寫為"MVP")。 視頻編碼設(shè)備隨后對MV和MVP之間的運動向量差(在適當(dāng)?shù)那闆r下縮 寫為"MVD")編碼,并將其與宏塊信息一起輸出作為經(jīng)編碼的視頻數(shù)據(jù)
流。該視頻流被視頻解碼設(shè)備接收。視頻解碼設(shè)備對經(jīng)編碼的MVD和宏 塊信息解碼,并根據(jù)MVD和MVP計算運動向量,其中宏塊的MVP可以 根據(jù)已經(jīng)被解碼的周圍塊的運動向量確定。利用這些運動向量,視頻解碼 設(shè)備重構(gòu)原始視頻流。視頻解碼設(shè)備具有用于向量存儲位置的存儲器,向量存儲位置被保留 來存儲已被解碼的宏塊的運動向量,以在后面重構(gòu)后續(xù)宏塊的運動向量時 用于參考。更具體地說,這些向量存儲位置存儲當(dāng)前被處理的宏塊的運動 向量以及已針對與當(dāng)前宏塊相鄰的宏塊計算出的運動向量。在MBAFF模式中,宏塊的MVP是根據(jù)當(dāng)前宏塊對及其相鄰宏塊對 確定的。由于這些宏塊對可能不總是相同類型的,所以傳統(tǒng)的MBAFF算 法在從向量存儲位置讀取運動向量/往向量存儲位置寫運動向量時,對這種 不一致性進(jìn)行補償。例如,假設(shè)當(dāng)前宏塊對采用幀形式,而圍繞其的宏塊 對采用場形式。在這種情況下,傳統(tǒng)的算法在將運動向量寫入存儲器之前 將那些相鄰宏塊對從場形式轉(zhuǎn)換成幀形式。這個轉(zhuǎn)換任務(wù)增加了額外的處 理負(fù)擔(dān),因此降低了視頻編碼器和解碼器的效率。發(fā)明內(nèi)容考慮到上述內(nèi)容,本發(fā)明的目的是提供一種高速執(zhí)行幀間預(yù)測的設(shè)備 以用于視頻信號編碼和解碼。本發(fā)明的另一個目的是提供利用所提議的幀 間預(yù)測設(shè)備的視頻編碼和視頻解碼設(shè)備。為了實現(xiàn)上述第一 目的,本發(fā)明提供了 一種以塊為基礎(chǔ)執(zhí)行視頻幀的 幀間預(yù)測的幀間預(yù)測處理器。該幀間預(yù)測處理器具有地址選擇器,用于根 據(jù)關(guān)于當(dāng)前塊對及其相鄰塊對的給定的編碼類型信息來提供參考運動向量 的存儲器地址。當(dāng)參考當(dāng)前塊對以外的塊執(zhí)行運動向量預(yù)測時,并且當(dāng)給 定的宏塊自適應(yīng)幀/場(MBAFF)標(biāo)識類型信息指示給定的圖片被假定以 對于每個個體塊對允許在幀預(yù)測和場預(yù)測之間進(jìn)行選擇的MBAFF模式被處理時,所述地址選擇器被激活。編碼類型信息指示每個塊對是以幀形式 還是以場形式被組織的。該幀間預(yù)測處理器還具有預(yù)測值計算器,預(yù)測值 計算器用于基于從所提供的存儲器地址讀出的參考運動向量,確定針對當(dāng)
前塊對的每個組成塊的運動向量預(yù)測值。另外,為了實現(xiàn)上述第二目的,本發(fā)明還提供了一種通過以塊為基礎(chǔ) 執(zhí)行源圖片和參考圖片之間的運動補償預(yù)測來將視頻信號編碼為壓縮視頻 數(shù)據(jù)的視頻編碼設(shè)備。該視頻編碼設(shè)備具有地址選擇器,用于根據(jù)關(guān)于當(dāng) 前塊對及其相鄰塊對的給定的編碼類型信息來提供參考運動向量的存儲器 地址。當(dāng)參考當(dāng)前塊對外的塊執(zhí)行運動向量預(yù)測時,并且當(dāng)給定的宏塊自適應(yīng)幀/場(MBAFF)標(biāo)識類型信息指示給定的圖片被假定以對于每個獨 立的塊對允許在幀預(yù)測和場預(yù)測之間進(jìn)行選擇的MBAFF模式被處理時, 所述地址選擇器被激活。編碼類型信息指示每個塊對是以幀形式還是以場 形式被組織的。該視頻編碼設(shè)備還具有幀間預(yù)測處理器,其基于從所提供 的存儲器地址讀出的參考運動向量來確定針對當(dāng)前塊對的每個組成塊的運 動向量預(yù)測值,并且計算所計算出的當(dāng)前塊的運動向量和所確定的運動向 量預(yù)測值之間的差值,從而使得所計算出的差值被編碼。此外,為了實現(xiàn)上述第二目的,本發(fā)明還提供了一種從通過以塊為基 礎(chǔ)執(zhí)行運動補償幀間預(yù)測所產(chǎn)生的壓縮視頻信號重構(gòu)原始視頻圖片的視頻 解碼設(shè)備。該視頻解碼設(shè)備具有地址選擇器,用于根據(jù)關(guān)于當(dāng)前塊對及其 相鄰塊對的給定的編碼類型信息來提供參考運動向量的存儲器地址。當(dāng)參 考當(dāng)前塊對外的塊執(zhí)行運動向量預(yù)測時,并且當(dāng)給定的宏塊自適應(yīng)幀/場 (MBAFF)標(biāo)識類型信息指示給定的圖片被假定以對于每個獨立的塊對允 許在幀預(yù)測和場預(yù)測之間進(jìn)行選擇的MBAFF模式被處理時,所述地址選 擇器被激活。編碼類型信息指示每個塊對是以幀形式還是以場形式被組織 的。該視頻解碼設(shè)備還具有幀間預(yù)測處理器,其基于從所提供的存儲器地 址讀出的參考運動向量來確定針對當(dāng)前塊對的每個組成塊的運動向量預(yù)測 值,并且根據(jù)所確定的運動向量預(yù)測值和經(jīng)解碼運動向量差值再現(xiàn)當(dāng)前塊 的運動向量。本發(fā)明的以上和其他的目的、特征和優(yōu)點將從下面結(jié)合附圖的描述中 變清楚,附圖以示例方式圖示了本發(fā)明的優(yōu)選實施例。
圖l給出了本發(fā)明的概觀。圖2是根據(jù)本發(fā)明第一實施例的視頻編碼設(shè)備的框圖。圖3是根據(jù)本發(fā)明第一實施例的視頻解碼設(shè)備的框圖。圖4示出了在H.264中定義的宏塊和子宏塊的各種尺寸。圖5是示出了根據(jù)本發(fā)明第一實施例所提議的視頻解碼設(shè)備如何為幀間預(yù)測計算運動向量的功能框圖。圖6示出了根據(jù)第一實施例的幀結(jié)構(gòu)和向量存儲位置之間的關(guān)系。圖7示出了分配給構(gòu)成16X16宏塊的子宏塊的塊編號。圖8A和8B示出了在16X16宏塊的情況下第一實施例是如何計算并寫入運動向量的。圖9A和9B示出了在16X8宏塊的情況下第一實施例是如何計算并寫 入運動向量的。圖IOA和10B示出了在8X16宏塊的情況下第一實施例是如何計算并 寫入運動向量的。圖IIA和IIB示出了在8X8宏塊的情況下第一實施例是如何計箅并 寫入運動向量的。圖12A、 12B、 13A和13B示出了第一實施例是如何將宏塊分區(qū)為子宏塊以及其如何為子宏塊產(chǎn)生并寫入代表性運動向量的。圖14和15示出了第一實施例中地址翻譯表是如何工作的。圖16示出了第一實施例如何將相鄰宏塊的運動向量保存到MB-A向量存儲位置中的。圖17示出了第一實施例如何將相鄰宏塊的運動向量保存到MB-BCD 向量存儲位置中的。圖18A和18B示出了根據(jù)第一實施例的相鄰16X16宏塊和16X8宏塊的代表性向量存儲位置。圖19A和19B示出了根據(jù)第一實施例的相鄰8X16宏塊和8X8宏塊的代表性向量存儲位置。圖20示出了根據(jù)第一實施例的相鄰4X4子宏塊的代表性向量存儲位置。
圖21和22示出了地址翻譯表是如何被用于參考MB-A向量存儲位置的。圖23和24示出了根據(jù)第一實施例地址翻譯表是如何被用于參考MB-BCD向量存儲位置的。圖25A和25B示出了根據(jù)本發(fā)明第二實施例的幀結(jié)構(gòu)和向量存儲位置 之間的關(guān)系。圖26示出了第二實施例是如何保存當(dāng)前宏塊對的代表性運動向量的。圖27A和27B示出了 MBAFF模式中相鄰宏塊MB-A和MB-BCD的位置。圖28A到31B描述了 MB-BCD相鄰宏塊位置的詳細(xì)情形。 圖32A到32D相對于圖27A和27B中示出的向量存儲位置描述了 MB-A相鄰向量宏塊位置的詳細(xì)情形。圖33A到33D示出了在各種情況下要被參考的相鄰宏塊MB-D。 圖34示出了根據(jù)第二實施例的地址翻譯器。 圖35A到35C示出了在MBAFF模式中地址翻譯器是如何工作的。 圖36A到55示出了相鄰宏塊位置的各種圖案。 圖56說明了對于每種不同的編碼類型,宏塊要被處理的順序。
具體實施方式
下面將參考附圖描述本發(fā)明的優(yōu)選實施例,附圖中相似的編號在全文 中指代相似的元件。首先描述本發(fā)明的概述,然后描述本發(fā)明的更具休的 實施例。在該文件的以下部分,宏塊(及其分區(qū))的尺寸和形狀由代表其 寬度和高度的前綴指示。例如,術(shù)語"16X8宏塊"表示16個像素寬乘以 8個像素高的宏塊。這種尺寸前綴可以被應(yīng)用到那些子宏塊。尺寸為16X 16像素的宏塊被稱為"基本宏塊"。圖1給出了本發(fā)明的概觀。所示出的幀間預(yù)測處理器1意圖用在視頻 編碼設(shè)備和視頻解碼設(shè)備中,這些設(shè)備通過將每個給定的圖片劃分為具有 適當(dāng)尺寸的小區(qū)域(被稱為"宏塊"或者簡稱為"塊")以用于運動向量
估計目的,從而對視頻數(shù)據(jù)流進(jìn)行處理。塊尺寸(即,宏塊的面積尺寸) 是根據(jù)圖片運動幅度或目標(biāo)的所需分辨率而從若干個規(guī)定尺寸中選出的。 本說明書并不討論如何確定塊尺寸的細(xì)節(jié),因為某些現(xiàn)有的技術(shù)文獻(xiàn)已經(jīng) 提供了這些信息。根據(jù)本發(fā)明,幀間預(yù)測處理器1除了其他以外具有地址選擇器2和預(yù) 測值計算器3,用于提供下述功能。地址選擇器2對來自預(yù)測值計算器3 的指定給定圖片中的特定塊的輸入作出響應(yīng)。根據(jù)本發(fā)明,地址選擇器2 基于給定的MBAFF類型信息和編碼類型信息提供參考運動向量的存儲器 地址。MBAFF類型信息指示給定的圖片被假定為以MBAFF模式被編碼 還是以非MBAFF模式被編碼。MBAFF模式允許對于每個塊對在幀預(yù)測 和場預(yù)測之間進(jìn)行選擇。非MBAFF模式包括幀模式和場模式。編碼類型 信息指示每對塊(包括當(dāng)前塊對及其相鄰塊對)以幀形式(即,以使上場 行和下場行交織的形式)被組織還是以場形式(即,以分離的上場和下'場 的形式)被組織。當(dāng)參考當(dāng)前塊對以外的塊執(zhí)行運動補償時,并且當(dāng)在MBAFF類型位 息指示給定的圖片被假定要以MBAFF模式被編碼時,地址選擇器2根據(jù) 關(guān)于當(dāng)前塊對及其相鄰塊對的編碼類型信息提供參考運動向量的存儲器地 址。地址選擇器2可以被設(shè)計為具有用來提供參考運動向量的存儲器地址 的表,后面將詳細(xì)描述。預(yù)測值計算器3基于從所提供的存儲器地址讀出的參考運動向量為當(dāng) 前塊對的每個組成塊確定運動向量預(yù)測值。上述幀間預(yù)測處理器1的操作如下。地址選擇器2接收關(guān)于MBAFF 類型和編碼類型的信息。在參考圍繞當(dāng)前塊的塊對給定的MBAFF圖片執(zhí) 行運動補償時,地址選擇器2根據(jù)當(dāng)前塊對的編碼類型以及參考塊的編碼 類型,提供參考運動向量的存儲器地址。預(yù)測值計算器3從所提供的存儲 器地址讀出運動向量,并且根據(jù)這些參考運動向量為組成當(dāng)前塊對的每個 塊確定運動向量預(yù)測值。接下來的部分和一些后續(xù)部分將討論作為本發(fā)明的更具體實施例的IL 264編碼和解碼設(shè)備。H,264標(biāo)準(zhǔn)提供了以下的宏塊尺寸選項16X16、 16X8、 8X16和8X8。如果選擇8X8模式,則四個8X8宏塊分區(qū)中的每一 個可被分割為具有以下尺寸的更小的塊8X8、 8X4、 4X8和4X4 (稱 為宏塊子分區(qū))?;€編碼算法以宏塊為基礎(chǔ)對每個給定的源幀進(jìn)行編 碼,在利用一個幀內(nèi)的空間冗余的幀內(nèi)編碼和利用連續(xù)幀之間的時間冗余 的幀間編碼之間切換。視頻解碼過程反向執(zhí)行上述步驟,來從經(jīng)壓縮視頻 重構(gòu)原始視頻。盡管H.264允許雙向運動預(yù)測,但是下面的描述為了簡化 起見假定了前向預(yù)測。然而,本發(fā)明不應(yīng)當(dāng)限于前向預(yù)測。本領(lǐng)域技術(shù)人 員將意識到,通過添加某些存儲器區(qū)域用于存儲過去和未來的參考幀的運 動向量,本發(fā)明也可以應(yīng)用于雙向預(yù)測。為了說明,下面的部分將假設(shè)非 MBAFF編碼來描述本發(fā)明的第一實施例。然后將假設(shè)MBAFF編碼來描 述本發(fā)明的第二實施例。視頻編碼設(shè)備(第一實施例)圖2是根據(jù)本發(fā)明第一實施例的視頻編碼設(shè)備的框圖。圖示的視頻編 碼設(shè)備100包括以下元件宏塊劃分器101、運動向量估計器102、過去 幀緩沖器103、幀間預(yù)測器104、幀內(nèi)預(yù)測器105、當(dāng)前幀緩沖器106、預(yù) 測模式選擇器107、減法器108、正交變換和量化單元109、熵編碼器 110、去量化和反向正交變換單元111、加法器112、去塊(deblocking) 濾波器113和幀緩沖器管理器114。宏塊劃分器101將給定源圖片劃分為預(yù)定尺寸的宏塊。運動向量估計 器102將源宏塊的視頻信號分量與存儲在過去幀緩沖器103中的參考宏塊 的視頻信號分量相比較,從而計算該源宏塊的運動向量。由于鄰近塊的運 動向量常常是高度相關(guān)的,因此可以由周圍塊的向量預(yù)測出特定塊的運動 向量。從而,幀間預(yù)測器104根據(jù)其周圍的運動向量計算運動向量預(yù)測值 MVP,然后通過從真實運動向量中減去MVP來計算運動向量差MVD。另 一方面,幀內(nèi)預(yù)測器105執(zhí)行對存儲在當(dāng)前幀緩沖器106中的幀的幀內(nèi)編 碼。預(yù)測模式選擇器107例如通過將幀間預(yù)測器104的預(yù)測誤差與幀內(nèi)預(yù) 測器105的預(yù)測誤差相比較,來選擇使得當(dāng)前宏塊的編碼效率最大的編碼 模式。預(yù)測模式選擇器107創(chuàng)建編碼模式參數(shù)以指示選擇結(jié)果。編碼模式 參數(shù)被傳遞到熵編碼器110,作為要被進(jìn)行熵編碼的數(shù)據(jù)的一部分。編碼模式參數(shù)包括宏塊分區(qū)的尺寸和子宏塊分區(qū)的尺寸。當(dāng)選擇幀內(nèi)模式時,劃分后的源宏塊被原樣從宏塊劃分器101提供給 正交變換和量化單元109。這些宏塊被進(jìn)行正交變換和量化,并且所得到 的變換系數(shù)被傳遞到熵編碼器110以進(jìn)行熵編碼和傳輸。變換系數(shù)還被^ 量化和反向正交變換單元111解碼并被發(fā)送到當(dāng)前幀緩沖器106中。當(dāng)選擇幀間模式時,幀間預(yù)測器104向熵編碼器110提供MVD以用 于熵編碼。另外,利用MVP預(yù)測的圖片通過預(yù)測模式選擇器107被提供 給減法器108。減法器108以宏塊為基礎(chǔ)從源圖片中減去預(yù)測的圖片,并 將結(jié)果發(fā)送到正交變換和量化單元109。經(jīng)量化的輸出數(shù)據(jù)被去量化和反 向正交變換單元111本地解碼并被傳給加法器112,在加法器112處通過 預(yù)測模式選擇器107提供的預(yù)測圖片被添加。所得到的圖片被寫入到當(dāng)前 幀緩沖器106中。熵編碼器110利用熵編碼算法對給定數(shù)據(jù)編碼,從而輸 出攜帶壓縮形式的視頻數(shù)據(jù)的經(jīng)編碼的視頻信號。存儲在當(dāng)前幀緩沖器 106中的參考圖片經(jīng)去塊濾波器113處理,在去塊濾波器113處對宏塊之 間的邊界區(qū)域進(jìn)行平滑。所得到的圖片被通過幀緩沖器管理器114輸入到 過去幀緩沖器103。視頻解碼設(shè)備(第一實施例)圖3是根據(jù)本發(fā)明第一實施例的視頻解碼設(shè)備的框圖。圖示的視頻解 碼設(shè)備200由以下元件構(gòu)成熵解碼器201、去量化和反向正交變換單元 202、加法器203、當(dāng)前幀緩沖器204、幀內(nèi)預(yù)測器205、預(yù)測模式選擇器 206、去塊濾波器207、幀緩沖器管理器208、過去幀緩沖器209和幀間預(yù) 測器210。利用這些元件,視頻解碼設(shè)備200對由圖2的視頻編碼設(shè)各 100產(chǎn)生的經(jīng)編碼的視頻信號進(jìn)行解碼。給定的經(jīng)編碼的視頻信號被熵解碼器201進(jìn)行熵解碼,然后被去量化 和反向正交變換單元202去量化并反向變換。該解碼過程的結(jié)果包括編碼 模式參數(shù)等,并且在幀間編碼的情況下包括MVD形式的運動向量數(shù)據(jù)。 基于解碼后的編碼模式參數(shù),預(yù)測模式選擇器206選擇幀內(nèi)預(yù)測器205或
幀間預(yù)測器210。當(dāng)選擇幀內(nèi)預(yù)測器205時,由去量化和反向正交變換單元202重構(gòu)的 圖片幀被路由到當(dāng)前幀緩沖器204。當(dāng)選擇幀間預(yù)測器210時,運動向量 差MVD被解碼回視頻編碼設(shè)備100 (圖2)針對各個宏塊產(chǎn)生的原始運動 向量。利用所得到的運動向量,幀間預(yù)測器210再現(xiàn)預(yù)測圖片,并將預(yù)測 圖片通過預(yù)測模式選擇器206提供給加法器203。在去量化和反向正交變 換單元202處解碼的預(yù)測誤差隨后被添加到該預(yù)測圖片。所得到的經(jīng)解碼 圖片被輸入到當(dāng)前幀緩沖器204。當(dāng)前幀緩沖器204中的該圖片數(shù)據(jù)被通 過去塊濾波器207和幀緩沖器管理器208傳送到過去幀緩沖器209之一。上述視頻解碼設(shè)備200中的幀間預(yù)測器210按以下方式對運動向量解 碼。圖4示出了在H.264中定義的宏塊和子宏塊的各種尺寸。其中折線 (broken)箭頭指示處理的順序。在圖4的最上部示出了尺寸為16X16像素的基本宏塊11。在該規(guī)范 中,塊的尺寸被適當(dāng)?shù)刂付榇韺挾瘸艘愿叨鹊那熬Y(如在"16X16宏 塊ll"中)。16X16基本宏塊ll可被垂直分區(qū)為兩個16X8宏塊12,或 被水平分區(qū)為兩個8X16宏塊13,或被以兩種方式同時分區(qū)為四個8X8 宏塊14。如虛線箭頭所示,16X8宏塊12被從上到下地加以處理。8X16 宏塊13被從左到右地加以處理。8X8宏塊14被從左上到右上,然后從左 下到右下地加以處理。H264還允許8X8宏塊14被劃分為更小的分區(qū),稱為"子宏塊"。 上述尺寸前綴也可被應(yīng)用于這些子宏塊。在圖4所示的示例中,左上方的 8X8宏塊14被劃分為兩個8X4子宏塊15a,右上8X8宏塊14被劃分為 兩個4X 8子宏塊15b,右下8 X 8宏塊14被劃分為四個4 X4子宏塊15c。 子宏塊被假定為按與在上述宏塊分區(qū)中相同的順序加以處理。圖5是示出了根據(jù)本發(fā)明第一實施例所提議的視頻解碼設(shè)備200如何 為幀間預(yù)測計算運動向量的功能框圖。具體而言,幀間預(yù)測器210包括以 下元件存儲器211、 MVP計算器212、地址翻譯器213、運動向量計算 器214、 MB-A向量存儲管理器215和MB-BCD向量存儲管理器216。令 符號"Cu"指代當(dāng)前被處理的宏塊。圍繞該當(dāng)前塊Cu的宏塊被稱作 "MB-A"(緊挨著左邊的)、"MB-B"(緊挨著上面的)、"MB-C" (對角線右上角)、"MB-D"(對角線左上角)。另外,三個相鄰宏塊 MB-B、 MB-C和MB-D被統(tǒng)稱為符號"MB-BCD"。存儲器211存儲先前已針對在先宏塊計算的運動向量。這些運動向量 中的某一些被用于計算當(dāng)前宏塊的MVP。存儲器211還提供用于當(dāng)前塊的 運動向量的存儲空間,后面將更詳細(xì)地描述。實際上,計算出的運動向量 被存儲在一些選出的向量存儲位置中。這樣的位置在下文中將被稱作"代 表性向量存儲位置",并且在這些位置中存儲的運動向量被稱作"代表性 向量"。MVP計算器212向地址翻譯器213指定圍繞當(dāng)前宏塊Cu的每個相關(guān) 的相鄰宏塊,從而獲得存儲器211中每個相應(yīng)的代表性向量存儲位置的地 址。利用從所獲得的地址中讀出的代表性向量,MVP計算器212計算 MVP。盡管有各種確定MVP的方式,但是本實施例計算相鄰宏塊的運動 向量的中值(median)作為運動向量預(yù)測值MVP:MVP=Median(MV-A, MV國B, MV-C)……(1)其中MV-A、 MV-B和MV-C分別指相鄰宏塊MB-A、 MB-B和MB-C 的運動向量。在當(dāng)前宏塊位于幀的右邊緣上的情況下(其中MV-C不可 用),公式(1)中的運動向量MV-C可利用另一個宏塊MB-D的運動向 量MV-D被替換。三個變量x、 y和z的中值表達(dá)如下Median(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重構(gòu)運動向量 MV=MVP+MVD......(3)所得到的運動向量MV被保存在存儲器211中,更具體而言,是保存 在與當(dāng)前宏塊Cu相對應(yīng)的代表性向量存儲位置中。存儲器211維護(hù)先前針對每個宏塊計算的運動向量。MB-A向量存儲 管理器215讀出這些被存儲的運動向量中與在后續(xù)的向量預(yù)測過程中將作 為相鄰宏塊MB-A而被參考的宏塊相對應(yīng)的一個運動向量,,并將其輸入 到存儲器211中的MB-A向量存儲位置。類似地,MB-BCD向量存儲管理 器216讀出與在后續(xù)的向量預(yù)測過程中將作為相鄰宏塊MB-B、 MB-C和 MB-D而被參考的宏塊相對應(yīng)的被存儲的運動向量,并將它們輸入到保留 在同一存儲器211中的MB-BCD向量存儲位置。上述幀間預(yù)測器210根據(jù)在本實施例中提出的幀間預(yù)測方法進(jìn)行操 作。幀間預(yù)測的細(xì)節(jié)將在下面的部分中描述,假設(shè)當(dāng)前圖片以幀模式被編 碼。運動向量的存儲器布置存儲器211提供為所計算的運動向量保留的向量存儲位置。圖6示出 了根據(jù)第一實施例的幀結(jié)構(gòu)和向量存儲位置之間的關(guān)系。對于幀間預(yù)測, 給定幀300被劃分為多個16X16基本宏塊301,其中宏塊的尺寸可以按需 要變化。存儲器211提供當(dāng)前塊向量存儲位置310以容納針對當(dāng)前宏塊Cu計 算的運動向量。還提供了相鄰塊向量存儲位置320、 331和332以存儲相 鄰宏塊MB-A和MB-BCD的運動向量。當(dāng)前塊存儲位置310可以容納多 達(dá)十六個向量,假定當(dāng)前的16X16基本宏塊被分區(qū)為十六個4X4子宏塊 (最小尺寸分區(qū))。相鄰塊向量存儲位置被劃分為兩類。 一類是用于存儲將作為相鄰宏塊 MB-A被參考的宏塊的運動向量的MB-A向量存儲位置320。 MB-A向量 存儲位置320被映射到當(dāng)前宏塊Cu左邊的四個垂直對齊的4X4子宏塊 上。當(dāng)當(dāng)前宏塊Cu的運動向量在當(dāng)前塊向量存儲位置310中變得可用 時,MB-A向量存儲管理器215將它們拷貝到這些MB-A向量存儲位置 320。另一類是被保留來存儲將作為相鄰宏塊MB-B、 MB-C和MB-D被參 考的宏塊的運動向量的MB-BCD向量存儲位置331和332。 MB-BCD向量 存儲位置331被映射到緊挨著當(dāng)前宏塊Cu上方的最下面一排的4X4子宏 塊上。這一排包括相鄰宏塊MB-B、 MB-C和MB-D。 MB-BCD向量存儲
位置332被映射到當(dāng)前宏塊Cu所屬幀行上的最下面一排的4X4子宏塊 上。當(dāng)當(dāng)前宏塊Cu的運動向量在當(dāng)前塊向量存儲位置310中變得可用 時,MB-BCD向量存儲管理器216將與最下面的子宏塊相對應(yīng)的向量拷貝 到MB-BCD存儲位置332。 MB-BCD存儲位置332中的這些運動向量將在 之后焦點到達(dá)幀的下一行時被參考。隨著處理焦點的移動,存儲在存儲器211中的上述向量存儲位置處的 運動向量被更新。例如,假定焦點從當(dāng)前宏塊移到下一宏塊311。已被用 于存儲在先宏塊的運動向量的向量存儲位置隨后開始服務(wù)于新的當(dāng)前宏塊 311。從而,MB-A向量存儲位置320被用于存儲前一宏塊的最右邊的塊處 的運動向量。MB-BCD向量存儲位置331和332也以類似方式被重寫。子宏塊編號為了說明方便,基本宏塊的4X4子宏塊分區(qū)按以下方式編號。圖7 示出了被分配給構(gòu)成16X16基本宏塊的子宏塊的塊編號。具體而言,圖 示的16X16基本宏塊340首先被分區(qū)為四個8X8宏塊,并且編號過程按 左上、右上、左下和右下分區(qū)的順序進(jìn)行。另外,每個8X8宏塊被分區(qū) 為四個4X4子宏塊,并且所得到的左上、右上、左下和右下的塊按該順 序被編號。因此,構(gòu)成左上8X8宏塊的左上、右上、左下和右下子宏塊 分別被編號為bO、 bl、 b2和b3。然后構(gòu)成右上8X8宏塊的左上、右上、 左下和右下子宏塊分別被編號為b4、 b5、 b6和b7。類似地,構(gòu)成左下8 X8宏塊的四個4X4子宏塊被編號為b8到b11,構(gòu)成右下8X8宏塊的四 個4X4子宏塊被編號為b12到b15。在以下部分中,上面定義的塊編號b0到b15將被用于指代與宏塊分 區(qū)相對應(yīng)的向量存儲位置。運動向量計算和存儲管理再次參考圖5, MVP計算器212咨詢地址翻譯器213以獲得存儲有每 個被參考的相鄰宏塊的運動向量的存儲器地址。MVP計算器212從所獲得 的存儲器地址中讀出所需的運動向量,并根據(jù)公式(1)計算MVP。然后
利用公式(3),運動向量計算器214根據(jù)所計算的MVP和經(jīng)解碼MVD 產(chǎn)生運動向量,然后將結(jié)果寫到存儲器211中的代表性向量存儲位置中。 現(xiàn)在假設(shè)該代表性向量存儲位置對應(yīng)于當(dāng)前宏塊的左上角處的4X4子宏 塊。圖8A和圖8B示出了在16X16宏塊的情況下第一實施例如何計算和 寫入運動向量。具體而言,圖8A示出了針對宏塊產(chǎn)生的代表性運動向 量,而圖8B示出了針對該向量的存儲器寫序列。參考圖8A, MVP計算器212讀出與16X16當(dāng)前宏塊Cu 400相鄰的 MB-A的b5、 MB-B的blO、 MB-C的b10和MB-D的b15的運動向量,從 而根據(jù)公式(1)確定MVP。然后利用公式(3),運動向量計算器214根 據(jù)所計算的MVP和經(jīng)解碼的MVD產(chǎn)生運動向量MV0。所計算的運動向 量MV0被存儲在與當(dāng)前宏塊Cu 400的左上角相對應(yīng)的向量存儲位置b0 401中。參考圖8B的序列圖,EN信號發(fā)起將MV0寫入到地址WAD=0的存 儲位置b0中的寫周期。當(dāng)后面的MVP計算過程參考該向量MV0吋,地 址翻譯器213自動提供其存儲地址,從而不需要在存儲器211中的預(yù)定向 量存儲位置上復(fù)制同一向量。B卩,所提出的方法只寫入一個地址,而傳統(tǒng) 方法寫入十六個地址。本實施例極大地減少了處理時間。圖9A和9B示出了在16X8宏塊的情況下第一實施例是如何計算和寫 入運動向量的。具體而言,圖9A示出了針對垂直分區(qū)的宏塊產(chǎn)生的代表 性運動向量,而圖9B示出了針對這些向量的存儲器寫序列。假定當(dāng)前焦點在上邊的16X8宏塊CuO 411上。MVP計算器212從與 16X8當(dāng)前宏塊CuO 411相鄰的MB-A的b5、 MB-B的b10、 MB-C的b10 和MB-D的b15讀取運動向量。MVP計算器212根據(jù)這些參考運動向量確 定MVP,從而允許運動向量計算器214計算當(dāng)前宏塊CuO 411的運動向量 MVO。所計算的運動向量MVO被存儲在與當(dāng)前宏塊CuO 411的左上角的 塊b0 412相對應(yīng)的向量存儲位置中?,F(xiàn)在假定焦點移到下邊的16X8宏塊Cul 413。 MVP計算器212從與 16X8當(dāng)前宏塊Cul 413相鄰的MB-A的b13、 CuO 411 (如同MB-B —
樣)的b2和MB-D的b7讀取運動向量。MVP計算器212根據(jù)這些運動向 量確定MVP,從而允許運動向量計算器214計算當(dāng)前宏塊Cul 413的運動 向量MV1。(注意,對于宏塊X沒有計算出的運動向量。)所計算的 MV1隨后被存儲在與位于當(dāng)前宏塊Cul 413的左上角的塊b8 414相對應(yīng)的 向量存儲位置中。參考圖9B的序列圖,EN信號被兩次斷言以發(fā)起兩個寫周期。第一寫 周期將MV0存儲到地址WAD=0的存儲位置b0中。第二寫周期將MV1 存儲到地址WAD-8的另一個存儲位置b8中。圖IOA和10B示出了在8X16宏塊的情況下第一實施例是如何計算并 寫入運動向量的。具體而言,圖IOA示出了針對水平分區(qū)的宏塊產(chǎn)生的代 表性運動向量,而圖IOB示出了針對這些向量的存儲器寫序列。假定當(dāng)前焦點在左邊的8X16宏塊CuO 421上。MVP計算器212從與 8X16當(dāng)前宏塊CuO 421相鄰的MB-A的b5、 MB-B的b10、 MB-C的b14 和MB-D的b15讀取運動向量。MVP計算器212根據(jù)這些運動向量確定 MVP,從而允許運動向量計算器214計算當(dāng)前宏塊CuO 421的運動向量 MVO。所計算的運動向量MVO被存儲在與當(dāng)前宏塊CuO 421的左上角相 對應(yīng)的bO 422中?,F(xiàn)在假定焦點移到右邊的8X16宏塊Cul 423。 MVP計算器212從與 8X16當(dāng)前宏塊Cul 423相鄰的MB-A (=前一 8X16宏塊CuO)的bl、 MB-B的b14、 MB-C的b10和MB-D的bll讀取運動向量。MVP計算器 212根據(jù)這些運動向量確定MVP,從而允許運動向量計算器214計算當(dāng)前 宏塊Cul 423的運動向量MV1。所計算的運動向量MV1被存儲在位于當(dāng) 前宏塊Cul 423的左上角的b4 424中。參考圖10B的序列圖,EN信號被兩次斷言以發(fā)起兩個寫周期。第一 寫周期將MVO存儲到地址WAD=0的存儲位置b0中。第二寫周期將MV1 存儲到地址WAD=4的另一個存儲位置b4中。圖IIA和IIB示出了在8X8宏塊的情況下第一實施例是如何計算和 寫入代表性運動向量的。具體而言,圖IIA示出了針對宏塊分區(qū)產(chǎn)生的四 個代表性運動向量,而圖IIB示出了針對這些向量的存儲器寫序列。假定當(dāng)前焦點在左上8X8宏塊CuO 431上。MVP計算器212從與當(dāng) 前宏塊CuO 431相鄰的MB-A的b5、 MB-B的b10、 MB-C的b14和MB-D 的b15讀取運動向量。MVP計算器212根據(jù)這些運動向量確定MVP,從 而允許運動向量計算器214計算當(dāng)前宏塊CuO 431的運動向量MVO。所計 算的運動向量MVO被存儲在位于當(dāng)前宏塊CuO 431的左上角的bO 432 中。假定焦點移到右上8X8宏塊Cul 433。則MVP計算器212從圍繞當(dāng) 前宏塊Cul 433的MB-A (=前一 8X8宏塊CuO 431)的bl、 MB-B的 bl4、 MB-C的b10和MB-D的bll讀取運動向量。MVP計算器212根據(jù) 這些運動向量確定MVP,從而允許運動向量計算器214計算當(dāng)前宏塊Cul 433的運動向量MV1。所計算的運動向量MVl被存儲在位于當(dāng)前宏塊 Cul 433的左上角的b4 434中。假定焦點移到左下8X8宏塊Cu2 435。則MVP計算器212從圍繞當(dāng) 前宏塊Cu2 435的MB-A的bl3、 MB-B (=左上8X8宏塊CuO 431)的 b2、 MB-C (=右上8X8宏塊Cul 433)的b6和MB-D的b7讀取運動向 量。MVP計算器212根據(jù)這些運動向量確定MVP,從而允許運動向量計 算器214計算當(dāng)前宏塊Cu2 435的運動向量MV2。所計算的運動向量 MV2被存儲在位于當(dāng)前宏塊Cu2 435的左上角的b8 436中。假定焦點移到右下8X8宏塊Cu3 437。則MVP計算器212從圍繞當(dāng) 前宏塊Cu3 437的MB-A (=在先8X8宏塊Cu2 435)的b9、 MB-B (=右 上宏塊Cul 433)的b6和MB-D (=左上宏塊CuO 431)的b3讀取運動向 量。MVP計算器212根據(jù)這些運動向量確定MVP,從而允許運動向量計 算器214計算當(dāng)前宏塊Cu3 437的運動向量MV3。所得到的向量MV3被 存儲在位于當(dāng)前宏塊Cu3 437的左上角的b12 438中。參考圖11B的序列圖,EN信號被四次斷言以發(fā)起四個寫周期。第一 寫周期將MVO存儲到地址WAD=0的存儲位置b0中。第二寫周期將MV1 存儲到地址WAD=4的另一個存儲位置b4中。第三寫周期將MV2存儲到 地址WAD-8的另一個存儲位置b8中。第四寫周期將MV3存儲到地址 WAD=12的另一個存儲位置b12中。
圖12A、 12B、 13A和13B示出了第一實施例是如何將宏塊分區(qū)為子 宏塊以及如何產(chǎn)生并寫入子宏塊的代表性運動向量。具體而言,圖12A示 出了宏塊子分區(qū)的示例,圖12B示出了針對子宏塊SB0到SB2產(chǎn)生的代 表性運動向量。圖13A示出了針對另一個子宏塊SB3產(chǎn)生的代表性運動向 量。圖13B是示出了所得到的運動向量如何被保存在存儲器211中的序列 圖。
參考圖12A,其中示出了宏塊子分區(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。
參考圖12B,按以下方式確定這些子宏塊的運動向量。針對左上子宏 塊SB0 441,根據(jù)周圍塊的運動向量確定運動向量MVO,并將其保存在位 于SB0 441的左上角的b0 442中。針對上邊的8X4子宏塊SB1-0 451,根 據(jù)周圍塊的運動向量確定運動向量MV1,并將其保存在與SB1-0 451的左 半部分相對應(yīng)的b4 452中。類似地,針對下邊的8X4子宏塊SB1-1 453 產(chǎn)生運動向量MV2,并保存在與SB1-1 453的左半部分相對應(yīng)的b6 454 中。以類似方式,針對左邊的4X8子宏塊SB2-0 461產(chǎn)生運動向量 MV3,并保存在b8 462中,針對右邊的4X8子宏塊產(chǎn)生運動向量MV4, 并保存在b9 464中。參考圖13A,分別針對最小尺寸的子宏塊SB3-0 471、 SB3國1 472、 SB3-2 473和SB3-3 474確定四個運動向量MV5、 MV6、 MV7和MV8。 這些運動向量被保存在其相應(yīng)的存儲位置b12、 b13、 bl4和bl5中。參考圖13B的序列圖,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中。本發(fā)明的第一實施例僅在特定的向量存儲位置(例如,與左上塊相對 應(yīng)的一個位置)中保存所產(chǎn)生的運動向量,該特定向量存儲位置代表產(chǎn)生 該向量的宏塊域。從圖8A到IIB中可見,對于被分區(qū)的基本宏塊的預(yù)測 過程在分區(qū)尺寸為8X8或更大時至多涉及四個寫周期。只有當(dāng)每個分區(qū) 是4X4塊時,基本宏塊的全部十六個存儲位置都被填滿。在大多數(shù)情況 下,與傳統(tǒng)過程不同,利用較少數(shù)目的寫周期完成了預(yù)測過程。從而,第 一實施例減少了預(yù)測運動向量所需的時間。上述過程允許運動向量被存儲在向量存儲位置310、 320、 331和332 中,這些向量存儲位置是為當(dāng)前宏塊Cu和其周圍的宏塊MB-A和MB-BCD保留的,如圖6中所述。地址翻譯地址翻譯器213通過將指定相鄰宏塊的給定信息翻譯為與該宏塊相對 應(yīng)的代表性向量存儲位置的特定地址,來為MVP計算器212服務(wù)。艮P, 地址翻譯器213從MVP計算器212接收指定要參考的4X4相鄰宏塊的一 條信息。更具體而言,MVP計算器212發(fā)送預(yù)期的16X16基本宏塊的標(biāo) 識符以及特定的塊編號(例如,圖7中所示的b0到b15)。地址翻譯器 213具有地址翻譯表,該表將宏塊尺寸和子宏塊尺寸與代表性向量存儲位 置相關(guān)聯(lián),以提供與指定的相鄰宏塊相對應(yīng)的地址。如前面在圖6中所述,當(dāng)參考運動向量位于當(dāng)前被處理的宏塊Cu外 部時,第一實施例從與相鄰宏塊MB-A和MB-BCD相對應(yīng)的向量存儲位 置320、 331和332中讀出該參考運動向量。特定的參考運動向量是外部 向量還是內(nèi)部向量不僅取決于當(dāng)前宏塊的形狀,還取決于當(dāng)前宏塊的位 置。這一部分將首先說明內(nèi)部運動向量的情形,然后說明外部運動向量的 情形。出于說明目的,我們假定外部向量可以按與內(nèi)部向量相同的方式處
理。即,假定每一宏塊中的運動向量按與圖6的當(dāng)前宏塊Cu相同的方式 被存儲。圖14和15示出了在本實施例中地址翻譯表是如何工作的。具體而 言,圖14示出了地址翻譯表是如何被用于參考16X16宏塊和16X8宏塊 的。圖15示出了地址翻譯表是如何用于參考8X16宏塊、8X8宏塊、8X 4子宏塊、4X8子宏塊和4X4子宏塊的。當(dāng)感興趣的相鄰宏塊是16X16宏塊時,MVP計算器212可以在其地 址請求中指定十六個塊b0到b15中的一個。然而,這種情況下,代表性 向量只被存儲在與塊b0相對應(yīng)的一個向量存儲位置中,如圖8中所述。 因此,響應(yīng)于來自MVP計算器212的請求,地址翻譯器213返回塊b0的 向量存儲位置地址,而不管在該請求中指定了哪一個塊。被參考作為相鄰 宏塊的宏塊已經(jīng)經(jīng)過了運動向量計算,這意味著其尺寸是己知的。因此, 該實施例可被配置為將這種相鄰宏塊的尺寸信息保留在存儲器中的某處以 供以后參考。當(dāng)感興趣的相鄰宏塊是上邊的16X8宏塊時,MVP計算器212可以在 其地址請求中指定前八個塊b0到b7之一。這種情況下,代表性向量被存 儲在與塊b0相對應(yīng)的向量存儲位置中,如圖9中所述。因此,響應(yīng)于來 自MVP計算器212的請求,地址翻譯器213返回塊b0的向量存儲位置地 址,而不管在該請求中指定了哪一個塊。當(dāng)相鄰宏塊是下邊的16X8宏塊(未示出)時,MVP計算器212可以 在其地址請求中指定后八個塊b8到b15之一。這種情況下,代表性向量 被存儲在與塊b8相對應(yīng)的向量存儲位置中,如圖9中所示。因此,地址 翻譯器213向MVP計算器212返回塊b8的向量存儲位置地址,而不管在該請求中指定了哪一個塊。參考圖15,當(dāng)感興趣的相鄰宏塊是左邊的8X16宏塊時,MVP計算 器212可以在其地址請求中指定以下塊之一b0、 bl、 b2、 b3、 b8、 b9、 blO和bll。這種情況下,代表性向量被存儲在與塊bO相對應(yīng)的向量存儲 位置中,如圖IO中所述。因此,地址翻譯器213向MVP計算器212返回 塊b0的地址。當(dāng)相鄰宏塊是右邊的8X16宏塊(未在圖15中示出)時,
MVP計算器212可以在其地址請求中指定以下塊之一b4、 b5、 b6、 b7、 b12、 b13、 bl4和bl5。這種情況下,代表性向量被存儲在與塊b4相對應(yīng) 的向量存儲位置中,如圖IO中所示。因此,地址翻譯器213向MVP計算 器212返回塊b4的地址。當(dāng)感興趣的相鄰宏塊是左上8X8宏塊時,MVP計算器212可以指定 塊b0、 bl、 b2或b3。這種情況下,代表性向量被存儲在與塊bO相對應(yīng)的 向量存儲位置中,如圖11中所示。因此,地址翻譯器213向MVP計算器 212返回塊b0的地址。類似地,當(dāng)MVP計算器212指定作為相鄰宏塊的 右上8X16宏塊(未在圖15中示出)和塊位置b4、 b5、 b6或b7時,地址 翻譯器213返回塊b4的代表性向量存儲位置的地址。當(dāng)MVP計算器212 指定左下8X16宏塊(未在圖15中示出)和塊位置b8、 b9、 b10或bll 時,地址翻譯器213返回塊b8的代表性向量存儲位置的地址。當(dāng)MVP計 算器212指定右下8X16宏塊(未在圖15中示出)和塊位置b12、 b13、 b14或b15時,地址翻譯器213返回塊b12的代表性向量存儲位置的地 址。運動向量計算器214可以請求子宏塊的地址。下面部分的描述說明了 地址翻譯器213是如何處理這樣的請求的,為了簡化,假定所指定的子宏 塊屬于左上8X8宏塊。地址翻譯器213以類似的方式處理其他類型的子 宏塊,以根據(jù)指定的塊尺寸和位置唯一地確定代表性向量存儲位置。在左上8X8宏塊的上邊的8X4子宏塊的情況下,運動向量計算器 214可以指定塊b0或塊bl作為相鄰宏塊。這種情況下,代表性向量存儲 位置是與塊b0相對應(yīng)的向量存儲位置。因此,地址翻譯器213向運動向 量計算器214返回該向量存儲位置的地址。在左上8X8宏塊的左邊的8X4子宏塊的情況下,運動向量計算器 214可以指定塊b0或塊b2作為相鄰宏塊。這種情況下,代表性向量存儲 位置是與塊b0相對應(yīng)的向量存儲位置。因此,地址翻譯器213向運動向 量計算器214返回該向量存儲位置的地址。在左上8X8宏塊的左上4X4子宏塊的情況下,運動向量計算器214 可以指定塊b0作為相鄰宏塊。這種情況下,代表性向量存儲位置是與塊bO相對應(yīng)的向量存儲位置。因此,地址翻譯器213向運動向量計算器214 返回該向量存儲位置的地址。從上文中可見,相關(guān)的代表性向量存儲位置可以通過利用指定的相鄰 宏塊的宏塊尺寸和子宏塊尺寸以及指定的塊位置(b0到b15)查找翻譯表 來加以確定。該特征允許MVP計算器212得到由運動向量計算器214存 儲在代表性向量存儲位置中的運動向量。盡管圖14和15中所示的并不是翻譯表本身,但是所提出的地址翻譯 表的基本功能是根據(jù)指定的相鄰宏塊尺寸和塊位置的組合導(dǎo)出存儲地址。 因此,該翻譯表可以是能夠?qū)⑾噜徍陦K的宏塊尺寸和子宏塊尺寸以及指定 的塊位置(b0到b15)的可能組合與特定的代表性向量存儲位置相關(guān)聯(lián)的 任何形式。代表性向量存儲位置在預(yù)期參考運動向量位于當(dāng)前宏塊Cu外部的情況下,本實施例按以 下方式操作。例如,假定當(dāng)前焦點在16X16基本宏塊上。這種情況下', 每個參考運動向量必須在為相鄰宏塊MB-A和MB-BCD保留的向量存儲 位置320、 331和332 (圖6)中的某處找到。圖16示出了第一實施例是如何將相鄰宏塊的運動向量保存在MB-A 向量存儲位置中的。假定當(dāng)前焦點在宏塊501上。用于該當(dāng)前宏塊501的 向量預(yù)測過程參考其相鄰塊MB-A (A0、 Al、 A2、 A3)。緊挨著當(dāng)前宏 塊501之前的宏塊502已被處理,并且其運動向量被存儲在向量存儲位置 中作為代表性運動向量。MB-A向量存儲管理器215讀出相關(guān)的代表性運 動向量,并將其存儲在與MB-A (A0、 Al、 A2、 A3)相對應(yīng)的存儲位置 中。在多個代表性運動向量存在于同一排上的情況下,MB-A向量存儲管 理器215選擇最右側(cè)的向量,并將其輸入到相應(yīng)的MB-A向量存儲位置。 例如,當(dāng)宏塊502被水平分區(qū)為8X16宏塊時,針對A0排上的兩個塊b0 和b4計算代表性運動向量。在這種情況下,MB-A向量存儲管理器215選 擇塊b4的向量并將其存儲在A0中,因為b4位于b0右側(cè)。圖17示出了第一實施例是如何將相鄰宏塊的運動向量保存在MB-
BCD向量存儲位置中的。用于當(dāng)前宏塊501的向量預(yù)測過程按需要訪問 MB-BCD向量存儲位置N0、 Nl、 N2、 N3、 N4和N5。宏塊503、 504和 505已被處理,并且所得到的運動向量被存儲在向量存儲位置中作為代表 性運動向量。MB-BCD向量存儲管理器216讀出例如塊503的相關(guān)的代表 性運動向量,并將其存儲在MB-BCD向量存儲位置Nl、 N2、 N3和N4 中。類似地,MB-BCD向量存儲位置N0和N5分別接收針對宏塊504和 505產(chǎn)生的代表性運動向量。在多個代表性運動向量存在于同一列上的情 況下,MB-BCD向量存儲管理器216選擇最下側(cè)的向量,并將其輸入到相 應(yīng)的MB-BCD向量存儲位置。例如,當(dāng)宏塊503被垂直分區(qū)為16X8宏塊 時,針對Nl列上的兩個塊b0和b8計算代表性運動向量。在這種情況 下,MB-BCD向量存儲管理器216選擇塊b8的向量并將其存儲在Nl中, 因為b8比b0更靠近底部。代表性運動向量的存儲地址取決于塊尺寸。下面將描述針對每種塊尺 寸存儲運動向量的過程。圖18A到20B示出了根據(jù)本實施例的相鄰宏塊的代表性向量存儲位 置。更具體而言,圖18A示出了 16X16宏塊的代表性向量存儲位置。運 動向量計算器214針對16X16宏塊510產(chǎn)生一個代表性運動向量MVO, 并將其存儲在塊b0中。MB-A向量存儲管理器215從塊b0中讀出MVO, 并將其存儲在位于b0右側(cè)的MB-A向量存儲位置AO 511中。另外,MB-BCD 向量存儲管理器216讀出塊b0的MVO,并將其存儲在位于b0下方 的MB-BCD向量存儲位置Nl 512中。圖18B示出了相鄰16X8宏塊的代表性向量存儲位置。在16X16基 本宏塊被分區(qū)為兩個16X8宏塊520的情況下,運動向量計算器214產(chǎn)生 兩個代表性運動向量MVO和MV8。運動向量計算器214將MVO存儲在 塊b0中,將MV8存儲在塊b8中。MB-A向量存儲管理器215從塊b0和 b8中讀出MVO和MV8,并將其分別存儲在位于b0和b8右側(cè)的MB-A向 量存儲位置AO 521和A2 522中。另一方面,MB-BCD向量存儲管理器 216選擇MV8,因為b8比b0更靠近底邊。MB-BCD向量存儲管理器216 隨后將該MV8存儲在位于b0和b8下方的MB-BCD向量存儲位置Nl 523 中。圖19A示出了相鄰8X16宏塊的代表性向量存儲位置。在16X16基 本宏塊被分區(qū)為兩個8X16宏塊530的情況下,運動向量計算器214產(chǎn)生 兩個代表性運動向量MV0和MV4,并將其分別存儲在塊b0和b4中。在 這種情況下,MB-A向量存儲管理器215選擇性地從塊b4中讀出MV4, 因為b4比b0更接近右邊。MB-A向量存儲管理器215隨后將其存儲在位 于b4右側(cè)的MB-A向量存儲位置A0 531中。另一方面,MB-BCD向量存 儲管理器216從塊b0和b4中讀出MV0和MV4,并將其分別存儲在位于 b0和b4下方的MB-BCD向量存儲位置Nl 532和N3 533中。圖19B示出了相鄰8X8宏塊的代表性向量存儲位置。在16X16基本 宏塊被分區(qū)為8X8宏塊540的情況下,運動向量計算器214產(chǎn)生四個代表 性運動向量MV0、 MV4、 MV8和MV12,并將其分別存儲在塊b0、 b4、 b8和b12中。在這種情況下,MB-A向量存儲管理器215分別從塊b4和 bl2中讀出MV4和MV12,因為b4和b12比b0和b8更接近右邊。MB-A 向量存儲管理器215隨后將MV4和MV12存儲在MB-A向量存儲位置A0 541和A2 542中。另一方面,MB-BCD向量存儲管理器216讀出MV8和 MV12,因為b8和b12比b0和b4更靠近底邊。MB-BCD向量存儲管理器 216隨后將MV8和MV12分別存儲在MB-BCD向量存儲位置Nl 543和 N3 544中。圖20示出了相鄰4X4宏塊的代表性向量存儲位置。在16X16基本宏 塊被分區(qū)為兩個4X4子宏塊550的情況下,運動向量計算器214產(chǎn)生十六 個代表性運動向量MV0到MV15,并將其分別存儲在塊b0到bl5中。在 這種情況下,MB-A向量存儲管理器215選擇最右側(cè)的運動向量MV5、 MV7、 MV13和MV15,并將其分別存儲在MB-A向量存儲位置A0、 Al、 A2和A3中。類似地,MB-BCD向量存儲管理器216選擇最底側(cè)的 運動向量MVIO、 MVll、 MV14和MV15,并將其分別存儲在MB-BCD 向量存儲位置N1、 N2、 N3和N4中。盡管未在圖20中示出,但是在8X 4子宏塊和4X8子宏塊的情況下,MB-A向量存儲管理器215和MB-BCD 向量存儲管理器216將以類似方式工作。 這一部分描述了當(dāng)MVP計算器212參考MB-A或MB-BCD向量存儲 位置中的外部運動向量時是如何翻譯地址的。MVP計算器212提供給地址 翻譯器213 —條指定特定的相鄰4X4塊的信息。在接收到該信息后,地 址翻譯器213確定是否有與指定的塊直接對應(yīng)的MB-A或MB-BCD向量 存儲位置。如果沒有,則先前在圖14和15中討論的翻譯表被用于提供相 關(guān)向量存儲位置的地址。如果有,則地址翻譯器213通過咨詢另一個翻譯 表來產(chǎn)生地址,將參考圖21到24描述。圖21和22示出了地址翻譯表是如何被用于參考MB-A向量存儲位置 的。具體而言,圖21示出了存儲在MB-A向量存儲位置中的運動向量的 源宏塊是16X16、 16X8、 8X16或8X8宏塊的情形。圖22示出了 8X 4、 4X8或4X4子宏塊的情形。在MB-A的源宏塊尺寸是16X16的情況下,只有單個運動向量MV0 被存儲在為MB-A保留的四個可用向量存儲位置中的A0中。在這種情況 下,盡管MVP計算器212可以指定A0、 Al、 A2或A3,但是翻譯表將所 有這些位置翻譯為AO的地址,從而允許MVP計算器212從同一位置AO 讀出MVO,而不論其指定了哪一個塊。在16X8源宏塊的情況下,兩個運動向量MVO和MV8分別被存儲在 向量存儲位置A0和A2中。當(dāng)MVP計算器212指定A0或A1時,翻譯表 將其翻譯為AO的地址。當(dāng)MVP計算器212指定A2或A3時,翻譯表將 其翻譯為A2的地址。因此,對于AO和Al, MVP計算器212可以獲得 MVO,并且對于A2和A3可以獲得MV2。在8X16源宏塊的情況下,一個運動向量MV4被存儲在最頂端的向 量存儲位置AO中。當(dāng)MVP計算器212指定A0、 Al、 A2或A3時,翻譯 表將所有這些位置翻譯為AO的地址。因此,在這種情況下,MVP計算器 212讀出MV0,而不論其指定哪一個塊。在8X8源宏塊的情況下,兩個運動向量MV4和MV12被分別存儲在 向量存儲位置AO和A2中。當(dāng)MVP計算器212指定A0或A1時,翻譯表 將其翻譯為AO的地址。當(dāng)MVP計算器212指定A2或A3時,翻譯表將 其翻譯為A2的地址。因此,對于AO和Al, MVP計算器212可以獲得
MV4,并且對于A2和A3可以獲得MV12。圖22示出了在經(jīng)子分區(qū)的MB-A塊的情況下是如何翻譯地址的。圖 22省略了每個基本宏塊的左半部分的圖示,因為不論左半部分可能采取什 么樣的塊結(jié)構(gòu),MB-A向量存儲位置都存儲相同的一組代表性運動向量。在源宏塊被分區(qū)為8X4子宏塊的情況下,運動向量MV4、 MV6、 MV12和MV14被分別存儲在向量存儲位置A0、 Al、 A2和A3中。當(dāng) MVP計算器212指定A0、 Al、 A2或A3時,翻譯表將這些位置翻譯為其 各自的地址。在4X8子宏塊的情況下,運動向量MV5和MV13被分別存儲在向量 存儲位置A0和A2中。當(dāng)MVP計算器212指定A0或A1時,翻譯表將其 翻譯為AO的地址。當(dāng)MVP計算器212指定A2或A3時,翻譯表將其翻 譯為A2的地址。在4X4子宏塊的情況下,運動向量MV5、 MV7、 MV13和MV15被 分別存儲在向量存儲位置AO、 Al、 A2和A3中。當(dāng)MVP計算器212指定 AO、 Al、 A2或A3時,翻譯表將這些位置翻譯為其各自的地址。從圖21和22中可見,地址翻譯器213通過咨詢其本地地址翻譯表, 將被指定的MB-A塊位置翻譯為規(guī)定的存儲器地址。所獲得的地址被傳遞 到MVP計算器212以用于讀出預(yù)期的代表性運動向量。對于MB-BCD向量存儲位置進(jìn)行類似的地址翻譯過程。具體而言,圖 23和24示出了地址翻譯器213是如何使用地址翻譯表來參考MB-BCD向 量存儲位置的。更具體而言,圖23示出了在存儲在MB-BCD向量存儲位 置中的運動向量的源宏塊是16X16、 16X8、 8X16或8X8宏塊的情況下 的地址翻譯,而圖24示出了8X4、 4X8或4X4子宏塊的情形。在源宏塊尺寸是16X16的情況下,單個運動向量MVO被存儲在MB-BCD 的四個可用向量存儲位置中的Nl中。這種情況下,當(dāng)MVP計算器 212指定N1、 N2、 N3或N4時,翻譯表將其翻譯為Nl的地址,從而允許 MVP計算器212從同一位置A0中讀出MV0,而不論其指定了哪一個塊。在16X8宏塊的情況下,單個運動向量MV8被存儲在向量存儲位置 Nl中。當(dāng)MVP計算器212指定Nl、 N2、 N3或N4時,翻譯表將其翻譯
為N1的地址,從而允許MVP計算器212讀出MV8,而不論其指定了哪 —個塊。在8X16宏塊的情況下,運動向量MV0和MV4被分別存儲在向量存 儲位置N1和N3中。當(dāng)MVP計算器212指定N1或N2時,翻譯表將其翻 譯為Nl的地址。當(dāng)MVP計算器212指定N3或N4時,翻譯表將其翻譯 為N3的地址。因此,對于Nl和N2, MVP計算器212可以獲得MV0, 并且對于N3和N4可以獲得MV4。在8X8宏塊的情況下,運動向量MV8和MV12被分別存儲在向量存 儲位置N1和N3中。 當(dāng)MVP計算器212指定N1或N2時,翻譯表將其翻 譯為Nl的地址。當(dāng)MVP計算器212指定N3或N4時,翻譯表將其翻譯 為N3的地址。因此,對于Nl和N2, MVP計算器212可以獲得MV8, 并且對于N3和N4可以獲得MV12。圖24示出了在經(jīng)子分區(qū)的MB-BCD塊的情況下是如何翻譯地址的。 圖24省略了每個基本宏塊的上半部分的圖示,因為不論上半部分可能釆 取什么樣的塊結(jié)構(gòu),MB-BCD向量存儲位置都存儲相同的一組代表性運動 向量。在8X4子宏塊的情況下,運動向量MV8和MV12被存儲在向量存儲 位置N1和N3中。當(dāng)MVP計算器212指定N1或N2時,翻譯表將其翻譯 為Nl的地址。當(dāng)MVP計算器212指定N3或N4時,翻譯表將其翻譯為 N3的地址。在4X8子宏塊的情況下,運動向量MV8、 MV9、 MV12和MV13被 分別存儲在向量存儲位置N1、 N2、 N3和N4中。當(dāng)MVP計算器212指定 Nl、 N2、 N3或N4時,翻譯表將這些位置翻譯為其各自的地址。在4X4子宏塊的情況下,運動向量MVIO、 MVll、 MV14和MV15 被分別存儲在向量存儲位置Nl、 N2、 N3和N4中。當(dāng)MVP計算器212指 定N1、 N2、 N3或N4時,翻譯表將這些位置翻譯為其各自的地址。從圖23和24中可見,地址翻譯器213通過咨詢其本地地址翻譯表, 將指定的MB-BCD塊位置翻譯為規(guī)定的存儲器地址。所獲得的地址被傳遞 到MVP計算器212以用于讀出預(yù)期的代表性運動向量。
向量寫周期的減少上述部分已經(jīng)描述了地址翻譯器213是如何提供存儲器地址以供MVP 計算器212讀取參考運動向量來進(jìn)行向量預(yù)測的。本實施例的這種布置不 要求運動向量計算器214在多個存儲器位置中擴(kuò)展每個計算的運動向量以 供以后參考。通過去除不必要的向量寫周期,本實施例減少了計算運動向 量所需的時間。例如,在16X16宏塊的情況下,傳統(tǒng)的向量計算過程花 費十六個寫周期來保存計算出的運動向量,花費四個寫周期來填充MB-A 向量存儲位置,并花費另外四個寫周期來填充MB-BCD向量存儲位置。這 意味著該過程包括24個存儲器寫周期。與此相對比,本實施例花費一個 寫周期來保存計算出的運動向量,花費另一個寫周期來填充MB-A向量存 儲位置,并花費另一個寫周期來填充MB-BCD向量存儲位置。即,本實施 例只需要三個寫周期來處理16X16宏塊。這意味著寫周期的數(shù)目最多可 減少21個周期。對于另一示例,考慮8X8宏塊。盡管如同16X16宏塊的情形一樣, 傳統(tǒng)過程花費24個寫周期,但是本實施例花費八個周期來保存計算的運 動向量,花費兩個周期來填充MB-A向量存儲位置,并花費另外兩個周期 來填充MB-BCD向量存儲位置。本實施例只需要12個存儲器寫周期,最 多減少了 12個周期。當(dāng)向量計算過程應(yīng)對更大尺寸的宏塊時,或者當(dāng)其 處理更寬和更精細(xì)的圖片時,該寫周期減少的效果將更加明顯。上述部分在假設(shè)圖片以幀模式編碼的情況下討論了利用地址翻譯機制 的運動向量預(yù)測。但是,所提議的方法也可以應(yīng)用于場模式。具體而言, 所提議的方法被用來對組成視頻圖片的每組上場行和下場行進(jìn)行處理,實 現(xiàn)與在幀模式的情況下相同的效果。視頻解碼設(shè)備(第二實施例)該部分和后面部分將描述根據(jù)本發(fā)明第二實施例的視頻解碼設(shè)備,更 具體地說,將描述其幀間預(yù)測器如何對運動向量進(jìn)行解碼。第二實施例與 第一實施例不同之處在于其MBAFF處理能力。下面的描述將集中于這種 差別,其中利用與第一實施例中相同的標(biāo)號來指示第二實施例中類似的元 素。在MBAFF模式中,術(shù)語"當(dāng)前宏塊對"被用來指代當(dāng)前被處理的一 對16X16宏塊,而與當(dāng)前宏塊對相鄰的兩個宏塊被稱作"相鄰宏塊 對"。在下面對第二實施例的描述中,后綴"a"和"b"被附加到屬于特 定宏塊對的上宏塊和下宏塊的標(biāo)號之后。根據(jù)第二實施例,MVP計算器 212存儲當(dāng)前宏塊對的運動向量,而不考慮其是以幀模式還是以場模式被 編碼的。圖25A和25B示出了幀結(jié)構(gòu)和宏塊對的向量存儲位置之間的關(guān)系。具 體而言,圖25A示出了上宏塊的上述關(guān)系,圖25B示出了下宏塊的上述關(guān) 系。根據(jù)本發(fā)明第二實施例,MB-A向量存儲管理器215和MB-BCD向量 存儲管理器216對上宏塊和下宏塊的向量存儲位置進(jìn)行管理。存儲器211提供當(dāng)前塊向量存儲位置310a和310b以存儲針對當(dāng)前宏 塊Cu (上)和Cu (下)計算的運動向量。還提供了 MB-A向量存儲位置 320和MB-BCD向量存儲位置331a、 331b、 332a和332b,來存儲相鄰宏 塊MB-A和MB-BCD的運動向量。八個MB-A向量存儲位置320被保留來存儲將作為相鄰宏塊MB-A被 參考的宏塊的運動向量。它們被映射到緊鄰當(dāng)前宏塊Cu (上)和Cu (下)的左邊的垂直對齊的4X4子宏塊上。當(dāng)當(dāng)前宏塊Cu (上)和Cu (下)的運動向量在它們各自的向量存儲位置310a和310b中變得可用 時,MB-A向量存儲管理器215將在4X4子宏塊最右列處的運動向量拷貝 到這些MB-A向量存儲位置320中。這種處理的細(xì)節(jié)將在后面部分中討 論。另一方面,MB-BCD向量存儲位置331a、 331b、 332a和332b被保留用于將作為相鄰宏塊被參考的宏塊的運動向量,這些相鄰宏塊至少包括 MB-B、 MB-C和MB-D。具體而言,緊挨著當(dāng)前宏塊Cu (上)和Cu(下)的上方的相鄰宏塊對當(dāng)在MBAFF模式中預(yù)測運動向量時被參考。 MB-BCD向量存儲位置331a和331b對應(yīng)于該相鄰宏塊對的上半部分和下 半部分的4X4子宏塊的最下面一排。另一組MB-BCD向量存儲位置332a
和332b被映射到當(dāng)前宏塊Cu (上)和Cu (下)所屬的兩個幀行上的4X 4子宏塊的最下面一排上。當(dāng)當(dāng)前宏塊Cu (上)和Cu (下)的運動向量 在當(dāng)前塊向量存儲位置310a和310b中變得可用時,MB-BCD向量存儲管 理器216將與最下面的4X4子宏塊相對應(yīng)的向量拷貝到MB-BCD向量存 儲位置332a和332b。當(dāng)MVP計算器212參考現(xiàn)有運動向量時,地址翻譯器213通過提供 那些參考向量的地址來對其提供幫助。利用這個特征,第二實施例不需要 使用這九個存儲器b0、 bl、 b2、 b3、 b4、 b6、 b8、 b9和bl2,如圖25B中的陰影所示。圖26示出了第二實施例是如何保存當(dāng)前宏塊對的代表性運動向量: 的。首先,一列4X4子宏塊T5、 T7、 T13和T15,以及一排4X4子宏塊 TIO、 Tll、 T14和T15分別被存放(secured)在它們各自的當(dāng)前塊向量存 儲位置310a中(步驟SI)。類似地, 一列4X4子宏塊B5、 B7、 B13和 B15,以及一排4X4子宏塊B10、 Bll、 B14和B15被選擇性地存放在它 們各自的當(dāng)前塊向量存儲位置310b中(步驟S2)。然后,在步驟Sl和 S2中所獲得的組中,T5、 T7、 T13、 T15、 B5、 B7、 B13和B15的運動向 量以此順序被存儲到MB-A向量存儲位置320中(步驟S3)。類似地,在 相同的組中, 一排TIO、 Tll、 T14和T15的運動向量被存儲到MB-BCD 向量存儲位置331和331a或332a中,另一排BIO、 Bll、 B14和B15的運 動向量被存儲到MB-BCD向量存儲位置331b或332b中(步驟S4、 S5)。MBAFF模式中相鄰宏塊的位置圖27A和27B示出了 MBAFF模式中相鄰宏塊MB-A和MB-BCD的 位置。符號"A (上)"和"A (下)"分別表示相鄰宏塊對MB-A的上 宏塊和下宏塊。具體而言,圖27A示出了當(dāng)在MBAFF模式中預(yù)測當(dāng)前上 宏塊Cu (上)的運動向量時將作為相鄰宏塊MB-A被參考的向量存儲位 置。這些存儲位置包括為緊挨著當(dāng)前塊向量存儲位置310a的左邊的4X4 子宏塊保留的四個向量存儲位置(AT5、 AT7、 AT13和AT15)。還包括
與緊挨著當(dāng)前下宏塊Cu (下)的左邊的4X4子宏塊相對應(yīng)的另外西個向 量存儲位置(AB5、 AB7、 AB13和AB15)。另一方面,圖27B示出了當(dāng)在MBAFF模式中預(yù)測當(dāng)前下宏塊Cu(下)的運動向量時將作為相鄰宏塊MB-A被參考的向量存儲位置。這些 存儲位置包括為緊挨著當(dāng)前上宏塊Cu (上)的左邊的4X4子宏塊保留的 四個向量存儲位置(AT5、 AT7、 AT13和AT15)。還包括與緊挨著當(dāng)前 下宏塊Cu (下)的左邊的4X4子宏塊相對應(yīng)的另外四個向量存儲位置(AB5、 AB7、 AB13和AB15)。圖27A還示出了將作為當(dāng)前上宏塊Cu (上)的相鄰宏塊MB-BCD被 參考的向量存儲位置。這些存儲位置包括為緊挨著當(dāng)前上宏塊Cu (上) 的上方的相鄰宏塊對中的上宏塊的最下面的4X4子宏塊保留的四個向量 存儲位置(BTIO、 BTll、 BT14和BT15),以及與緊挨著當(dāng)前上宏塊Cu(上)的上方的4X4子宏塊相對應(yīng)的另外四個向量存儲位置(BBIO、 BBll、 BB14和BB15)。還包括與下面的4X4子宏塊相對應(yīng)的存儲位 置緊挨著BT10左邊的DT15、緊挨著BT15右邊的CT10、緊挨著BB10 左邊的DB15,以及緊挨著BB15右邊的CB10。類似地,圖27B示出了要作為當(dāng)前下宏塊Cu (下)的相鄰宏塊MB-BCD 被參考的向量存儲位置。這些存儲位置包括為當(dāng)前上宏塊Cu (上) 的最下面的4X4子宏塊保留的四個向量存儲位置(ETIO、 ETll、 ET14和 ET15),以及與緊挨著當(dāng)前上宏塊Cu (上)的上方的4X4子宏塊相對應(yīng) 的另外四個向量存儲位置(BBIO、 BBll、 BB14和BB15)。還包括與下 面的4X4子宏塊相對應(yīng)的存儲位置緊挨著ET10左邊的AT15、緊挨著 BB10左邊的DB15,以及緊挨著BB15右邊的CB10。圖28A到圖31B提供了 MB-BCD相鄰宏塊的位置的詳細(xì)情形。首 先,圖28A和28B示出了當(dāng)前宏塊對及其相鄰宏塊對都是幀對的情形。具 體而言,圖28A示出了被當(dāng)前上宏塊參考的相鄰宏塊MB-BCD的位置。 當(dāng)前上宏塊Cu (上)參考下面的4X4子宏塊在緊挨著當(dāng)前上宏塊Cu(上)的上方的相鄰下宏塊的最下面一排處的BBIO、 BBll、 BB14和 BB15,緊挨著BB10左邊的DB15和緊挨著BB15右邊的CBIO。另一方
面,圖28B示出了當(dāng)前下宏塊所參考的相鄰宏塊MB-BCD的位置。當(dāng)前 下宏塊Cu (下)參考當(dāng)前上宏塊Cu (上)的最下面的4X4子宏塊 ETIO、 ETll、 ET14和ET15。圖29A和29B示出了當(dāng)前宏塊對及其相鄰宏塊對都是場對的情形。具 體而言,圖29A示出了當(dāng)前上宏塊所參考的相鄰宏塊MB-BCD的位置。 當(dāng)前上宏塊Cu (上)參考下面的4X4子宏塊在緊挨著當(dāng)前上宏塊Cu (上)的上方的相鄰宏塊對中的上宏塊的最下面一排處的BTIO、 BTll、 BT14和BT15,緊挨著BT10左邊的DT15和緊挨著BT15右邊的CTIO。 另一方面,圖29B示出了要被當(dāng)前下宏塊Cu (下)參考的相鄰宏塊MB-BCD 的位置。 具體而言,當(dāng)前下宏塊Cu (下)參考緊挨著當(dāng)前上宏塊Cu (上)的上方的相鄰宏塊對中的下宏塊的最下面一排處的4X4子宏塊 BBIO、 BBll、 BB14和BB15。圖30A和30B示出了當(dāng)前宏塊對是幀對而其相鄰宏塊對是場對的情 形。具體而言,圖30A示出了當(dāng)前上宏塊Cu (上)所參考的相鄰宏塊 MB-BCD的位置,并且圖30B示出了當(dāng)前下宏塊Cu (下)的情形。注 意,與在圖28中的情況下相同的子宏塊被參考。細(xì)節(jié)參見圖28的描述。圖31A和31B示出了當(dāng)前宏塊對是場對而其相鄰宏塊對是幀對的情 形。具體而言,圖31A示出了當(dāng)前上宏塊Cu (上)所參考的相鄰宏塊 MB-BCD的位置。具體而言,當(dāng)前上宏塊Cu (上)參考下面的4X4子宏 塊緊挨著Cu (上)的上方的BBIO、 BBll、 BB14和BB15,緊挨著 BB10左邊的DB15,以及緊挨著BB15右邊的CBIO。另一方面,圖31B 示出了當(dāng)前下宏塊Cu (下)所參考的相鄰宏塊MB-BCD的位置。如圖可 見,與在當(dāng)前上宏塊Cu (上)的情況下相同的子宏塊BBIO、 BBll、 BB14、 BB15、 DB15和CB10作為MB-BCD相鄰宏塊被參考。圖32A到32D相對于圖27A和27B中示出的向量存儲位置示出了 MB-A相鄰宏塊位置的詳細(xì)情形。具體而言,圖32A和32B示出了當(dāng)前宏 塊對及其相鄰宏塊對都是幀對或都是場對的情形。在該情況下,向量存儲 位置和MB-A相鄰宏塊位置之間的關(guān)聯(lián)與第一實施例中的相同。另一方面,圖32C示出了當(dāng)前宏塊對是幀對而其MB-A相鄰宏塊對是
場對的情形。在該情況下,從當(dāng)前子宏塊到相鄰子宏塊的參考不是直接的,這與圖32A和32B所示的情形不同。具體而言,當(dāng)前上宏塊Cu (上)的ET0和ET2參考相鄰上宏塊MB-A 502a的AT5,并且ET8和 ET10參考AT7。此外,當(dāng)前下宏塊Cu (下)的EBO和EB2參考相鄰上宏 塊MB-A502a的AT13,并且EB8和EB10參考AT15。圖32D示出了當(dāng)前宏塊對是場對而其MB-A相鄰宏塊對是幀對的情 形。在這種情況下,當(dāng)前上宏塊Cu (上)的ETO和當(dāng)前下宏塊Cu (下) 的EBO參考相鄰上宏塊MB-A 502a的AT5。類似地,Cu (上)的ET2和 Cu (下)的EB2參考相鄰上宏塊MB-A 502a的AT13。 Cu (上)的ET8 和Cu (下)的EB8參考相鄰下宏塊MB-A 502b的AB5。 Cu (上)的 ET10和Cu (下)的EB10參考相鄰下宏塊MB-A502b的AB13。圖33A到33D示出了在各種情況下要被參考的相鄰宏塊MB-D。具體 而言,圖33A和33B示出了當(dāng)前宏塊對及其相鄰宏塊對都是幀對或都是場 對的情形。在這些情況下,向量存儲位置和MB-D相鄰宏塊位置之間的關(guān) 聯(lián)與第一實施例中的相同。另一方面,圖33C示出了當(dāng)前宏塊對是幀對而其相鄰宏塊對是場對的 情形。在該情況下,當(dāng)前上宏塊Cu (上)的ET2和ET8參考相鄰下宏±央 MB-A 502b的AB5。當(dāng)前上宏塊Cu (上)的ET10和當(dāng)前下宏塊Cu (下)的EBO參考相鄰下宏塊MB-A 502b的AB7。 Cu (下)的EB2和 EB8參考相鄰下宏塊MB-A 502b的AB13。 Cu (下)的EB10參考相鄰下 宏塊MB-A502b的AB15。圖33D示出了當(dāng)前宏塊對是場對而其MB-A相鄰宏塊對是幀對的情 形。在這種情況下,當(dāng)前上宏塊Cu (上)的ET2和當(dāng)前下宏塊Cu (下) 的EB2參考相鄰上宏塊MB-A 502a的AT7。類似地,Cu (上)的ET8和 Cu (下)的EB8參考相鄰下宏塊MB-A 502b的AT15。 Cu (上)的ET10 和Cu (下)的EB10參考相鄰下宏塊MB-A 502b的AB7。最后,Cu (下)的EB0參考相鄰下宏塊MB-A502b的AB15。MBAFF模式中的地址翻譯
該部分將描述在MBAFF模式中地址翻譯器如何提供向量存儲位置的 地址,其中描述集中于當(dāng)前宏塊外部的參考運動向量。當(dāng)前宏塊內(nèi)部的參 考運動向量參見第一實施例。圖34示出了根據(jù)第二實施例的地址翻譯器213a。所示地址翻譯器 213a包括第一翻譯表Tal、第二翻譯表Ta2和第三翻譯表Ta3,其中第一 翻譯表Tal被用于參考當(dāng)前宏塊內(nèi)的運動向量,第二翻譯表Ta2被用在非 MBAFF模式中來參考當(dāng)前宏塊外的運動向量,并且第三翻譯表Ta3被用 在MBAFF模式中來參考當(dāng)前宏塊外的運動向量。盡管在圖5中未具體示出,但是第一實施例的地址翻譯表213采用了 第一和第二翻譯表Tal和Ta2。即,第二實施例的地址翻譯器213a與第一 實施例中的地址翻譯器213的不同之處在于第三翻譯表Ta3被添加來將給 定的塊尺寸信息(宏塊尺寸和子宏塊尺寸)翻譯成相關(guān)的代表性向量存儲 位置的地址。地址翻譯器213a首先確定每個給定的圖片是以MBAFF模式編碼的還 是以非MBAFF模式編碼的。如果其是非MBAFF編碼的,則地址翻譯器 213a利用第一和第二翻譯表Tal和Ta2來處理該給定的圖片。如果其是 MBAFF編碼的,則地址翻譯器213a利用第一和第三翻譯表Tal和Ta3來 執(zhí)行處理。當(dāng)利用第三翻譯表Ta3時,地址翻譯器213a考慮MBFIELD標(biāo)志、周 圍宏塊類型標(biāo)志和上/下標(biāo)志的狀態(tài)。MBF正LD標(biāo)志指示當(dāng)前塊的編碼類 型,即,當(dāng)前宏塊是以場形式還是以幀形式組織的。周圍宏塊類型標(biāo)志指 示相鄰宏塊MB-A和MB-BCD所屬的宏塊編碼類型。上/下標(biāo)志指示在場編碼情況下當(dāng)前宏塊是上場還是下場。圖35A到35C示出了假設(shè)當(dāng)前宏塊是16X8塊時地址翻譯器213a在 MBAFF模式中是如何工作的。但是,在MBAFF模式中,地址翻譯器 213a以與非MBAFF模式大體相同的方式工作。具體而言,地址翻譯器 213a首先將4X4子宏塊作為相鄰宏塊MB-A、 MB-B、 MB-C和MB-D來 參考,如圖35A所示。地址翻譯器213a隨后檢查圍繞當(dāng)前宏塊的分區(qū) (如圖35B所示),并且進(jìn)一步考慮被管理的地址(如圖35C所示),從
而向MVP計算器212提供代表性運動向量被存儲在其中的向量存儲位置 的地址。但是,在MBAFF中,選擇圍繞位置的方式可能與在非MBAFF 模式中不同,這取決于緊挨著當(dāng)前宏塊對的上方的宏塊對和位于當(dāng)前宏塊 對左邊的另一宏塊對的組合。這個問題的細(xì)節(jié)將在下一部分中討論。相鄰宏塊位置的圖案如前一部分所述,MBAFF編碼允許幀編碼和場編碼以各種方式被組 合來用于當(dāng)前宏塊對及其左邊(或者上邊)的相鄰宏塊對。該部分描述在 MBAFF中相鄰宏塊位置的各種圖案,這些圖案是從幀編碼和場編碼的多 種組合中導(dǎo)出的。為了簡化,將基于單個宏塊而不是基于宏塊對來討論幀/ 場圖案。圖36A到36D和圖37A到37D示出了在當(dāng)前宏塊及其左邊相鄰宏塊 都是幀編碼的情況下要被參考的相鄰宏塊位置。注意,在圖36A到36D (以及在后續(xù)的圖中)中,僅第一個圖36A包含用于指示圖片600的組成 部分的標(biāo)號。但是,應(yīng)當(dāng)意識到,相同的標(biāo)號也可以應(yīng)用到同一頁上的每 個其他圖。圖片幀是由奇數(shù)行和偶數(shù)行(由陰影指示)形成的。在圖36A 和其他圖中示出的一些4X4子宏塊中的小陰影框指示特定的行位置。圖36A到36D和圖37A到37D中示出的MB-A和MB-BCD的相鄰宏 塊位置與非MBAFF中的那些類似。參考圖36B,例如,MVP計算器212 通過將包括相鄰宏塊MB-A中的AT5和AT7和當(dāng)前宏塊Cu中的ETO和 ET1在內(nèi)的相鄰子宏塊的運動向量代入前述公式(1),從而基于公式 (1)確定出子宏塊Cu的MVP。然后利用公式(3),運動向量計算器 214從所計算出的MVP和經(jīng)解碼的MVD產(chǎn)生運動向量MV8。在圖36A 所示的情況下,MB-B和MB-C (未示出)的實際向量位置取決于當(dāng)前宏 塊和位于參考宏塊上方的宏塊的幀/場圖案,在后面將詳細(xì)描述。圖38A到圖38D和圖39A到39D示出了其中當(dāng)前宏塊及其左邊相鄰 宏塊都是場編碼的情況下要被參考的相鄰宏塊位置。圖38A到圖38D的圖 片600每個都是由上下兩半形成的。上半部分是上場,并且下半部分(用 陰影指示)是下場。 注意,圖39A指示出的圖案與圖36A和37A中其對應(yīng)部分是不同 的。即,MB-BCD的(一個或多個)相鄰宏塊位置可隨當(dāng)前宏塊及位于其 上方的相鄰宏塊的幀-場組合而變化。圖40A到40D和圖41A到41D示出了其中當(dāng)前宏塊是幀編碼的而其 左相鄰宏塊是場編碼的情況下要被參考的相鄰宏塊位置。例如參見圖40B 所示出的幀編碼的當(dāng)前宏塊的第五行上的4X4子宏塊。該子宏塊的左邊 相鄰宏塊MB-A是場編碼的,并且該MB-A的第三行對應(yīng)于當(dāng)前宏塊的第 五行。因此,MVP計算器212參考位于第三行上的4X4子宏塊AT5的運 動向量。類似地,當(dāng)前宏塊的另一個左邊相鄰宏塊MB-D位于第二行上。 因此,MVP計算器212參考位于第二行上的AB5的運動向量,其中AB5 屬于下場502b。同樣的邏輯也應(yīng)用于圖41A到圖41D。圖42A到42D和圖43A到43D示出了其中當(dāng)前宏塊是場編碼而其左 邊相鄰宏塊是幀編碼的情況下要被參考的相鄰宏塊位置。在這種情況下使 用的邏輯與在圖40A到40D和圖41A到41D中說明的邏輯類似。例如參 見圖42B中示出的場編碼的當(dāng)前宏塊的第五偶數(shù)行上的4X4子宏塊。當(dāng) 前宏塊的左邊相鄰宏塊MB-A是幀編碼的,并且該MB-A的經(jīng)交織的第九 行對應(yīng)于當(dāng)前宏塊的第五行。MVP計算器212因此參考位于第九行上的4 X4子宏塊AT13的運動向量。類似地,當(dāng)前宏塊的另一個左邊相鄰宏塊 MB-D位于第四偶數(shù)行上。MVP計算器212因此參考位于經(jīng)交織的第七行 上的AT7的運動向量。同樣的邏輯也應(yīng)用于圖43A到43D。MBAFF編碼還允許用于當(dāng)前宏塊和上方相鄰宏塊對的各種編碼類型 的組合。下面將描述MBAFF模式中相鄰宏塊位置的各種圖案,這些圖案 是從幀編碼和場編碼的組合導(dǎo)出的。圖44A和44B示出了其中當(dāng)前宏塊及其上方相鄰宏塊都是幀編碼的情 況下要被參考的相鄰宏塊位置。參考圖44A,例如,MVP計算器212通 過將包括相鄰宏塊MB-B 503b中的BB10和BB11和另一相鄰宏塊MB-D 504b中的DB15在內(nèi)的子宏塊的運動向量代入前述公式(1),從而基于 公式(1)確定出子宏塊Cu的MVP。然后利用公式(3),運動向量計算 器214根據(jù)所計算出的MVP和經(jīng)解碼的MVD產(chǎn)生運動向量。
圖45A和圖45B示出了其中當(dāng)前宏塊是幀編碼的而其上方相鄰宏塊是 場編碼的情況下要被參考的相鄰宏塊位置。在這種情況下參考運動向量從 與圖44A和44B的情況下相同的位置被讀出。圖46A和圖46B示出了其中當(dāng)前宏塊是場編碼的而其上方相鄰宏塊是 幀編碼的情況下要被參考的相鄰宏塊位置。參考圖46A,當(dāng)前宏塊位于上 場中。在這種情況下,MVP計算器212讀出包括相鄰宏塊MB-B 503b中 的BB10和BB11和另一個相鄰宏塊MB-D 504b中的DB15在內(nèi)的子宏塊 的運動向量。參考圖46B,當(dāng)前宏塊位于下場中。在這種情況下,MVP計 算器212讀出包括相鄰宏塊MB-B 503b中的BB10和BB11和另一個相鄰 宏塊MB-D 504b中的DB15在內(nèi)的子宏塊的運動向量。圖47A和圖46B示出了其中當(dāng)前宏塊及其相鄰上宏塊都是場編碼的情 況下要被參考的相鄰宏塊位置。參考圖47A,當(dāng)前宏塊位于上場中。在這 種情況下,MVP計算器212讀出包括相鄰宏塊MB-B 503a中的BT10和 BT11和另一個相鄰宏塊MB-D 504a中的DT15在內(nèi)的子宏塊的運動向 量。參考圖47B,當(dāng)前宏塊位于下場中。在這種情況下,MVP計算器212 讀出包括相鄰宏塊MB-B 503b中的BB10和BB11和另一個相鄰宏塊MB-D 504b中的DB15在內(nèi)的子宏塊的運動向量。第三翻譯表這一部分將給出前述第三翻譯表Ta3的細(xì)節(jié)。圖48和49示出了在所 有當(dāng)前宏塊對、上方相鄰宏塊對和左邊相鄰宏塊對都是幀編碼的情況下要 被參考的相鄰宏塊的位置。圖50和51示出了其中所有那些宏塊對都是場 編碼的情形。圖52和53示出了其中當(dāng)前宏塊對是幀編碼的而上邊和左邊 相鄰宏塊對是場編碼的情形。最后,圖54和55示出了其中當(dāng)前宏塊對是 場編碼而上邊和左邊相鄰宏塊對是幀編碼的。所有這些情形都假設(shè)當(dāng)前焦 點在當(dāng)前宏塊內(nèi)的4X4子宏塊上。塊編號b0到b15用來指示當(dāng)前宏塊的 代表性向量位置。符號"X"指代其運動向量尚未被計算出的相鄰宏塊 MB-C。盡管標(biāo)號310a和310b僅被置于每幅圖的左上圖案,但是同樣的 標(biāo)號可以應(yīng)用于其他圖案。 從圖48到55可見,當(dāng)參考運動向量被假定在當(dāng)前宏塊對內(nèi)時,地址 翻譯器213a查詢第一翻譯表Tal來定位參考運動向量。當(dāng)參考運動向量 在當(dāng)前宏塊對外部時,地址翻譯器213a使用第三翻譯表Ta3。除了提供與第一實施例相同的功能之外,根據(jù)第二實施例的視頻解碼 設(shè)備200支持MBAFF模式中的運動向量預(yù)測。第二實施例基于給定的 MBFIELD標(biāo)志、周圍宏塊類型標(biāo)志和上/下標(biāo)志,通過使用被設(shè)計用于定 位在當(dāng)前宏塊外的參考運動向量(或者相鄰宏塊MB-A或MB-BCD)的第 三翻譯表Ta3,從而與在非MBAFF模式中一樣快地實現(xiàn)這種功能。第二實施例的視頻解碼設(shè)備200還使用第一翻譯表Tal來不僅支持非 MBAFF編碼,而且還在MBAFF模式中定位當(dāng)前宏塊內(nèi)的參考運動向量 (或者相鄰宏塊MB-A或MB-BCD)。該第一翻譯表Tal不需要在存儲器 211中保留九個向量存儲位置(具體而言是圖25B中陰影示出的b0、 bl、 b2、 b3、 b4、 b6、 b8、 b9和b12)。本發(fā)明從而減輕了對存儲器211的硬 件需求。已描述了所提議的幀間預(yù)測處理器、視頻編碼設(shè)備和視頻解碼設(shè)備的 優(yōu)選實施例。但是,本發(fā)明不應(yīng)當(dāng)被限制于這些特定實施例。每個實施例 中的元件可以用一些其他在功能上等同的元件來替換。本發(fā)明的元件也可 以與其他元件和步驟一起工作。此外,上述實施例的兩個或更多個特征可 以以各種方式被組合。計算機只讀介質(zhì)所提議的幀間預(yù)測處理器的上述處理機制實際上是在計算機系統(tǒng)中實 現(xiàn)的,其中指令以計算機程序的形式被編碼并被提供。計算機系統(tǒng)執(zhí)行這 種程序來提供本發(fā)明所期望的功能。為了存儲和分發(fā),這些程序可以被存 儲在計算機可讀存儲介質(zhì)中,計算機可讀介質(zhì)包括磁存儲設(shè)備、光盤、 磁光存儲介質(zhì),以及半導(dǎo)體存儲器器件。磁存儲設(shè)備包括硬盤驅(qū)動器(HDD)、軟盤(FD)和磁帶。光盤介質(zhì)包括數(shù)字通用光盤(DVD)、 DVD-RAM、只讀致密光盤(CD-ROM)、可記錄CD (CD-R)和可寫 CD (CD-RW)。磁光存儲介質(zhì)包括磁光盤(MO)。
便攜式存儲介質(zhì)(例如DVD和CD-ROM)適于分發(fā)程序產(chǎn)品。也可 以采用基于網(wǎng)絡(luò)分發(fā)軟件產(chǎn)品,在這種情況下在服務(wù)器計算機上使若干個 主程序文件可以經(jīng)由網(wǎng)絡(luò)下載到其他計算機。用戶計算機在其本地存儲單元中存儲用于幀間預(yù)測的必要的軟件組 件,這些軟件組件是先前已從便攜式存儲介質(zhì)安裝的或者從服務(wù)器計算機 下載的。計算機執(zhí)行從本地存儲單元讀取的程序,從而執(zhí)行所編程的功 能。作為程序執(zhí)行的替換方式,計算機可以執(zhí)行直接從便攜式存儲介質(zhì)讀 出的程序代碼。另 一種替換方法是用戶計算機在需要時從服務(wù)器計算機動 態(tài)下載程序,然后在傳遞完后執(zhí)行所下載的程序??偨Y(jié)從上面的部分可見,本發(fā)明在參考當(dāng)前塊對以外的塊執(zhí)行運動向量預(yù) 測時,根據(jù)關(guān)于當(dāng)前塊對及其相鄰塊對的給定編碼類型信息,確定參考運 動向量的存儲器地址。本發(fā)明在MBAFF模式中與在非MBAFF模式中一 樣快地完成該功能,從而減少了預(yù)測運動向量所需的時間。所提議的幀間預(yù)測處理器可以與參考圖片存儲器和參考圖片存儲管理. 器一起被使用。如果是這種情形,則參考運動向量的地址可以從自動計算 出的存儲器地址計算出。該特征不需要在存儲器中的多個存儲器位置中復(fù) 制計算出的運動向量,從而允許使用最小的塊尺寸。所提議的幀間預(yù)測處 理器從而減少了運動向量計算的處理時間。前述內(nèi)容被認(rèn)為僅是說明了本發(fā)明的原理。另外,由于本領(lǐng)域技術(shù)人 員將很容易進(jìn)行大量修改和改變,因此并不希望將本發(fā)明限制在這里示出 和描述的實際構(gòu)造和應(yīng)用,所以,所有合適的修改和等同物都可被認(rèn)為落 在權(quán)利要求及其等同物中的本發(fā)明的范圍內(nèi)。
權(quán)利要求
1.一種以塊為基礎(chǔ)執(zhí)行視頻幀的幀間預(yù)測的幀間預(yù)測處理器,包括地址選擇器,當(dāng)參考當(dāng)前塊對以外的塊執(zhí)行運動向量預(yù)測時,并且當(dāng)給定的宏塊自適應(yīng)幀/場標(biāo)識類型信息指示給定的圖片被假定以對于每個個體塊對允許在幀預(yù)測和場預(yù)測之間進(jìn)行選擇的宏塊自適應(yīng)幀/場模式被處理時,所述地址選擇器根據(jù)關(guān)于所述當(dāng)前塊對及其相鄰塊對的給定的編碼類型信息,提供參考運動向量的存儲器地址,其中所述編碼類型信息指示每個塊對是以幀形式還是以場形式被組織的;以及預(yù)測值計算器,其基于從所述被提供的存儲器地址讀出的參考運動向量確定針對所述當(dāng)前塊對的每個組成塊的運動向量預(yù)測值。
2. 如權(quán)利要求1所述的幀間預(yù)測處理器,其中,當(dāng)所述當(dāng)前塊對以場 形式被組織時,所述地址選擇器根據(jù)指示所述當(dāng)前塊是屬于上場還是下場 的場類型信息來確定所述參考運動向量的存儲器地址。
3. 如權(quán)利要求1所述的幀間預(yù)測處理器,其中,所述地址選擇器還在 所述給定的宏塊自適應(yīng)幀/場類型信息指示所述給定的圖片被假定以非宏塊 自適應(yīng)幀/場模式被處理時,提供在所述當(dāng)前塊以外的參考運動向量的存儲 器地址。
4. 如權(quán)利要求1所述的幀間預(yù)測處理器,還包括參考圖片存儲器,其提供與最小尺寸塊相對應(yīng)的向量存儲位置來存儲 針對具有可變尺寸的塊計算出的運動向量,以及參考圖片存儲管理器,其將所計算出的運動向量寫入到在所述參考圖 片存儲器中保留的所述向量存儲位置中,其中,所述地址選擇器基于關(guān)于要被所述預(yù)測值計算器參考的塊的尺 寸的信息確定在所述參考圖片存儲器中存儲的參考運動向量的存儲器地 址,并且其中所述預(yù)測值計算器請求所述地址選擇器提供針對特定相鄰塊 計算出的參考運動向量的存儲器地址,從所述被提供的所述參考圖片存儲 器的存儲器地址讀出所述參考運動向量,并且基于從所述參考圖片存儲器讀出的參考運動向量確定所述當(dāng)前塊的運動向量預(yù)測值,并且其中所述參考圖片存儲管理器將所述相鄰塊的參考運動向量寫入 到與所述相鄰塊相對應(yīng)的向量存儲位置中。
5. 如權(quán)利要求4所述的幀間預(yù)測處理器,其中,所述參考圖片存儲器 提供與所述當(dāng)前塊對相對應(yīng)的向量存儲位置。
6. 如權(quán)利要求4所述的幀間預(yù)測處理器,其中,所述地址選擇器包括 將塊尺寸和塊位置的每個組合與所述參考圖片存儲器的特定地址相關(guān)聯(lián)的 翻譯表,并且利用所述預(yù)測值計算器給出的信息對所述翻譯表進(jìn)行查找來 確定所述參考運動向量的存儲器地址。
7. 如權(quán)利要求4所述的幀間預(yù)測處理器,其中所述參考圖片存儲器包括存儲針對所述當(dāng)前塊計算出的運動向量的當(dāng) 前塊向量存儲位置和存儲針對與所述當(dāng)前塊相鄰的塊計算出的運動向量的 相鄰塊向量存儲位置;并且所述參考圖片存儲管理器在位置挨著所述當(dāng)前塊的塊被選為新的當(dāng)前 塊之前,將所述當(dāng)前塊的運動向量寫到所述相鄰塊向量存儲位置。
8. 如權(quán)利要求7所述的幀間預(yù)測處理器,其中所述地址選擇器包括 第一翻譯表,其將塊尺寸和塊位置的每個組合與所述當(dāng)前塊向量存儲位置之一的地址相關(guān)聯(lián);第二翻譯表,其用在非宏塊自適應(yīng)幀/場模式中將塊尺寸和塊位置的每 個組合與所述相鄰塊向量存儲位置之一的地址相關(guān)聯(lián);以及第三翻譯表,其用在宏塊自適應(yīng)幀/場模式中將塊尺寸和塊位置的每個 組合與所述相鄰塊向量存儲位置之一的地址相關(guān)聯(lián);其中,所述地址選擇器利用所述預(yù)測值計算器給出的信息對所述第 一、第二和第三翻譯表進(jìn)行査找,來確定所述參考運動向量的存儲器地 址。
9. 一種通過以塊為基礎(chǔ)執(zhí)行源圖片和參考圖片之間的運動補償預(yù)測來 將視頻信號編碼為壓縮視頻數(shù)據(jù)的視頻編碼設(shè)備,該設(shè)備包括地址選擇器,當(dāng)參考當(dāng)前塊對以外的塊執(zhí)行運動向量預(yù)測時,并且當(dāng) 給定的宏塊自適應(yīng)幀/場標(biāo)識類型信息指示給定的圖片被假定以對于每個個體塊對允許在幀預(yù)測和場預(yù)測之間進(jìn)行選擇的宏塊自適應(yīng)幀/場模式被處理 時,所述地址選擇器根據(jù)關(guān)于所述當(dāng)前塊對及其相鄰塊對的給定的編碼類 型信息,提供參考運動向量的存儲器地址,其中所述編碼類型信息指示每個塊對是以幀形式還是以場形式被組織的;以及幀間預(yù)測處理器,其基于從所述被提供的存儲器地址讀出的參考運動 向量來確定針對所述當(dāng)前塊對的每個組成塊的運動向量預(yù)測值,并且計算 所計算出的所述當(dāng)前塊的運動向量和所述被確定的運動向量預(yù)測值之間的 差值,從而使得所計算出的差值被編碼。
10. —種從通過以塊為基礎(chǔ)執(zhí)行運動補償幀間預(yù)測所產(chǎn)生的壓縮視頻 信號重構(gòu)原始視頻圖片的視頻解碼設(shè)備,該設(shè)備包括地址選擇器,當(dāng)參考當(dāng)前塊對以外的塊執(zhí)行運動向量預(yù)測時,并且當(dāng) 給定的宏塊自適應(yīng)幀/場標(biāo)識類型信息指示給定的圖片被假定以對于每個個 體塊對允許在幀預(yù)測和場預(yù)測之間進(jìn)行選擇的宏塊自適應(yīng)幀/場模式被處理 時,所述地址選擇器根據(jù)關(guān)于所述當(dāng)前塊對及其相鄰塊對的給定的編碼類 型信息,提供參考運動向量的存儲器地址,其中所述編碼類型信息指示每 個塊對是以幀形式還是以場形式被組織的;以及幀間預(yù)測處理器,其基于從所述被提供的存儲器地址讀出的參考運動 向量來確定針對所述當(dāng)前塊對的每個組成塊的運動向量預(yù)測值,并且從所 確定出的運動向量預(yù)測值和經(jīng)解碼的運動向量差值重構(gòu)所述當(dāng)前塊的運動 向量。
全文摘要
本發(fā)明公開了一種具有提供參考運動向量的位置的機制的幀間預(yù)測處理器。其中幀間預(yù)測處理器被設(shè)計用于高速視頻編碼和解碼。該幀間預(yù)測處理器具有地址選擇器和預(yù)測值計算器。地址選擇器接收關(guān)于MBAFF類型和編碼類型的信息。在參考圍繞當(dāng)前塊的塊執(zhí)行對給定的MBAFF圖片的運動補償時,該地址選擇器根據(jù)當(dāng)前塊對的編碼類型和參考塊的編碼類型,提供參考運動向量的存儲器地址。預(yù)測值計算器基于從所提供的存儲器地址讀出的參考運動向量,確定當(dāng)前塊對的每個組成塊的運動向量預(yù)測值。
文檔編號H04N7/26GK101127913SQ200710103038
公開日2008年2月20日 申請日期2007年4月29日 優(yōu)先權(quán)日2006年8月18日
發(fā)明者仲石英典 申請人:富士通株式會社