專利名稱::隔行掃描視頻的編碼與解碼的制作方法
技術(shù)領(lǐng)域:
:描述了隔行掃描視頻編碼與解碼的技術(shù)和工具。
背景技術(shù):
:數(shù)字視頻消耗大量存儲和傳輸能力。典型的原始數(shù)字視頻序列每秒鐘包括15或30幀。每幀可以包括成千上萬個象素(也稱為pel),其中每個象素代表圖像的一個微小元素。在原始格式中,計算機通常將一個象素表示為一組三個樣本,總共24個比特。例如,一個象素可包括八位亮度樣本(也稱為luma樣本,因為術(shù)語“l(fā)uminance(亮度)”和“l(fā)uma”在這里可交換使用),它定義了象素的灰度級分量,并包括兩個八位色度樣本(也稱為chroma樣本,因為術(shù)語“chrominance(色度)”和“chroma”在這里可交換使用),它們定義了象素的色彩分量。因而,典型的原始數(shù)字視頻序列每秒鐘的比特數(shù),即比特率可以是每秒5百萬個比特或更多。許多計算機和計算機網(wǎng)絡(luò)缺乏處理原始數(shù)字視頻的資源。因此,工程師使用壓縮(也稱為編碼或譯碼)來降低數(shù)字視頻的比特率。壓縮通過將視頻轉(zhuǎn)換成較低比特率形式來降低存儲和傳輸視頻的成本。解壓(也稱為解碼)從壓縮格式重構(gòu)原始視頻的版本?!熬幗獯a器”是編碼器/解碼器系統(tǒng)。壓縮可以是無損的,其中視頻質(zhì)量不受損害,但在比特率方面的降低受到視頻數(shù)據(jù)的可變性的固有量(有時稱為熵)限制?;蛘?,壓縮可以是有損的,其中視頻質(zhì)量受到損害,但在比特率方面可達到的降低是相當(dāng)顯著的。有損壓縮經(jīng)常結(jié)合無損壓縮使用_有損壓縮建立信息的近似值,而應(yīng)用無損壓縮來表示該近似值。通常,視頻壓縮技術(shù)包括“圖像內(nèi)”壓縮和“圖像間”壓縮,其中圖像是例如逐行掃描的視頻幀、隔行掃描視頻幀(具有視頻半幀的交替行)或隔行掃描視頻半幀。對于逐行掃描幀,圖像內(nèi)壓縮技術(shù)壓縮獨立的幀(一般稱為I幀或關(guān)鍵幀),而圖像間壓縮技術(shù)參考前導(dǎo)和/或后續(xù)幀(一般稱為參考或錨幀)或多個前導(dǎo)和/或后續(xù)幀(用于B幀)來壓縮幀(一般稱為預(yù)測幀,P幀,或B幀)。圖像間壓縮技術(shù)經(jīng)常使用運動估計和運動補償。對于運動估計,例如,編碼器將當(dāng)前的預(yù)測幀劃分成8x8或16x16個象素單元。對于當(dāng)前幀的一個單元,找出參考幀中的相似單元用作預(yù)測值。運動矢量指示該預(yù)測值在參考幀中的位置。換言之,當(dāng)前幀的一個單元的運動矢量指示在當(dāng)前幀中該單元的空間位置與在參考幀中預(yù)測值的空間位置之間的位移。編碼器計算當(dāng)前單元與預(yù)測值之間的逐樣本差,以確定殘差(也稱為誤差信號)。如果當(dāng)前單元大小是16x16,則將殘差分成四個8x8塊。對于每個8x8的殘差,編碼器應(yīng)用一個可逆的頻率變換運算,它產(chǎn)生一組頻域(即頻譜)系數(shù)。離散余弦變換[“DCT”]是一種類型的頻率變換。對所得到的頻譜系數(shù)塊進行量化并且熵編碼。如果將預(yù)測幀用作后續(xù)運動補償?shù)膮⒖?,則編碼器重構(gòu)預(yù)測幀。當(dāng)重構(gòu)殘差時,編碼器重構(gòu)量化過的變換系數(shù)(例如,DCT系數(shù)),并且執(zhí)行反頻率變換,如反DCT[“IDCT”]。編碼器執(zhí)行運動補償以計算預(yù)測值,并且將這些預(yù)測值與殘差組合起來。在解碼時,解碼器一般對信息進行熵編碼并且執(zhí)行模擬運算來重構(gòu)殘差,執(zhí)行運動補償,并且將預(yù)測值與殘差組合起來。I.在WindowsMediaVideo版本8和9中的幀間壓縮微軟公司的WindowsMediaVideo(Windows媒體視頻)版本8["WMV8"]包括視頻編碼器和視頻解碼器。WMV8編碼器使用幀內(nèi)和幀間壓縮,而WMV8解碼器使用幀內(nèi)和幀間解壓。WindowsMediaVideo版本9[“WMV9”]對許多操作使用類似的體系結(jié)構(gòu)。WMV8編碼器中的幀間壓縮使用基于塊的經(jīng)運動補償?shù)念A(yù)測編碼,之后是殘留誤差的變換編碼。圖1和2示出了用于WMV8編碼器中的預(yù)測幀的基于塊的幀間壓縮。具體地,圖1示出了用于預(yù)測幀(110)的運動估計,圖2示出了用于預(yù)測幀的經(jīng)運動補償?shù)膲K的預(yù)測殘差的壓縮。例如,在圖1中,WMV8編碼器為預(yù)測幀(110)中的宏塊(115)計算運動矢量。為計算運動矢量,編碼器在參考幀(130)的搜索區(qū)域(135)中進行搜索。在搜索區(qū)域(135)中,編碼器將來自預(yù)測幀(110)的宏塊(115)與各種候選宏塊進行比較,以找出作為良好匹配的候選宏塊。編碼器輸出指定匹配宏塊的運動矢量(熵編碼的)的信息。由于運動矢量值經(jīng)常與空間圍繞的運動矢量的值相關(guān),因此用于發(fā)送運動矢量信息的數(shù)據(jù)的壓縮可以通過從相鄰宏塊中確定或選擇一個運動矢量預(yù)測值并且使用該運動矢量預(yù)測值預(yù)測當(dāng)前宏塊的運動矢量來完成。編碼器可以編碼運動矢量與運動矢量預(yù)測值之間的差分。例如,編碼器計算運動矢量的水平分量與運動矢量預(yù)測值的水平分量之間的差,計算運動矢量的垂直分量與運動矢量預(yù)測值的垂直分量之間的差,以及編碼這些差。在通過將差分加到預(yù)測值重構(gòu)運動矢量之后,解碼器使用運動矢量,利用來自參考幀(130)的信息來為宏塊(115)計算預(yù)測宏塊,參考幀(130)是在編碼器和解碼器處可用的先前重構(gòu)的幀。預(yù)測很少是完美的,因此編碼器通常對預(yù)測宏塊和宏塊(115)本身之間的像素差塊(也稱為誤差或殘差塊)進行編碼。圖2示出了WMV8編碼器中的誤差塊(235)的計算和編碼的示例。誤差塊(235)是預(yù)測的塊(215)和原始的當(dāng)前塊(225)之差。編碼器向誤差塊(235)應(yīng)用離散余弦變換[“DCT”](240),得到8X8的系數(shù)塊(245)。編碼器然后量化(250)該DCT系數(shù),得到8X8的經(jīng)量化的DCT系數(shù)塊(255)。編碼器將8X8的塊255掃描(260)成一維數(shù)組(265),使得系數(shù)一般從最低頻率到最高頻率排序。編碼器使用行程長度編碼(270)的變更對掃描的系數(shù)進行熵編碼。編碼器從一個或多個“行程/等級/最后”表(275)中選擇熵碼,并輸出該熵碼。圖3示出了用于幀間編碼塊的對應(yīng)解碼過程(300)的示例。在圖3的概述中,解碼器使用可變長度解碼(310),利用一個或多個“行程/級別/最后”表315和行程長度解碼(320),對表示預(yù)測殘差的熵編碼的信息進行解碼(310、320)。解碼器將儲存熵編碼的信息的一維數(shù)組325反掃描(330)成二維塊(335)。解碼器對該數(shù)據(jù)進行反量化和離散反余5弦變換(共同在340處),得到重構(gòu)的誤差塊(345)。在獨立的運動補償路徑中,解碼器對從參考幀的偏移使用運動矢量信息(355)計算預(yù)測塊(365)。解碼器將預(yù)測塊(365)與重構(gòu)的誤差塊(345)組合(370),以形成重構(gòu)塊(375)。II.隔行掃描視頻和逐行掃描視頻視頻幀包含視頻信號的空間信息的行。對于逐行掃描視頻,這些行包含從一個時刻開始繼續(xù)以光柵掃描的方式通過連續(xù)的行直到幀底部的樣值。逐行掃描的I幀是幀內(nèi)編碼的逐行掃描視頻幀。逐行掃描的P幀是使用前向預(yù)測編碼的逐行掃描視頻幀,而逐行掃描的B幀是使用雙向預(yù)測編碼的逐行掃描視頻幀。隔行掃描視頻的主要方面是整個視頻幀的光柵掃描是通過兩遍完成的,其中每遍掃描交替的行。例如,第一掃描是由幀的偶數(shù)行構(gòu)成,而第二掃描是由掃描的奇數(shù)行構(gòu)成。這導(dǎo)致每個幀包含兩個半幀,它們表示兩個不同的時間點。圖4示出包括上半幀(410)和下半幀(420)的隔行掃描的視頻幀(400)。在幀(400)中,偶數(shù)號的行(上半幀)是從一個時刻(例如,時刻t)開始掃描的,而奇數(shù)號的行(下半幀)是從一個不同(通常稍晚)的時刻(例如,時刻t+1)開始掃描的。當(dāng)兩個半幀在不同的時刻開始掃描時,這一時序可創(chuàng)建隔行掃描視頻幀的存在運動的區(qū)域中看似鋸齒狀的特征。為此,可依照半幀結(jié)構(gòu)對隔行掃描視頻幀重新排列,使得奇數(shù)行被組合在一起成為一個半幀,而偶數(shù)行被組合在一起成為另一半幀。這一排列被稱為半幀編碼,它在高運動圖像中對于降低這一鋸齒狀邊緣的人為因素是非常有用的。另一方面,在靜止區(qū)域中,隔行掃描視頻幀中的圖像細(xì)節(jié)可被更有效地保存,而無需這樣的重新排列。因此,通常在靜止或低運動的隔行掃描視頻幀中使用幀編碼,在這樣的視頻幀中,保存了原始的交錯半幀行排列。典型的逐行掃描視頻幀由具有非交錯行的內(nèi)容的一幀構(gòu)成。與隔行掃描視頻相反,逐行掃描視頻不將視頻幀劃分成獨立的半幀,且從單個時刻開始,從左到右、從上到下掃描整個幀。III.在WMV編碼器和解碼器中先前的編碼與解碼以可執(zhí)行形式發(fā)布的用于WMV編碼器和解碼器的早先的軟件已經(jīng)使用了逐行掃描和隔行掃描P幀的編碼與解碼。盡管編碼器和解碼器對于許多不同的編碼/解碼情形和內(nèi)容類型是有效的,但是在若干地方還有改進空間。A.運動補償?shù)膮⒖紙D像編碼器和解碼器使用運動補償用于逐行掃描和隔行掃描前向預(yù)測幀。對于逐行掃描P幀,運動補償是相對于單個參考幀的,后者是先前重構(gòu)的I幀或P幀,當(dāng)前P幀緊跟在該幀之后。由于當(dāng)前P幀的參考幀是已知的,并且只有一個參考幀是可能的,因此不需要用于在多個參考幀之間選擇的信息。隔行掃描P幀的宏塊可以是半幀編碼的,或者是幀編碼的。在半幀編碼的宏塊中,最多兩個運動矢量與該宏塊相關(guān)聯(lián),一個用于上半幀而一個用于下半幀。在幀編碼的宏塊中,最多一個運動矢量與該宏塊相關(guān)聯(lián)。對于在隔行掃描P幀中的幀編碼宏塊,運動補償是相對于單個參考幀的,后者是先前重構(gòu)的I幀或P幀,當(dāng)前P幀緊跟在該幀之后。對于在隔行掃描P幀中的半幀編碼宏塊,運動補償仍是相對于單個參考幀的,但對于半幀編碼宏塊的上半幀的運動矢量只考慮參考幀的上半幀行,并且對于半幀編碼宏塊的下半幀的運動矢量只考慮參考幀的下半幀行。再一次,由于參考幀是已知的并且只有一個參考幀是可能的,因此不需要用于在多個參考幀之間選擇的信息。在某些編碼/解碼情形(例如,帶有許多運動的高比特率隔行掃描視頻)中,限制對前向預(yù)測的運動補償相對于單個參考可能會損害整個壓縮效率。B.用信號表示宏塊信息編碼器和解碼器使用用于逐行掃描或隔行掃描P幀的宏塊信息的信號表示。1.用信號表示用于逐行掃描P幀的宏塊信息逐行掃描P幀可以是IMV或混合MV幀。IMVP逐行掃描幀包括IMV宏塊。IMV宏塊具有一個運動矢量,它指示在該宏塊中所有六個塊的預(yù)測塊位移。混合MV逐行掃描P幀包括IMV和/或4MV宏塊。4MV宏塊具有從0到4個運動矢量,其中每個運動矢量用于該宏塊的最多四個亮度塊之一。在逐行掃描P幀中的宏塊可以是三種可能類型之一1MV,4MV和跳過。另外,IMV和4MV宏塊可以是幀內(nèi)編碼的。宏塊類型是由圖像與宏塊層元素的組合來指示的。因而,IMV宏塊可以在IMV和混合MV逐行掃描幀中出現(xiàn)。單個運動矢量數(shù)據(jù)MVDATA元素與IMV宏塊中的所有塊相關(guān)聯(lián)。MVDATA用信號表示這些塊被編碼為幀內(nèi)編碼類型還是被編碼為幀間編碼類型。如果它們被編碼為幀間編碼,則MVDATA還指示運動矢量差分。如果逐行掃描P幀是1MV,則在該幀中的所有運動矢量是IMV宏塊,因此沒有必要單獨地用信號表示宏塊類型。如果逐行掃描P幀是混合MV,則在該幀中的宏塊可以是IMV或4MV。在這種情況下,通過比特流中圖像層處的位平面,為幀中的每個宏塊用信號表示宏塊類型(1MV或4MV)。經(jīng)解碼的位平面將宏塊的1MV/4MV狀態(tài)以上左至下右的光柵掃描順序表示為1比特值的平面。值0指示相應(yīng)的宏塊是以IMV模式編碼的。值1指示相應(yīng)的宏塊是以4MV模式編碼的。在一個編碼模式中,在比特流的宏塊層處的每個宏塊用信號表示1MV/4MV狀態(tài)信息(而非表示為逐行掃描P幀的平面)。4MV宏塊出現(xiàn)在混合MV逐行掃描幀中。在4MV宏塊內(nèi)的各個塊可以被編碼為幀內(nèi)編碼塊。對于4MV宏塊的四個亮度塊中的每一個,幀內(nèi)編碼/幀間編碼狀態(tài)是由與該塊相關(guān)聯(lián)的塊運動矢量數(shù)據(jù)BLKMVDATA元素用信號表示的。對于4MV宏塊,已編碼塊模式CBPCY元素指示哪些塊在比特流中存在BLKMVDATA元素。色度塊的幀間編碼/幀內(nèi)編碼狀態(tài)是從亮度幀間編碼/幀內(nèi)編碼狀態(tài)導(dǎo)出的。如果兩個或多個亮度塊被編碼為幀內(nèi)編碼,則色度塊也被編碼為幀內(nèi)編碼。另外,幀中每個宏塊的跳過/非跳過狀態(tài)也是由逐行掃描幀的位平面用信號表示的。跳過的宏塊仍可具有混合運動矢量預(yù)測的相關(guān)信息。CBCPY是可變長度代碼[“VLC”],它被解碼為一個6比特字段。CBPCY出現(xiàn)在IMV和4MV宏塊的比特流中的不同位置,并且對于IMV和4MV宏塊具有不同的語義。如果(I)MVDATA指示該宏塊是幀間編碼的,以及(2)MVDATA指示IMV宏塊的至少一個塊包含系數(shù)信息(由從MVDATA解碼的“最后一個”值指示的),則CBPCY存在于IMV宏塊層中。如果CBPCY存在,則它被解碼為一個6比特字段,它指示相應(yīng)的六個塊中的哪一些包含至少一個非零的系數(shù)。CBCPY始終在4MV宏塊層中存在。亮度塊的CBPCY比特位置(位0_3)與色度塊的比特位置(位4與5)相比,有輕微不同的意義。對于亮度塊的一個比特位置,0指示相應(yīng)塊不包含運動矢量信息或任何非零系數(shù)。對于這樣一個塊,BLKMVDATA不存在,預(yù)測運動矢量用作運動矢量,并且沒有殘差數(shù)據(jù)。如果運動矢量預(yù)測值指示使用混合運動矢量預(yù)測,則存在一個單一比特,它指示要使用的候選運動矢量預(yù)測值。在亮度塊的一個比特位置中的1指示該塊存在BLKMVDATA。BLKMVDATA指示該塊是幀間編碼還是幀內(nèi)編碼,并且如果是幀間編碼,則指示運動矢量差分。BLKMVDATA還指示是否存在該塊的系數(shù)數(shù)據(jù)(用從BLKMVDATA解碼的“最后一個”值)。對于色度塊的一個比特位置,O或1指示相應(yīng)塊是否包含非零系數(shù)信息。編碼器和解碼器使用VLC表的代碼表,分別用于MVDATA、BLKMVDATA和CBCPY。2.用信號表示用于隔行掃描P幀的宏塊信息隔行掃描P幀可具有幀編碼與半幀編碼宏塊的混合。在半幀編碼宏塊中,最多兩個運動矢量與該宏塊相關(guān)聯(lián)。在幀編碼宏塊中,最多一個運動矢量與該宏塊相關(guān)聯(lián)。如果序列層元素INTERLACE是1,則圖像層元素INTRLCF存在于比特流中。INTRLCF是1比特的元素,它指示用于在該幀中編碼宏塊的模式。如果INTRLCF=0,則在幀中的所有宏塊以幀模式編碼。如果INTRLCF=1,則宏塊可以用半幀或幀模式編碼,并且在圖像層中存在的位平面INTRLCMB指示隔行掃描P幀中每個宏塊的半幀/幀編碼狀態(tài)。在隔行掃描P幀中的宏塊可以是三種可能類型之一幀編碼,半幀編碼和跳過。宏塊類型是由圖像與宏塊層元素的組合指示的。單個MVDATA與幀編碼宏塊中的所有塊相關(guān)聯(lián)。MVDATA用信號表示將塊編碼為幀內(nèi)編碼還是幀間編碼類型。如果它們被編碼為幀間編碼,則MVDATA還指示運動矢量差分。在半幀編碼宏塊中,上半幀運動矢量數(shù)據(jù)T0PMVDATA元素與上半幀塊相關(guān)聯(lián),而下半幀運動矢量數(shù)據(jù)B0TMVDATA元素與下半幀塊相關(guān)聯(lián)。在每個半幀的第一塊處用信號表示這些元素。更明確地說,T0PMVDATA連同左上半幀塊一起用信號表示,而B0TMVDATA連同左下半幀塊一起用信號表示。T0PMVDATA指示上半幀塊是幀內(nèi)編碼還是幀間編碼。如果它們是幀間編碼,則T0PMVDATA還指示上半幀塊的運動矢量差分。同樣,B0TMVDATA用信號表示下半幀塊的幀間編碼/幀內(nèi)編碼狀態(tài),以及可能的下半幀塊的運動矢量差分信息。CBPCY指示哪些半幀具有在比特流中存在的運動矢量數(shù)據(jù)元素。跳過的宏塊是由圖像層中的SKIPMB位平面用信號表示的。CBPCY和運動矢量數(shù)據(jù)元素用于指定塊是否具有AC系數(shù)。如果從MVDATA解碼的“最后一個”值指示在運動矢量之后有數(shù)據(jù)要解碼,則對隔行掃描幀的幀編碼宏塊存在CBPCY。如果CBPCY存在,則它被解碼為一個6比特字段,一個比特用于四個Y塊中的每一個,一個比特用于兩個U塊(上半幀和下半幀),以及一個比特用于兩個V塊(上半幀和下半幀)。對半幀編碼宏塊始終存在CBPCY。CBPCY和兩個半幀運動矢量數(shù)據(jù)元素用于確定宏塊的塊中存在AC系數(shù)。CBPCY的意義與幀編碼宏塊的比特1、3、4和5相同。S卩,它們指示AC系數(shù)在右上半幀Y塊、右下半幀Y塊、上/下U塊和上/下V塊中的存在和不存在。對于比特位置0和2,意義輕微不同。在比特位置0中的0指示T0PMVDATA不存在,并且運動矢量預(yù)測值用作上半幀塊的運動矢量。它還指示左上半幀塊不包含任何非零系數(shù)。在比特位置0中的1指示T0PMVDATA存在。T0PMVDATA指示上半幀塊是幀間編碼還是幀內(nèi)編碼,并且如果它們是幀間編碼,還指示運動矢量差分。如果從T0PMVDATA解碼的“最后一個”值解碼為1,則對左上半幀塊不存在AC系數(shù),否則,不存在左上半幀塊的非零AC系數(shù)。同樣,上述規(guī)則應(yīng)用于BOTMVDATA的比特位置2和左下半幀塊。編碼器和解碼器使用VLC表的代碼表選擇,分別用于MVDATA、T0PMVDATA、BOTMVDATA和CBPCY。3.與早先的宏塊信息信號表示有關(guān)的問題總之,逐行掃描幀和隔行掃描幀的宏塊的各種信息是用在幀和宏塊層處的獨立代碼(或者代碼的組合)來用信號表示的。該獨立地用信號表示的信息包括運動矢量的數(shù)量、宏塊幀內(nèi)編碼/幀間編碼狀態(tài)、CBPCY存在或不存在(例如,通過用于IMV和幀編碼宏塊的“最后一個”值)以及運動矢量數(shù)據(jù)存在或不存在(例如,通過用于4MV和半幀編碼宏塊的CBPCY)。盡管該信號表示在許多情況下提供良好的總體性能,但是它沒有充分地利用各種普通情況下不同的用信號表示的信息之間的統(tǒng)計相關(guān)性。而且,它不允許和不處理各種有用的配置,諸如用于4MV宏塊的CBPCY的存在/不存在,或者用于IMV宏塊的運動矢量數(shù)據(jù)的存在/不存在。而且,就用信號表示運動矢量數(shù)據(jù)的存在/不存在(例如,通過用于4MV和半幀編碼宏塊的CBPCY)而言,它要求CBPCY元素的常規(guī)角色的混亂的重新定義。這進而要求通過不同的元素(例如BLKMVDATA、TOPMVDATA、BOTMVDATA)(它們按照慣例不用于該目的)來用信號表示常規(guī)的CBCPY信息。并且,信號表示不允許和不處理各種有用的配置,諸如當(dāng)運動矢量數(shù)據(jù)不存在時系數(shù)信息的存在。C.運動矢量預(yù)測對于在隔行掃描或逐行掃描P幀中的宏塊(或者塊,或者宏塊的半幀等)的運動矢量,編碼器通過基于相鄰的運動矢量計算運動矢量預(yù)測值、計算運動矢量與運動矢量預(yù)測值之間的差分和編碼該差分來編碼運動矢量。解碼器通過計算運動矢量預(yù)測值(再次基于相鄰的運動矢量)、解碼運動矢量差分和將運動矢量差分加到運動矢量預(yù)測值來重構(gòu)運動矢量。圖5A和5B示出了對IMV逐行掃描P幀中的IMV宏塊的候選運動矢量預(yù)測值考慮的宏塊的位置。候選預(yù)測值取自左側(cè)、頂部和右上角的宏塊,除了在宏塊是行中的最后一個宏塊的情況之外。在這一情況下,預(yù)測值B取自左上角的宏塊,而非右上角。對于其中該幀是一個宏塊寬的特殊情況,預(yù)測值總是為預(yù)測值A(chǔ)(頂部預(yù)測值)。當(dāng)由于宏塊在頂行中而使預(yù)測值A(chǔ)位于帶外時,預(yù)測值為預(yù)測值C。各種其它規(guī)則解決諸如幀內(nèi)編碼預(yù)測值等其它特殊情況。圖6A-10示出了為混合MV逐行掃描P幀中的IMV或4MV宏塊的運動矢量的多達三個候選運動矢量考慮的塊或宏塊的位置。在附圖中,較大的方塊是宏塊邊界,而較小的方塊是塊邊界。對于其中幀是一個宏塊寬的特殊情況,預(yù)測值總是預(yù)測值A(chǔ)(頂部預(yù)測值)。各種其它規(guī)則解決諸如對頂行的4MV宏塊的頂行塊、頂行的IMV宏塊以及幀內(nèi)編碼預(yù)測值等其它特殊情況。具體地,圖6A和6B示出了為混合MV逐行掃描P幀中的IMV當(dāng)前宏塊的候選運動矢量預(yù)測值考慮的塊位置。相鄰宏塊可以是IMV或4MV宏塊。圖6A和6B示出了假定鄰塊是4MV時候選運動矢量的位置(即,預(yù)測值A(chǔ)是對于在當(dāng)前宏塊上方的宏塊中的塊2的運動矢量,而預(yù)測值C是直接在當(dāng)前宏塊左邊的宏塊中的塊1的運動矢量)。如果鄰塊中的任一塊是IMV宏塊,則圖5A和5B所示的運動矢量預(yù)測值被帶到整個宏塊的運動矢量預(yù)測值。如圖6B所示,如果宏塊是行中的最后一個宏塊,則預(yù)測值B來自左上角的宏塊的塊3,而非其它情況下的右上角宏塊中的塊2。圖7A-10示出了為混合MV逐行掃描P幀的4MV宏塊中的4個亮度塊的每一個的候選運動矢量預(yù)測值考慮的塊位置。圖7A和7B示出了為位置0處的塊的候選運動矢量預(yù)測值考慮的塊位置;圖8A和8B示出了為位置1處的塊的候選運動矢量預(yù)測值考慮的塊位置的圖示;圖9示出了為位置2處的塊的候選運動矢量預(yù)測值考慮的塊位置;圖10示出了為位置3處的塊的候選運動矢量預(yù)測值考慮的塊位置。再一次,如果鄰塊是IMV宏塊,則該宏塊的運動矢量預(yù)測值用于該宏塊的各塊。對于其中宏塊是行中的第一個宏塊的情況,塊0的預(yù)測值B與該行中其余宏塊的塊0不同地處理(見圖7A和7B)。在這一情況下,預(yù)測值B取自直接在當(dāng)前宏塊上方的宏塊中的塊3,而非如其它情況下取自在當(dāng)前宏塊左上方的宏塊中的塊3。類似地,對于其中宏塊是行中的最后一個宏塊的情況,塊1的預(yù)測值B加以不同的處理(圖8A和8B)。在這一情況下,預(yù)測值取自直接在當(dāng)前宏塊上方的宏塊中的塊2,而非如其它情況下取自當(dāng)前宏塊右上方的宏塊中的塊2。一般而言,如果宏塊是在第一個宏塊列中,塊0和2的預(yù)測值C被設(shè)為等于0。如果逐行掃描幀的宏塊被編碼為跳過的,則它的運動矢量預(yù)測值用作該宏塊的運動矢量(或者它的塊的預(yù)測值用于這些塊,等等)。仍存在單個比特,以指示在混合運動矢量預(yù)測中要使用哪個預(yù)測值。圖11和12A-B示出了隔行掃描P幀中,分別用于幀編碼的宏塊和半幀編碼的宏塊的運動矢量預(yù)測的候選預(yù)測值的示例。圖11示出了在隔行掃描的P幀中用于內(nèi)部位置的當(dāng)前幀編碼的宏塊(不是宏塊行中的第一個或最后一個宏塊,不在頂行中)的候選預(yù)測值A(chǔ)、B和C。預(yù)測值可以從除標(biāo)記為A、B和C之外的不同候選方向上獲得(例如,在諸如當(dāng)前宏塊是行中的第一個宏塊或最后一個宏塊,或在頂行中的特殊情況下,由于某些預(yù)測值對于這些情況是不可用的)。對于當(dāng)前幀編碼的宏塊,候選預(yù)測值是根據(jù)相鄰的宏塊是半幀編碼還是幀編碼的來不同地計算的。對于相鄰的幀編碼的宏塊,僅僅取其運動矢量作為候選預(yù)測值。對于相鄰的半幀編碼的宏塊,通過對上半幀和下半幀運動矢量求平均值來確定候選運動矢量。圖12A-B示出了用于半幀中的內(nèi)部位置的半幀編碼的宏塊中的當(dāng)前半幀的候選預(yù)測值A(chǔ)、B和C。在圖12A中,當(dāng)前半幀是下半幀,且相鄰宏塊中的下半幀運動矢量用作候選預(yù)測值。在圖12B中,當(dāng)前半幀是上半幀,且相鄰宏塊中的上半幀運動矢量用作候選預(yù)測值。對于當(dāng)前半幀編碼的宏塊中的每一半幀,每一半幀的運動矢量候選預(yù)測值的數(shù)目最多是3,其中每一候選預(yù)測值來自與當(dāng)前半幀相同的半幀類型(例如,上半幀或下半幀)。如果相鄰宏塊是幀編碼的,則其運動矢量用作上半幀預(yù)測值和下半幀預(yù)測值。再一次,當(dāng)當(dāng)前宏塊是行中的第一個宏塊或最后一個宏塊,或在頂行中時,由于某些預(yù)測值對于這些情況是不可用的,因此應(yīng)用各種特殊情況(未示出)。如果幀是一個宏塊寬,則運動矢量預(yù)測值是預(yù)測值A(chǔ)。如果相鄰宏塊是幀內(nèi)編碼的,則它的運動矢量預(yù)測值是0。圖13A和13B示出在給出一組預(yù)測值A(chǔ)、B和C時計算運動矢量預(yù)測值的偽代碼。要從一組候選預(yù)測值中選擇一個預(yù)測值,編碼器和解碼器使用一選擇算法,諸如圖13C中所示的求三個數(shù)的中值(median-of-three)算法。D.逐行掃描P-幀的混合運動矢量預(yù)測允許混合運動矢量預(yù)測用于逐行掃描P幀的運動矢量。對于宏塊或塊的運動矢量,無論逐行掃描P幀是IMV還是混合MV,相對于A和C預(yù)測值測試在前面章節(jié)中計算的運動矢量預(yù)測值,以確定預(yù)測值選擇是否顯式地在比特流中編碼。如果是,則解碼一個比特,它指示使用預(yù)測值A(chǔ)還是預(yù)測值C作為運動矢量的運動矢量預(yù)測值(而非使用在上面章節(jié)C中計算的運動矢量預(yù)測值)?;旌线\動矢量預(yù)測不在隔行掃描P幀或者隔行掃描視頻的任何表示的運動矢量預(yù)測中使用。圖14A與14B中的偽代碼示出逐行掃描P幀的運動矢量的混合運動矢量預(yù)測。在該偽代碼中,變量predictor_pre_x和predictor_pre_y分別是水平和垂直運動矢量預(yù)測值,如在前面章節(jié)中計算的。變量predictor_post_x和predictor_post_y分別是在檢查混合運動矢量預(yù)測之后的水平和垂直運動矢量預(yù)測值。E.解碼運動矢量差分對于逐行掃描P幀的宏塊或塊,MVDATA或BLKMVDATA元素用信號表示運動矢量差分信息。IMV宏塊具有單個MVDATA。4MV宏塊具有零與四個之間的BLKMVDATA元素(其存在由CBPCY指示)。MVDATA或BLKMVDATA對以下三項聯(lián)合編碼(1)水平運動矢量差分分量;(2)垂直運動矢量差分分量;以及(3)二進制的“最后”標(biāo)志,它一般指示變換系數(shù)是否存在。將宏塊(或塊,對于4MV)是幀內(nèi)編碼還是幀間編碼用信號表示為運動矢量差分可能性之一。在圖15A與15B中的偽代碼示出如何為MVDATA或BLKMVDATA解碼運動矢量差分信息、幀間編碼/幀內(nèi)編碼類型和最后標(biāo)志信息。在該偽代碼中,變量last_flag是一個二進制標(biāo)志,其用途在關(guān)于用信號表示宏塊信息的章節(jié)中描述。變量infra_flag是一個二進制標(biāo)志,它指示塊或宏塊是否為幀內(nèi)編碼的。變量dmv_X和dmv_y分別是差分水平與垂直運動矢量分量。變量k_x和k_y對于擴展范圍運動矢量是定長的,它們的值如圖15C的表格所示地變化。變量halfpel_flag是一個二進制值,它指示用于運動矢量的是二分之一象素還是四分之一象素,并且其值是基于圖像層句法元素設(shè)置的。最后,表sizejable和Offsetjable是如下定義的數(shù)組size_table[6]={0,2,3,4,5,8},以及offset_table[6]{0,1,3,7,15,31}.對于隔行掃描P幀的幀編碼或半幀編碼宏塊,以相同的方法解碼MVDATA、T0PMVDATA和BLTMVDATA。F.重構(gòu)和導(dǎo)出運動矢量亮度運動矢量是從經(jīng)編碼的運動矢量差分信息和運動矢量預(yù)測值重構(gòu)的,而色度運動矢量是從重構(gòu)的亮度運動矢量中導(dǎo)出的。對于逐行掃描P幀的IMV和4MV宏塊,亮度運動矢量是通過將差分加到運動矢量預(yù)測值來重構(gòu)的,如下mv_x=(dmv_x+predictor_x)smodrange_x,mv_y=(dmv_y+predictor_y)smodrange_y,其中smod是如下定義的有符號模運算Asmodb=((A+b)%2b)_b,它保證重構(gòu)的矢量是有效的。在IMV宏塊中,對于構(gòu)成宏塊的亮度分量的四個塊,有單個運動矢量。如果宏塊是幀內(nèi)編碼的,則沒有運動矢量與該宏塊相關(guān)聯(lián)。如果宏塊是跳過的,則dmv_X=0且dmv_y=0,因此mv_x=predictor_x且mv_y=predictor_y。在4MV宏塊中的每個幀間編碼亮度塊具有它自己的運動矢量。因此,在一個4MV宏塊中,將存在0到4個亮度運動矢量。如果4MV宏塊是跳過的或者如果4MV宏塊的CBPCY指示塊是非編碼的,則4MV宏塊中非編碼的塊可以出現(xiàn)。如果塊不是編碼的,則dmv_X=0且dmv_y=0,因此mv_x=predictor_x且mv_y=predictor_y。對于逐行掃描幀,色度運動矢量是從亮度運動矢量中導(dǎo)出的。而且,對于4MV宏塊,基于亮度塊的狀態(tài)作出將色度塊編碼為幀間編碼還是幀內(nèi)編碼的決定。色度矢量是在兩個步驟中重構(gòu)的。在第一個步驟中,名義上的色度運動矢量是通過適當(dāng)?shù)亟M合與比例縮放亮度運動矢量來獲得的。比例縮放是以這樣一種方法執(zhí)行的,即二分之一象素偏移比四分之一偏移更優(yōu)選。圖16A示出偽代碼,用于在從IMV宏塊的亮度運動矢量中導(dǎo)出色度運動矢量時進行比例縮放。圖16B示出偽代碼,用于在導(dǎo)出4MV宏塊的色度運動矢量時組合至多四個亮度運動矢量和比例縮放。圖13C示出median3()函數(shù)的偽代碼,以及圖16C示出用于mediaM()函數(shù)的偽代碼。在第二個步驟中,使用序列級的1比特元素來確定是否需要色度運動矢量的進一步舍入。如果需要,則將四分之一象素偏移處的色度運動矢量舍入到最近的整象素位置。對于隔行掃描幀的幀編碼和半幀編碼宏塊,如對逐行掃描P幀所做的一樣來重構(gòu)亮度運動矢量。在幀編碼宏塊中,對于構(gòu)成宏塊的亮度分量的四個塊,有單個運動矢量。如果宏塊是幀內(nèi)編碼的,則沒有運動矢量與該宏塊相關(guān)聯(lián)。如果宏塊是跳過的,則dmv_X=0dmv_y=0,因此mv_x=predictor_x_@.mv_y=predictor_y。在中貞編碼宏塊中,每個半幀可具有它自己的運動矢量。因此,在一個幀編碼宏塊中將有0到2個亮度運動矢量。如果半幀編碼宏塊是跳過的或者如果半幀編碼宏塊的CBPCY指示半幀是非編碼的,則半幀編碼宏塊中的非編碼半幀可以出現(xiàn)。如果半幀是非編碼的,則dmv_X=0且dmv_y=0,因此mv_x=predictor_x且mv_y=predictor_y。對于隔行掃描P幀,色度運動矢量是從亮度運動矢量導(dǎo)出的。對于幀編碼宏塊,有一個對應(yīng)于單個亮度運動矢量的色度運動矢量。對于半幀編碼宏塊,有兩個色度運動矢量。一個是上半幀的,而一個是下半幀的,分別對應(yīng)于上半幀與下半幀亮度運動矢量。導(dǎo)出色度運動矢量的規(guī)則對于半幀編碼和幀編碼宏塊是相同的。它們?nèi)Q于亮度運動矢量,而不是宏塊的類型。圖17示出偽代碼,用于從隔行掃描P幀的幀編碼或半幀編碼宏塊的亮度運動矢量中導(dǎo)出色度運動矢量。基本上,色度運動矢量的χ分量被放大4倍,而色度運動矢量的y分量保持不變(由于4:1:1宏塊色度二次采樣)。色度運動矢量的放大的χ分量還舍入到相鄰的四分之一象素位置。如果cmv_X或cmv_y在邊界外,則將它拉回到有效范圍。G.強度補償對于逐行掃描P幀,圖像層包含句法元素,它控制該幀的運動補償模式和強度補償。如果用信號表示強度補償,則在圖像層中跟隨著LUMSCALE和LUMSHIFT元素。LUMSCALE和LUMSHIFT是6比特值,它指定在強度補償過程中使用的參數(shù)。當(dāng)強度補償用于逐行掃描P幀時,在參考幀中的象素在它們用于P幀的運動補償預(yù)測之前被重新映射。圖18中的偽代碼示出LUMSCALE和LUMSHIFT元素用于構(gòu)造查找表,該查找表用于重新映射參考幀象素。使用LUTY[]表重新映射參考幀的Y分量,并且使用LUTUV[]表重新映射U和V分量,如下Fy=LUTY[pY],且Puv=LUTUV[puv]其中pY是參考幀中的原始亮度象素值,&是參考幀中重新映射的亮度象素值,PUV是參考幀中原始的U或V象素值,而^iv是參考幀中重新映射的U或V象素值。對于隔行掃描P巾貞,一個1比特圖像層INTC0MP值用信號表示是否對幀使用強度補償。如果使用強度補償,則在圖像層中跟隨著LUMSCALE和LUMSHIFT元素,其中LUMSCALE和LUMSHIFT是6比特值,它們指定在強度補償過程中為整個隔行掃描P幀使用的參數(shù)。強度補償本身與用于逐行掃描P幀的相同。VI.視頻壓縮與解壓的標(biāo)準(zhǔn)除早先的WMV編碼器和解碼器以外,若干國際標(biāo)準(zhǔn)與視頻壓縮和解壓有關(guān)。這些標(biāo)準(zhǔn)包括運動圖像專家組[“MPEG”]1,2和4標(biāo)準(zhǔn)以及來自國際電信聯(lián)盟[“ITU”]的H.261、H.262(MPEG2的另一個名字)、H.263和H.264標(biāo)準(zhǔn)。遵循這些標(biāo)準(zhǔn)之一的編碼器和解碼器一般使用運動估計和補償來減少圖像之間的時間冗余。A.運動補償?shù)膮⒖紙D像對于若干標(biāo)準(zhǔn),前向預(yù)測幀的運動補償是相對于單個參考幀的,后者是先前重構(gòu)的I或P幀,當(dāng)前前向預(yù)測幀緊跟該幀之后。由于當(dāng)前前向預(yù)測幀的參考幀是已知的,并且只有一個參考幀是可能的,因此不需要用于在多個參考幀之間選擇的信息。例如,見H.261和MPEG1標(biāo)準(zhǔn)。在某些編碼/解碼情形(例如,帶有許多運動的高比特率隔行掃描視頻)中,將對前向預(yù)測的運動補償限制為相對于單個參考會損害總體壓縮效率。H.262標(biāo)準(zhǔn)允許將隔行掃描視頻幀編碼為單個幀或兩個半幀,其中幀編碼或半幀編碼可以在逐幀的基礎(chǔ)上自適應(yīng)地選擇。對于當(dāng)前半幀的基于半幀的預(yù)測,運動補償使用先前重構(gòu)的上半幀或下半幀。[H.262標(biāo)準(zhǔn),章節(jié)7.6.1和7.6.2.1。]H.262標(biāo)準(zhǔn)描述在兩個參考半幀之間選擇以用于對當(dāng)前半幀的運動矢量的運動補償。[H.262標(biāo)準(zhǔn),章節(jié)6.2.5.2,6.3.17.2和7.6.4。]對于16x16宏塊(或者宏塊的上半部分16x8,或者宏塊的下半部分16x8)的給定運動矢量,用信號表示單個比特來指示要將該運動矢量應(yīng)用于上參考半幀還是應(yīng)用于下參考半幀。[同前]對于其它細(xì)節(jié),見H.262標(biāo)準(zhǔn)。盡管這樣的參考半幀選擇在某些情況下提供某種靈活性和預(yù)測改進,但它有若干與比特率有關(guān)的缺點。運動矢量的參考半幀選擇信號可以消耗許多比特。例如,對于具有810個宏塊的單個720x288半幀,每個宏塊具有0、1或2個運動矢量,運動矢量的參考半幀選擇比特消耗多達1620個比特。沒有作出通過預(yù)測將為相應(yīng)的運動矢量選擇哪些參考半幀來減少參考半幀選擇信息的比特率的嘗試。參考半幀選擇信息的信號表示在純編碼效率方面是沒有效率的。而且,對于某些情況,盡管編碼了信息,但參考半幀選擇信息可消耗如此多的比特,超過了在運動補償中具有多個可用參考而得到的預(yù)測改進的好處。沒有給出選項來禁止參考半幀選擇以處理這類情況。H.262標(biāo)準(zhǔn)還描述雙主(dual-prime)預(yù)測,這是一種預(yù)測模式,其中對兩個基于前向半幀的預(yù)測求平均值,用于一個隔行掃描P圖像中的16x16塊。[H.262標(biāo)準(zhǔn),章節(jié)7.6.3.6ο]MPEG-4標(biāo)準(zhǔn)允許隔行掃描視頻幀的宏塊是幀編碼或半幀編碼的。[MPEG-4標(biāo)準(zhǔn),章節(jié)6.1.3.8。]對于半幀編碼的宏塊的上半幀或下半幀的基于半幀的預(yù)測,運動補償使用先前重構(gòu)的上半幀或下半幀。[MPEG-4標(biāo)準(zhǔn),章節(jié)6.3.7.3和7.6.2。]MPEG_4標(biāo)準(zhǔn)描述在兩個參考半幀之間的選擇以用于運動補償。[MPEG-4標(biāo)準(zhǔn),章節(jié)6.3.7.3。]對于宏塊的上半幀行或下半幀行的給定運動矢量,用信號表示單個比特以指示要將該運動矢量應(yīng)用于上參考半幀還是應(yīng)用于下參考半幀。[同前]對于其它細(xì)節(jié),見MPEG-4標(biāo)準(zhǔn)。這樣的參考半幀選擇信息的信號表示具有與上面對于H.262描述的相似的問題。H.263標(biāo)準(zhǔn)描述逐行掃描幀的運動補償,包括可任選的參考圖像選擇模式。[H.263標(biāo)準(zhǔn),章節(jié)3.4.12,附錄N。]通常,時間上最近的先前的定位圖像用于運動補償。然而,當(dāng)使用參考圖像選擇模式時,允許來自除最近參考圖像以外的圖像的時間預(yù)測。[同前]通過允許編碼器優(yōu)化它對信道條件的視頻編碼(例如,由于在幀間編碼中參考所需要的信息損耗而停止錯誤傳播),這可以改進通過易于出錯的信道的實時視頻通信的性能。[同前]當(dāng)使用時,對于一個圖像內(nèi)給定的一組塊或片,一個10比特值指示用于該組塊或片的預(yù)測的參考。[同前]在H.263中描述的參考圖像選擇機制用于逐行掃描視頻并且適合于處理在易于錯誤的信道中的錯誤傳播問題,本質(zhì)上沒有提高壓縮效率。在H.264標(biāo)準(zhǔn)的草案JVT-D157中,塊的運動補償預(yù)測的幀間預(yù)測過程可以包括從許多存儲的、先前解碼的圖像中選擇參考圖像。[11^)157,章節(jié)0.4.3。]在圖像級上,一個或多個參數(shù)指定用于解碼圖像的參考圖像數(shù)量。[11^)157,章節(jié)7.3.2.2和7.4.2.2。]在片級,可用參考圖像的數(shù)量可改變,并且可接收附加的參數(shù)以重新排序和管理哪些參考圖像在列表中。[11^)157,章節(jié)7.3.3和7.4.3。]對于一個給定的運動矢量(用于宏塊或者子宏塊部分),參考索引(當(dāng)存在時)指示要用于預(yù)測的參考圖像。[JVT-D157,章節(jié)7.3.5.1和7.4.5.1。]參考索引指示列表中的第一、第二、第三幀或半幀等。[同前]如果在列表中只有一個活動的參考圖像,則參考索引不存在。[同前]如果列表中只有兩個活動參考圖像,則使用單個經(jīng)編碼的比特來表示參考索引。[同前]對于其它細(xì)節(jié),見H.264標(biāo)準(zhǔn)的草案JVT-D157。JVT-D157的參考圖像選擇提供了靈活性,并且因而可以改進運動補償?shù)念A(yù)測。然而,管理參考圖像列表和用信號表示參考圖像選擇的過程是復(fù)雜的,并且在某些情況下消耗許多沒有效率的比特。B.用信號表示宏塊模式各種標(biāo)準(zhǔn)使用不同的機制來用信號表示宏塊信息。例如,在H.261標(biāo)準(zhǔn)中,宏塊的宏塊頭部包括宏塊類型MTYPE元素,它用信號表示為VLC。[H.261標(biāo)準(zhǔn),章節(jié)4.2.3。]MTYPE元素指示預(yù)測模式(幀內(nèi)編碼、幀間編碼、幀間編碼+MC、幀間編碼+MC+循環(huán)濾波),對該宏塊是否存在量化器MQUANT元素,對該宏塊是否存在運動矢量數(shù)據(jù)MVD元素,對該宏塊是否存在已編碼塊模式CBP元素,以及對該宏塊的塊是否存在變換系數(shù)TCOEFF元素。[同前]對于每個經(jīng)運動補償?shù)暮陦K,都存在MVD元素。[同前]在MPEG-I標(biāo)準(zhǔn)中,宏塊具有macroblockjype(宏塊類型)元素,它被用信號表示%VLC0[MPEG-1標(biāo)準(zhǔn),章節(jié)2.4.3.6,表B.2a至B.2d,D.6.4.2。]對于在前向預(yù)測圖像中的宏塊,macroblockjype元素指示對該宏塊是否存在量化器比例元素,對該宏塊是否存在前向運動矢量數(shù)據(jù),對該宏塊是否存在已編碼塊模式元素,以及該宏塊是否為幀內(nèi)編碼的。[同前]如果宏塊使用前向運動補償,則前向運動矢量數(shù)據(jù)總是存在的。[同前]在H.262標(biāo)準(zhǔn)中,宏塊具有macroblock_type元素,它用信號表示為VLC。[H.261標(biāo)準(zhǔn),章節(jié)6.2.5.1,6.3.17.1,以及表B.2至B.B。]對于在前向預(yù)測圖像中的宏塊,macroblock_type元素指示對該宏塊是否存在quantizer_scale_code(量化器比例代碼)元素,對該宏塊是否存在前向運動矢量數(shù)據(jù),對該宏塊是否存在已編碼塊模式元素,該宏塊是否為幀內(nèi)編碼的,以及該宏塊的可縮放性選項。[同前]如果宏塊使用前向運動補償,則前向運動矢量數(shù)據(jù)總是存在的。[同前]獨立的代碼(framejiiotiorutype(幀運動類型)或者field_motion_type(半幀運動類型))可進一步指示宏塊預(yù)測類型,包括運動矢量的計數(shù)和宏塊的運動矢量格式。[同前]在H.263標(biāo)準(zhǔn)中,宏塊具有用于色度MCBPC元素的宏塊類型和已編碼塊模式,它用信號表示為VLC。[H.263標(biāo)準(zhǔn),章節(jié)5.3.2,表8和9以及F.2。]宏塊類型給出有關(guān)該宏塊的信息(例如,幀間編碼、幀間4V、幀內(nèi)編碼)。[同前]對于幀間編碼的圖像中經(jīng)編碼的宏塊,用于亮度的MCBPC和已編碼塊模式總是存在的,并且宏塊類型指示對該宏塊是否存在量化器信息元素。前向運動補償?shù)暮陦K總是有宏塊(或者幀間4V類型的塊)的運動矢量數(shù)據(jù)存在。[同前]MPEG-4標(biāo)準(zhǔn)相似地指定MCBPC元素,它用信號表示為VLC的。[MPEG-4標(biāo)準(zhǔn),章節(jié)6.2.7,6.3.7,11.1.1。]在JVT-D157中,mb_type(宏塊類型)元素是宏塊層的一部分。[JVT-D157,章節(jié)7.3.5和7.4.5。]mb_type指示宏塊類型和各種相關(guān)聯(lián)的信息。[同前]例如,對于P片,mb_type元素指示預(yù)測的類型(幀內(nèi)編碼或者前向),當(dāng)宏塊是幀內(nèi)編碼時指示各種幀內(nèi)模式編碼參數(shù),當(dāng)宏塊是前向預(yù)測時指示宏塊分區(qū)(例如,16x16、16x8、8xl6、或者8x8)并且因此指示運動矢量的數(shù)量,以及指示參考圖像選擇信息是否存在(如果分區(qū)是8x8)。[同前]預(yù)測的類型和mb_type還合在一起指示宏塊是否存在已編碼塊模式元素。[同前]對于前向運動補償?shù)暮陦K中的每個16xl6、16x8或8x16分區(qū),用信號表示運動矢量數(shù)據(jù)。[同前]對于具有8x8分區(qū)的前向預(yù)測宏塊,每8x8分區(qū)一個sub_mb_type(子宏塊類型)元素指示其預(yù)測類型(幀內(nèi)編碼或者前向)。[同前]如果8x8分區(qū)是前向預(yù)測的,則sub_mb_type指示子分區(qū)(例如,8x8、8x4、4x8或者4x4),并且因此指示該8x8分區(qū)的運動矢量數(shù)量。[同前]對于在前向運動補償?shù)?x8分區(qū)中的每個子分區(qū),用信號表示運動矢量數(shù)據(jù)。[同前]各種標(biāo)準(zhǔn)使用多種多樣的信號表示機制用于宏塊信息。無論這些信號表示機制有什么優(yōu)點,它們也都具有下列缺點。首先,它們有時沒有有效地用信號表示宏塊類型、已編碼塊模式信息的存在/不存在以及運動補償宏塊的運動矢量差分信息的存在/不存在。實際上,這些標(biāo)準(zhǔn)一般根本沒有用信號表示經(jīng)運動補償?shù)暮陦K(或者其塊或半幀)的運動矢量差分信息的存在/不存在,代之以假定如果使用運動補償則用信號表示運動矢量差分信息。最后,這些標(biāo)準(zhǔn)在它們決定要為宏塊模式信息使用哪些代碼表方面是不靈活的。C.運動矢量預(yù)測H.261、H.262、H.263、MPEG-1、MPEG-4和JVT-D157的每一個指定某種形式的運動矢量預(yù)測,盡管運動矢量預(yù)測的細(xì)節(jié)在這些標(biāo)準(zhǔn)之間變化很大。例如,在H.261標(biāo)準(zhǔn)中運動矢量預(yù)測是最簡單的,其中當(dāng)前宏塊的運動矢量的運動矢量預(yù)測值是先前編碼/解碼的宏塊的運動矢量。[H.261標(biāo)準(zhǔn),章節(jié)4.2.3.4。]對于各種特殊情況(例如,當(dāng)前宏塊是行中的第一個),運動矢量預(yù)測值是O。運動矢量預(yù)測與在MPEG-I標(biāo)準(zhǔn)中的相似。[MPEG-1標(biāo)準(zhǔn),章節(jié)2.4.4.2和D.6.2.3。]其它標(biāo)準(zhǔn)(諸如H.262)指定更復(fù)雜的運動矢量預(yù)測,但一般仍從單個相鄰幀來確定運動矢量預(yù)測值。[H.262標(biāo)準(zhǔn),章節(jié)7.6.3。]在運動是一致的時候從單個相鄰幀確定運動矢量預(yù)測值足夠了,但在許多其它情況下是無效的。因此,還有其它標(biāo)準(zhǔn)(諸如H.263、MPEG-4、JVT-D157)從具有不同候選運動矢量預(yù)測值的多個不同的相鄰幀來確定運動矢量預(yù)測值。[H.263標(biāo)準(zhǔn),章節(jié)6.1.1;MPEG-4標(biāo)準(zhǔn),章節(jié)7.5.5和7.6.2;以及F.2JVT-D157,章節(jié)8.4.1。]這些對多種運動是有效的,但仍不足以處理這樣的情況,其中在不同的候選運動矢量預(yù)測值之間有高度的不同,指示在運動模式方面的不連續(xù)性。對于其它細(xì)節(jié),見相應(yīng)的標(biāo)準(zhǔn)。D.解碼運動矢量差分H.261、H.262、H.263、MPEG-1、MPEG-4和JVT-D157的每一個指定某種形式的差分運動矢量編碼和解碼,盡管編碼和解碼的細(xì)節(jié)在這些標(biāo)準(zhǔn)之間變化很大。例如,在H.261標(biāo)準(zhǔn)中運動矢量編碼與解碼是最簡單的,其中一個VLC表示水平差分分量,而另一個VLC表示垂直差分分量。[H.261標(biāo)準(zhǔn),章節(jié)4.2.3.4。]其它標(biāo)準(zhǔn)為運動矢量差分信息指定更復(fù)雜的編碼與解碼。對于其它細(xì)節(jié),見相應(yīng)的標(biāo)準(zhǔn)。E.重構(gòu)與導(dǎo)出運動矢量通常,在H.261、H.262、H.263、MPEG-1,MPEG-4或JVT-D157中的運動矢量是通過組合運動矢量預(yù)測值與運動矢量差分來重構(gòu)的。再一次,重構(gòu)的細(xì)節(jié)在標(biāo)準(zhǔn)之間變化。色度運動矢量(它們未用信號表示)一般是從亮度運動矢量(它們用信號表示)導(dǎo)出的。例如,在H.261標(biāo)準(zhǔn)中,二等分亮度運動矢量朝向零截斷以導(dǎo)出色度運動矢量。[H.261標(biāo)準(zhǔn),章節(jié)3.2.2。]同樣,在MPEG-I標(biāo)準(zhǔn)和JVT-D157中,二等分亮度運動矢量以導(dǎo)出色度運動矢量。[MPEG-1標(biāo)準(zhǔn),章節(jié)2.4.4.2;JVT-D157,章節(jié)8.4.1.4。]在H.262標(biāo)準(zhǔn)中,按照取決于色度二次采樣模式的因子將亮度運動矢量比例縮小至色度運動矢量(例如,4:2:0、4:2:2或4:4:4)。[H.262標(biāo)準(zhǔn),章節(jié)7.6.3.7。]在H.263標(biāo)準(zhǔn)中,對于將單個亮度運動矢量用于全部四個亮度塊的宏塊,色度運動矢量是通過將亮度運動矢量除以二并舍入到二分之一象素位置來導(dǎo)出的。[H.263標(biāo)準(zhǔn),章節(jié)6.1.1。]對于具有四個亮度運動矢量(每塊一個)的宏塊,色度運動矢量是通過累加這四個亮度運動矢量,除以八,并且舍入到二分之一象素位置來導(dǎo)出的。[H.263標(biāo)準(zhǔn),章節(jié)F.2。]在MPEG-4標(biāo)準(zhǔn)中相似地導(dǎo)出色度運動矢量。[MPEG-標(biāo)準(zhǔn),章節(jié)7.5.5和7.6.2。]F.加權(quán)的預(yù)測H.264標(biāo)準(zhǔn)的草案JVT-D157描述加權(quán)的預(yù)測。圖像的加權(quán)預(yù)測標(biāo)志指示該圖像中的預(yù)測片是否使用加權(quán)的預(yù)測。[JVT-D157,章節(jié)7.3.2.2和7.4.2.2。]如果一個圖像使用加權(quán)的預(yù)測,則該圖像中的每個預(yù)測片具有一個預(yù)測權(quán)重表。[JVT-D157,章節(jié)7.3.3,7.3.3.2和10.4.I0]對于該表,用信號表示亮度權(quán)重參數(shù)的分母和色度權(quán)重參數(shù)的分母。[同前]然后,對于可用于該片的每個參考圖像,亮度權(quán)重標(biāo)志指示是否為該圖像用信號表示亮度參數(shù)和亮度偏移分子參數(shù)(在用信號表示時,跟隨在后面的是這些參數(shù)),而色度權(quán)重標(biāo)志指示是否為該圖像用信號表示色度權(quán)重和色度偏移分子參數(shù)(當(dāng)用信號表示時,跟隨在后面的是這些參數(shù))。[同前]將與用信號表示的分子值有關(guān)的默認(rèn)值給予未用信號表示的分子權(quán)重參數(shù)。[同前]盡管JVT-D157在用信號表示加權(quán)的預(yù)測參數(shù)時提供某種靈活性,但這種信號表示機制在各種情況下是無效的。給出了數(shù)字視頻的視頻壓縮與解壓的關(guān)鍵重要性,就不奇怪視頻壓縮與解壓是被大力開發(fā)的領(lǐng)域。然而,無論以前的視頻壓縮與解壓技術(shù)有什么好處,它們都沒有下面的技術(shù)與工具的優(yōu)點。
發(fā)明內(nèi)容概言之,詳細(xì)描述針對的是用于編碼與解碼隔行掃描視頻的各種技術(shù)與工具。所述的各種技術(shù)與工具可以組合地或者獨立地使用。詳細(xì)描述的一些部分針對的是用于隔行掃描前向預(yù)測半幀的混合運動矢量預(yù)測的各種技術(shù)和工具。所述的技術(shù)和工具包括但不限于下列諸如視頻編碼器或解碼器等工具至少部分地基于可應(yīng)用于運動矢量預(yù)測值的預(yù)測值極性,來檢查混合運動矢量預(yù)測條件。例如,預(yù)測值極性信號是用于選擇運動矢量預(yù)測值的主極性或非主極性。該工具隨后確定運動矢量預(yù)測值?;蛘?,諸如視頻編碼器或解碼器等工具為隔行掃描前向預(yù)測半幀的運動矢量確定初始的、導(dǎo)出的運動矢量預(yù)測值。該工具隨后至少部分地基于該初始的、導(dǎo)出的運動矢量預(yù)測值以及一個或多個相鄰的運動矢量來檢查變化條件。如果滿足變化條件,則該工具使用一個或多個相鄰運動矢量之一作為運動矢量的最終運動矢量預(yù)測值。否則,該工具使用初始的、導(dǎo)出的運動矢量預(yù)測值作為最終的運動矢量預(yù)測值。詳細(xì)描述的一些部分針對的是用于使用運動矢量塊模式的各種技術(shù)與工具,所述運動矢量塊模式用信號表示具有多個運動矢量的宏塊的運動矢量數(shù)據(jù)的存在或不存在。所述的技術(shù)與工具包括但不限于下列諸如視頻編碼器或解碼器等工具處理第一可變長度代碼,它表示具有多個亮度運動矢量的宏塊的第一信息。第一信息包括宏塊的每亮度運動矢量的一個運動矢量數(shù)據(jù)存在指示符。該工具還處理第二可變長度代碼,它表示宏塊的第二信息。第二信息包括宏塊的多個塊的多個變換系數(shù)數(shù)據(jù)存在指示符?;蛘?,諸如視頻編碼器或解碼器等工具對于具有第一數(shù)量的亮度運動矢量的宏塊(其中第一數(shù)量大于1)處理運動矢量塊模式,它由第二數(shù)量的比特組成(其中第二數(shù)量=第一數(shù)量)。這些比特的每一個指示亮度運動矢量中相應(yīng)的一個是否已經(jīng)關(guān)聯(lián)于比特流中用信號表示的運動矢量數(shù)據(jù)。該工具還對亮度運動矢量的每一個處理相關(guān)聯(lián)的運動矢量數(shù)據(jù),對這些亮度運動矢量,指示要在比特流中用信號表示相關(guān)聯(lián)運動矢量數(shù)據(jù)。詳細(xì)描述的一些部分針對的是用于在運動矢量預(yù)測值的主極性與非主極性之間選擇的各種技術(shù)與工具。所述技術(shù)與工具包括但不限于下列諸如視頻編碼器或解碼器等工具確定運動矢量預(yù)測值的主極性。該工具至少部分地基于主極性處理運動矢量預(yù)測值,并且至少部分地基于運動矢量預(yù)測值處理運動矢量。例如,運動矢量是隔行掃描前向預(yù)測半幀的當(dāng)前塊或宏塊的,并且主極性至少部分地基于相鄰塊或宏塊的多個先前的運動矢量的每一個的極性?;蛘?,諸如視頻編碼器或解碼器等工具處理指示在運動矢量預(yù)測值的主極性與非主極性之間選擇的信息,并且至少部分地基于運動矢量預(yù)測值處理運動矢量。例如,解碼器確定主極性和非主極性,隨后至少部分地基于主極性和非主極性和指示在它們之間的選擇的信息來確定運動矢量預(yù)測值。詳細(xì)描述的一些部分針對的是用于對參考半幀選擇信息與差分運動矢量信息進行聯(lián)合編碼和解碼的各種技術(shù)與工具。所述的技術(shù)與工具包括但不限于下列諸如視頻解碼器等工具解碼可變長度代碼,它聯(lián)合地表示運動矢量的差分運動矢量信息與運動矢量預(yù)測值選擇。解碼器隨后至少部分地基于差分運動矢量信息與運動矢量預(yù)測值選擇來重構(gòu)運動矢量?;蛘?,諸如視頻編碼器等工具確定運動矢量的主/非主預(yù)測值選擇。編碼器確定運動矢量的差分運動矢量信息,并且主/非主極性選擇與差分運動矢量信息一起進行聯(lián)合編碼。詳細(xì)描述的一些部分針對的是用于代碼表選擇和隔行掃描前向預(yù)測半幀的宏塊的宏塊模式信息的聯(lián)合編碼/解碼的各種技術(shù)與工具。所述的技術(shù)與工具包括但不限于下列諸如視頻編碼器或解碼器等工具處理可變長度代碼,它聯(lián)合地用信號表示宏塊的宏塊模式信息。宏塊是經(jīng)運動補償?shù)?,并且?lián)合地用信號表示的宏塊模式信息包括(1)宏塊類型,(2)已編碼塊模式存在還是不存在,以及(3)經(jīng)運動補償?shù)暮陦K的運動矢量數(shù)據(jù)存在還是不存在?;蛘?,諸如視頻編碼器或解碼器等工具從隔行掃描前向預(yù)測半幀的宏塊模式信息的多個可用代碼表中選擇一個代碼表。該工具使用所選擇的代碼表來處理可變長度代碼,它指示宏塊的宏塊模式信息。宏塊模式信息包括(1)宏塊類型,(2)已編碼塊模式存在還是不存在,以及(3)當(dāng)可應(yīng)用于宏塊類型時,運動矢量數(shù)據(jù)存在還是不存在。詳細(xì)描述的一些部分針對的是用于使用可用于隔行掃描前向預(yù)測半幀的參考半幀數(shù)量的信號的各種技術(shù)與工具。所述的技術(shù)與工具包括但不限于下列諸如視頻編碼器或解碼器等工具處理第一信號,它指示隔行掃描前向預(yù)測半幀是具有一個參考半幀還是兩個可能的參考半幀用于運動補償。如果第一信號指示隔行掃描前向預(yù)測半幀具有一個參考半幀,則該工具處理第二信號,它從兩個可能的參考半幀中標(biāo)識一個參考半幀。另一方面,如果第一信號指示隔行掃描前向預(yù)測半幀具有兩個可能的參考半幀,則對于隔行掃描前向預(yù)測半幀的塊和/或宏塊的多個運動矢量的每一個,該工具可處理用于在兩個可能的參考半幀之間選擇的第三信號。該工具隨后執(zhí)行對隔行掃描前向預(yù)測半幀的運動補償。或者,諸如視頻編碼器或解碼器等工具處理指示隔行掃描前向預(yù)測半幀具有一個參考半幀還是兩個可能的參考半幀用于運動補償?shù)男盘?。該工具?zhí)行隔行掃描前向預(yù)測半幀的運動補償。該工具還更新參考半幀緩沖器用于后續(xù)運動補償,而不處理用于管理參考半幀緩沖器的附加信號。詳細(xì)描述的一些部分針對的是用于導(dǎo)出隔行掃描前向預(yù)測半幀的宏塊的色度運動矢量的各種技術(shù)與工具。所述技術(shù)與工具包括但不限于下列諸如視頻編碼器或解碼器等工具對于具有一個或多個亮度運動矢量的宏塊,至少部分地基于一個或多個亮度運動矢量的極性估計來導(dǎo)出色度運動矢量。例如,一個或多個亮度運動矢量的每一個是奇或偶極性,并且極性估計包括確定哪個極性在一個或多個亮度運動矢量中是最共同的。或者,諸如視頻編碼器或解碼器等工具確定宏塊的多個亮度運動矢量之中的占優(yōu)勢極性。該工具隨后至少部分地基于具有占優(yōu)勢極性的多個亮度運動矢量中的一個或多個來導(dǎo)出宏塊的色度運動矢量。其它特征與優(yōu)點將通過下列參考附圖進行的不同實施例的詳細(xì)描述而變得明顯。圖1是示出依照現(xiàn)有技術(shù)的視頻編碼器中的運動估計的圖示。圖2是示出依照現(xiàn)有技術(shù)的視頻解碼器中的8X8的預(yù)測殘差塊的基于塊的壓縮的圖示。圖3是示出依照現(xiàn)有技術(shù)的視頻編碼器中的8X8的預(yù)測殘差塊的基于塊的解壓的圖示。圖4是示出依照現(xiàn)有技術(shù)的隔行掃描幀的圖示。圖5A和5B是示出依照現(xiàn)有技術(shù),用于逐行掃描P幀中的1MV宏塊的候選運動矢量預(yù)測值的宏塊位置的圖示。圖6A和6B是示出依照現(xiàn)有技術(shù),用于混合的1MV/4MV逐行掃描P幀中的1MV宏塊的候選運動矢量預(yù)測值的塊位置的圖示。圖7A、7B、8A、8B、9和10是示出依照現(xiàn)有技術(shù),用于混合的1MV/4MV逐行掃描P幀中的4MV宏塊中的各種位置處的塊的候選運動數(shù)量預(yù)測值的塊位置的圖示。圖11是示出依照現(xiàn)有技術(shù),用于隔行掃描P幀中的當(dāng)前幀編碼宏塊的候選運動矢量預(yù)測值的圖示。圖12A-12B是示出依照現(xiàn)有技術(shù),用于隔行掃描P幀中的當(dāng)前半幀編碼宏塊的候選運動矢量預(yù)測值的圖示。圖13A-13C是按照現(xiàn)有技術(shù)計算運動矢量預(yù)測值的偽代碼。圖14A和14B是示出按照現(xiàn)有技術(shù)用于逐行掃描P幀的混合運動矢量預(yù)測的偽代碼。圖15A-15C是示出按照現(xiàn)有技術(shù)的運動矢量差分信息的解碼的偽代碼和表。圖16A-16C和13C是示出按照現(xiàn)有技術(shù)用于逐行掃描P幀的色度運動矢量的導(dǎo)出的偽代碼。圖17是示出按照現(xiàn)有技術(shù)用于隔行掃描P幀的色度運動矢量的導(dǎo)出的偽代碼。圖18是示出按照現(xiàn)有技術(shù)用于逐行掃描P幀的強度補償?shù)膫未a。圖19是可結(jié)合其來實現(xiàn)若干描述的實施例的合適計算環(huán)境的框圖。圖20是結(jié)合其可實現(xiàn)若干描述的實施例的廣義視頻編碼器系統(tǒng)的框圖。圖21是結(jié)合其可實現(xiàn)若干描述的實施例的廣義視頻解碼器系統(tǒng)的框圖。圖22是在若干描述的實施例中使用的宏塊格式的圖。圖23A是隔行掃描視頻幀的部分圖,示出上半幀和下半幀的交替行。圖23B是為編碼/解碼為幀而組織的隔行掃描視頻幀的圖,以及圖23C是為編碼/解碼為半幀而組織的隔行掃描視頻幀的圖。圖24A-24F是示出隔行掃描P半幀的參考半幀的示例的圖。圖25A和25B是分別示出用于參考半幀數(shù)量和選擇信息的編碼和解碼的技術(shù)的流程圖。圖26和27是示出MBM0DE值的表。圖28A和28B是分別示出隔行掃描P半幀的宏塊的宏塊模式信息的編碼和解碼的技術(shù)的流程圖。圖29是用于確定主和非主參考半幀的偽代碼。圖30是用于用信號表示使用主還是非主參考半幀用于運動矢量的偽代碼。圖31A和31B是分別示出用于在編碼和解碼中確定兩個參考半幀隔行掃描P半幀的運動矢量的運動矢量預(yù)測的主和非主極性的技術(shù)的流程圖。圖32是在解碼期間的混合運動矢量預(yù)測的偽代碼。圖33A和33B是分別示出在編碼和解碼期間的混合運動矢量預(yù)測的技術(shù)的流程圖。圖34是示出亮度塊與4MVBP元素之間的關(guān)聯(lián)的圖。圖35A和35B是分別示出使用運動矢量塊模式的編碼和解碼的技術(shù)的流程圖。圖36是用于編碼兩個參考半幀隔行掃描P半幀的運動矢量差分信息和主/非主預(yù)測值選擇的偽代碼。圖37A和37B是分別示出兩個參考半幀隔行掃描P半幀的運動矢量差分信息和主/非主預(yù)測值選擇的編碼和解碼的技術(shù)的流程圖。圖38是4:2:0宏塊的色度二次采樣模式的圖。圖39是示出垂直運動矢量分量的當(dāng)前與參考半幀之間的關(guān)系的圖。圖40是用于選擇為隔行掃描P半幀的經(jīng)運動補償?shù)暮陦K的色度運動矢量作出貢獻的亮度運動矢量的偽代碼。圖41是示出從隔行掃描P半幀的宏塊的亮度運動矢量中導(dǎo)出色度運動矢量的技術(shù)的流程圖。圖42和43分別是編碼器框架和解碼器框架的圖,其中為隔行掃描P半幀執(zhí)行強度補償。圖44是示出用于用信號表示隔行掃描P半幀的強度補償參考半幀模式的句法元素的表。圖45A和45B是分別示出對隔行掃描P半幀在編碼中執(zhí)行褪色估計和在解碼中執(zhí)行褪色補償?shù)募夹g(shù)的流程圖。圖46A-46E是按照第一組合實現(xiàn)的比特流的層的句法圖。圖47A-47K是在第一組合實現(xiàn)中的代碼表。圖48是示出在第一組合實現(xiàn)中的垂直運動矢量分量的當(dāng)前與參考半幀之間的關(guān)系的圖。圖49A和49B分別是用于第一組合實現(xiàn)中的1參考半幀隔行掃描P半幀的運動矢量差分解碼的偽代碼和表。圖50是用于解碼第一組合實現(xiàn)中的2參考半幀隔行掃描P半幀的運動矢量差分信息和主/非主預(yù)測值選擇的偽代碼。圖51A和51B是用于第一組合實現(xiàn)中的1參考半幀隔行掃描P半幀的運動矢量預(yù)測的偽代碼。圖52A-52J是用于第一組合實現(xiàn)中的2參考半幀隔行掃描P半幀的運動矢量預(yù)測的偽代碼和表。圖52K至52N是用于比例縮放操作的偽代碼和表,它們是圖52H至52J所示操作的替換操作。圖53是用于第一組合實現(xiàn)中的隔行掃描P半幀的混合運動矢量預(yù)測的偽代碼。圖54是用于第一組合實現(xiàn)中的2參考半幀隔行掃描P半幀的運動矢量重構(gòu)的偽代碼。圖55A和55B是用于第一組合實現(xiàn)中的隔行掃描P半幀的色度運動矢量導(dǎo)出的偽代碼。圖56是用于第一組合實現(xiàn)中的隔行掃描P半幀的強度補償?shù)膫未a。圖57A-57C是用于按照第二組合實現(xiàn)的比特流的層的句法圖。圖58A和58B分別是用于第二組合實現(xiàn)中的1參考半幀隔行掃描P半幀的運動矢量差分解碼的偽代碼和表。圖59是用于解碼第二組合實現(xiàn)中的2參考半幀隔行掃描P半幀的運動矢量差分信息和主/非主預(yù)測值選擇的偽代碼。圖60A和60B是用于第二組合實現(xiàn)中的1參考半幀隔行掃描P半幀的運動矢量預(yù)測的偽代碼。圖61A-61F是用于第二組合實現(xiàn)中的2參考半幀隔行掃描P半幀的運動矢量預(yù)測的偽代碼。具體實施例方式本申請涉及用于有效地壓縮和解壓隔行掃描視頻的技術(shù)與工具。隔行掃描視頻內(nèi)容的壓縮與解壓隨著各種技術(shù)與工具一起改進,這些技術(shù)與工具明確地被設(shè)計成處理隔行掃描視頻表示的特定屬性。在各種描述的實施例中,視頻編碼器和解碼器結(jié)合了用于編碼和解碼隔行掃描前向預(yù)測半幀的技術(shù),以及用于包括不同層或級(例如,序列級、幀級、半幀級、片級、宏塊級和/或塊級)的比特流格式或句法的相應(yīng)信號表示技術(shù)。隔行掃描視頻內(nèi)容一般在通過電纜、衛(wèi)星或DSL的數(shù)字視頻廣播系統(tǒng)中使用。用于壓縮和解壓隔行掃描視頻內(nèi)容的有效技術(shù)與工具是視頻編解碼器的重要部分。在此描述的實現(xiàn)的各種替換方案是可能的。例如,參考流程圖描述的技術(shù)可以通過改變流程圖中所示步驟的順序、通過重復(fù)或省略某些步驟等來改變。作為另一個示例,盡管參考特定的宏塊格式描述了某些實現(xiàn),但也可以使用其它格式。而且,參考隔行掃描前向預(yù)測半幀描述的技術(shù)與工具也可應(yīng)用于其它類型的圖像。在各種實施例中,編碼器和解碼器比特流中使用了標(biāo)志和/或信號。盡管描述了特定的標(biāo)志與信號,但應(yīng)該理解,這種描述方式包括了標(biāo)志與信號的不同約定(例如,0而非1)。各種技術(shù)與工具可以組合或獨立使用。不同實施例實現(xiàn)所述技術(shù)與工具中的一個或多個。在此描述的有些技術(shù)與工具可以在視頻編碼器或解碼器中使用,或者在不是明確限于視頻編碼或解碼的某種其它系統(tǒng)中使用。I.計算環(huán)境圖19示出了適合在其中實現(xiàn)所描述的若干實施例的計算環(huán)境(1900)的一個廣義示例。計算環(huán)境(1900)并非對使用范圍或功能提出任何局限,因為這些技術(shù)和工具可以在完全不同的通用或?qū)S糜嬎悱h(huán)境中實現(xiàn)。參考圖19,計算環(huán)境(1900)包括至少一個處理單元(1910)和存儲器(1920)。在圖19中,這一最基本配置(1930)包括在虛線內(nèi)。處理單元(1910)執(zhí)行計算機可執(zhí)行指令,且可以是真實或虛擬處理器。在多處理系統(tǒng)中,多個處理單元執(zhí)行計算機可執(zhí)行指令以提高處理能力。存儲器(1920)可以是易失性存儲器(例如,寄存器、高速緩存、RAM)、非易失性存儲器(例如,R0M、EEPR0M、閃存等)或兩者的某一組合。存儲器(1920)儲存實現(xiàn)視頻編碼器或解碼器的軟件(1980)。計算環(huán)境可具有額外的特征。例如,計算環(huán)境(1900)包括存儲(1940)、一個或多個輸入設(shè)備(1950)、一個或多個輸出設(shè)備(1960)以及一個或多個通信連接(1970)。諸如總線、控制器或網(wǎng)絡(luò)等互連機制(未示出)將計算環(huán)境(1900)的組件互連。通常,操作系統(tǒng)軟件(未示出)為在計算環(huán)境(1900)中執(zhí)行的其它軟件提供了操作環(huán)境,并協(xié)調(diào)計算環(huán)境(1900)的組件的活動。存儲(1940)可以是可移動或不可移動的,且包括磁盤、磁帶或磁帶盒、⑶-ROM、DVD或可用于儲存信息并可在計算環(huán)境(1900)內(nèi)訪問的任何其它介質(zhì)。存儲(1940)儲存用于軟件(1980)實現(xiàn)視頻編碼器或解碼器的指令。輸入設(shè)備(1950)可以是諸如鍵盤、鼠標(biāo)、筆或跟蹤球等觸摸輸入設(shè)備、語音輸入設(shè)備、掃描設(shè)備或可向計算環(huán)境(1900)提供輸入的另一設(shè)備。對于音頻或視頻編碼,輸入設(shè)備(1950)可以是聲卡、顯卡、TV調(diào)諧卡、或接受模擬或數(shù)字格式的音頻或視頻輸入的類似的設(shè)備、或?qū)⒁纛l或視頻樣值讀入計算環(huán)境(1900)的CD-ROM或CD-RW。輸出設(shè)備(1960)可以是顯示器、打印機、揚聲器、CD刻錄機、或從計算環(huán)境(1900)提供輸出的另一設(shè)備。通信連接(1970)允許通過通信介質(zhì)到另一計算實體的通信。通信介質(zhì)傳達諸如計算機可執(zhí)行指令、音頻或視頻輸入或輸出、或已調(diào)制數(shù)據(jù)信號形式的其它數(shù)據(jù)等信息。已調(diào)制數(shù)據(jù)信號是其一個或多個特征以在信號中編碼信息的方式設(shè)置或改變的信號。作為示例而非局限,通信介質(zhì)包括以電、光、RF、紅外、聲學(xué)或其它載波實現(xiàn)的有線或無線技術(shù)。各種技術(shù)和工具可以在計算機可讀介質(zhì)的一般上下文中描述。計算機可讀介質(zhì)可以是可在計算環(huán)境內(nèi)訪問的任何可用介質(zhì)。作為示例而非局限,對于計算環(huán)境(1900),計算機可讀介質(zhì)包括存儲器(1920)、存儲(1940)、通信介質(zhì)以及上述任一個的組合。各種技術(shù)和工具可以在諸如程序模塊中所包括的在計算環(huán)境中的目標(biāo)真實或虛擬處理器上執(zhí)行的計算機可執(zhí)行指令的一般上下文中描述。一般而言,程序模塊包括例程、程序、庫、對象、類、組件、數(shù)據(jù)結(jié)構(gòu)等,它們執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型。程序模塊的功能可以如各實施例中所需的組合或在程序模塊之間分離。用于程序模塊的計算機可執(zhí)行指令可以在本地或分布式計算環(huán)境中執(zhí)行。為演示起見,詳細(xì)描述使用了如“估計”、“補償”、“預(yù)測”和“應(yīng)用”等術(shù)語,來描述計算環(huán)境中的計算機操作。這些術(shù)語是由計算機執(zhí)行的操作的高級抽象,且不應(yīng)與人類所執(zhí)行的動作混淆。對應(yīng)于這些術(shù)語的實際的計算機操作取決于實現(xiàn)而不同。II.廣義的視頻編碼器和解碼器圖20是可結(jié)合其實現(xiàn)所描述的各種實施例的廣義視頻編碼器系統(tǒng)(2000)的框圖。圖21是可結(jié)合其實現(xiàn)所描述的各種實施例的廣義視頻解碼器(2100)的框圖。編碼器(2000)和解碼器(2100)內(nèi)的模塊之間所示的關(guān)系指示了編碼器和解碼器中的主要信息流;為簡明起見,未示出其它關(guān)系。具體地,圖20和21—般不示出指示用于視頻序列、幀、宏塊、塊等的編碼器設(shè)置、模式、表等輔助信息。這一輔助信息通常在該輔助信息的熵編碼之后在輸出比特流中發(fā)送。輸出比特流的格式可以是WindowsMediaVideo版本9或其它格式。編碼器(2000)和解碼器(2100)處理視頻圖像,視頻圖像可以是視頻幀、視頻半幀或幀和半幀的組合。圖像和宏塊級的比特流句法和語法可取決于使用了幀還是半幀。也可以對宏塊組織和總體時序有改變。編碼器(2000)和解碼器(2100)是基于塊的,且對幀使用4:2:0的宏塊格式,其中每一宏塊包括四個8X8的亮度塊(有時候作為一個16X16的宏塊來對待)以及兩個8X8的色度塊。對于半幀,可使用相同或不同的宏塊組織和格式。8X8的塊還可在不同的級細(xì)分,例如在頻率變換和熵編碼級。示例性視頻幀組織在下一節(jié)中更詳細(xì)描述取決于所需的實現(xiàn)和壓縮類型,編碼器或解碼器的模塊可被添加、省略、分成多個模塊、與其它模塊組合、和/或用相似的模塊來替代。在替換實施例中,具有不同模塊和/或其它模塊配置的編碼器或解碼器執(zhí)行一個或多個所描述的技術(shù)。A.視頻幀組織在某些實現(xiàn)中,編碼器(2000)和解碼器(2100)處理如下組織的視頻幀。幀包含視頻信號的空間信息行。對于逐行掃描視頻,這些行包含從一個時刻開始并繼續(xù)通過連續(xù)的行直到幀底部的樣值。逐行掃描視頻幀被劃分成諸如圖22所示的宏塊(2200)等宏塊。宏塊(2200)包括四個8X8的亮度塊(Yl到Y(jié)4)以及兩個8X8的色度塊,這些色度塊與四個亮度塊共同定位,但是水平和垂直分辨率都是一半,遵循常規(guī)的4:2:0的宏塊格式。8X8的塊還可以在不同的級上細(xì)分,例如在頻率變換級(例如,8X4、4X8或4X4DCT)和熵編碼級。逐行掃描I幀是幀內(nèi)編碼的逐行掃描視頻幀。逐行掃描P幀是使用前向預(yù)測編碼的逐行掃描視頻幀,而逐行掃描B幀是使用雙向預(yù)測編碼的逐行掃描視頻幀。逐行掃描P幀和B幀可包括幀內(nèi)編碼的宏塊以及不同類型的預(yù)測宏塊。隔行掃描視頻幀由一幀的兩次掃描構(gòu)成-一次包括幀的偶數(shù)行(上半幀),另一次包括幀的奇數(shù)行(下半幀)。這兩個半幀可表示兩個不同的時間段,或者它們可以來自同一時間段。圖23A示出了隔行掃描視頻幀(2300)的一部分,包括位于隔行掃描視頻幀(2300)的左上部分的上半幀和下半幀的交替行。圖23B示出了為編碼/解碼組織為幀(2330)的圖23A的隔行掃描視頻幀(2300)。隔行掃描視頻幀(2300)被劃分成諸如宏塊(2331)和(2332)等宏塊,它們使用如圖22所示的4:2:0的格式。在亮度平面中,每一宏塊(2331、2332)包括來自上半幀的8行,這8行與來自下半幀的8行交替,總共有16行,且每一行是16個像素長。(宏塊(2331、2332)內(nèi)亮度塊和色度塊的實際組織和布置未示出,且實際上可以對不同的編碼決策不同。)在給定宏塊內(nèi),上半幀信息和下半幀信息可以聯(lián)合編碼或在各種階段的任一個單獨編碼。隔行掃描I幀是隔行掃描視頻幀的兩個幀內(nèi)編碼的半幀,其中宏塊包括關(guān)于這兩個半幀的信息。隔行掃描P幀是使用前向預(yù)測編碼的隔行掃描視頻幀的兩個半幀,而隔行掃描B幀是使用雙向預(yù)測編碼的隔行掃描視頻幀的兩個半幀,其中宏塊包括關(guān)于這兩個半幀的信息。隔行掃描P幀和B幀可包括幀內(nèi)編碼宏塊以及不同類型的預(yù)測宏塊。圖23C示出了為編碼/解碼被組織成半幀(2360)的圖23A的隔行掃描視頻幀(2300)。隔行掃描視頻幀(2300)的兩個半幀中的每一個被劃分成宏塊。上半幀被劃分成諸如宏塊(2361)等宏塊,下半幀被劃分成諸如宏塊(2362)等宏塊。(這些宏塊也使用如圖22所示的4:2:0格式,且宏塊內(nèi)亮度塊和色度塊的組織和布置未示出)。在亮度平面中,宏塊(2361)包括來自上半幀的16行,且宏塊(2362)包括來自下半幀的16行,且每一行是16個像素長。隔行掃描I半幀是隔行掃描視頻幀的單個單獨表示的半幀。隔行掃描P半幀是使用前向預(yù)測編碼的隔行掃描視頻幀的單個單獨表示的半幀,隔行掃描B半幀是使用雙向預(yù)測編碼的隔行掃描視頻幀的單個單獨表示的半幀。隔行掃描P半幀和B半幀可包括幀內(nèi)編碼宏塊以及不同類型的預(yù)測宏塊。術(shù)語圖像一般指的是源、已編碼的或已重構(gòu)的圖像數(shù)據(jù)。對于逐行掃描視頻,圖像是逐行掃描視頻幀。對于隔行掃描視頻,圖像可以指的是隔行掃描視頻幀、幀的上半幀、或幀的下半幀,取決于上下文?;蛘?,編碼器(2000)和解碼器(2100)是基于對象的,使用不同的宏塊或塊格式,或?qū)εc8X8的塊和16X16的宏塊不同大小或配置的像素集執(zhí)行操作。B.視頻編碼器圖20是廣義的視頻編碼器系統(tǒng)(2000)的框圖。編碼器系統(tǒng)(2000)接收包括當(dāng)前圖像(2005)(例如,逐行掃描視頻幀、隔行掃描視頻幀或隔行掃描視頻幀的半幀)的視頻圖像序列,并產(chǎn)生壓縮的視頻信息(2095)作為輸出。視頻編碼器的具體實施例通常使用廣義編碼器(2000)的變化或補充版本。編碼器系統(tǒng)(2000)壓縮預(yù)測圖像和關(guān)鍵圖像。為演示起見,圖20示出了關(guān)鍵圖像通過編碼器系統(tǒng)(2000)的路徑以及用于前向預(yù)測圖像的路徑。編碼器系統(tǒng)(2000)的許多組件用于同時壓縮關(guān)鍵圖像和預(yù)測圖像兩者。由這些組件執(zhí)行的確切操作可以取決于所壓縮的信息類型而變化。預(yù)測圖像(對雙向預(yù)測也稱為P圖像或B圖像,或幀間編碼圖像)按照來自一個或多個其它圖像的預(yù)測(或差)來表示。預(yù)測殘差是所預(yù)測的和原始圖像之差。相反,關(guān)鍵圖像(也稱為I圖像或幀內(nèi)編碼圖像)不參考其它圖像來壓縮。如果當(dāng)前圖像(2005)是前向預(yù)測圖像,則運動估計器(2010)相對于參考圖像來估計宏塊的運動或者當(dāng)前圖像(2005)的其它象素集,參考圖像是在圖像存儲器(2020)中緩沖的重構(gòu)的先前圖像(2025)。在一替換實施例中,參考圖像是后面的圖像或者當(dāng)前圖像是雙向預(yù)測的。運動估計器(2010)可以按象素、1/2象素、1/4象素或其它增量進行估計,并且可以在逐個圖像的基礎(chǔ)上或者在其它基礎(chǔ)上切換運動估計的精度。運動估計的精度在水平與垂直方向上可以相同或不同。運動估計器(2010)輸出運動信息(2015),如運動矢量作為輔助信息。運動補償器(2030)將運動信息(2015)應(yīng)用于重構(gòu)的先前圖像(2025)以形成經(jīng)運動補償?shù)漠?dāng)前圖像(2035)。然而預(yù)測很少是完美的,并且在經(jīng)運動補償?shù)漠?dāng)前圖像(2035)與原始當(dāng)前圖像(2005)之間的差是預(yù)測殘差(2045)??晒┨鎿Q地,運動估計器和運動補償器應(yīng)用另一類型的運動估計/補償。頻率變換器(2060)將空間域視頻信息轉(zhuǎn)換成頻域(即,頻譜)數(shù)據(jù)。對于基于塊的視頻圖像,頻率變換器(2060)向像素數(shù)據(jù)或預(yù)測殘差數(shù)據(jù)的塊應(yīng)用DCT、DCT的變體,從而產(chǎn)生DCT換系數(shù)塊。或者,頻率變換器(2060)應(yīng)用諸如傅立葉變換等另一常規(guī)頻率變換或使用小波或子帶分析。頻率變換器(2060)向預(yù)測的圖像的預(yù)測殘差應(yīng)用8X8、8X4、4X8、4X4或其它大小的頻率變換(例如,DCT)。量化器(2070)然后量化頻譜數(shù)據(jù)系數(shù)塊。量化器向頻譜數(shù)據(jù)應(yīng)用均勻的標(biāo)量量化,其步長在逐圖像的基礎(chǔ)或其它基礎(chǔ)上變化?;蛘撸炕飨蝾l譜數(shù)據(jù)系數(shù)應(yīng)用另一類型的量化,例如非均勻的、矢量或非自適應(yīng)量化,或直接在不使用頻率變換的編碼器系統(tǒng)中量化空間域數(shù)據(jù)。除自適應(yīng)量化之外,編碼器(2000)可使用幀丟棄、自適應(yīng)濾波或其它技術(shù)用于速率控制。如果預(yù)測的圖像中的給定宏塊沒有某些類型的信息(例如,沒有宏塊的運動信息以及沒有殘差信息),則編碼器(2000)可將該宏塊編碼為跳過宏塊。如果這樣,則編碼器在壓縮的視頻信息(2095)的輸出比特流中用信號表示該跳過宏塊。當(dāng)需要重構(gòu)的當(dāng)前圖像用于后續(xù)的運動估計/補償時,反量化器(2076)在量化的頻譜數(shù)據(jù)系數(shù)上執(zhí)行反量化。反頻率變換器(2066)然后執(zhí)行頻率變換器(2060)的逆運算,從而產(chǎn)生重構(gòu)的預(yù)測殘差(對于預(yù)測圖像)或重構(gòu)的樣值(對幀內(nèi)編碼的圖像)。如果所編碼的圖像(2005)是預(yù)測的圖像,則重構(gòu)的預(yù)測殘差被加到經(jīng)運動補償?shù)念A(yù)測(2035)以形成重構(gòu)的當(dāng)前圖像。圖像存儲(2020)緩沖重構(gòu)的當(dāng)前圖像,以預(yù)測下一圖像中使用。在某些實施例中,編碼器向重構(gòu)的幀應(yīng)用分塊濾波器,以自適應(yīng)地平滑幀的塊之間的不連續(xù)性。熵編碼器(2080)壓縮量化器(2070)的輸出以及某些輔助信息(例如,運動信息(2015)、量化步長)。典型的熵編碼技術(shù)包括算術(shù)編碼、差分編碼、哈夫曼編碼、行程長度編碼、LZ編碼、字典式編碼以及上述的組合。熵編碼器(2080)通常對不同種類的信息(例如,DC系數(shù)、AC系數(shù)、不同種類的輔助信息)使用不同的編碼技術(shù),并可從特定編碼技術(shù)內(nèi)的多個代碼表中進行選擇。熵編碼器(2080)將壓縮的視頻信息(2095)置于緩沖器(2090)中。緩沖器級別指示符被反饋給比特率自適應(yīng)模塊。壓縮的視頻信息(2095)以恒定或相對恒定的比特率從緩沖器(2090)中消耗完并且存儲用于以該比特率的后續(xù)流傳送。因此,緩沖器(2090)的級別主要是經(jīng)濾波的、量化的視頻信息的熵的函數(shù),它影響熵編碼的效率??晒┨鎿Q地,編碼器系統(tǒng)(2000)緊接著壓縮流傳送壓縮的視頻信息,并且緩沖器(2090)的級別還依賴于哪些信息從緩沖器(2090)消耗完用于傳輸。在緩沖器(2090)之前或之后,壓縮的視頻信息(2095)可被信道編碼用于通過網(wǎng)絡(luò)發(fā)送。信道編碼可向壓縮的視頻信息(2095)應(yīng)用檢錯和糾錯數(shù)據(jù)。C.視頻解碼器圖21是通用視頻解碼器系統(tǒng)(2100)的框圖。解碼器系統(tǒng)(2100)接收關(guān)于壓縮的視頻圖像序列的信息(2205),并產(chǎn)生包括重構(gòu)的圖像(2105)(例如,逐行掃描視頻幀、隔行掃描視頻幀或隔行掃描視頻幀的半幀)的輸出。視頻解碼器的具體實施例通常使用廣義解碼器(2100)的變體或補充版本。解碼器系統(tǒng)(2100)解壓預(yù)測圖像和關(guān)鍵圖像。為演示起見,圖21示出了關(guān)鍵圖像通過解碼器系統(tǒng)(2100)的路徑以及用于前向預(yù)測圖像的路徑。解碼器系統(tǒng)(2100)的許多組件用于解壓關(guān)鍵圖像和預(yù)測圖像。由這些組件執(zhí)行的確切操作可以取決于所解壓的信息類型而變化。緩沖器(2190)接收關(guān)于壓縮的視頻序列的信息(2195),并使得所接收的信息對熵解碼器(2180)可用。緩沖器(2190)通常以隨時間相對恒定的速率接收該信息,并包括抖動緩沖器以平滑帶寬或傳輸中的短期變化。緩沖器(2190)也可包括回放緩沖器?;蛘?,緩沖器(2190)以變化的速率接收信息。在緩沖器(2190)之前或之后,壓縮的視頻信息可以被信道解碼,并被處理用于檢錯和糾錯。熵解碼器(2180)對熵編碼的量化數(shù)據(jù)以及熵編碼的輔助信息(例如,運動信息(2115)、量化步長)進行解碼,通常應(yīng)用編碼器中執(zhí)行的熵編碼的逆運算。熵解碼技術(shù)包括算術(shù)解碼、差分解碼、哈夫曼解碼、行程長度解碼、LZ解碼、字典式解碼以及上述的組合。熵解碼器(2180)通常對不同種類的信息(例如,DC系數(shù)、AC系數(shù)、不同種類的輔助信息)使用不同的解碼技術(shù),并可從特定的解碼技術(shù)中的多個代碼表之中進行選擇。如果要重構(gòu)的圖像(2105)是前向預(yù)測圖像,則運動補償器(2130)向參考圖像(2125)應(yīng)用運動信息(2115),以形成所重構(gòu)的圖像(2105)的預(yù)測(2135)。例如,運動補償器(2130)使用宏塊運動矢量以找出參考圖像(2125)中的宏塊。圖像緩沖器(2120)儲存先前重構(gòu)的圖像以用作參考圖像。運動補償器(2130)可以按像素、1/2像素、1/4像素或其它增量來補償運動,并可在逐圖像的基礎(chǔ)或其它基礎(chǔ)上切換運動補償?shù)木取_\動補償?shù)木瓤梢栽谒胶痛怪鄙舷嗤虿煌??;蛘?,運動補償器應(yīng)用另一類型的運動補償。運動補償器的預(yù)測很少是完美的,因此解碼器(2100)也重構(gòu)預(yù)測殘差。當(dāng)解碼器需要重構(gòu)的圖像用戶隨后的運動補償時,圖像存儲(2120)緩沖重構(gòu)的圖像以在預(yù)測下一圖像時使用。在某些實施例中,編碼器向重構(gòu)的幀應(yīng)用分塊濾波器以自適應(yīng)地平滑幀的塊之間的不連續(xù)性。反量化器(2170)對熵解碼的數(shù)據(jù)進行反量化。一般而言,反量化器向熵解碼的數(shù)據(jù)應(yīng)用均勻的標(biāo)量反量化,其中步長在逐圖像的基礎(chǔ)或其它基礎(chǔ)上變化。或者,反量化器向數(shù)據(jù)應(yīng)用另一類型的反量化,例如非均勻矢量量化或非自適應(yīng)反量化,或直接在不使用反頻率變換的解碼器系統(tǒng)中對空間域數(shù)據(jù)進行反量化。反頻率變換器(2160)將量化的頻域數(shù)據(jù)轉(zhuǎn)換成空間域視頻信息。對于基于塊的視頻圖像,反頻率變換器(2160)向DCT系數(shù)塊應(yīng)用IDCT或IDCT的變體,從而分別對關(guān)鍵圖像或預(yù)測圖像產(chǎn)生像素數(shù)據(jù)或預(yù)測殘差數(shù)據(jù)。或者,反頻率變換器(2160)應(yīng)用另一常規(guī)的反頻率變換,諸如傅立葉反變換或使用小波或子帶合成。反頻率變換器(2160)向預(yù)測的圖像的預(yù)測殘差應(yīng)用8X8、8X4、4X8、4X4或其它大小的反頻率變換(例如,IDCT)。III.隔行掃描P幀典型的隔行掃描視頻幀由在不同的時刻掃描的兩個半幀(例如,上半幀和下半幀)構(gòu)成。一般而言,通過將兩個半幀一起編碼(“幀模式”編碼)來對隔行掃描視頻幀的靜止區(qū)域進行編碼是更有效的。另一方面,通過單獨對各半幀編碼(“半幀模式”編碼)來對隔行掃描視頻幀的運動區(qū)域進行編碼通常是更有效的,因為兩個半幀往往具有不同的運動。前向預(yù)測的隔行掃描視頻幀可以被編碼為兩個單獨的前向預(yù)測的半幀-隔行掃描P半幀。對前向預(yù)測的隔行掃描視頻幀單獨地編碼半幀在例如貫穿該隔行掃描視頻幀中有高運動,且因此在半幀之間有較多差異時可能是有效的。或者,前向預(yù)測的隔行掃描視頻幀可使用半幀編碼和幀編碼的混合來編碼,作為隔行掃描的P幀。對于隔行掃描P幀的宏塊,宏塊包括上半幀和下半幀的像素行,且這些行可以在幀編碼模式中共同編碼或者在半幀編碼模式中單獨編碼。隔行掃描P-半幀參考一個或多個先前解碼的半幀。例如,在一些實現(xiàn)中,隔行掃描P半幀參考一個或兩個先前解碼的半幀,然而隔行掃描B半幀參考至多兩個先前和兩個將來的參考半幀(即,最多總共四個參考半幀)。(隔行掃描P半幀的編碼和解碼技術(shù)在下面詳細(xì)描述。)或者,按照一些實施例,尤其對于有關(guān)隔行掃描P半幀和2參考隔行掃描P半幀的更多信息,見2004年5月27日提交的美國專利申請第10/857,473號,其標(biāo)題為“PredictingMotionVectorsforFieldsofForward-predictedInterlacedVideoFrames(為前向預(yù)測的隔行掃描視頻幀的半幀預(yù)測運動矢量)”。IV.隔行掃描P半幀中的參考半幀的數(shù)量在一些實施例中,當(dāng)執(zhí)行單個當(dāng)前隔行掃描P半幀的運動補償預(yù)測時,兩個先前編碼/解碼的半幀可以用作參考半幀。通常,使用兩個參考半幀的能力產(chǎn)生比當(dāng)運動補償?shù)念A(yù)測限于一個參考半幀時更好的壓縮效率。然而,當(dāng)兩個參考半幀可用時,信號表示開銷較高,因為發(fā)送額外的信息以指示兩個半幀中的哪一個為具有運動矢量的每個宏塊或塊提供參考。在某些情況下,每運動矢量具有更多可能的運動補償預(yù)測值(兩個參考半幀與一個參考半幀相比)的好處不會超出用信號表示參考半幀選擇所需要的開銷。例如,當(dāng)最佳的參考全部來自兩個可能的參考半幀之一時,選擇使用單個參考半幀代替兩個可以是有利的。這通常是由于只引起兩個參考半幀之一來自與當(dāng)前半幀相同的場景的場景變化?;蛘?,只有一個參考半幀可用,諸如在序列的開始處。在這些情況下,在當(dāng)前P半幀的半幀級上用信號表示只使用一個參考半幀并且這一個參考半幀是什么,以及讓這個決定應(yīng)用于當(dāng)前P半幀內(nèi)的宏塊和塊是更有效的。參考半幀選擇信息隨后不再需要與每個具有運動矢量的宏塊或塊一起發(fā)送。A.在不同方案中參考半幀的數(shù)量一種方案允許兩個先前編碼/解碼的半幀用作當(dāng)前P半幀的參考半幀。對運動矢量用信號表示該運動矢量(用于宏塊或塊)使用的參考半幀,如同該運動矢量的其它信息一樣。例如,對于運動矢量,用信號表示的信息指示(1)參考半幀;以及(2)在與該運動矢量相關(guān)聯(lián)的當(dāng)前塊或宏塊的塊或宏塊預(yù)測值的參考半幀中位置?;蛘?,參考半幀信息和運動矢量信息如在章節(jié)XII的組合實現(xiàn)之一中描述的那樣用信號表示。在另一個方案中,只有一個先前編碼/解碼的半幀用作當(dāng)前P半幀的參考半幀。對于運動矢量,不需要指示該運動矢量參考的參考半幀。例如,對于運動矢量,用信號表示的信息只指示在與該運動矢量相關(guān)聯(lián)的當(dāng)前塊或宏塊的預(yù)測值的參考半幀中的位置?;蛘?,運動矢量信息如在章節(jié)XII的組合實現(xiàn)之一中描述的那樣用信號表示。在一個參考半幀方案中的運動矢量一般用比在兩個參考半幀方案中相同的運動矢量較少的比特來編碼。對于任一方案,用于后續(xù)運動補償?shù)膮⒖及霂木彌_器和圖像存儲器的更新是簡單的。當(dāng)前P半幀的一個或多個參考半幀是在當(dāng)前P半幀之前的最近和第二最近的I或P半幀之一或兩者。由于候選參考半幀的位置是已知的,編碼器和解碼器可自動并且在不緩沖管理信號的情況下更新下一個P半幀的運動補償?shù)膮⒖紙D像緩沖器。可供替換地,編碼器和解碼器使用用于隔行掃描P-半幀的多個參考半幀的一個或多個其它方案。B.信號表示示例在本章節(jié)和在章節(jié)XII的組合實現(xiàn)中描述的信號表示的特定示例用信號表示多少參考半幀用于當(dāng)前P半幀,以及當(dāng)使用一個參考半幀時,使用哪個候選參考半幀。例如,在P半幀頭部中的1比特字段(稱為NUMREF)指示P半幀使用一個還是兩個先前的半幀作為參考。如果NUMREF=0,則只使用一個參考半幀。如果NUMREF=1,則使用兩個參考半幀。如果NUMREF=0,則另一個1比特字段(稱為REFFIELD)存在,并且指示使用兩個半幀中的哪一個作為參考。如果REFFIELD=0,則使用在時間上更接近的半幀作為參考半幀。如果REFFIELD=1,則使用兩個候選參考半幀中在時間上更遠(yuǎn)的那一個作為當(dāng)前P半幀的參考半幀??晒┨鎿Q地,編碼器和解碼器使用其它和/或附加信號用于參考半幀選擇。C.參考半幀的位置圖24A-24F示出可用于在隔行掃描P半幀的運動補償預(yù)測中使用的參考半幀的位置。P半幀可以使用一個或兩個先前編碼/解碼的半幀作為參考。具體地,圖24A-24F示出NUMREF=0和NUMREF=1的參考半幀的示例。圖24A和24B示出其中對當(dāng)前P半幀使用兩個參考半幀的示例。(NUMREF=1。)在圖24A中,當(dāng)前半幀參考在時間上先前的的上半幀和下半幀。中間的隔行掃描B半幀不用作參考半幀。在圖24B中,當(dāng)前半幀參考隔行掃描視頻幀中的上半幀與下半幀,該隔行掃描視頻幀就在包含當(dāng)前半幀的隔行掃描視頻幀之前。圖24C和24D示出示例,其中對當(dāng)前P半幀使用一個參考半幀(NUMREF=0),并且這個參考半幀是時間上最近的參考半幀(REFFIELD=0)。參考半幀的極性與當(dāng)前P半幀的極性相反,這意味著,例如,如果當(dāng)前P半幀來自偶數(shù)行,則參考半幀來自奇數(shù)行。在圖24C中,當(dāng)前半幀參考時間上先前的隔行掃描視頻幀中的下半幀,并且不參考在該隔行掃描視頻幀中的不太近的上半幀。再一次,中間的隔行掃描B半幀不允許作為參考半幀。在圖2D中,當(dāng)前半幀參考隔行掃描視頻幀中的下半幀,它就在包含當(dāng)前半幀的隔行掃描視頻幀之前,而不是不太近的上半幀。圖24E和24F示出示例,其中對當(dāng)前P半幀使用一個參考半幀(NUMREF=0),并且該一個參考半幀是時間上第二最近的參考半幀(REFFIELD=1)。參考半幀的極性與當(dāng)前半幀的極性相同,意味著,例如,如果當(dāng)前半幀來自偶數(shù)行,則參考半幀也來自偶數(shù)行。在圖24E中,當(dāng)前半幀參考一個時間上先前的隔行掃描視頻幀中的上半幀,但不參考更近的下半幀。再一次,中間的隔行掃描B半幀不允許作為參考半幀。在圖24F中,當(dāng)前半幀參考上半幀而不是更近的下半幀??晒┨鎿Q地,編碼器和解碼器使用在其它和/或附加位置或定時的參考半幀,用于隔行掃描P半幀的運動補償預(yù)測。例如,允許同一幀內(nèi)的參考半幀作為當(dāng)前P-半幀?;蛘?,幀的上半幀或下半幀可以首先被編碼/解碼。D.編碼技術(shù)諸如圖20的編碼器(2000)等編碼器用信號表示多個參考半幀方案中的哪一個用于編碼隔行掃描P半幀。例如,編碼器執(zhí)行圖25A中所示的技術(shù)(2500)。對于給定的隔行掃描P半幀,編碼器用信號表示(2510)在隔行掃描P半幀的運動補償預(yù)測中使用的參考半幀的數(shù)量。例如,編碼器使用單個比特來指示使用一個還是兩個參考半幀??晒┨鎿Q地,編碼器使用用于參考半幀的數(shù)量的另一信號表示/編碼機制。編碼器確定(2520)使用一個還是兩個參考半幀。如果使用一個參考半幀,則編碼器用信號表示(2530)隔行掃描P半幀的參考半幀選擇。例如,編碼器使用單個比特來指示使用時間上最近還是時間上第二最近的參考半幀(先前的I或P半幀)。可供替換地,編碼器使用用于P半幀的參考半幀選擇的另一信號表示/編碼機制。如果使用兩個參考半幀,則編碼器用信號表示(2540)隔行掃描P半幀的塊、宏塊或其它部分的運動矢量的參考半幀。例如,編碼器對運動矢量的參考半幀選擇與差分運動矢量信息一起進行聯(lián)合編碼。可供替換地,編碼器使用用于運動矢量的參考半幀選擇的另一信號表示/編碼機制。編碼器重復(fù)(2545,2540)下一運動矢量的信號表示,直到P半幀沒有更多的運動矢量要用信號表示。(為了簡單起見,圖25A沒有示出宏塊與塊編碼和相應(yīng)的信號表示(2540)的各級,它們可在參考半幀選擇的信號表示(2540)之后或左右發(fā)生。相反,圖25A集中在P半幀中多個運動矢量的參考半幀選擇的重復(fù)信號表示。)可供替換地,編碼器執(zhí)行另一技術(shù)來指示使用多個參考半幀方案中的哪一個來編碼隔行掃描P半幀。例如,編碼器具有用于參考半幀的數(shù)量的更多和/或不同選項。為了簡單起見,圖25A沒有示出可將該技術(shù)(2500)編碼和解碼的其它方面集成的各種方法。在章節(jié)XII中詳細(xì)描述了各種組合實現(xiàn)。E.解碼技術(shù)諸如圖21的解碼器(2100)等解碼器接收和解碼指示要使用多個方案中的哪一個來解碼隔行掃描P半幀的信號。例如,解碼器執(zhí)行圖25B中所示的技術(shù)(2550)。對于給定的隔行掃描P半幀,解碼器接收和解碼(2560)關(guān)于在隔行掃描P半幀的運動補償預(yù)測中使用的參考半幀的數(shù)量的信號。例如,解碼器接收和解碼單個比特以指示使用一個還是兩個參考半幀??晒┨鎿Q地,解碼器使用用于參考半幀的數(shù)量的另一解碼機制。解碼器確定(2570)使用一個還是兩個參考半幀。如果使用一個參考半幀,則解碼器接收和解碼(2580)關(guān)于隔行掃描P半幀的參考半幀選擇的信號。例如,解碼器接收和解碼單個比特以指示使用時間最近還是時間上第二最近的參考半幀(先前的I或P半幀)??晒┨鎿Q地,解碼器使用用于P半幀的參考半幀選擇的另一解碼機制。如果使用兩個參考半幀,則解碼器接收和解碼(2590)關(guān)于隔行掃描P半幀的塊、宏塊或其它部分的運動矢量的參考半幀選擇的信號。例如,解碼器解碼與運動矢量的差分運動矢量信息一起聯(lián)合編碼的參考半幀選擇。可供替換地,解碼器使用用于運動矢量的參考半幀選擇的另一解碼機制。解碼器重復(fù)(2595,2590)下一運動矢量的接收與解碼,直到?jīng)]有更多的為P半幀用信號表示的運動矢量。(為了簡單起見,圖25B沒有示出可以在參考半幀選擇的接收與解碼(2590)之后或左右發(fā)生的宏塊和塊解碼的各級。相反,圖25B集中在P半幀中的多個運動矢量的參考半幀選擇的重復(fù)接收/解碼。)可供替換地,解碼器執(zhí)行另一技術(shù)來確定使用多個參考半幀方案中的哪一個來解碼隔行掃描P半幀。例如,解碼器具有用于參考半幀的數(shù)量的更多和/或不同選項。為了簡單起見,圖25B沒有示出可將技術(shù)(2550)與編碼和解碼的其它方面集成的各種方法。在章節(jié)XII中詳細(xì)描述了各種組合實現(xiàn)。V.用信號表示隔行掃描P半幀的宏塊模式信息在一些實施例中,對隔行掃描P半幀的宏塊的各種宏塊模式信息進行聯(lián)合分組以用于信號表示。隔行掃描P半幀的宏塊可以用許多不同模式通過若干存在或不存在的不同句法元素中的任何元素來編碼。具體地,對運動補償?shù)念愋?例如1MV、4MV或幀內(nèi)編碼)、在宏塊的比特流中是否存在已編碼塊模式、以及(對于IMV情況)宏塊的比特流中是否存在運動矢量數(shù)據(jù)進行聯(lián)合編碼。可使用不同的代碼表用于宏塊模式信息的不同情況,這產(chǎn)生信息的更有效的整體壓縮。在本章節(jié)和在章節(jié)XII的組合實現(xiàn)中描述的信號表示的特定示例用可變長度編碼的MBMODE句法元素來用信號表示宏塊模式信息。MBMODE的表選擇是通過定長編碼的半幀級元素MBM0DETAB來用信號表示的??晒┨鎿Q地,編碼器和解碼器使用其它和/或附加信號來用信號表示宏塊模式信息。A.不同類型的隔行掃描P半幀的宏塊模式通常,宏塊模式指示宏塊類型(1MV,4MV或幀內(nèi)編碼)、宏塊的已編碼塊模式的存在/不存在、以及宏塊的運動矢量數(shù)據(jù)的存在/不存在。由宏塊模式句法元素指示的信息取決于隔行掃描P半幀是被編碼為IMV半幀(具有幀內(nèi)編碼和/或IMV宏塊)還是混合MV半幀(具有幀內(nèi)編碼、IMV和/或4MV宏塊)。在IMV隔行掃描P半幀中,宏塊的宏塊模式元素聯(lián)合地表示宏塊類型(幀內(nèi)或1MV)、宏塊的已編碼塊模式元素的存在/不存在以及運動矢量數(shù)據(jù)的存在/不存在(當(dāng)宏塊類型是IMV時,但不是當(dāng)它是幀內(nèi)編碼時)。圖26中的表示出由IMV隔行掃描P半幀中的MBMODE用信號表示的宏塊信息的完整事件空間。在混合MV隔行掃描P半幀中,宏塊的宏塊模式元素聯(lián)合地表示宏塊類型(幀內(nèi)編碼或IMV或4MV)、宏塊的已編碼塊模式的存在/不存在、以及運動矢量數(shù)據(jù)的存在/不存在(當(dāng)宏塊類型是IMV時,但不是當(dāng)它是幀內(nèi)編碼或4MV時)。圖27中的表示出由混合MV隔行掃描P半幀的MBMODE用信號表示的宏塊信息的完整事件空間。如果宏塊模式指示運動矢量數(shù)據(jù)存在,則運動矢量數(shù)據(jù)存在于宏塊層中并且用信號表示運動矢量差分,它與運動矢量預(yù)測值組合以重構(gòu)運動矢量。如果宏塊模式元素指示運動矢量數(shù)據(jù)不存在,則運動矢量差分假定為零,并且因此運動矢量等于運動矢量預(yù)測值。宏塊模式元素因而有效地用信號表示何時要使用只帶有一個運動矢量預(yù)測值(未被任何運動矢量差分修改)的運動補償。使用多個不同VLC表之一來用信號表示隔行掃描P半幀的宏塊模式元素。例如,在圖47H中示出混合MV隔行掃描P半幀的宏塊的MBMODE的八個代碼表,并且在圖471中示出IMV隔行掃描P半幀的MBMODE的八個不同代碼表。表選擇是由在半幀層用信號表示的MBM0DETAB指示的??晒┨鎿Q地,編碼器和解碼器使用其它和/或附加代碼來用信號表示宏塊模式信息和表選擇。B.編碼技術(shù)諸如圖20的編碼器(2000)等編碼器編碼隔行掃描P半幀的宏塊模式信息。例如,編碼器執(zhí)行圖28A中所示的技術(shù)(2800)。對于給定的隔行掃描P半幀,編碼器選擇(2810)用于編碼隔行掃描P半幀的宏塊的宏塊模式信息的代碼表。例如,編碼器選擇圖47H或471中所示的VLC表之一。可供替換地,編碼器從其它和/或附加表中選擇。編碼器在比特流中用信號表示(2820)所選擇的代碼表。例如,編碼器在給定隔行掃描P半幀的類型時,用信號表示指示所選擇的代碼表的FLC??晒┨鎿Q地,編碼器使用用于代碼表選擇的不同信號表示機制,例如,使用VLC用于代碼表選擇。編碼器從多個可用的宏塊模式選擇(2830)宏塊的宏塊模式。例如,編碼器選擇指示宏塊類型、已編碼塊模式是否存在、以及(如果可應(yīng)用于宏塊類型)運動矢量數(shù)據(jù)是否存在的宏塊模式。MBMODE的各種選項組合在圖26與27中列出。可供替換地,編碼器從其它和/或附加宏塊組合選項的其它和/或附加宏塊模式中選擇。編碼器使用所選擇的代碼表用信號表示(2840)所選擇的宏塊模式。一般地,編碼器使用選擇的VLC表將宏塊模式用信號表示為VLC。編碼器重復(fù)(2845,2830,2840)宏塊模式的選擇和信號表示,直到P半幀沒有更多的宏塊模式要用信號表示。(為了簡單起見,圖28A沒有示出可以在選擇的宏塊模式的信號表示(2840)之后或左右發(fā)生的宏塊和塊編碼與相應(yīng)信號表示的各級。相反,圖28A集中在使用為P半幀選擇的代碼表來重復(fù)用信號表示宏塊的宏塊模式。)可供替換地,編碼器執(zhí)行另一技術(shù)來編碼隔行掃描P半幀的宏塊的宏塊模式信息。例如,盡管圖28A在模式選擇之前示出代碼表選擇,但在許多常見的編碼情況下,編碼器首先為宏塊選擇宏塊模式,然后選擇用于有效地用信號表示那些選擇的宏塊模式的代碼表,然后用信號表示代碼表選擇和這些模式。而且,盡管圖28A示出每隔行掃描P半幀發(fā)生的代碼表選擇,但可供替換地,在更頻繁、更不頻繁或者非周期基礎(chǔ)上選擇代碼表,或者編碼器完全跳過代碼表選擇(總是使用同一代碼表)。或者,編碼器可從上下文信息選擇代碼表(使用信號表示代碼表選擇沒有必要)。為了簡單起見,圖28A沒有示出可將技術(shù)(2800)與編碼和解碼的其它方面集成的各種方法。在章節(jié)XII中詳細(xì)描述了各種組合實現(xiàn)。C.解碼技術(shù)諸如圖21的解碼器(2100)等解碼器接收和解碼隔行掃描P半幀的宏塊的宏塊模式信息。例如,解碼器執(zhí)行圖28B所示的技術(shù)(2850)。對于給定的隔行掃描P半幀,解碼器接收和解碼(2860)對要用于解碼隔行掃描P半幀的宏塊的宏塊模式信息的代碼表的代碼表選擇。例如,解碼器在給定隔行掃描P半幀的類型時,接收和解碼指示選擇的代碼表的FLC??晒┨鎿Q地,解碼器與用于代碼表選擇的不同信號表示機制一起工作,例如,為代碼表選擇使用VLC的信號表示機制。解碼器基于解碼的代碼表選擇(以及可能的其它信息)來選擇(2870)代碼表。例如,解碼器選擇圖47H或471中所示的MBMODE的VLC表之一??晒┨鎿Q地,解碼器從其它和或附加表中選擇。解碼器接收和解碼(2880)宏塊的宏塊模式選擇。例如,宏塊模式選擇指示宏塊類型、已編碼塊模式是否存在、以及(如果可應(yīng)用于宏塊類型)運動矢量數(shù)據(jù)是否存在。MBMODE的這些選項的各種組合在圖26與27中列出??晒┨鎿Q地,宏塊模式是其它和/或附加宏塊組合選項的其它和/或附加宏塊模式之一。解碼器重復(fù)(2885,2880)下一宏塊的宏塊模式的接收與解碼,直到P半幀沒有更多要接收與解碼的宏塊模式。(為了簡單起見,圖28B沒有示出可以在宏塊模式選擇的接收與解碼(2880)之后或左右發(fā)生的宏塊與塊解碼的各級。相反,圖28B集中在使用為P半幀選擇的代碼表來重復(fù)接收/解碼P半幀中宏塊的宏塊模式選擇。)可供替換地,解碼器執(zhí)行另一技術(shù)來解碼隔行掃描P半幀的宏塊的宏塊模式信息。例如,盡管圖28B示出每隔行掃描P半幀代碼表選擇發(fā)生,但可供替換地,在更頻繁、更不頻繁或非周期基礎(chǔ)上選擇代碼表,或者解碼器完全跳過代碼表選擇(總是使用同一代碼表)?;蛘?,解碼器可從上下文信息選擇代碼表(使代碼表選擇的接收與解碼沒有必要)。為了簡單起見,圖28B沒有示出可將技術(shù)(2850)與編碼和解碼的其它方面集成的各種方法。在章節(jié)XII中詳細(xì)描述了各種組合實現(xiàn)。VI.在兩個參考半巾郞g行掃描P半巾商中的參考半巾商詵擇在一些實施例中,當(dāng)為單個當(dāng)前隔行掃描P半幀執(zhí)行運動補償預(yù)測時,使用兩個先前編碼/解碼的半幀作為參考半幀。(例如,見章節(jié)IV。)用信號表示的信息指示兩個半幀中的哪一個為具有運動矢量的每個宏塊(或塊)提供參考。在本節(jié)中,描述了各種技術(shù)與工具,它們用于有效地用信號表示在編碼或解碼當(dāng)前宏塊或塊時多個先前編碼/解碼的參考半幀中的哪一些用于提供運動補償預(yù)測信息。例如,編碼器和解碼器隱含地基于隔行掃描P半幀中的先前編碼的運動矢量來導(dǎo)出當(dāng)前宏塊或塊的主和非主參考半幀。(或者,相應(yīng)地,編碼器和解碼器導(dǎo)出主和非主運動矢量預(yù)測值極性。)用信號表示的信息隨后指示對當(dāng)前宏塊或塊的運動補償使用主或非主參考半幀。A.主和非主參考半幀和預(yù)測值隔行掃描半幀可以不使用運動補償(I半幀)、前向運動補償(P半幀)、或者前向與后向運動補償(B半幀)來編碼。隔行掃描P半幀可參考兩個參考半幀,它們是先前編碼/解碼的I或P半幀。圖24A和24B示出示例,其中對當(dāng)前P半幀使用兩個參考半幀。這兩個參考半幀是相反極性的。一個參考半幀表示視頻幀的奇數(shù)行,而另一個參考半幀表示視頻幀(沒必要是包括奇數(shù)行參考半幀的同一幀)的偶數(shù)行。當(dāng)前正在編碼或解碼的P半幀可以在運動補償中使用兩個先前編碼/解碼的半幀之一或兩者作為參考。因而,P半幀的宏塊或塊的運動矢量數(shù)據(jù)以某種方式指示(1)在運動補償中要使用哪一個半幀作為參考半幀;以及(2)在運動補償中要使用的樣本值的參考半幀所在的位移/位置。用信號表示參考半幀選擇信息會消耗低效率的比特數(shù)。然而對于給定的運動矢量,通過預(yù)測將使用哪一個參考半幀用于運動矢量并且隨后用信號表示實際上是否使用預(yù)測參考半幀作為運動矢量的參考半幀,可減少比特數(shù)。例如,對于在隔行掃描P-半幀中使用運動補償?shù)拿總€宏塊或塊,編碼器或解碼器分析最多三個來自相鄰宏塊或塊的先前編碼/解碼的運動矢量。從它們中,編碼器或解碼器導(dǎo)出主和非主參考半幀。實際上,編碼器或解碼器確定兩個可能的參考半幀中的哪一個是由相鄰宏塊或塊的運動矢量的大多數(shù)使用的。由相鄰宏塊或塊中較多的運動矢量參考的半幀是主參考半幀,并且另一個參考半幀是非主參考半幀。同樣,主參考半幀的極性是主運動矢量預(yù)測值極性,而非主參考半幀的極性是非主運動矢量預(yù)測值極性。圖29中的偽代碼示出編碼器或解碼器確定主和非主參考半幀的一種技術(shù)。在該偽代碼中,術(shù)語“相同半幀”和“相反半幀”相對于當(dāng)前隔行掃描P半幀。例如,如果當(dāng)前P半幀是偶數(shù)半幀,則“相同半幀”是偶數(shù)行參考半幀,并且“相反半幀”是奇數(shù)行參考半幀。圖5A至10示出從其中取得預(yù)測值A(chǔ)、B和C的相鄰宏塊和塊的位置。在圖29的偽代碼中,主半幀是由候選運動矢量預(yù)測值中的大多數(shù)參考的半幀。在平分的情況下,從相反半幀導(dǎo)出的運動矢量視為主運動矢量預(yù)測值。幀內(nèi)編碼的宏塊在主/非主預(yù)測值的計算中不考慮。如果所有候選預(yù)測值宏塊是幀內(nèi)編碼的,則主和非主運動矢量預(yù)測值設(shè)置為零,并且主預(yù)測值取自相反半幀??晒┨鎿Q地,編碼器和解碼器分析來自相鄰宏塊或塊的其它和/或附加運動矢量,和/或應(yīng)用不同的決策邏輯以確定主和非主參考半幀?;蛘撸幋a器和解碼器使用不同的機制來預(yù)測將為隔行掃描P半幀中的給定運動矢量選擇哪一個參考半幀。在某些情況下,指示使用主還是非主半幀的1比特信息與差分運動矢量信息一起進行聯(lián)合編碼。因此,用于該1比特信息的比特/碼元可以更準(zhǔn)確地匹配真正的碼元熵。例如,用信號表示主/非主選擇器,作為圖30的偽代碼中所示的運動矢量差分的垂直分量的一部分。其中,MVY是運動矢量的垂直分量,PMVY是運動矢量預(yù)測值的垂直分量。實際上,垂直運動矢量差分對參考半幀選擇器和垂直偏移差分進行聯(lián)合編碼,如下DMVY=(MVY-PMVY)*2+p,其中,如果使用主參考半幀則ρ=0,而如果使用非主參考半幀則ρ=1。作為一個數(shù)字示例假定當(dāng)前塊是偶極性,則運動矢量的實際參考半幀是偶極性,并且主預(yù)測值是相反半幀(換言之,主參考半幀是奇極性參考半幀)。還假定運動矢量的垂直位移是7單位(MVY=7)并且運動矢量預(yù)測值的垂直分量是4單位(PMVY=4)。由于當(dāng)前參考半幀和主預(yù)測值是相反極性的,DMVY=(7-4)*2+1=7??晒┨鎿Q地,主/非主選擇器以某種其它方式與運動矢量差分信息一起聯(lián)合編碼?;蛘?,用另一機制用信號表示主/非主選擇器。B.編碼技術(shù)諸如圖20的編碼器(2000)等編碼器在兩個參考半幀隔行掃描P半幀的運動矢量的編碼期間,確定候選運動矢量預(yù)測值的主和非主參考半幀。例如,編碼器對當(dāng)前宏塊或塊的運動矢量執(zhí)行圖31A所示的技術(shù)(3100)。一般地,編碼器在兩個參考半幀中執(zhí)行某種形式的運動估計以獲得運動矢量和參考半幀。運動矢量隨后按照技術(shù)(3100)編碼。編碼器確定(3110)與運動矢量相同參考半幀極性的運動矢量預(yù)測值。例如,編碼器確定在章節(jié)VII中描述運動矢量預(yù)測值用于與運動矢量相關(guān)聯(lián)的參考半幀??晒┨鎿Q地,編碼器用另一種機制來確定運動矢量預(yù)測值。編碼器確定(3120)運動矢量的主和非主參考半幀極性。例如,編碼器遵循圖29所示的偽代碼??晒┨鎿Q地,編碼器使用另一種技術(shù)來確定主和非主極性。編碼器用信號表示(3125)比特流中的主/非主極性選擇器,它指示應(yīng)該對與運動矢量相關(guān)聯(lián)的運動矢量預(yù)測值和參考半幀使用主還是非主極性。例如,編碼器使用聯(lián)合VLC對主/非主極性選擇器與其它信息一起進行聯(lián)合編碼??晒┨鎿Q地,編碼器使用另一種機制來用信號表示選擇器,例如,指示選擇器的一個比特的算術(shù)編碼。運動矢量預(yù)測值的參考半幀極性的預(yù)測降低了選擇器信息的熵,這允許更有效地編碼選擇器信息。編碼器根據(jù)運動矢量預(yù)測值和運動矢量計算(3130)運動矢量差分,并且用信號表示(3140)運動矢量差分信息的信息。可供替換地,編碼器執(zhí)行另一種機制在兩個參考半幀隔行掃描P半幀的運動矢量的編碼期間確定運動矢量預(yù)測的主和非主極性。而且,盡管圖31A示出主和非主選擇器和運動矢量差分信息的單獨信號表示,但在各種實施例中,這個精確的信息是聯(lián)合地用信號表示的。各種其它重新排序是可能的,包括在確定主/非主極性之后確定運動矢量(以便在運動矢量選擇過程中將選擇器信號表示的開銷成本考慮進去)。為了簡單起見,圖31A沒有示出可將技術(shù)(3100)與編碼和解碼的其它方面集成的各種方法。在章節(jié)XII中詳細(xì)描述了各種組合實現(xiàn)。C.解碼技術(shù)諸如圖21的解碼器(2100)等解碼器在兩個參考半幀隔行掃描P半幀的運動矢量的解碼期間確定運動矢量預(yù)測值候選的主和非主參考半幀極性。例如,解碼器執(zhí)行圖3B所示的技術(shù)(3150)。解碼器確定(3160)當(dāng)前宏塊或塊的運動矢量的主和非主參考半幀極性。例如,解碼器遵循圖29所示的偽代碼??晒┨鎿Q地,解碼器使用另一種技術(shù)來確定主和非主極性。解碼器接收和解碼(3165)比特流中的主/非主極性選擇器,它指示應(yīng)該對與運動矢量相關(guān)聯(lián)的運動矢量預(yù)測值和參考半幀使用主還是非主極性。例如,解碼器接收和解碼已經(jīng)使用聯(lián)合VLC與其它信息一起聯(lián)合編碼的主/非主極性選擇器。可供替換地,解碼器接收和解碼使用另一種機制用信號表示的選擇器,例如,指示選擇器的一個比特的算術(shù)解碼。解碼器確定(3170)要與運動矢量一起使用的參考半幀的運動矢量預(yù)測值。例如,解碼器確定在章節(jié)VII中描述的運動矢量預(yù)測值用于用信號表示的極性??晒┨鎿Q地,解碼器用另一種機制來確定運動矢量預(yù)測值。解碼器接收和解碼(3180)運動矢量差分的信息,并且從運動矢量差分和運動矢量預(yù)測值中重構(gòu)(3190)運動矢量??晒┨鎿Q地,解碼器執(zhí)行另一種技術(shù)在兩個參考半幀隔行掃描P半幀的運動矢量的解碼期間確定運動矢量預(yù)測值的主和非主極性。例如,盡管圖31B示出主/非主選擇器和運動矢量差分信息的單獨信號表示,但可供替換地,該信息是聯(lián)合地用信號表示的。各種其它重新排序也是可能的。為了簡單起見,圖31B沒有示出可將技術(shù)(3150)與編碼和解碼的其它方面集成的各種方法。在章節(jié)XII中詳細(xì)描述了各種組合實現(xiàn)。VII.隔行掃描P半幀的混合運動矢量預(yù)測在一些實施例中,將運動矢量用信號表示為相對于運動矢量預(yù)測值的差分,以便減少與用信號表示運動矢量相關(guān)聯(lián)的比特率。運動矢量差分信號表示的性能部分地取決于運動矢量預(yù)測的質(zhì)量,這通常在從當(dāng)前宏塊、塊等周圍區(qū)域考慮多個候選運動矢量預(yù)測值時得到改進。然而在有些情況下,多個候選預(yù)測值的使用損害了運動矢量預(yù)測的質(zhì)量。例如,這是在將運動矢量預(yù)測值計算為一組相異的候選預(yù)測值的中值時發(fā)生的(例如,在運動矢量預(yù)測值之間具有很大的變化)。因此,在一些實施例中,編碼器和解碼器對隔行掃描P半幀的運動矢量執(zhí)行混合運動矢量預(yù)測。當(dāng)構(gòu)成當(dāng)前宏塊或塊的因果相鄰幀的矢量按照某些準(zhǔn)則是相異的時候,使用混合運動矢量預(yù)測模式。在這個模式中,并非使用候選預(yù)測值組的中值作為運動矢量預(yù)測值,而是由一個選擇器比特或碼字來用信號表示來自該組的特定運動矢量(例如,上預(yù)測值,左預(yù)測值)。這有助于改進在隔行掃描P半幀中運動不連續(xù)處的運動矢量預(yù)測。對于2參考半幀隔行掃描P半幀,在檢查混合運動矢量預(yù)測條件時也將主極性考慮在內(nèi)。A.隔行掃描P-半幀的運動矢量預(yù)測混合運動矢量預(yù)測是隔行掃描P半幀的正常運動矢量預(yù)測的特殊情況。如前面說明的,運動矢量是通過將運動矢量差分(它是在比特流中用信號表示的)加到運動矢量預(yù)測值來重構(gòu)的。預(yù)測值是從最多三個相鄰運動矢量計算的。圖5A至10示出從其取得運動矢量預(yù)測的預(yù)測值A(chǔ)、B和C的相鄰宏塊和塊的位置。(這些圖示出逐行掃描P半幀的宏塊和塊,但也應(yīng)用于隔行掃描P半幀的宏塊和塊,如在章節(jié)VI中所述。)如果隔行掃描P半幀只參考一個先前半幀,則為P半幀的每個運動矢量計算單個運動矢量預(yù)測值。例如,圖51A和51B(或者可供替換地,圖60A和60B)示出如何為1參考半幀隔行掃描P半幀的運動矢量計算運動矢量預(yù)測值,如在章節(jié)XII中討論的。如果對隔行掃描P半幀使用兩個參考半幀,則兩個運動矢量預(yù)測值有可能用于P半幀的每個運動矢量??捎嬎銉蓚€運動矢量預(yù)測值,然后選擇一個,或者可通過首先確定預(yù)測值選擇,只計算一個運動矢量預(yù)測值。例如,一個可能的運動矢量預(yù)測值來自主參考半幀,而另一個可能的運動矢量預(yù)測值來自非主參考半幀,其中術(shù)語主和非主如在章節(jié)VI中描述的那樣。主和非主參考半幀具有相反極性,因此一個運動矢量預(yù)測值來自與當(dāng)前P半幀相同極性的參考半幀,而另一個運動矢量預(yù)測值來自具有相反極性的參考半幀。例如,圖52A至52N中的偽代碼和表示出了為2參考半幀P半幀的運動矢量計算運動矢量預(yù)測值的過程,如在章節(jié)XII中詳細(xì)討論的。變量samefieldpred_x和samefieldpred_y分別表示來自相同半幀的運動矢量預(yù)測值的水平和垂直分量,而變量oppositefieldprecLx和oppositefieldpred_y分別表示來自相反半幀的運動矢量預(yù)測值的水平和垂直分量。變量dominantpredictor指示哪一個半幀包含主預(yù)測值。predictor_flag指示使用對運動矢量主還是非主預(yù)測值??晒┨鎿Q地,使用圖61A至61F中的偽代碼。B.隔行掃描P半幀的混合運動矢量預(yù)測對于運動矢量的混合運動矢量預(yù)測,編碼器和解碼器檢查運動矢量的混合運動矢量預(yù)測條件。通常,條件與運動矢量預(yù)測值中的變化程度有關(guān)。估計的預(yù)測值可以是候選運動矢量預(yù)測值和/或使用正常的運動矢量預(yù)測計算的運動矢量預(yù)測值。如果滿足條件(例如,變化程度高),則一般使用原始候選運動矢量預(yù)測值之一代替正常的運動矢量預(yù)測值。編碼器用信號表示要使用哪一個混合運動矢量預(yù)測值,而解碼器接收和解碼該信號。當(dāng)預(yù)測值之間的變化很小時(這是通常的情況),不使用混合運動矢量預(yù)測值。編碼器和解碼器檢查隔行掃描P半幀的每個運動矢量的混合運動矢量條件、運動矢量是否用于宏塊、塊等。換言之,編碼器和解碼器為每個運動矢量確定條件是否被觸發(fā)并且因而預(yù)期一預(yù)測值選擇信號??晒┨鎿Q地,編碼器和解碼器只為隔行掃描P半幀的一些運動矢量檢查混合運動矢量條件。隔行掃描P半幀的混合運動矢量預(yù)測的優(yōu)點是,它使用計算出的預(yù)測值和主極性來選擇良好的運動矢量預(yù)測值。大量實驗結(jié)果表明混合運動矢量如下所述地提供顯著的壓縮/質(zhì)量改進,這超過了沒有它的運動矢量預(yù)測,并且也超過了混合運動矢量預(yù)測的早期實現(xiàn)。而且,混合矢量預(yù)測檢查的附加計算代價不是很大。在一些實施例中,編碼器或解碼器對照原始候選運動矢量預(yù)測值集來測試正常的運動矢量預(yù)測值(如由在章節(jié)VII.A中描述的技術(shù)所確定的)。正常的運動矢量預(yù)測值是預(yù)測值A(chǔ)、B和/或C的分量級中值,并且編碼器和解碼器相對于預(yù)測值A(chǔ)和預(yù)測值C來測試它。該測試檢查正常運動矢量預(yù)測值與候選之間的差異是否高。如果高,則真正的運動矢量有可能更接近這些候選預(yù)測值(A,B或C)之一,而不是更接近從中值運算導(dǎo)出的預(yù)測值。當(dāng)候選預(yù)測值分開很遠(yuǎn)時,它們的分量級中值不提供良好的預(yù)測,并且發(fā)送一個指示真正的運動矢量更接近A還是C的附加信號更有效。如果預(yù)測值A(chǔ)是更接近的預(yù)測值,則使用它作為當(dāng)前運動矢量的運動矢量預(yù)測值,并且如果預(yù)測值C是更接近的預(yù)測值,則使用它作為當(dāng)前運動矢量的運動矢量預(yù)測值。圖32中的偽代碼示出在解碼期間這樣的混合運動矢量預(yù)測。變量prediCtor_pre_x和prediCt0r_pre_y分別是水平和垂直運動矢量預(yù)測值,如使用正常的混合運動矢量預(yù)測來計算的。變量predictor_post_x和predictor_post_y分別是在混合運動矢量預(yù)測之后水平和垂直運動矢量預(yù)測值。在偽代碼中,相對于預(yù)測值A(chǔ)和C測試正常的運動矢量預(yù)測值,以查看運動矢量預(yù)測值選擇是否明確地編碼在比特流中。如果是,則在比特流中存在指示使用預(yù)測值A(chǔ)還是預(yù)測值C作為運動矢量預(yù)測值的單個比特。否則,使用正常的運動矢量預(yù)測值。也可檢查各種其它條件(例如,如果A或C是幀內(nèi)編碼的,則檢查正常運動矢量的量值)。當(dāng)A或C是幀內(nèi)編碼時,分別對應(yīng)于A或C的運動被視為零。對于兩個參考半幀P半幀的運動矢量,所有預(yù)測值是相同極性的。在一些實施例中,由在差分運動矢量解碼過程中獲得的主/非主預(yù)測值極性和選擇器信號來確定參考半幀極性。例如,如果使用相反半幀預(yù)測值,則predictor_pre_x=oppositefieldpred_χ,predictor_pre_x=oppositefieldpred_y,predictorA_x=oppositefieldpredA_x,predictorA_y=oppositefieldpredA_y,predictorC_x=oppositefieldpredC_x,以及predictorC_y=oppositefieldpredC_y。如果使用相同半幀極性則predictor_pre_x=samefieldpred_x,predictoryre_x=samefieldpred_y,predictorA_χ=samefieldpredA_x,predictorA_y=samefieldpredA_y,predictorC_x=samefieldpredC_x,以及predictorC_y=samefieldpredC_y。例如,oppositefieldpred和samefieldpred的值如在圖52A至52J或者61A至61F的偽代碼中那樣計算。圖53示出在組合實現(xiàn)(見章節(jié)XII)中的混合運動矢量預(yù)測的替換偽代碼??晒┨鎿Q地,編碼器和解碼器測試不同的混合運動矢量預(yù)測條件,例如,考慮其它和/或附加預(yù)測值的條件,使用不同的決策邏輯來檢測運動不連續(xù)性的條件,和/或?qū)ψ兓褂貌煌拈撝?除了32以外)的條件。在兩個候選預(yù)測值(例如A與C)之間選擇的簡單信號是每運動矢量單個比特。可供替換地,編碼器和解碼器使用不同的信號表示機制,例如,與諸如運動矢量數(shù)據(jù)等其它信息一起聯(lián)合地用信號表示選擇器比特。C.編碼技術(shù)諸如圖20的編碼器(2000)等編碼器在隔行掃描P半幀的運動矢量的編碼期間執(zhí)行混合運動矢量預(yù)測。例如,編碼器對當(dāng)前宏塊或塊的運動矢量執(zhí)行圖33A所示的技術(shù)(3300)。編碼器確定(3310)運動矢量的運動矢量預(yù)測值。例如,編碼器使用章節(jié)VII.A中描述的技術(shù)來確定運動矢量預(yù)測值。可供替換地,編碼器用另一種技術(shù)來確定運動矢量預(yù)測值。編碼器隨后檢查(3320)運動矢量預(yù)測值的混合運動矢量預(yù)測條件。例如,編碼器使用反映圖32中所示的解碼器側(cè)的偽代碼的技術(shù)??晒┨鎿Q地,編碼器檢查不同的混合運動矢量預(yù)測條件。(相應(yīng)的解碼器象編碼器一樣檢查混合運動矢量預(yù)測條件,而無論條件是什么,因為預(yù)測值信號信息的存在/不存在是隱含地由編碼器和相應(yīng)的解碼器導(dǎo)出的。)如果沒有觸發(fā)混合運動矢量條件(從判定3325出來的“否”路徑),編碼器使用最初確定的運動矢量預(yù)測值。另一方面,如果觸發(fā)混合運動矢量條件(判定3325出來的“是”路徑),則編碼器選擇(3330)要使用的混合運動矢量預(yù)測值。例如,編碼器在上候選預(yù)測值與左候選預(yù)測值之間選擇,它們是相鄰的運動矢量??晒┨鎿Q地,編碼器在其它和/或附加預(yù)測值之間選擇。編碼器隨后用信號表示(3340)所選擇的混合運動矢量預(yù)測值。例如,編碼器傳輸單個比特,它指示要使用上候選預(yù)測值還是左候選預(yù)測值作為運動矢量預(yù)測值??晒┨鎿Q地,編碼器使用另一個信號表示機制。編碼器對隔行掃描P半幀的每個運動矢量,或者只對隔行掃描P半幀的某些運動矢量(例如,取決于宏塊類型)執(zhí)行技術(shù)(3300)。為了簡單起見,圖33A沒有顯示可將技術(shù)(3300)與編碼和解碼的其它方面集成的各種方法。在章節(jié)XII中詳細(xì)描述了各種組合實現(xiàn)。D.解碼技術(shù)諸如圖21的解碼器(2100)等解碼器在隔行掃描P半幀的運動矢量的解碼期間執(zhí)行混合運動矢量預(yù)測。例如,解碼器對當(dāng)前宏塊或塊的運動矢量執(zhí)行圖33B所示的技術(shù)(3350)。解碼器確定(3360)運動矢量的運動矢量預(yù)測值。例如,解碼器使用章節(jié)VII.A中描述的技術(shù)來確定運動矢量預(yù)測值。可供替換地,解碼器用另一種技術(shù)來確定運動矢量預(yù)測值。解碼器隨后檢查(3370)運動矢量預(yù)測值的混合運動矢量預(yù)測條件。例如,解碼器遵循圖32所示的偽代碼??晒┨鎿Q地,解碼器檢查不同的混合運動矢量預(yù)測條件。(解碼器檢查與相應(yīng)的編碼器相同的運動矢量預(yù)測條件,而無論條件是什么。)如果沒有觸發(fā)混合運動矢量條件(判定3375出來的“否”路徑),則解碼器使用最初確定的運動矢量預(yù)測值。另一方面,如果觸發(fā)混合運動矢量條件(判定3375出來的“是”路徑),則解碼器接收和解碼(3380)指示所選擇的混合運動矢量預(yù)測值的信號。例如,解碼器取得單個比特,它指示要使用上候選預(yù)測值還是左候選預(yù)測值作為運動矢量預(yù)測值。可供替換地,解碼器結(jié)合另一種信號表示機制操作。解碼器隨后選擇要使用的混合運動矢量預(yù)測值。例如,解碼器在上候選預(yù)測值與左候選預(yù)測值之間選擇,它們是相鄰的運動矢量??晒┨鎿Q地,解碼器在其它和/或附加預(yù)測值之間選擇。解碼器對隔行掃描P半幀的每個運動矢量,或者只對隔行掃描P半幀的某些運動矢量(例如,取決于宏塊類型)執(zhí)行技術(shù)(3350)。為了簡單起見,圖33B沒有示出可將技術(shù)(3350)與編碼和解碼器的其它方面集成的各種方法。在章節(jié)XII中詳細(xì)地描述各種組合實現(xiàn)。VII.運動矢量塊樽式在一些實施例中,宏塊可具有多個運動矢量。例如,混合MV隔行掃描P半幀的宏塊可具有一個運動矢量、四個運動矢量(宏塊的每個亮度塊一個)或者是幀內(nèi)編碼的(無運動矢量)。同樣,隔行掃描P半幀的半幀編碼宏塊可具有兩個運動矢量(每半幀一個)或者四個運動矢量(每半幀兩個),并且隔行掃描P半幀的幀編碼宏塊可具有一個運動矢量或四個運動矢量(每亮度塊一個)。如果宏塊沒有相關(guān)聯(lián)的運動矢量數(shù)據(jù)(例如差分)要用信號表示,2MV或4MV宏塊可用信號表示為“跳過”。如果這樣,則運動矢量預(yù)測值一般用作宏塊的運動矢量。或者,宏塊可具有非零的運動矢量數(shù)據(jù)要為一個運動矢量用信號表示,但不是為另一個運動矢量(它具有(0,0)運動矢量差分)。對于至少一個但非全部運動矢量具有(0,0)差分的2MV或4MV宏塊,用信號表示運動矢量數(shù)據(jù)會消耗低效率的比特數(shù)。因此,在一些實施例中,編碼器和解碼器使用一種信號表示機制,它有效地用信號表示具有多個運動矢量的宏塊的運動矢量數(shù)據(jù)存在或不存在。宏塊的運動矢量已編碼塊模式(或者簡稱“運動矢量塊模式”)在逐個運動矢量的基礎(chǔ)上指示,哪些塊、半幀、二分之一半幀等具有在比特流中用信號表示的運動矢量數(shù)據(jù),以及哪些沒有。運動矢量塊模式聯(lián)合地用信號表示宏塊的運動矢量數(shù)據(jù)的模式,它允許編碼器和解碼器利用塊之間存在的空間相關(guān)性。而且,用運動矢量塊模式用信號表示運動矢量數(shù)據(jù)的存在/不存在提供一個簡單的方法,以一種與用信號表示有關(guān)變換系數(shù)數(shù)據(jù)的存在/不存在(諸如通過CBCPY元素)分離的方式用信號表示該信息。在本章節(jié)和在章節(jié)XII的組合實現(xiàn)中描述的信號表示的特定示例用可變長度編碼的2MVBP和4MVBP句法元素用信號表示運動矢量塊模式。2MVBP和4MVBP的表選擇分別通過定長編碼的2MVBPTAB和4MVBPTAB來用信號表示??晒┨鎿Q地,編碼器和解碼器使用其它和/或附加信號來用信號表示運動矢量塊模式。A.運動矢量塊模式運動矢量塊模式指示對具有多個運動矢量的宏塊,哪些運動矢量被“編碼”和哪些沒有被“編碼”。如果運動矢量的差分運動矢量非零(即,要用信號表示的運動矢量不同于它的運動矢量預(yù)測值),則編碼該運動矢量。否則,不編碼該運動矢量。如果宏塊具有四個運動矢量,則運動矢量塊模式具有4個比特,每一個比特分別用于四個運動矢量的每一個。在運動矢量塊模式中的比特的順序遵循圖34中為隔行掃描P半幀的4MV宏塊或者隔行掃描幀的4MV幀編碼宏塊所示的塊順序。對于隔行掃描幀的4MV半幀編碼宏塊,運動矢量塊模式的比特順序是左上半幀運動矢量、右上半幀運動矢量、左下半幀運動矢量和右下半幀運動矢量。如果宏塊具有兩個運動矢量,則運動矢量塊模式有2個比特,每個比特用于兩個運動矢量的每一個。對于隔行掃描P幀的2MV半幀編碼宏塊,運動矢量塊模式的比特順序簡單地為上半幀運動矢量然后下半幀運動矢量??墒褂枚鄠€不同VLC表之一來用信號表示運動矢量塊模式元素。例如,在圖47J中示出4MVBP的四個不同代碼表,并且在圖47K中示出2MVBP的四個不同的代碼表。表選擇由在圖像層用信號表示的4MVBPTAB或2MVBPTAB指示。可供替換地,編碼器和解碼器使用其它和/或附加代碼用于用信號表示運動矢量塊模式信息和表選擇。應(yīng)用附加的規(guī)則,以確定為2參考半幀隔行掃描P半幀的宏塊編碼哪些運動矢量。“未編碼”的運動矢量具有主預(yù)測值,如在章節(jié)VI中所述?!熬幋a”的運動矢量可具有零值運動矢量差分,但用信號表示非主預(yù)測值?;蛘?,“編碼”的運動矢量可具有非零差分運動矢量并且用信號表示主或非主預(yù)測值。可供替換地,編碼器和解碼器使用運動矢量塊模式用于其它和/或附加種類的圖像、用于其它和/或附加種類的宏塊、用于其它和/或附加數(shù)量的運動矢量,和/或具有不同的比特位置。B.編碼技術(shù)諸如圖20的編碼器(2000)等編碼器使用運動矢量塊模式編碼宏塊的運動矢量數(shù)據(jù)。例如,編碼器執(zhí)行圖35A所示的技術(shù)(3500)。對于給定的具有多個運動矢量的宏塊,編碼器確定(3510)宏塊的運動矢量塊模式。例如,編碼器為隔行掃描P半幀中4MV宏塊或者為隔行掃描P幀中4MV半幀編碼或幀編碼宏塊確定四個塊模式?;蛘?,編碼器為隔行掃描P幀中2MV半幀編碼宏塊確定兩個運動矢量塊模式??晒┨鎿Q地,編碼器為其它種類的宏塊和/或其它數(shù)量的運動矢量確定運動矢量塊模式。然后編碼器用信號表示(3520)運動矢量塊模式。通常,編碼器使用諸如圖47J和47K所示的代碼表用信號表示運動矢量塊模式的VLC。可供替換地,編碼器使用另一種機制來用信號表示運動矢量塊模式。如果有要為其用信號表示運動矢量數(shù)據(jù)的至少一個運動矢量(判定3525出來的“是”路徑),則編碼器用信號表示(3530)運動矢量的運動矢量數(shù)據(jù)。例如,編碼器使用章節(jié)IX中描述的技術(shù)將運動矢量數(shù)據(jù)編碼為BLKMVDATA、T0PMVDATA或B0TMVDATA元素??晒┨鎿Q地,編碼器使用不同的信號表示技術(shù)。編碼器重復(fù)(3525,3530)運動矢量數(shù)據(jù)的編碼,直到?jīng)]有要為其用信號表示運動矢量數(shù)據(jù)的更多運動矢量(判定3525出來的“否”路徑)。編碼器可在多個代碼表之間選擇以編碼運動矢量塊模式(未在圖35A中示出)。例如,編碼器為隔行掃描P半幀或P幀選擇一個代碼表,然后使用該表來編碼圖像中宏塊的運動矢量塊模式??晒┨鎿Q地,編碼器在更頻繁、較不頻繁或非周期的基礎(chǔ)上選擇代碼表,或者編碼器完全跳過代碼表選擇(總是使用同一代碼表)?;蛘撸幋a器可從上下文信息中選擇代碼表(使得用信號表示代碼表選擇沒有必要)。代碼表可以是圖47J和47K中所示的表、其它表和/或附加表。例如,編碼器用指示所選擇的代碼表的FLC,用指示所選擇的代碼表的VLC,或者用一種不同的信號表示機制,在比特流中用信號表示所選擇的代碼表??晒┨鎿Q地,編碼器執(zhí)行另一種技術(shù)來使用運動矢量塊模式編碼宏塊的運動矢量數(shù)據(jù)。為了簡單,圖35A沒有示出可將技術(shù)(3500)與編碼和解碼的其它方面集成的各種方法。在章節(jié)XII中詳細(xì)描述各種組合實現(xiàn)。C.解碼技術(shù)諸如圖21的解碼器(2100)等解碼器接收和解碼使用運動矢量塊模式的隔行掃描P半幀或隔行掃描P幀的運動矢量數(shù)據(jù)。例如,解碼器執(zhí)行圖3B所示的技術(shù)(3550)。對于具有多個運動矢量的給定宏塊,解碼器接收和解碼(3560)宏塊的運動矢量塊模式。例如,解碼器接收和解碼4運動矢量塊模式,或者在前面章節(jié)中描述的其它運動矢量塊模式。通常,解碼器接收運動矢量塊模式的VLC并且使用圖47J和471所示的代碼表來對它進行解碼??晒┨鎿Q地,解碼器結(jié)合另一種信號表示機制接收和解碼運動矢量塊模式。如果有要為其用信號表示運動矢量數(shù)據(jù)(判定3565出來的“是”路徑)的至少一個運動矢量,則解碼器接收和解碼(3570)該運動矢量的運動矢量數(shù)據(jù)。例如,解碼器接收和解碼使用在章節(jié)IX中描述的技術(shù)編碼為BLTMVDATA、T0PMVDATA或B0TMVDATA元素的運動矢量數(shù)據(jù)。可供替換地,解碼器使用不同的解碼技術(shù)。解碼器重復(fù)(3565,3570)運動矢量數(shù)據(jù)的接收和解碼,直到?jīng)]有要為其用信號表示運動矢量數(shù)據(jù)的更多運動矢量(判定3565出來的“否”路徑)。解碼器可在多個代碼表之間選擇以解碼運動矢量塊模式(未在圖3513中示出)。例如,表選擇和表選擇信號表示選項反映出在前面章節(jié)中為編碼器描述的那些技術(shù)??晒┨鎿Q地,解碼器執(zhí)行另一種技術(shù)來使用運動矢量塊模式解碼宏塊的運動矢量數(shù)據(jù)。為了簡單起見,圖35B沒有示出可將技術(shù)(3550)與編碼和解碼的其它方面集成的各種方法。在章節(jié)XII中詳細(xì)描述各種組合實現(xiàn)。IX.隔行掃描P-半幀中的運動矢量差分在一些實施例中,當(dāng)為單個當(dāng)前隔行掃描P半幀執(zhí)行運動補償預(yù)測時,使用兩個先前編碼/解碼的半幀作為參考半幀。(例如,見章節(jié)IV,VI和VII。)在P半幀中為運動矢量用信號表示的信息指示(1)兩個半幀中的哪一個為運動矢量提供參考;以及(2)運動矢量值。運動矢量值一般用信號表示為相對于運動矢量預(yù)測值的差分。在兩個可能的參考半幀之間的選擇可用單個附加比特來為運動矢量用信號表示,但在許多情況下這種信號表示方式是低效率的。通常,兩個參考半幀對于一個給定的運動矢量不是相等可能的,并且運動矢量的選擇并不是與其它(例如相鄰)運動矢量的選擇無關(guān)的。因而,實際上,用每選擇單個比特來用信號表示參考半幀選擇通常是低效率的。因此,在一些實施例中,編碼器對運動矢量差分信息和參考半幀選擇信息進行聯(lián)合編碼。解碼器執(zhí)行聯(lián)合編碼信息的相應(yīng)解碼。A.理論與實驗結(jié)果對于2參考半幀隔行掃描P半幀,兩個參考半幀具有與P-半幀的下列空間和時間關(guān)系。在時間上最接近的參考半幀的極性與當(dāng)前P半幀的極性相反。例如,如果當(dāng)前P半幀是偶半幀(由隔行掃描幀的偶數(shù)行構(gòu)成),則在時間順序上最接近的參考半幀是奇半幀,而另一參考半幀(在時間順序上較遠(yuǎn)的)是偶半幀。編碼器和解碼器使用因果信息來預(yù)測當(dāng)前運動矢量的參考半幀選擇。例如,來自相鄰的先前編碼的運動矢量的參考半幀選擇信息用于預(yù)測用于當(dāng)前運動矢量的參考半幀。然后,一二進制值指示是否使用該預(yù)測的參考半幀。一個值指示當(dāng)前運動矢量的實際參考半幀是預(yù)測的參考半幀,而另一個值指示當(dāng)前運動矢量的實際參考半幀是另一參考半幀。在一些實現(xiàn)中,參考半幀預(yù)測是按照先前使用的參考半幀和當(dāng)前運動矢量的預(yù)期參考半幀的極性來表示的(例如,如主或非主極性,見章節(jié)VI)。在大多數(shù)情況下,通過這樣的預(yù)測,二進制值參考半幀選擇器的概率分布是一致的,并且朝向預(yù)測的參考半幀偏斜。在實驗中,預(yù)測的參考半幀用于大約70%的運動矢量,而大約30%的運動矢量使用另一參考半幀。傳輸單個比特以用信號表示具有這樣一種概率分布的參考半幀選擇信息是低效率的。更有效的方法是將參考半幀選擇信息與差分運動矢量信息一起聯(lián)合編碼。B.信號表示機制的示例提供了用于運動矢量差分信息和參考半幀選擇信息進行聯(lián)合編碼和解碼的信號表示機制的各種示例。可供替換地,編碼器和解碼器結(jié)合另一種機制來對信息進行聯(lián)合編碼和解碼。圖36中的偽代碼示出按照一般的信號表示機制對運動矢量差分信息和參考半幀選擇信息進行聯(lián)合編碼。在該偽代碼中,變量DMVX和DMVY分別是水平和垂直差分運動矢量分量。變量AX和AY是差分分量的絕對值,而變量SX和SY是差分分量的符號。水平運動矢量范圍從-RX到RX+1,而垂直運動矢量范圍從-RY到RY+1。RX和RY是二的冪,分別具有指數(shù)MX和MY。變量ESCX和ESCY(它們分別是指數(shù)為KX和KY的二的冪)指示了閾值,超過該閾值則使用轉(zhuǎn)義碼。變量R是參考半幀選擇的二進制值。當(dāng)觸發(fā)轉(zhuǎn)義條件時(AX>ESCX或AY>ESCY),編碼器發(fā)送聯(lián)合地表示轉(zhuǎn)義模式信號和R的VLC。編碼器隨后發(fā)送DMVX和DMVY,分別作為長度MX+1和MY+1的定長代碼。因而,使用VLC表中的兩個元素來用信號表示(1)合在一起使用(MX+MY+2)個比特來編碼DMVX和DMVY,以及(2)相關(guān)聯(lián)的R值。換言之,兩個元素是對應(yīng)于R=0和R=1的轉(zhuǎn)義碼。對于其它事件,變更NX和NY指示要使用多少比特來分別用信號表示AX和AY的不同值。AX在時間間隔(2NX<=AX<2NX+1)中,其中NX=0,1,2,···KX-1,而當(dāng)NX=-1時AX=0。AXY在時間間隔(2NY<=AY<2NY+1)中,其中NY=0,1,2,...KY-1,而在NY=-1時AY=0。用于編碼大小信息NX和NY以及半幀參考信息R的VLC表是具有(KX+1)*(KY+1)*2+1個元素的表,其中每個元素是一個(碼字,代碼大小)對。在表的元素中,除了兩個之外全部用于聯(lián)合地用信號表示ΝΧ、ΝΥ和R的值。這其它兩個元素是轉(zhuǎn)義碼。對于與NX和NY—起用信號表示的事件,編碼器發(fā)送VLC來指示NX、NY和R值的組合。編碼器隨后發(fā)送AX為NX個比特,發(fā)送SX為一個比特,發(fā)送AY為NY個比特,并且發(fā)送SY為一個比特。如果NX為0或-1,則AX不需要發(fā)送,并且對于NY和AY也是如此,因為AX或AY的值在這些情況下可直接從NX或NY中導(dǎo)出。在AX=0、AY=0和R=0的事件是由另一種機制用信號表示的,諸如跳過宏塊機制或運動矢量塊模式(見章節(jié)VIII)。圖36中偽代碼的VLC表不存在元素,或者在該偽代碼中不處理。相應(yīng)的解碼器執(zhí)行聯(lián)合解碼,它反映出圖36所示的編碼。例如,解碼接收比特代替發(fā)送比特,執(zhí)行可變長度解碼代替可變長度編碼等等。圖50中的偽代碼示出運動矢量差分信息和參考半幀選擇信息的解碼,它們已經(jīng)按照一個組合實現(xiàn)中的信號表示機制聯(lián)合編碼。圖59中的偽代碼示出運動矢量差分信息和參考半幀選擇信息的解碼,它們已經(jīng)按照另一個組合實現(xiàn)的信號表示機制聯(lián)合編碼。圖50和59中的偽代碼在章節(jié)XII中詳細(xì)地說明。具體地,該偽代碼示出具有垂直差分值或者具有垂直和水平差分值的大小的預(yù)測選擇器的聯(lián)合編碼與解碼。相應(yīng)的編碼器執(zhí)行聯(lián)合編碼,它反映出圖50或59中所示的解碼。例如,編碼器發(fā)送比特代替接收比特,執(zhí)行可變長度編碼代替可變長度解碼等等。C.編碼技術(shù)諸如圖20的編碼器(2000)等編碼器對參考半幀預(yù)測選擇器信息和差分運動矢量信息進行聯(lián)合編碼。例如,編碼器執(zhí)行圖37A所示的技術(shù)(3700)來對該信息進行聯(lián)合編碼。通常,編碼器在兩個參考半幀中執(zhí)行某種形式的運動估計以獲得運動矢量和參考半幀。運動矢量隨后按照技術(shù)(3700)編碼,在該點處通過對選擇器信息進行聯(lián)合編碼,例如與垂直運動矢量差分一起聯(lián)合編碼,將兩個可能的參考半幀之一與運動矢量相關(guān)聯(lián)。編碼器確定(3710)運動矢量的運動矢量預(yù)測值。例如,編碼器如章節(jié)VII中所述地確定運動矢量預(yù)測值??晒┨鎿Q地,編碼器用另一種機制確定運動矢量預(yù)測值。編碼器為運動矢量確定(3720)相對于運動矢量預(yù)測值的運動矢量差分。通常,差分是運動矢量與運動矢量預(yù)測值之間的分量級差。編碼器還確定(3730)參考半幀預(yù)測選擇器信息。例如,編碼器確定運動矢量的主和非主極性(并且因此確定運動矢量預(yù)測值的主參考半幀、主極性等,見章節(jié)IV),在這種情況下選擇器指示是否使用主極性。可供替換地,編碼器使用不同的技術(shù)來確定參考半幀預(yù)測選擇器信息。例如,編碼器使用不同類型的參考半幀預(yù)測。編碼器隨后隨運動矢量的運動矢量差分信息和參考半幀預(yù)測選擇器信息進行聯(lián)合編碼(3740)。例如,編碼器使用在前面章節(jié)中描述的機制來編碼該信息??晒┨鎿Q地,編碼器使用另一種機制。為了簡單起見,圖37A沒有示出可將技術(shù)(3700)與編碼和解碼的其它方面集成的各種方法。在章節(jié)XII中詳細(xì)描述各種組合實現(xiàn)。D.解碼技術(shù)諸如圖21的解碼器(2100)等解碼聯(lián)合編碼的參考半幀預(yù)測選擇器信息和差分運動矢量信息。例如,解碼器執(zhí)行圖37B中所示的技術(shù)(3750)來解碼這樣的聯(lián)合編碼的信息。解碼器解碼(3760)對運動矢量進行聯(lián)合編碼的運動矢量差分信息和參考半幀預(yù)測選擇器信息。例如,解碼器解碼使用在章節(jié)IX.B中描述的機制之一用信號表示的信息。可供替換地,解碼器解碼使用另一種機制用信號表示的信息。解碼器隨后確定(3770)運動矢量的運動矢量預(yù)測值。例如,解碼器確定運動矢量的主和非主極性(見章節(jié)VI),應(yīng)用選擇器信息,并且如在章節(jié)VII中所述確定所選擇極性的運動矢量預(yù)測值??晒┨鎿Q地,解碼器使用不同的機制來確定運動矢量預(yù)測值。例如,解碼器使用不同類型的參考半幀預(yù)測。最后,解碼器通過將運動矢量差分與運動矢量預(yù)測值組合來重構(gòu)(3750)運動矢量。為了簡單起見,圖37B沒有示出可將技術(shù)(3750)與編碼和解碼的其它方面集成的各種方法。在章節(jié)XII中詳細(xì)描述各種組合實現(xiàn)。X.行掃描P-半巾貞中導(dǎo)出代鹿運云力矢量在一些實施例中,編碼器和解碼器從為隔行掃描P半幀的宏塊用信號表示的亮度運動矢量中導(dǎo)出色度運動矢量。色度運動矢量沒有在比特流中明確地用信號表示。相反,它們是從宏塊的亮度運動矢量確定的。編碼器和解碼器可使用適用于逐行掃描P幀或隔行掃描P幀的色度運動矢量導(dǎo)出,但這一般不能為隔行掃描P半幀提供足夠的性能。因此,編碼器和解碼器使用適合于隔行掃描P半幀的參考半幀組織的色度運動矢量導(dǎo)出。色度運動矢量導(dǎo)出有兩個階段(1)選擇,和(2)二次采樣和色度舍入。這些階段中,選擇階段特別適合于隔行掃描P半幀中的色度運動矢量導(dǎo)出。選擇階段的輸出是初始的色度運動矢量,它取決于宏塊的亮度運動矢量的數(shù)量(并且有可能極性)。如果沒有亮度運動用于宏塊(幀內(nèi)編碼宏塊),則沒有色度運動矢量導(dǎo)出。如果單個亮度運動矢量用于宏塊(1MV宏塊),則選擇單個亮度運動矢量用于第二和第三階段。如果四個亮度運動矢量用于宏塊(4MV宏塊),則使用支持四個亮度運動矢量中最共同極性的邏輯來選擇初始色度運動矢量。A.色度二次采樣和運動矢量表示隔行掃描P半幀的宏塊的色度運動矢量導(dǎo)出取決于用于宏塊的色度二次采樣類型,并且還取決于運動矢量表示。一些共同的色度二次采樣格式是4:2:0和4:1:1。圖38示出YUV4:2:0宏塊的采樣網(wǎng)格,按照它相對于亮度樣本以規(guī)則的4:1模式對色度樣本進行二次采樣。圖38示出16x16宏塊的亮度與色度樣本之間的空間關(guān)系,其中有四個8x8亮度塊,一個8x8色度“U”塊,和一個8x8色度“V”塊(諸如在圖22中所示)。總的來講,色度網(wǎng)格的分辨率在χ和y兩個方向都是亮度網(wǎng)格分辨率的一半,這是在色度運動矢量導(dǎo)出中下采樣的基礎(chǔ)。為了將亮度網(wǎng)格的運動矢量距離比例縮放到色度網(wǎng)格的相應(yīng)距離,運動矢量值除以系數(shù)2。在此描述的選擇階段技術(shù)可應(yīng)用于YUV4:2:0宏塊或者應(yīng)用于具有另一種色度二次采樣格式的宏塊。隔行掃描P半幀的亮度和色度運動矢量的表示部分地取決于運動矢量和運動補償?shù)木?。典型的運動矢量精度是1/2象素和1/4象素,它們分別與運動補償中的1/2象素和1/4象素內(nèi)插一起工作。在一些實施例中,隔行掃描P半幀的運動矢量可參考上或下參考半幀,它們或者是相同或者是相反極性。由運動矢量值指定的垂直位移取決于當(dāng)前P半幀和參考半幀的極性。運動矢量單位一般用半幀圖像單位來表示。例如,如果運動矢量的垂直分量是+6(以1/4象素為單位),這通常指示1/2半幀圖像行的垂直位移(在為當(dāng)前P半幀或參考半幀的不同極性調(diào)整之前,如果必要的話)。對于各種運動矢量分量值和半幀極性組合,圖39示出按照第一種約定的當(dāng)前和參考半幀中相應(yīng)的空間位置。半幀極性的每種組合具有一對列,一個(左列)用于當(dāng)前半幀中行的象素(編號的行N=0,1,2,等等),而另一個(右列)用于參考半幀中行的象素(也是編號的行N=0,1,2,等等)。圓圈表示在整數(shù)象素位置處的樣本,而X表示在子象素位置處的內(nèi)插樣本。在這種約定下,為0的垂直運動矢量分量值參考參考半幀中的整數(shù)象素位置(即,在實際行上的樣本)。如果當(dāng)前半幀和參考半幀具有相同極性,則來自當(dāng)前半幀的行N的為0的垂直分量值參考參考半幀中的行N,它在一個幀的同一實際偏移處。如果當(dāng)前半幀和參考半幀具有相反極性,則來自當(dāng)前半幀中行N的為0的垂直分量值仍參考參考幀中的行N,但參考位置在幀的1/2象素實際偏移處,這是由于奇數(shù)與偶數(shù)行的交替。圖48示出按照第二種約定的當(dāng)前和參考半幀的相應(yīng)空間位置。在這種約定下,為0的垂直運動矢量分量值參考在隔行掃描幀中同一實際偏移處的樣本。參考的樣本在相同極性參考半幀中的整數(shù)象素位置處,或者在相反參考半幀中的1/2象素位置處??晒┨鎿Q地,隔行掃描P半幀的運動矢量使用另一種表示和/或遵循用于處理極性的垂直位移的另一種約定。B.選擇階段示例在一些實施例中,色度運動矢量導(dǎo)出的選擇階段適合于在具有一個或兩個參考半幀的隔行掃描P半幀的運動矢量中使用的參考半幀模式。例如,宏塊的選擇階段的結(jié)果取決于宏塊的亮度運動矢量的數(shù)量和極性。最簡單的情況是當(dāng)整個宏塊是幀內(nèi)編碼的。在這種情況下,沒有色度運動矢量,并且跳過色度運動矢量導(dǎo)出的第二和第三階段。宏塊的色度塊是幀內(nèi)編碼/解碼的,沒有運動補償。下一個最簡單的情況是當(dāng)宏塊具有單個亮度運動矢量用于所有四個亮度塊。無論當(dāng)前P半幀具有一個參考半幀還是兩個參考半幀,本質(zhì)上沒有選擇操作,因為簡單地向前傳送單個亮度運動矢量以進行舍入和二次采樣。當(dāng)宏塊具有多達四個亮度運動矢量時,選擇階段更復(fù)雜??偟膩碚f,選擇階段支持宏塊的亮度運動矢量中的主極性。如果P半幀只有一個參考半幀,則極性與宏塊的所有亮度運動矢量的相同。然而如果P半幀具有兩個參考半幀,則宏塊的不同亮度運動矢量可指向不同的參考半幀。例如,如果當(dāng)前P半幀的極性是奇,則宏塊可具有兩個相反極性的亮度運動矢量(參考偶極性參考半幀)和兩個相同極性的亮度運動矢量(參考奇極性參考半幀)。編碼器或解碼器確定宏塊的亮度運動矢量的主極性,并且根據(jù)主極性的亮度運動矢量確定初始色度運動矢量。在一些實施例中,4MV宏塊具有零至四個運動矢量。這樣一個4MV宏塊的亮度塊是幀內(nèi)編碼的,或者具有相關(guān)聯(lián)的相同極性亮度運動矢量,或者具有相關(guān)聯(lián)的相反極性亮度運動矢量。在其它實現(xiàn)中,4MV宏塊總是具有四個亮度運動矢量,即使沒有用信號表示它們中的一些(例如因為它們具有(0,0)差分)。這樣一個4MV宏塊的亮度塊具有相反極性運動矢量或者具有相同極性運動矢量。選擇階段邏輯對于這些不同實現(xiàn)略有不同。1.具有0至4個亮度運動矢量的4MV宏塊圖40中的偽代碼示出選擇階段邏輯的一個示例,它應(yīng)用于具有0和4個亮度運動矢量的4MV宏塊。亮度運動矢量中,如果參考相同極性參考半幀的亮度運動矢量數(shù)量大于參考相反極性參考半幀的數(shù)量,則編碼器/解碼器從參考相同極性參考半幀的亮度運動矢量導(dǎo)出初始色度運動矢量。否則編碼器/解碼器從參考相反極性參考半幀的亮度運動矢量導(dǎo)出初始色度運動矢量。如果四個亮度運動矢量具有主極性(例如全部奇參考半幀或者全部偶參考半幀),編碼器/解碼器計算四個亮度運動矢量的中值。如果只有三個亮度運動矢量具有主極性(例如,因為一個亮度塊是幀內(nèi)編碼的或者具有非主極性運動矢量),則編碼器/解碼器計算三個亮度運動矢量的中值。如果兩個亮度運動矢量具有主極性,則編碼器/解碼器計算兩個亮度運動矢量的平均值。(在相同和相反極性計數(shù)平分的情況下,支持(與當(dāng)前P半幀)相同的極性。)最后,如果只一個主極性的亮度運動矢量(例如,因為三個亮度塊是幀內(nèi)編碼的),取這個亮度運動矢量作為選擇階段的輸出。如果所有亮度塊是幀內(nèi)編碼的,則宏塊是幀內(nèi)編碼的,并且不應(yīng)用圖40中的偽代碼。2.具有4個亮度運動矢量的4MV宏塊圖55A和55B中的偽代碼示出選擇階段邏輯的另一個示例,它應(yīng)用于總是有4個亮度運動矢量的4MV宏塊(例如,因為不允許幀內(nèi)編碼的亮度塊。)圖55A為1參考半幀隔行掃描P半幀中這樣的4MV宏塊處理色度運動矢量導(dǎo)出,并且圖55B為2參考半幀隔行掃描P半幀中這樣的4MV宏塊處理色度運動矢量導(dǎo)出。參考圖55B,編碼器/解碼器確定在4MV宏塊的四個亮度運動矢量中哪個極性占優(yōu)勢(例如奇或偶)。如果所有四個亮度運動矢量都來自相同的半幀(例如,全部奇或全部偶),則確定四個亮度運動矢量的中值。如果四個中的三個來自相同的半幀,則確定三個亮度運動矢量的中值。最后,如果每種極性有兩個亮度運動矢量,則支持具有與當(dāng)前P半幀相同極性的兩個亮度運動矢量,并且確定它們的平均值。(如果4MV宏塊總是有四個亮度運動矢量,只一個亮度運動矢量和沒有亮度運動矢量具有主極性的情況是不可能的。)可供替換地,編碼器或解碼器在從隔行掃描P半幀的宏塊的多個亮度運動矢量中導(dǎo)出色度運動矢量時使用不同的選擇邏輯?;蛘?,編碼器或解碼器在另一類型的宏塊的色度運動矢量導(dǎo)出中考慮亮度運動矢量極性(例如,具有不同數(shù)量的亮度運動矢量和/或在不同于隔行掃描P半幀的圖像類型中的宏塊)。C.二次采樣/舍入階段對于色度運動矢量導(dǎo)出的第二階段,編碼器和解碼器一般應(yīng)用舍入邏輯從初始色度運動矢量中消除某些象素位置(例如,要舍入到3/4象素位置,因此這樣的色度運動矢量在下采樣之后不指示1/4象素位移)??烧{(diào)整舍入的使用以在預(yù)測質(zhì)量與內(nèi)插復(fù)雜性之間折衷。在更主動的舍入的情況下,例如,編碼器或解碼器消除得到的色度運動矢量中的所有1/4象素色度位移,因此只允許整數(shù)象素和1/2象素位移,這簡化了在色度塊的運動補償中的內(nèi)插。在第二階段,編碼器和解碼器還對初始色度運動矢量進行下采樣,來以適合于色度分辨率的比例獲得色度運動矢量。例如,如果色度分辨率在水平和垂直方向上都是亮度分辨率的1/2,則水平和垂直運動矢量分量按照因子2下采樣。可供替換地,編碼器或解碼器應(yīng)用其它和/或附加機制用于色度運動矢量的舍入、二次采樣、回拉(pullback)或其它調(diào)整。D.導(dǎo)出技術(shù)諸如圖20的編碼器(2000)等編碼器導(dǎo)出隔行掃描P半幀的宏塊的色度運動矢量?;蛘咧T如圖21的解碼器(2100)等解碼器導(dǎo)出隔行掃描P半幀的宏塊的色度運動矢量。例如,編碼器/解碼器執(zhí)行圖41所示的技術(shù)(4100)來導(dǎo)出色度運動矢量。編碼器/解碼器確定(4110)當(dāng)前宏塊是否為幀內(nèi)編碼宏塊。如果是,則編碼器/解碼器跳過運動矢量導(dǎo)出,改為對該宏塊使用運動補償、幀內(nèi)編碼/解碼。如果宏塊不是幀內(nèi)宏塊,則編碼器/解碼器確定(4120)宏塊是否為IMV宏塊。如果是,則編碼器/解碼器使用宏塊的單個亮度運動矢量作為傳遞給技術(shù)(4100)后面的調(diào)整階段(4150)的初始色度運動矢量。如果宏塊不是IMV宏塊,則編碼器/解碼器確定(4130)宏塊的亮度運動矢量中的主極性。例如,編碼器/解碼器確定宏塊的一個或多個亮度運動矢量中的占優(yōu)勢極性,如圖40或55A和55B所述??晒┨鎿Q地,編碼器/解碼器應(yīng)用其它和/或附加判定邏輯來確定占優(yōu)勢極性。如果包括宏塊的P半幀只有一個參考半幀,則亮度運動矢量中的主極性簡單地為該參考半幀的極性。編碼器/解碼器隨后根據(jù)具有主極性的宏塊的那些亮度運動矢量確定(4140)初始色度運動矢量。例如,編碼器/解碼器確定初始色度運動矢量,如圖40或55A和55B所示??晒┨鎿Q地,編碼器/解碼器使用其它和/或附加邏輯確定初始色度運動矢量為主極性運動矢量的中值、平均值或其它組合。最后,編碼器/解碼器調(diào)整(4150)由前面階段之一產(chǎn)生的初始色度運動矢量。例如,編碼器/解碼器執(zhí)行如上所述的舍入和二次采樣??晒┨鎿Q地,編碼器/解碼器執(zhí)行其它和/或附加調(diào)整??晒┨鎿Q地,編碼器/解碼器以不同的順序檢查各種宏塊類型和極性條件?;蛘?,編碼器/解碼器為隔行掃描P半幀或其它類型圖像的其它和/或附加類型的宏塊導(dǎo)出色度運動矢量。為了簡單起見,圖41沒有示出可將技術(shù)(4100)與編碼和解碼器的其它方面集成的各種方法。在章節(jié)XII中詳細(xì)描述了各種組合實現(xiàn)。XI.隔行掃描P半幀的強度補償褪色、變形和混色在視頻內(nèi)容的創(chuàng)建和編輯中廣泛使用。這些技術(shù)平滑視頻在經(jīng)過內(nèi)容過渡時的視覺演變。另外,某些視頻序列包括因照明而改變的自然褪色。對于受到褪色、變形、混色等影響的預(yù)測圖像,在亮度方面的全局改變與參考圖像相比減少了常規(guī)的運動估計和補償?shù)男Ч?。結(jié)果,運動補償?shù)念A(yù)測很糟糕,并且預(yù)測的圖像需要更多的比特來表示它。這個問題對于具有一個參考半幀或者具有多個參考半幀的隔行掃描P半幀更復(fù)雜。在某些實施例中,編碼器和解碼器對隔行掃描P半幀的參考半幀執(zhí)行褪色補償(也稱為強度補償)。編碼器執(zhí)行相應(yīng)的褪色估計。褪色估計和補償,以及用于褪色補償參數(shù)的信號表示機制適合于隔行掃描P半幀的參考半幀組織。例如,對于具有一個參考半幀或具有兩個參考半幀的隔行掃描P半幀,分別為每個參考半幀作出執(zhí)行褪色補償?shù)呐卸?。使用褪色補償?shù)拿總€參考半幀可具有它自己的褪色補償參數(shù)。用于褪色補償判定的信號表示機制和參數(shù)有效地表示該信息。結(jié)果,隔行掃描視頻的質(zhì)量改進和/或減少了比特率。A.對于參考半幀的褪色估計和補償褪色補償涉及對一個或多個參考半幀執(zhí)行改變以補償褪色、混色、變形等等。通常,褪色補償包括任何用于褪色(即向黑色褪色或從黑色褪色)、混色、變形或其它影響象素值強度的自然或綜合燈光效果的補償。例如,全局亮度改變可表示為在場景的明亮度和/或?qū)Ρ榷确矫娴母淖?。通常改變是線性的,但也可以被定義為包括在同一框架內(nèi)的任何平滑的、非線性的映射。當(dāng)前P半幀隨后由根據(jù)經(jīng)調(diào)整的一個或多個參考半幀的運動估計/補償來預(yù)測。對于YUV色彩空間中的參考半幀,調(diào)整通過調(diào)整亮度和色度通道中的樣本而發(fā)生。調(diào)整可包括比例縮放與平移亮度值和比例縮放與平移色度值??晒┨鎿Q地,色彩空間是不同的(例如YIQ或RGB),和/或補償使用其它調(diào)整技術(shù)。編碼器/解碼器在逐個半幀的基礎(chǔ)上執(zhí)行褪色估計/補償??晒┨鎿Q地,編碼器/解碼器在某種其它基礎(chǔ)上執(zhí)行褪色估計/補償。因此,褪色補償調(diào)整影響定義的區(qū)域,它可以是半幀或者半幀的一部分(例如,單獨的塊或宏塊,或者一組宏塊),并且褪色補償參數(shù)用于該定義的區(qū)域。或者,褪色補償參數(shù)用于整個半幀,但可選擇地應(yīng)用以及在半幀內(nèi)區(qū)域需要的時候應(yīng)用。B.隔行掃描P半幀的參考半幀組織在一些實施例中,隔行掃描P半幀具有一個或兩個參考半幀用于運動補償。(例如,見章節(jié)IV。)圖24A-24F示出可用于在隔行掃描P半幀的運動補償預(yù)測中使用的參考半幀的位置。編碼器和解碼器可對P半幀的運動補償預(yù)測使用在其它和/或附加位置或定時的參考半幀。例如,允許在與當(dāng)前P半幀相同幀內(nèi)的參考半幀?;蛘?,幀的上半幀或下半幀可以首先被編碼/解碼。對于具有一個或兩個參考半幀用于運動補償?shù)母粜袙呙鑀半幀,P半幀只有一個參考半幀?;蛘?,P半幀可具有兩個參考半幀,并且在兩個參考半幀之間切換用于不同的運動矢量或者在某種其它基礎(chǔ)上切換??晒┨鎿Q地,P半幀具有更多的參考半幀和/或在不同位置的參考半幀。C.編碼器和解碼器圖42示出一個示例性編碼器框架(4200),用于為具有一個或兩個參考半幀的隔行掃描P半幀執(zhí)行強度估計和補償。在這個框架(4200)中,編碼器有條件地使用通過褪色估計獲得的參數(shù)來重新映射參考半幀。當(dāng)編碼器檢測到在半幀上具有良好程度的確定性與一致性的褪色時,編碼器執(zhí)行重新映射或者褪色補償。否則,褪色補償是完全相同的操作(即輸出=輸入)。參考圖42,編碼器使用褪色檢測模塊(4230)將當(dāng)前P半幀(4210)與第一參考半幀(4220)比較,以確定半幀(4220,4210)之間是否發(fā)生褪色。編碼器使用褪色檢測模塊(4230)獨立地將當(dāng)前P半幀(4210)與第二參考半幀(4225)比較以確定那些半幀(4225,4210)之間是否發(fā)生褪色。編碼器基于褪色檢測的結(jié)果生成一個或多個“褪色開”或“褪色關(guān)”信號(4240)。信號指示是否要使用褪色補償,并且如果是,是僅在參考半幀(4220,4225)的第一、僅在第二還是在兩個上使用褪色補償。如果要對第一參考半幀(4220)進行褪色補償,則褪色估計模塊(4250)估計第一參考半幀(4220)的褪色參數(shù)(4260)。(褪色估計細(xì)節(jié)在下面討論。)同樣,如果要對第二參考半幀(4225)進行褪色補償,則褪色估計模塊(4250)獨立地估計第二參考半幀的褪色參數(shù)。褪色補償模塊(4270,4275)使用褪色參數(shù)(4260)來重新映射一個或兩個參考半幀(4220)。盡管圖42示出兩個褪色補償模塊(4270,4275)(每參考半幀一個),但可供替換地,編碼器框架(4200)包括單個褪色補償模塊,它在任一參考半幀(4220,4225)上操作。其它編碼器模塊(4280)(例如,運動估計和補償,頻率變換器和量化模塊)壓縮當(dāng)前P半幀(4210)。編碼器輸出運動矢量、殘差和其它信息(4290),它們定義編碼的P半幀(4210)。除了具有移位運動矢量的運動估計/補償之外,框架(4200)可在多種多樣的基于運動補償?shù)囊曨l編解碼器中應(yīng)用。圖43示出執(zhí)行強度補償?shù)氖纠越獯a器框架(4300)。解碼器產(chǎn)生解碼的P半幀(4310)。要解碼經(jīng)編碼的褪色補償P半幀,解碼器使用褪色補償模塊(4370,4375)在一個或兩個先前解碼的參考半幀(4320,4325)上執(zhí)行褪色補償。可供替換地,解碼器框架(4300)包括單個褪色補償模塊,它在任一參考半幀(4320,4325)上操作。如果褪色開/關(guān)信號(4340)指示為第一參考半幀(4320)和P半幀(4310)使用褪色補償,則解碼器在第一參考半幀(4320)上執(zhí)行褪色補償。同樣,如果褪色開/關(guān)信號(4340)指示要為第二參考半幀(4325)和P半幀(4310)使用褪色補償,則解碼器在第二參考半幀(4325)上執(zhí)行褪色補償。解碼器使用在第一和第二參考半幀(4320,4325)的褪色估計期間獲得的相應(yīng)褪色參數(shù)集來執(zhí)行褪色補償(如在編碼器中所做的)。如果褪色補償是關(guān),則褪色補償是完全相同的操作(即輸出=輸入)。其它解碼器模塊(4360)(例如,運動補償、反頻率變換器和反量化模塊)使用由編碼器提供的運動矢量、殘差和其它信息(4390)來解壓縮經(jīng)編碼的P半幀(4310)。D.參數(shù)化和補償在P-半幀與第一參考半幀之間和/或在P-半幀與第二參考半幀之間,參數(shù)表示褪色、混色、變形或其它改變。隨后在褪色補償中應(yīng)用這些參數(shù)。在視頻編輯中,合成褪色有時是通過應(yīng)用簡單的象素級線性變換于亮度和色度通道來實現(xiàn)的。同樣,交叉褪色有時作為兩個視頻序列的線性和來實現(xiàn),其中分量隨著時間過去而改變。因此,在一些實施例中,褪色或其它強度補償調(diào)整是作為象素級線性變換來參數(shù)化的,而交叉褪色是作為線性和來參數(shù)化的。假定I(η)是P半幀η,而I(n-l)是一個參考半幀。在運動小的地方,通過下列方程中的一階關(guān)系來模擬簡單的褪色。由于視頻序列中可能的運動,在該方程中的關(guān)系是近似的。I(n)^Cll(n-l)+Bi,其中褪色參數(shù)Bl和Cl分別對應(yīng)于參考半幀的明亮度與對比度變化。(參數(shù)B2和C2分別對應(yīng)于其它參考半幀的明亮度和對比度變化。)當(dāng)非線性褪色發(fā)生時,一階分量一般是大部分變化的主要原因。從圖象序列U(n)到圖象序列V(n)的交叉褪色可以由下列方程中的關(guān)系來模擬。再一次,由于序列中可能的運動,在該方程中的關(guān)系是近似的。I{n)^anV+an)U^I{n-\)+a(V-U)其中η0表示交叉褪色的開始,而η1/α表示交叉褪色的結(jié)束。對于跨若干半幀的交叉褪色,α小。在交叉褪色的開始處,第η個半幀接近第η-1個半幀的衰減(對比度<1)版本。到結(jié)束時,第η個半幀是第η-1個半幀的放大(對比度>1)版本。編碼器通過重新映射參考半幀來完成強度補償。編碼器在逐個象素的基礎(chǔ)上或者在某種其它基礎(chǔ)上重新映射參考半幀。原始的未重新映射的參考半幀實際上被丟棄(盡管在某些實現(xiàn)中,未重新映射的參考半幀仍可用于運動補償)。下面的線性規(guī)則按照兩個參數(shù)Bl和Cl將參考半幀R的亮度值重新映射到經(jīng)重新映射的參考半幀及參考半幀的亮度值是按對比度值比例縮放(或“加權(quán)”)的,并且按照明亮度值平移(即通過加一個偏移)。對于色度,重新映射遵循以下規(guī)則其中μ是色度值的平均值。在一個實施例中,假定128是色度值的無符號八比特的平均值表示。這個用于色度重新映射的規(guī)則不使用明亮度分量。在一些實施例中,兩個參考的線性重新映射擴展到較高階項。例如,將R的亮度值重新映射到及的二次方程是其它實施例使用其它重新映射規(guī)則。在這樣的重新映射規(guī)則的一個類別中,對于非線性褪色,用非線性映射代替線性映射。褪色補償可在運動補償之前應(yīng)用于參考半幀。或者,可在運動補償期間需要的時候應(yīng)用于參考半幀,例如,僅應(yīng)用于運動矢量實際參考的參考半幀的那些區(qū)域。E.參數(shù)的估計估計是在編碼過程中的計算補償參數(shù)的過程。諸如圖42的框架(4200)中的編碼器等編碼器在編碼期間計算明亮度(Bi,B2)和對比度(Cl,C2)??晒┨鎿Q地,這樣一個編碼器計算其它補償參數(shù)。為加快估計,編碼器獨立地為每個殘留誤差考慮和估計參數(shù)。而且,編碼器只分析亮度通道??晒┨鎿Q地,當(dāng)更多的計算資源可用時,編碼器在分析中包括色度。例如,編碼器求解第一參考半幀的亮度和色度重新映射方程中的Cl(或C2),不只是亮度,以使Cl(或C2)更健壯。在褪色估計期間忽略場景中的運動。這基于以下觀察結(jié)果(a)褪色和交叉褪色一般在靜止或低運動場景中發(fā)生,以及(b)在高運動場景中的強度補償?shù)男в梅浅5汀?晒┨鎿Q地,編碼器聯(lián)合地求解褪色補償參數(shù)和運動信息。運動信息隨后用于在該技術(shù)的后面階段或在某個其它時間進一步提高褪色補償參數(shù)的準(zhǔn)確性。使用運動信息的一種方法是從褪色估計計算中省略檢測到移動的參考幀的那些部分。[油形…)—幻或灼的絕對誤差和用作確定褪色的存在和參數(shù)的度量??晒┨鎿Q地,編碼器使用其它或附加度量,諸如相同誤差項上的均方誤差或平均均方誤差和,或者編碼器使用不同的誤差項。編碼器可在滿足退出條件,諸如下面描述的條件時結(jié)束估計。對于另一個退出條件,編碼器檢查對比度參數(shù)Cl(或C2)在開始時或者在估計的中間階段是否接近1.0(在一個實現(xiàn)中,.99<C<1.02),并且如果是,則結(jié)束該技術(shù)。編碼器通過下采樣當(dāng)前半幀和所選擇的參考半幀(第一或第二)來開始估計。在一個實現(xiàn)中,編碼器在水平和垂直方向按照因子4進行下采樣??晒┨鎿Q地,編碼器按照另一個因子進行下取樣,或者根本就不進行下采樣。編碼器隨后計算Σabs(Id(n)-Rd)在當(dāng)前和參考半幀的較低分辨率版本Id(n)和Rd上的絕對誤差和。絕對誤差和測量下采樣的當(dāng)前半幀與下采樣的參考半幀之間在值方面的差異。如果絕對誤差和比某個閾值(例如預(yù)定的差異測量)小,則編碼器推定沒有褪色發(fā)生過并且不使用褪色補償。否則,編碼器估計明亮度B1(或B2)和對比度C1(或C2)參數(shù)。第一截除估計(cutestimates)是通過按照不同參數(shù)值的Rd模擬Id(n)而獲得的。例如,明亮度和對比度參數(shù)是通過在整個下采樣的半幀上的線性回歸獲得的?;蛘?,編碼器使用其它形式的統(tǒng)計分析,諸如總最小二乘方、最小平方中值等,用于更健壯的分析。例如,編碼器最小化誤差項Id(n)-Rd的MSE或SSE。在有些環(huán)境下,MSE和SSE不是健壯的,因此編碼器還測試誤差項的絕對誤差和。編碼器丟棄特定點的高誤差值(這可能是由于運動而不是褪色)。量化和反量化第一截除參數(shù)以保證它們位于許可范圍內(nèi)并且測試順應(yīng)性。在一些實施例中,對于典型的八比特深度成象,這些參數(shù)各自量化為6比特。B1(或B2)取從-32到31的整數(shù)值(表示為有符號的六比特整數(shù))。C1(或C2)從0.5到1.484375變化,以均勻的步長0.015625(1/64),對應(yīng)于C1(或C2)的0至63量化值。量化是通過舍入B1(或B2)和C1(或C2)到最接收的有效反量化值并且選取合適的二進制索引來執(zhí)行的。編碼器計算原始的有界的絕對誤差和(SOrgBnd)和重新映射的有界的絕對誤差和(SRmpBnd)。在一些實施例中,編碼器使用適合度分析來計算這些和。對于原始分辨率的隨機或偽隨機象素集,編碼器計算重新映射的有界的絕對誤差和Ebabs(I(n)-CfR-Bf),其中babs(x)=min(abs(x),M)用于某個界限M,諸如正在編碼的半幀的量化參數(shù)的倍數(shù)。界限M在量化參數(shù)粗略時較高,而在量化參數(shù)精細(xì)時較低。編碼器還累計原始的有界的絕對誤差和EbabS(I(n)-R)。如果計算資源可用,則編碼器可計算整個半幀上的有界的誤差和?;谠己椭匦掠成涞挠薪绲慕^對誤差和的相對值,編碼器確定是否使用褪色補償。例如,在一些實施例中,編碼器不執(zhí)行褪色補償,除非重新映射的有界的絕對誤差和小于或等于原始的有界的絕對誤差和的某個閾值百分比o。在一個實現(xiàn)中,o=.95。如果使用褪色補償,則編碼器重新計算褪色參數(shù),這次基于I(n)和R之間的線性回歸但在全分辨率上。為節(jié)省計算時間,編碼器可以執(zhí)行在半幀的隨機或偽隨機采樣上的重復(fù)的線性回歸。再一次,可供替換地,編碼器可以使用其它形式的統(tǒng)計分析(例如,總最小二乘方、最小平方中值等)用于更健壯的分析。在一些實現(xiàn)中,編碼器允許一種特殊情況,其中C1(或C2)的重構(gòu)值是-1。該特殊情況是由等于0的C1(或2)的句法元素來用信號表示的。在這個“倒置”模式中,在按B1(或B2)平移之間先倒置參考半幀,并且B1(或B2)的范圍是以均勻步長2的193到319。可供替換地,部分或全部褪色補償參數(shù)使用另一種表示,或者使用其它和/或附加參數(shù)。F.信號表示在高層上,用信號表示的褪色補償信息包括⑴補償開/關(guān)信息和⑵補償參數(shù)。開/關(guān)信息可進一步包括(a)整體允許還是不允許褪色補償(例如,對于整個序列);(b)如果允許褪色補償,褪色補償是否用于一個特定的P半幀;以及(c)如果褪色補償用于一個特定的P半幀,則應(yīng)該由褪色補償調(diào)整哪些參考半幀。當(dāng)褪色補償用于參考半幀時,要應(yīng)用的褪色補償參數(shù)如下。1.整體開/關(guān)信號表示在序列級上,一個比特指示是否對序列允許褪色補償。如果允許褪色補償,則后面的元素指示何時和如何執(zhí)行它??晒┨鎿Q地,在某個其它句法級上允許/禁止褪色補償。或者,總是允許褪色補償和跳過整體開/關(guān)信號表示。2.P半幀開/關(guān)信號表示如果允許褪色補償,則一個或多個附加信號指示何時使用褪色補償。在典型的隔行掃描視頻序列的半幀中,強度補償?shù)陌l(fā)生是很少的。有可能通過每半幀加一個比特來用信號表示P半幀的褪色補償?shù)氖褂?例如在半幀級上用信號表示的一個比特)。然而,更經(jīng)濟的是與其它信息一起聯(lián)合地用信號表示褪色補償?shù)氖褂?。一個選項是與運動矢量模式(例如,運動矢量的數(shù)量和配置、子象素內(nèi)插方案等)一起聯(lián)合地用信號表示P半幀的褪色補償?shù)氖褂?。例如,VLC聯(lián)合地指示最不常用的運動矢量模式和P半幀的褪色補償?shù)募せ?。對于其它?xì)節(jié),見美國專利申請公開號2003-0206593-A1,標(biāo)題為“FadingEstimation/Compensation(褪色估計/補償)”?;蛘?,P半幀的褪色補償?shù)氖褂?不使用與運動矢量模式信息一起用信號表示,如在下面的若干組合實現(xiàn)中描述的。見章節(jié)XII,MVM0DE和MVM0DE2元素??晒┨鎿Q地,使用用于用信號表示P半幀褪色補償開/關(guān)信息的另一種機制。3.參考半幀開/關(guān)信號表示如果褪色補償用于P半幀,則可以有若干選項讓參考半幀用于經(jīng)受褪色補償。當(dāng)P半幀使用褪色補償并且具有兩個參考半幀時,有三種情況。執(zhí)行褪色補償用于(1)兩個參考半幀;(2)僅第一參考半幀(例如,時間上第二最近的參考半幀);或者(3)僅第二參考半幀(例如,時間上最近的參考半幀)。褪色補償參考半幀模式信息可對每P半幀用信號表示為一個FLC或VLC。圖44中的表顯示一組用于元素INTC0MPFIELD的模式信息的VLC,這在P半幀頭部中用信號表示??晒┨鎿Q地,圖47G中的表或其它表在半幀級或另一句法級上使用。在一些實現(xiàn)中,褪色補償?shù)膮⒖及霂J绞菫槿縋半幀用信號表示的??晒┨鎿Q地,對于使用褪色補償?shù)?參考半幀P半幀,跳過參考半幀模式的信號表示,因為褪色補償自動地應(yīng)用于單個參考半幀。4.褪色補償參數(shù)信號表示如果褪色補償用于參考半幀,則用信號表示參考半幀的褪色補償參數(shù)。例如,第一組褪色補償參數(shù)存在于P半幀的頭部中。如果褪色補償只用于一個參考半幀,則第一組參數(shù)用于那個參考半幀。然而如果褪色補償用于P半幀的兩個參考半幀,則第一組參數(shù)用于一個參考半幀,而第二組褪色補償參數(shù)存在于其它參考半幀的褪色補償?shù)念^部中。例如,每組褪色補償參數(shù)包括對比度參數(shù)和明亮度參數(shù)。在一個組合實現(xiàn)中,第一組參數(shù)包括LUMSCALE1和LUMSHIFT1元素,當(dāng)為P半幀用信號表示強度補償時,它們存在于P半幀頭部中。如果INTC0MPFIELD指示兩個參考半幀或者只有第二最近的參考半幀使用褪色補償,則LUMSCALE1和LUMSHIFT1應(yīng)用于第二最近參考半幀。否則(INTC0MPFIELD指示只有最近的參考半幀使用褪色補償),LUMSCALE1和LUMSHIFT1應(yīng)用于最近參考半幀。當(dāng)為P半幀用信號表示強度補償并且INTC0MPFIELD指示兩個參考半幀使用褪色補償時,包括LUMSCALE2和LUMSHIFT2元素的第二組參數(shù)存在于P半幀頭部。LUMSCALE2和LUMSHIFT2應(yīng)用于較近的參考半幀。LUMSHIFT1、LUMSCALE1、LUMSHIFT2和LUMSCALE2對應(yīng)于參數(shù)Bl、CI、B2和C2。LUMSCALE1,LUMSCALE2,LUMSHIFT1和LUMSHIFT2各自使用一個6比特FLC來用信號表示??晒┨鎿Q地,這些參數(shù)是使用VLC用信號表示的。圖56示出用于基于LUMSHIFT1和LUMSCALE1在第一參考半幀上執(zhí)行褪色補償?shù)膫未a。為基于LUMSHIFT2和LUMSCALE2在第二參考半幀上的褪色補償執(zhí)行類似的過程??晒┨鎿Q地,褪色補償參數(shù)具有不同表示和/或用不同的信號表示機制來用信號表不。G.估計和信號表示技術(shù)諸如圖20的編碼器(2000)或圖42的框架(4200)中的編碼器等編碼器執(zhí)行具有兩個參考半幀的隔行掃描P半幀的褪色估計和相應(yīng)的信號表示。例如,編碼器執(zhí)行圖45A中所示的技術(shù)(4500)。編碼器在P半幀的兩個參考半幀的第一個上執(zhí)行褪色檢測(4510)。如果檢測到褪色(判定4512出來的“是”路徑),則編碼器相對于第一參考半幀執(zhí)行P半幀的褪色估計(4514),這產(chǎn)生第一參考半幀的褪色補償參數(shù)。編碼器還在P半幀的兩個參考半幀的第二個上執(zhí)行褪色檢測(4520)。如果檢測到褪色(判定4522出來的“是”路徑),則編碼器相對于第二參考半幀執(zhí)行P半幀的褪色估計(4524),這產(chǎn)生第二參考半幀的褪色補償參數(shù)。例如,編碼器執(zhí)行褪色檢測和估計,如在標(biāo)題為“褪色參數(shù)的估計”一節(jié)中描述的??晒┨鎿Q地,編碼器使用不同的技術(shù)來檢測褪色和/或獲得褪色補償參數(shù)。如果當(dāng)前P半幀只有一個參考半幀,則第二參考半幀的操作可被跳過。編碼器用信號表示(4530)褪色補償對于P半幀是開還是關(guān)。例如,編碼器將信息與P半幀的運動矢量模式信息一起聯(lián)合編碼??晒┨鎿Q地,編碼器使用其它和/或附加信號來指示褪色補償對于P半幀是開還是關(guān)。如果褪色補償對于當(dāng)前P半幀不是開(判定4532出來的“否”路徑),則技術(shù)(4500)結(jié)束。否則(判定4532出來的“是”路徑),編碼器用信號表示(4540)褪色補償?shù)膮⒖及霂J?。例如,編碼器用信號表示一個VLC,它指示褪色補償用于兩個參考半幀、僅第一參考半幀或僅第二參考半幀??晒┨鎿Q地,編碼器使用另一種信號表示機制(例如FLC)來指示參考半幀模式。在這個路徑中,編碼器還用信號表示(4542)在褪色估計中計算的第一組和/或第二組褪色補償參數(shù)。例如,編碼器使用如在章節(jié)XI.F中描述的信號表示??晒┨鎿Q地,編碼器使用其它信號表示。盡管編碼器一般還執(zhí)行褪色補償、運動估計和運動補償,但為了簡單起見,圖45A沒有示出這些操作。而且,褪色估計可在運動估計之前或同時執(zhí)行。圖45A沒有示出可將技術(shù)(4500)與編碼和解碼的其它方面集成的各種方法。在章節(jié)XII中詳細(xì)描述各種組合實現(xiàn)。H.解碼和補償技術(shù)諸如圖21的解碼器(2100)或者圖43的框架(4300)中的解碼器等解碼器為具有兩個參考半幀的隔行掃描P半幀執(zhí)行解碼和褪色補償。例如,解碼器執(zhí)行圖45B中所示的技術(shù)(4550)。解碼器接收和解碼(4560)指示褪色補償對于P半幀是開還是關(guān)的一個或多個信號。例如,將信息與P半幀的運動矢量模式信息一起聯(lián)合編碼??晒┨鎿Q地,解碼器接收和解碼指示褪色補償對于P半幀是開還是關(guān)的其它和/或附加的信號。如果褪色補償對于P半幀不是開(判定4562出來的“否”路徑),則技術(shù)(4550)結(jié)束。否則(判定4562出來的“是”路徑),解碼器接收和解碼(4570)褪色補償?shù)膮⒖及霂J?。例如,解碼器接收和解碼指示褪色補償用于兩個參考半幀、僅第一參考半幀還是僅第二參考半幀的VLC??晒┨鎿Q地,解碼器結(jié)合另一種信號表示機制(例如FLC)操作以確定參考半幀模式。在這個路徑中,解碼器還接收和解碼(4572)第一組褪色補償參數(shù)。例如,解碼器與如章節(jié)XI.F中描述的信號表示一起工作??晒┨鎿Q地,解碼器與其它信號表示一起工作。如果褪色補償是僅為兩個參考半幀之一執(zhí)行的(判定4575出來的“否”路徑),則第一組參數(shù)用于第一或第二參考半幀,如由參考半幀模式指示。解碼器用第一組褪色補償參數(shù)在所指示的參考半幀上執(zhí)行褪色補償(4592),并且技術(shù)(4500)結(jié)束。否則,褪色補償是為全部兩個參考半幀執(zhí)行的(判定4575出來的“是”路徑),并且解碼器接收和解碼(4580)第二組褪色補償參數(shù)。例如,解碼器與如在章節(jié)XI.F中描述的信號表示一起工作。可供替換地,解碼器與其它信號表示一起工作。在這種情況下,第一組參數(shù)用于兩個參考半幀之一,并且第二組參數(shù)用于另一個。解碼器用第一組參數(shù)在一個參考半幀上執(zhí)行褪色補償(4592),并且用第二組參數(shù)在另一參考半幀上執(zhí)行褪色補償(4582)。為了簡單起見,圖45B沒有示出可將技術(shù)(4550)與編碼和解碼的其它方面集成的各種方法。在章節(jié)XII中詳細(xì)地描述了各種組合實現(xiàn)。XII.組合實現(xiàn)現(xiàn)在描述比特流句法的詳細(xì)組合實現(xiàn),其中重點在于隔行掃描P半幀。下面的描述包括第一組合實現(xiàn)和一個替換的第二組合實現(xiàn)。另外,于2004年五月27日提交的美國專利申請序列號10/857,473揭示了第三組合實現(xiàn)的諸方面。盡管重點在于隔行掃描P半幀,但在本節(jié)的各種位置中,著眼于句法元素、語義和解碼對于其它圖像類型(例如,隔行掃描P和B幀、隔行掃描I、BI、PI和B半幀)的適用性。A.第一組合實現(xiàn)中的序列和語義在第一組合實現(xiàn)中,壓縮的視頻序列是由結(jié)構(gòu)化成分等級的層中的數(shù)據(jù)構(gòu)成的圖像層,宏塊層和塊層。序列層先于序列,并且入口點層可散布在序列中。圖46A至46E示出構(gòu)成各種層的比特流元素。1.序列層句法和語義序列級頭部包含序列級參數(shù),用于解碼壓縮圖像的序列。在有些簡檔(profile)中,與序列有關(guān)的元數(shù)據(jù)通過傳輸層或其它手段傳送到解碼器。然而對于具有隔行掃描P半幀的簡檔(高級簡檔),這個頭部句法是視頻數(shù)據(jù)比特流的一部分。圖46A示出構(gòu)成高級簡檔的序列頭部的句法元素。PROFILE(4601)和LEVEL(4602)元素分別指定用于編碼序列的簡檔和簡檔中的編碼等級。特別感興趣的隔行掃描P半幀的INTERLACE(4603)元素是1比特的句法元素,它用信號表示源內(nèi)容是逐行掃描(INTERLACE=0)還是隔行掃描(INTERLACE=1)。獨立的幀在INTERLACE=1時仍可使用逐行掃描或隔行掃描句法來編碼。2.入口點層句法和語義入口點頭部存在于高級簡檔中。入口點有兩個目的。首先,它用于用信號表示比特流內(nèi)的隨機訪問點?;危糜谟眯盘柋硎驹诰幋a控制參數(shù)方面的變化。圖46B示出構(gòu)成入口點層的句法元素。特別感興趣的隔行掃描P半幀的參考幀距離標(biāo)志REFDIST_FLAG(4611)元素是1比特的句法元素。REFDIST_FLAG=1指示REFDIST(4624)元素存在于I/I、I/P、P/I或P/P半幀圖像頭部中。REFDIST_FLAG=0指示REFDIST(4624)元素不存在于1/1、I/P、P/I或P/P半幀圖像頭部。擴展的運動矢量標(biāo)志EXTENDED_MV(4612)元素是1比特的元素,它指示擴展的運動矢量能力是開(EXTENDED_MV=1)還是關(guān)(EXTENDED_MV=0)。擴展的差分運動矢量范圍標(biāo)志EXTENDED_DMV(4613)元素是1比特元素,如果EXTENDED_MV=1則它存在。如果EXTENDED_DMV=1,則在擴展差分運動矢量范圍內(nèi)的運動矢量差分是在入口點段內(nèi)的圖像級上用信號表示的。如果EXTENDED_DMV=0,則不用信號表示在擴展的差分運動矢量范圍內(nèi)的運動矢量差分。擴展的差分運動矢量范圍是用于隔行掃描P和B圖像的選項,包括隔行掃描P半幀和P幀以及隔行掃描B半幀和B幀。3.圖像級句法和語義圖像的數(shù)據(jù)由圖像頭部和跟隨其后的宏塊層數(shù)據(jù)組成。圖46C示出構(gòu)成隔行掃描半幀圖像的幀頭部的比特流元素。在下列描述中,重點放在與隔行掃描P半幀一起使用的元素上,但圖46C所示的頭部可應(yīng)用于隔行掃描I、P、B和BI半幀的各種組合。幀編碼模式FCM(4621)元素只存在于高級簡檔中,并且僅當(dāng)序列層INTERLACE(4603)具有值1時存在。FCM(4621)指示圖像是被編碼為逐行掃描、隔行掃描半幀還是隔行掃描幀。圖47A中的表包括用于指示圖像編碼類型與FCM的VLC。半幀圖像類型FPTYPE(4622)元素是3比特句法元素,它存在于隔行掃描半幀圖像的圖像頭部中。FPTYPE是按照圖47B中的表解碼的。如表所示,隔行掃描幀可包括兩個隔行掃描I半幀、一個隔行掃描I半幀和一個隔行掃描P半幀、兩個隔行掃描P半幀、兩個隔行掃描B半幀、一個隔行掃描B半幀和一個隔行掃描BI半幀或者兩個隔行掃描BI半幀。上半幀第一TFF(4623)元素是1比特元素,如果序列頭部元素PULLDOWN=1并且序列頭部元素INTERLACE=1,則存在于高級簡檔圖像頭部中。TFF=1指上半幀是第一解碼的半幀。如果TFF=0,則下半幀是第一解碼的半幀。P參考距離REFDIST(4624)元素是可變大小句法元素,如果入口級標(biāo)志REFDIST_FLAG=1并且如果圖像類型不是BB、BBI、BI/B、BI/BI,則存在于隔行掃描半幀圖像頭部中。如果REFDIST_FLAG=0,REFDIST(4624)設(shè)置為默認(rèn)值0。REFDIST(4624)指示當(dāng)前幀與參考幀之間的幀數(shù)。圖47C中的表包括用于REFDIST(4624)值的VLC。表中最后一行指示用于表示大于2的參考幀距離的碼字。這些編碼為(二進制)11,后面是N-3個1,其中N是參考幀距離。碼字中的最后一個比特是0。REFDIST(4624)的值小于或等于16。例如N=3,VLC碼字=110,VLC大小=3,N=4,VLC碼字=1110,VLC大小=4,以及N=5,VLC碼字=11110,VLC大小=5。半幀圖像層FIELDPICLAYER(4625)元素是用于隔行掃描幀的各個隔行掃描半幀之一的數(shù)據(jù)。如果隔行掃描幀是P/P幀(FPTYPE=011),則比特流包括兩個FIELDPICLAYER(4625)元素用于兩個隔行掃描P半幀。圖46D示出構(gòu)成隔行掃描P半幀圖像的半幀圖像頭部的比特流元素。參考圖像數(shù)量NUMREF(4631)元素是存在于隔行掃描P半幀頭部中的1比特句法元素。它指示隔行掃描P半幀具有1(NUMREF=0)或2(NUMREF=1)個參考圖像。參考半幀圖像指示符REFFIELD(4632)是如果NUMREF=0則存在于隔行掃描P半幀中的1比特句法元素。它指示兩個可能的參考圖像中的哪一個由隔行掃描P半幀使用。擴展的MV范圍標(biāo)志MVRANGE(4633)是可變大小句法元素,它通常指示運動矢量的擴展范圍(即,運動矢量的較長的可能水平和/或垂直位移)。擴展的差分MV范圍標(biāo)志DMVRANGE(4634)是可變大小句法元素,如果EXTENDED_DMV=1則存在。圖47D中的表用于DMVRANGE(4634)元素。兩個MVRANGE(4633)和DMVRANGE(4634)用于解碼運動矢量差分,而且擴展的差分運動矢量范圍是隔行掃描P半幀、隔行掃描幀、隔行掃描B半幀和隔行掃描B幀的選項。運動矢量模式MVM0DE(4635)元素是可變大小句法元素,它用信號表示四個運動矢量編碼模式之一或者一個強度補償模式。運動矢量編碼模式包括具有運動補償?shù)牟煌酉笏貎?nèi)插規(guī)則的三個“1MV”模式。1MV表示圖像中每個宏塊具有至少一個運動矢量。在“混合MV”模式中,圖像中的每個宏塊可具有一個或四個運動矢量,或者跳過。取決于PQUANT(圖像的量化系數(shù))的值,圖47E中所示的表之一用于MVM0DE(4635)元素。運動矢量模式2MVM0DE2(4636)元素是可變大小句法元素,如果MVM0DE(4635)用信號表示強度補償則存在于隔行掃描P半幀頭部中。取決于PQUANT的值,圖47F中所示的任一表用于MVM0DE(4635)元素。強度補償半幀INTC0MPFIELD(4637)是存儲于隔行掃描P半幀圖像頭部中的可變大小句法元素。如圖47G的表中所示,INTC0MPFIELD(4637)用于指示哪個(些)參考半幀受到強度補償。即使NUMREF=0,INTC0MPFIELD(4637)也存在。半幀圖像亮度比例1LUMSCALE1(4638)、半幀圖像亮度平移1LUMSHIFT1(4639)、半幀圖像亮度比例2LUMSCALE2(4640)和半幀圖像亮度平移2LUMSHIFT2(4641)元素各自是在強度補償中的6比特值。如果MVM0DE(4635)用信號表示強度補償,則LUMSCALE1(4638)和LUMSHIFT1(4639)元素存在。如果INTC0MPFIELD(4637)元素是“1”或“00”,則LUMSCALE1(4638)和LUMSHIFT1(4639)應(yīng)用于上半幀。否則,LUMSCALE1(4638)和LUMSHIFT1(4639)應(yīng)用于下半幀。如果MVM0DE(4635)用信號表示強度補償并且INTC0MPFILED(4637)元素是“1”,則LUMSCALE2(4640)和LUMSHIFT2(4641)元素存在。LUMSCALE2(4640)和LUMSHIFT2(4641)應(yīng)用于下半幀。宏塊模式表MBM0DETAB(4642)元素是固定長度域,其中3比特值用于隔行掃描P半幀頭部。MBM0DETAB(4642)指示八個代碼表中的哪一個(如用3比特值指定的表0至7)用于在宏塊層中編碼/解碼宏塊模式MBM0DE(4661)句法元素。有兩組八個代碼表,并且使用的組取決于4MV宏塊在圖像中是否可能。圖47H示出可用于混合MV模式的隔行掃描P半幀中MBM0DE(4661)的八個表。圖471示出可用于1MV模式的隔行掃描P半幀中的MBM0DE(4661)的八個表。運動矢量表MVTAB(4643)元素是固定長度域。對于其中NUMREF=0的隔行掃描P半幀,MVTAB(4643)是2比特句法元素,它指示四個代碼表中哪一個(如用2比特值指定的表0至3)用于解碼運動矢量數(shù)據(jù)。對于其中NUMREF=1的隔行掃描P半幀,MVTAB(4643)是3比特句法元素,它指示八個代碼表中的哪一個(如用三比特值指定的表0至7)用于編碼/解碼運動矢量數(shù)據(jù)。在隔行掃描P半幀頭部中,如果MVMODE(4635)(或者MVM0DE2(4636),如果MVM0DE(4635)設(shè)置為強度補償)指示圖像是混合MV類型的,則4MV塊模式表4MVBPTAB(4644)元素是2比特值。4MVBPTAB(4644)句法元素用信號表示四個表中哪一個(如用2比特值指定的表0至3)用于4MV宏塊中的4MV塊模式4MVBP(4664)句法元素。圖47J示出可用于4MVBP(4664)的四個表。隔行掃描P幀頭部(未示出)具有許多與圖46C所示的半幀編碼的隔行掃描幀頭部以及圖46D所示的隔行掃描P半幀頭部相同的元素。這些包括FCM(4621)、MVRANGE(4633)、DMVRANGE(4634)、MBM0DETAB(4642)和MVTAB(4643),盡管隔行掃描P幀的精確句法和語義可不同于隔行掃描P半幀。隔行掃描幀頭部還包括圖像類型的不同元素、在IMV和4MV模式之間切換和強度補償信號表示。由于隔行掃描P幀可包括具有每宏塊兩個運動矢量的半幀編碼宏塊,隔行掃描幀頭部包括2運動矢量塊模式表2MVBPTAB元素。2MVBPTAB是存在于隔行掃描P幀中的兩個2比特值。這個句法元素用信號表示四個表中哪一個(用兩比特值指定的表0至3)用于解碼2MV半幀編碼宏塊中的2MV塊模式(2MVBP)元素。圖47K示出可用于2MVBP的四個表。隔行掃描B半幀和隔行掃描B幀具有許多隔行掃描P半幀與隔行掃描幀的相同元素。具體地,隔行掃描B半幀可包括4MVBPTAB(4644)句法元素。隔行掃描B幀包括2MVBPTAB和4MVBPTAB(4644)兩個句法元素,盡管這些元素的語義可以不同。4.宏塊層句法和語義宏塊的數(shù)據(jù)由宏塊頭部和跟隨其后的塊層組成。圖46E示出隔行掃描P半幀的宏塊層結(jié)構(gòu)。宏塊模式MBMODE(4661)元素是可變大小元素。它聯(lián)合地指示信息,諸如宏塊(1MV、4MV或幀內(nèi)編碼)的運動矢量的數(shù)量、對該宏塊是否存在已編碼塊模式CBPCY(4662)元素以及(在有些情況下)對該宏塊是否存在運動矢量差分?jǐn)?shù)據(jù)。圖47H和471示出可用于隔行掃描P半幀的MBMODE(4661)的表。運動矢量數(shù)據(jù)MVDATA(4663)元素是可變大小元素,它編碼運動矢量的運動矢量信息(例如水平和垂直差分)。對于具有兩個參考半幀的隔行掃描P半幀,MVDATA(4663)還編碼用于在運動矢量的多個可能運動矢量預(yù)測值之間選擇的信息。四個運動矢量塊模式4MVBP(4664)元素是可變大小句法元素,它可存在于隔行掃描P半幀、B半幀、幀和B幀的宏塊中。在隔行掃描P半幀、B半幀和P幀的宏塊中,如果MBMODE(4661)指示該宏塊具有4個運動矢量,則4MVBP(4664)元素存在。在這種情況下,4MVBP(4664)指示4個亮度塊中哪一個包含非零運動矢量差分。在隔行掃描B幀的宏塊中,如果MBMODE(4661)指示宏塊包含2個半幀運動矢量并且如果宏塊是內(nèi)插的宏塊,則4MVBP(4664)存在。在這種情況下,4MVBP(4664)指示四個運動矢量(上和下半幀前向運動矢量和上和下半幀后向運動矢量)中哪一個存在。兩個運動矢量塊模式2MVBP元素(未示出)是可變大小句法元素,它存在于隔行掃描P幀和B幀中。在隔行掃描P幀宏塊中,如果MBMODE(4661)指示宏塊具有2個半幀運動矢量,則2MVBP存在。在這種情況下,2MVBP指示2個半幀(上和下)中哪一個包含非零運動矢量差分。在隔行掃描B幀宏塊中,如果宏塊包含1個運動矢量并且宏塊是內(nèi)插的宏塊,則2MVBP存在。在這種情況下,2MVBP指示兩個運動矢量(前向和后向運動矢量)中哪一個存在。塊級運動矢量數(shù)據(jù)BLKMVDATA(4665)元素是在某些情況下存在的可變大小元素。它包含宏塊的塊的運動信息?;旌线\動矢量預(yù)測HYBRIDPRED(4666)元素是每運動矢量1比特句法元素,它可存在于隔行掃描P半幀的宏塊中。當(dāng)使用混合運動矢量預(yù)測時,HYBRIDPRED(4666)指示兩個運動矢量預(yù)測值中哪一個要使用。5.塊層句法和語義隔行掃描圖像的塊層遵循逐行掃描圖像的塊層的句法和語義。通常,塊或子塊的DC和AC系數(shù)的信息是在塊層上用信號表示的。B.第一組合實現(xiàn)中的解碼當(dāng)視頻序列由隔行掃描視頻幀組成或者包括隔行掃描和逐行掃描幀的混合時,F(xiàn)CM(4621)元素指示給定的圖像編碼為逐行掃描幀、隔行掃描半幀還是隔行掃描幀。對于編碼為隔行掃描半幀的幀,F(xiàn)PTYPE(4622)指示幀包括兩個隔行掃描I半幀、一個隔行掃描I半幀和一個隔行掃描P半幀、兩個隔行掃描P半幀、兩個隔行掃描B半幀、一個隔行掃描B半幀和一個隔行掃描BI半幀或者兩隔行掃描BI半幀。隔行掃描半幀的解碼如下。下面的章節(jié)集中于隔行掃描P半幀的解碼過程。1.隔行掃描P半幀解碼的參考隔行掃描P半幀可在運動補償中參考一個或兩個先前解碼的半幀。NUMREF(4631)元素指示當(dāng)前P半幀可參考一個還是兩個先前的參考半幀。如果NUMREF=0,則當(dāng)前P半幀只可參考一個半幀。在這種情況下,REFFIELD(4632)元素在比特流中跟隨其后。REFFIELD(4632)指示哪一個解碼的半幀用作參考。如果REFFIELD=0,則時間上最近(在顯示順序中)的I半幀或P-半幀用作參考。如果REFFIELD=1,則第二時間上最近的I半幀或P半幀用作參考。如果NUMREF=1,則當(dāng)前P半幀使用兩個時間上最近(在顯示順序中)的I半幀或P半幀作為參考。如上所述示于圖24A-24F的NUMREF=0和NUMREF=1的參考半幀圖像的示例應(yīng)用于第一組合實現(xiàn)。2.圖像類型隔行掃描P半幀可以是兩種類型之一1MV或混合MV。在IMVP半幀中,每個宏塊是IMV宏塊。在混合MVP半幀中,每個宏塊可被編碼為IMV或4MV宏塊,如由在每個宏塊上的MBMODE(4661)指示的。IMV或混合MV模式是由MVMODE(4635)或MVM0DE2(4636)元素為隔行掃描P半幀用信號表示的。3.宏塊模式在隔行掃描P半幀中的宏塊可以是3種可能類型之一1MV、4MV和幀內(nèi)。MBMODE(4661)元素指示宏塊類型(1MV、4MV或幀內(nèi)),并且還指示CBP和MV數(shù)據(jù)的存在。取決于MVMODE(4635)/MVM0DE2(4636)句法元素指示隔行掃描P半幀是混合MV還是全部1MV,MBMODE(4661)如下用信號表示信息。圖26中的表顯示MBMODE(4661)如何用信號表示有關(guān)在全部IMVP半幀中的宏塊的信息。如在圖471中所示,8個表之一用于編碼/解碼IMVP半幀的MBMODE(4661)。圖27中的表顯示MBM0DE(4661)用信號表示有關(guān)混合MVP半幀中宏塊的信息。如圖47H所示,8個表之一用于編碼/解碼混合MVP半幀的MBMODE(4661)。因而,IMV宏塊可在IMV和混合MV隔行掃描P半幀中出現(xiàn)。在IMV宏塊中,單個運動矢量表示宏塊中全部6個塊的當(dāng)前和參考圖像之間的位移。對于IMV宏塊,MBM0DE(4661)元素指示以下三項(1)宏塊類型是IMV;(2)對該宏塊是否存在CBPCY(4662)元素;以及(3)對該宏塊是否存在MVDATA(4663)元素。如果MBMODE(4661)元素指示CBPCY(4662)元素存在,則CBPCY(4662)元素存在于相應(yīng)位置的宏塊層中。CBPCY(4662)指示6個塊中哪一個在塊層中編碼。如果MBMODE(4661)元素指示CBPCY(4662)不存在,則CBPCY(4662)假定等于0并且對于宏塊中6個塊的任何一個不存在塊數(shù)據(jù)。如果MBMODE(4661)元素指示MVDATA(4663)元素存在,則MVDATA(4663)元素存在于相應(yīng)位置的宏塊層中。MVDATA(4663)元素編碼運動矢量差分,它與運動矢量預(yù)測值組合起來重構(gòu)運動矢量。如果MBMODE(4661)元素指示MVDATA(4663)元素不存在,則運動矢量差分假定為零并且因此運動矢量等于運動矢量預(yù)測值。4MV宏塊出現(xiàn)在混合MVP半幀中。在4MV宏塊中,宏塊中的4個亮度塊的每一個可具有相關(guān)聯(lián)的運動矢量,它指示該塊的當(dāng)前和參考圖像之間的位移。色度塊的位移是從4個亮度運動矢量導(dǎo)出的。當(dāng)前和參考塊之間的差在塊層中編碼。對于4MV宏塊,MBMODE(4661)元素指示以下兩項(1)宏塊類型是4MV;以及(2)CBPCY(4662)元素是否存在。幀內(nèi)編碼宏塊可出現(xiàn)在IMV或混合MVP半幀中。在幀內(nèi)編碼宏塊中,在不參考任何先前的圖像數(shù)據(jù)的情況下編碼全部六個塊。對于幀內(nèi)編碼宏塊,MBM0DE(4661)元素指示以下兩項(1)宏塊類型是幀內(nèi)編碼;以及(2)CBPCY(4662)元素是否存在。對于幀內(nèi)編碼宏塊,當(dāng)CBPCY(4662)元素存在時,指示6個塊中哪一個具有在塊層中編碼的AC系數(shù)數(shù)據(jù)。在所有情況下,DC系數(shù)對于每個塊仍存在。4.運動矢量塊模式4MVBP(4664)元素指示4個亮度塊中哪一個包含非零運動矢量差分。4MVBP(4664)被解碼為0與15之間的值,它在表示為二進制值時表示1比特句法元素,它指示相應(yīng)亮度塊的運動矢量是否存在。圖34中的表顯示亮度塊與4MVBP(4664)中比特的關(guān)聯(lián)。如在圖47J中所示,4個表之一用于編碼/解碼4MVBP(4664)。對于4MVBP(4664)中4個比特位置的每一個,值0指示對相應(yīng)位置中的塊不存在運動矢量差分(在BLKMVDATA中),并且運動矢量差分假定為0。值1指示對相應(yīng)位置中的塊存在運動矢量差分(在BLKMVDATA中)。例如,如果4MVBP(4664)解碼為二進制值1100,則比特流包含塊0和1的BLKMVDATA(4665),并且塊2和3沒有BLKMVDATA(4665)。4MVBP(4664)相似地用于指示隔行掃描B半幀和隔行掃描P幀中4MV宏塊的運動矢量差分信息的存在/不存在。在隔行掃描P幀或隔行掃描B中的半幀編碼的宏塊可包括2個運動矢量。在2個半幀MV宏塊的情況下,2MVBP元素指示兩個半幀中哪一個具有非零的差分運動矢量。如圖47K所示,4個表之一用于編碼/解碼2MVBP。5.半幀圖像坐標(biāo)系統(tǒng)在下列章節(jié)中,運動矢量單位是以半幀圖像單位表示的。例如,如果運動矢量指示位移為+6(以四分之一象素為單位)的垂直分量,則這指示1/2的半幀圖像行的位移。圖48示出當(dāng)前和參考半幀極性(相反和相同)的兩個組合的運動矢量的垂直分量與空間位置之間的關(guān)系。圖48示出當(dāng)前和參考半幀中一個垂直象素列。圓圈表示整數(shù)象素位置并且χ表示四分之一象素位置。值0指示當(dāng)前和參考半幀位置之間沒有垂直位移。如果當(dāng)前和參考半幀是相反極性的,則0垂直矢量指向參考半幀中半幀行之間中間的位置(1/2象素平移)。如果當(dāng)前和參考半幀是相同極性的,則0垂直矢量指向參考半幀中相應(yīng)的半幀行。6.解碼運動矢量差分MVDATA(4663)和BLKMVDATA(4665)元素編碼宏塊中宏塊或塊的運動信息。IMV宏塊具有單個MVDATA(4663)元素,而4MV宏塊可具有零到四個BLMMVDATA(4665)。根據(jù)MVDATA(4663)或BLKMVDATA(4665)計算運動矢量差分的過程對于一個參考(NUMREF=0)情況和兩個參考(NUMREF=1)情況不同。在具有一個參考半幀的半幀圖像中,每個MVDATA(4663)或BLKMVDATA(4665)句法元素聯(lián)合地編碼以下兩項(1)水平運動矢量差分分量;和(2)垂直運動矢量差分分量。MVDATA(4663)或BLKMVDATA(4665)元素是一個VLC,之后跟隨一個FLC。VLC的值確定FLC的尺寸。MVTAB(4643)句法元素指定用于解碼VLC的表。圖49A示出偽代碼,它示出對具有一個參考半幀的半幀圖像中塊或宏塊的運動矢量的運動矢量差分解碼。在該偽代碼中,計算值dmv_X和dmv_y,其中dmv_X是差分水平運動矢量分量而dmv_y是差分垂直運動矢量分量。變量k_x和k_y是固定長度值,它們?nèi)Q于如由MVRANGE(4633)按照圖49B所示的表定義的運動矢量范圍。變量extencLx用于擴展的范圍水平運動矢量差分,并且變量extencLy用于擴展的范圍垂直運動矢量差分。變量extend_x和extend_y是從DMVRANGE(4634)句法元素導(dǎo)出的。如果DMVRANGE(4634)指示使用水平分量的擴展的范圍,則extend_x=1。否則extend_χ=0。同樣,如果DMVRANGE(4634)指示使用垂直分量的擴展的范圍,則extencLy=1。否貝1J,extencLy=0。偏移表是如下定義的數(shù)組offset_tablel[9]={0,1,2,4,8,16,32,64,128},以及offset_table2[9]={0,1,3,7,15,31,63,127,255},其中當(dāng)為水平或垂直分量擴展差分范圍時,offSet_table[]用于該水平或垂直分量。盡管圖49A和49B示出隔行掃描P半幀的擴展的差分運動矢量解碼,但擴展的差分運動矢量解碼還用于第一組合實現(xiàn)中的隔行掃描B半幀、隔行掃描P幀和隔行掃描B幀。在具有兩個參考半幀的半幀圖像中,每個MVDATA(4663)或BLKMVDATA(4665)句法元素聯(lián)合地編碼以下三項(1)水平運動矢量差分分量;(2)垂直運動矢量差分分量;以及(3)使用主還是非主預(yù)測值,即兩個半幀中哪一個是由運動矢量參考的。如在一個參考半幀情況中,MVDATA(4663)或BLKMVDATA(4665)元素是一個VLC,其后跟著一個FLC,并且MVTAB(4643)句法元素指定用于解碼VLC的表。圖50示出偽代碼,它示出對具有兩個參考半幀的半幀圖像中塊或宏塊的運動矢量的運動矢量差分和主/非主預(yù)測值解碼。在該偽代碼中,值預(yù)測值標(biāo)志是一個二進制標(biāo)志,它指示使用主還是非主運動矢量預(yù)測值。如果prediCtor_flag=0,則使用主預(yù)測值,并且如果prediCt0r_flag=1,則使用非主預(yù)測值。各種其它變量(包括dmv_x,dmv_y,k_χ,k_y,extend_x,extend_y,offset_table[]和offset_table2[])是為一個參考半幀情況描述的。表Sizejable是如下定義的數(shù)組size-table[16]={0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7}·7.運動矢量預(yù)測值運動矢量是通過將在前面章節(jié)中計算的運動矢量差分加到運動矢量預(yù)測值來計算的。預(yù)測值是根據(jù)最多三個相鄰運動矢量計算的。運動矢量預(yù)測值的計算是以1/4象素單位完成的,即使運動矢量模式是半象素。在IMV隔行掃描P半幀中,最多三個相鄰運動矢量用于計算當(dāng)前宏塊的預(yù)測值。具有考慮的運動矢量的相鄰宏塊的位置在圖5A和5B中所示,并且是為IMV逐行掃描P幀描述的。在混合運動矢量隔行掃描P半幀中,最多三個相鄰運動矢量用于計算當(dāng)前塊或宏塊的預(yù)測值。具有考慮的運動矢量的相鄰塊和/或宏塊的位置在圖6A-10中所示,并且是為混合MV逐行掃描P幀描述的。如果圖像頭部中的NUMREF(4631)句法元素為0,則當(dāng)前隔行掃描P半幀可只參考一個先前編碼的半幀。如果NUMREF=1,則當(dāng)前隔行掃描P半幀可參考兩個最近的參考半幀圖像。在前一情況中,為每個運動矢量計算單個預(yù)測值。在后一種情況下,計算兩個運動矢量預(yù)測值。圖51A和51B中的偽代碼描述如何為一個參考半幀情況計算運動矢量預(yù)測值。偽代碼中的變量fieldpred_X和fieldpred_y表示運動矢量預(yù)測值的水平和垂直分量。在兩個參考半幀隔行掃描P半幀(NUMREF=1)中,當(dāng)前半幀可參考兩個最近的參考半幀。在這種情況下,為每個幀間編碼的宏塊計算兩個運動矢量預(yù)測值。一個預(yù)測值來自相同極性的參考半幀,而另一個來自相反極性的參考半幀。相同極性半幀與相反極性半幀中,一個是主半幀而另一個是非主半幀。主半幀是包含大多數(shù)候選運動矢量預(yù)測值的半幀。在平分的情況下,從相反半幀導(dǎo)出的運動矢量視為主預(yù)測值。幀內(nèi)編碼的宏塊在主/非主預(yù)測值的計算中不考慮。如果所有候選預(yù)測值宏塊是幀內(nèi)編碼的,則主和非主運動矢量預(yù)測值設(shè)置為零,并且從相反半幀中取得主預(yù)測值。圖52A-52F中的偽代碼描述在給出3個候選運動矢量預(yù)測值時如何為兩個參考半幀情況計算運動矢量預(yù)測值。變量samefieldprecLx和samefieldprecLy表示來自相同半幀的運動矢量預(yù)測值的水平和垂直分量,并且變量oppositefieldprecLx和oppositefieldprecLy表示來自相反半幀的運動矢量預(yù)測值的水平和垂直分量。變量samecount禾口oppositecount被初始化為0。變量dominatpredictor指示哪一個半中貞包含主預(yù)測值。值prediCtor_flag(從運動矢量差分解碼的)指示使用主還是非主預(yù)測值。圖52G和52H中的偽代碼示出圖52A-52F中偽代碼引用的比例縮放操作,它們用于從一個半幀的預(yù)測值導(dǎo)出另一個半幀的預(yù)測值。SCALE0PP、SCALESAME1、SCALESAME2、SCALEZONE1_X,SCALEZONE1_Y>ZONE10FFSET_X和Z0NE10FFSET_Y的值對當(dāng)前半幀是第一半幀的情況在圖521的表中示出,而對當(dāng)前半幀是第二半幀的情況在圖52J的表中示出。參考幀距離是在圖像頭部的REFDIST(4624)中編碼的。參考幀距離是REFDIST+1。圖52K至52N是偽代碼和表,用于可替換圖52H至52J中所示的比例縮放操作。代替圖52H至52J中的比例縮放偽代碼和表(但仍使用圖52A至52G中的偽代碼),使用圖52K至52N中的比例縮放偽代碼和表。從半幀層頭部的元素獲得參考幀距離。N值取決于運動矢量范圍,如在圖52N的表中所示。8.混合運動矢量預(yù)測相對于A(上)和C(左)預(yù)測值測試在前面章節(jié)中計算的運動預(yù)測值,以確定參考圖像是否明確地編碼在比特流中。如果是,則存在指示使用預(yù)測值A(chǔ)還預(yù)測值C作為運動矢量預(yù)測值的一個比特。圖53中的偽代碼示出混合運動矢量預(yù)測解碼。在該偽代碼中,變量predictor—pre—χ和predictor—pre—y分別是如在前面章節(jié)中計算的水平和垂直運動矢量預(yù)測值。變量predictor—post—χ和predictor—post—y分別是在檢查混合運動矢量預(yù)測之后的水平和垂直運動矢量預(yù)測值。變量predictor—pre、predictor—post、predictorA、predictorB和predictorC全部表示由預(yù)測值標(biāo)志的值指示的極性的半幀。例如,如果predictor—flag指示使用相反半幀預(yù)測值,則predictor—pre—χ=oppositefieldpred—χpredictor—pre—χ=oppositefieldpred—ypredictorA—χ=oppositefieldpredA—χpredictorA—y=oppositefieldpredA—ypredictorB—χ=oppositefieldpredB—χpredictorB—y=oppositefieldpredB—ypredictorC—χ=oppositefieldpredC—χpredictorC—y=oppositefieldpredC—y同樣,如果predictor—flag指示使用相同半幀預(yù)測值,則predictor—pre—χ=samefieldpred—χpredictor—pre—χ=samefieldpred—ypredictorA—χ=samefieldpredA—χpredictorA—y=samefieldpredA—ypredictorB—χ=samefieldpredB—χpredictorB—y=sainefieldpredB—ypredictorC—χ=samefieldpredC—χpredictorC—y=samefieldpredC—y其中oppositefieldpred和samefieldpred的值是如在前面章節(jié)中描述的那樣計算的。9.重構(gòu)亮度運動矢量對于IMV和4MV宏塊兩者,通過如下那樣將差分加到預(yù)測值來重構(gòu)亮度運動矢量,其中變y取決于MVRANGE(4633)并且在圖49B所示的表中指定。對于NUMREF=0(1參考半幀隔行掃描P半幀)my_x=(dmv_x+predictor_x)smodrange_x,以及my_y=(dmv_y+predictor_y)smod(range_y).對于NUMREF=1(2參考半幀隔行掃描P半幀)my_x=(dmv_x+predictor_x)smodrange_x,以及mv_y=(dmv_y+predictor_y)smod(range_y/2).如果隔行掃描P半幀使用兩個參考圖像(NUMREF=1),則predictor—flag(在解碼運動矢量差分中導(dǎo)出的)與dominantpredictor(在運動矢量預(yù)測中導(dǎo)出的)的值相組合以確定使用哪些半幀作為參考,如圖54所示。在IMV宏塊中,對用于構(gòu)成宏塊的亮度分量的4個塊存在單個運動矢量。如果MBMODE(4661)句法元素指示在宏塊層中不存在MV數(shù)據(jù),則dmv_x=0且dmv_y=0(mv_x=predictor_x且mv_y=predictor_y)。在4MV宏塊中,宏塊中的幀間編碼的亮度塊的每一個具有它自己的運動矢量。因此,在每個4MV宏塊中有4個亮度運動矢量。如果4MVBP(4664)句法元素指示一個塊沒有運動矢量信息,則該塊的dmv_x=0且dmv_y(mv_x=predictor_x且mv_y=predicotr_y)。10.導(dǎo)出色度運動矢量色度運動矢量是從亮度運動矢量導(dǎo)出的。色度運動矢量在兩個步驟中重構(gòu)。作為第一步驟,通過適當(dāng)?shù)亟M合和比例縮放亮度運動矢量獲得名義的色度運動矢量。比例縮放是以這樣一種方法進行的,即與四分之一象素偏移相比,二分之一偏移是較佳的。在第二步驟中,使用1比特FASTUVMC句法元素來確定色度運動矢量的進一步舍入是否必要。如果FASTUVMC=0,則在第二步驟中不進行舍入。如果FASTUVMC=1,則在四分之一象素偏移處的色度運動矢量將舍入到最接近的二分之一和整象素位置。只有雙線性濾波用于全部色度內(nèi)插。變量cmv_x和cmv_y分別表示色度運動矢量分量,而lmv_x和lmv_y分別表示亮度運動矢量分量。在IMV宏塊中,色度運動矢量是從亮度運動矢量導(dǎo)出的,如下cmv_x=(lmv_x+round[lmv_x&3])>>1,以及cmv_y=(lmv_y+round[lmv_y&31)>>1,其中round=0,round[1]=0,round[2]=0,round[3]=1。圖55A和55B中的偽代碼示出色度運動矢量是如何從4MV宏塊的四個亮度塊中的運動信息導(dǎo)出的第一階段。在該偽代碼中,ix和iy是臨時變量。圖55A是用于1參考半幀隔行掃描P半幀的色度運動矢量導(dǎo)出的偽代碼,而圖55B是用于2參考半幀隔行掃描P半幀的色度運動矢量導(dǎo)出的偽代碼。11.強度補償如果MVMODE(4635)指示對隔行掃描P半幀使用強度補償,則參考半幀之一或兩個中的象素在使用它們作為當(dāng)前P半幀的預(yù)測值之前被重新映射。當(dāng)使用強度補償時,LUMSCALE1(4638)和LUMSHIFT1(4639)句法元素存在于第一參考半幀的比特流中,而LUMSCALE2(4640)和LUMSHIFT2(4641)元素也可存在于第二參考半幀的比特流中。圖56中的偽代碼示出如何使用LUMSCALE1(4698)和LUMSHIFT1(4639)值來建立用于重新映射第一參考半幀的參考半幀象素的查找表。(該偽代碼可相似地應(yīng)用于第二參考半幀的LUMSCALE2(4640)和LUMSHIFT2(4641)。)參考半幀的Y分量是使用LUTY[]表重新映射的,而Cb/Cr分量是使用LUTUV[]表重新映射的,如下=LUTY[pY],以及Fuv=LUTUV[puv],其中ργ是參考半幀中的原始亮度象素值,是參考半幀中重新映射的亮度象素值,是參考半幀中原始的Cb或Cr象素值,而是參考半幀中重新映射的Cb或Cr象素值。12.剩余的解碼當(dāng)CBPCY(4662)元素存在時,解碼器解碼宏塊的該元素,其中CBPCY(4662)元素指示系數(shù)數(shù)據(jù)的存在/不存在。在塊層上,解碼器解碼幀間編碼的塊和幀內(nèi)編碼的塊(除了4MV宏塊)的系數(shù)數(shù)據(jù)。為重構(gòu)幀間編碼的塊,解碼器(1)選擇一個變換類型(8x8,4x4,4x8,或者4x4),(2)解碼子塊模式,(3)解碼系數(shù),(4)執(zhí)行反變換,(5)執(zhí)行反量化,(6)獲得塊的預(yù)測,以及(7)將預(yù)測和誤差塊相加。C.第二組合實現(xiàn)中的序列和語義在第二組合實現(xiàn)中,壓縮的視頻序列是由結(jié)構(gòu)化成分等級的層中的數(shù)據(jù)構(gòu)成的。從上到下的層是圖像層,宏塊層和塊層。序列層先于序列。圖57A至57C示出構(gòu)成各種層的比特流元素。1.序列層句法和語義序列級頭部包含序列級參數(shù),用于解碼壓縮圖像的序列。使這個頭部可用于解碼器,或者作為外部傳送的解碼器配置信息,或者作為視頻數(shù)據(jù)比特流的一部分。圖57A是序列層比特流的句法圖,它示出構(gòu)成序列層的元素。剪輯簡檔PROFILE(5701)元素指定用于產(chǎn)生剪輯的編碼簡檔。如果PROFILE是“高級”簡檔,則剪輯級LEVEL(5702)元素指定剪輯的編碼等級??晒┨鎿Q地(例如,對于其它簡檔),通過外部手段將剪輯等級發(fā)送到解碼器。INTERLACE(5703)元素是1比特字段,如果PROFILE是高級簡檔,則它存在。INTERFACE(5703)指定在逐行掃描還是在隔行掃描模式中編碼視頻。如果INTERLACE=0,則視頻幀是在逐行掃描模式中編碼的。如果INTERLACE=1,則視頻幀是在隔行掃描模式中編碼的。如果PROFILE(5701)不是高級簡檔,則視頻是在逐行掃描模式中編碼的。擴展的運動矢量EXTENDED_MV(5704)元素是1比特字段,它指示擴展的運動矢量能力是開還是關(guān)。如果EXTENDED_MV=1,則運動矢量具有擴展的范圍。如果EXTENDED_MV=0,則運動矢量沒有擴展的范圍。2.圖像層句法和語義圖像的數(shù)據(jù)由圖像頭部和跟隨其后的宏塊層數(shù)據(jù)構(gòu)成。圖57B是圖像層比特流的句法圖,它示出構(gòu)成隔行掃描P半幀的圖像層的元素。圖像類型PTYPE(5722)元素是1比特字段,或者是可變大小字段。如果沒有B圖像,則在序列中只有I和P圖像,并且PTYPE是用單個比特編碼的。如果PTYPE=0,則圖像類型是I。如果PTYPE=1,則圖像類型是P。如果B圖像的數(shù)量大于0,則PTYPE(5722)是可變大小字段,指示幀的圖像類型。如果PTYPE=1,則圖像類型是P。如果PTYPE=01(二進制),則圖像類型是I。而且,如果PTYPE=00(二進制),則圖像類型是B。參考圖像的數(shù)量NUMREF(5731)元素是存在于隔行掃描P半幀頭部中的1比特句法元素。它指示隔行掃描P半幀具有1個(NUMREF=0)還是具有2個(NUMREF=1)參考圖像。參考半幀圖像指示符REFFIELD(5732)是如果NUMREF=0則存在于隔行掃描P半幀頭部中的1比特句法元素。它指示兩個可能的參考圖像中哪一個是隔行掃描P半幀使用的。外部MV范圍標(biāo)志MVRANGE(5733)是可變大小句法元素,它存在于使用特定簡檔(“主”簡檔)編碼的序列的P圖像中,并且其BROADCAST元素設(shè)置為1。通常,MVRANGE(5733)指示運動矢量的擴展的范圍(即,運動矢量的較長的可能水平和/或垂直位移)。MVRANGE(5733)用于解碼運動矢量差分。運動矢量模式MVM0DE(5735)元素是可變大小句法元素,它用信號表示四個運動矢量編碼模式之一或者一個強度補償模式。運動矢量編碼模式包括三個具有用于運動補償?shù)牟煌酉笏貎?nèi)插規(guī)則的“1MV”模式。1MV表示圖像中每個宏塊具有至少一個運動矢量。在“混合MV”模式中,在圖像中的每個宏塊可具有一個或四個運動矢量,或者可被跳過。取決于PQUANT(圖像的量化系數(shù))的值,圖47E中所示的任意一個表用于MVM0DE(5735)元素。運動矢量模式2MVM0DE2(5736)元素是可變大小句法元素,如果MVM0DE(5735)用信號表示強度補償,則它存在于隔行掃描P半幀頭部中。前面的表(減去強度補償?shù)拇a)可用于MVM0DE2(5736)。亮度比例LUMSCALE(5738)和亮度平移LUMSHIFT(5739)元素各自是在強度補償中使用的6比特值。如果MVM0DE(5735)用信號表示強度補償,則LUMSCALE(5738)和LUMSHIFT(5739)存在于隔行掃描P半幀頭部中。宏塊模式表MBM0DETAB(5742)元素是隔行掃描P半幀頭部的2比特字段。MBM0DETAB(5742)指示四個代碼表中哪一個(用2比特值指定的表0至3)用于編碼/解碼宏塊層中的宏塊模式MBM0DE(5761)句法元素。運動矢量表MVTAB(5743)元素是隔行掃描P半幀的2比特字段。MVTAB(5743)指示四個代碼表中哪一個(用兩比特值指定的表0至3)用于編碼/解碼運動矢量數(shù)據(jù)。4MV塊模式表4MVBPTAB(5744)元素是2比特值,如果MVM0DE(5735)(或者MVM0DE2(5736),如果MVM0DE(5735)設(shè)置為強度補償)指示圖像是混合MV類型的,則它存在于隔行掃描P半幀中。4MVBPTAB(5744)用信號表示四個代碼表中哪一個(用兩比特值指定的表0至3)用于編碼/解碼4MV宏塊中的4MV塊模式4MVBP(5764)字段。隔行掃描幀頭部(未示出)具有許多與圖57B所示的隔行掃描P半幀頭部相同的元素。這些包括PTYPE(5722)、MBM0DETAB(5742).MVTAB(5743)和4MVBPTAB(5744),盡管隔行掃描幀的精確句法和語義可不同于隔行掃描P半幀。例如,4MVBPTAB也是一個2比特字段,它指示四個代碼表中哪一個(兩比特值指定的表0至3)用于編碼/解碼4MV宏塊中的4MV塊模式4MVBP元素。隔行掃描幀頭部還包括不同的元素,用于在1MV與4MV模式之間切換和用于強度補償信號表示。由于隔行掃描幀可包括具有每宏塊兩個運動矢量的半幀編碼宏塊,因此隔行掃描幀頭部包括兩個運動矢量塊模式表2MVBPTAB元素。2MVBPTAB是隔行掃描P幀中存在的2比特字段。該句法元素用信號表示四個表之一(用兩比特值指定的表0至3)用于2MV半幀編碼宏塊中的編碼/解碼2MV塊模式(2MVBP)元素。圖47K示出可用于2MVBP的四個表。隔行掃描B半幀和隔行掃描B幀具有許多與隔行掃描P半幀和隔行掃描P幀相同的元素。具體地,隔行掃描B幀包括2MVBPTAB和4MVBPTAB(5721)句法元素,盡管元素的語義可以與隔行掃描P半幀和幀不同。3.宏塊層句法和語義宏塊的數(shù)據(jù)由宏塊頭部和跟隨其后的塊層組成。圖57C是宏塊層比特流的句法圖,它示出構(gòu)成隔行掃描P半幀的宏塊的宏塊層的元素。宏塊模式MBM0DE(5761)元素是可變大小元素。它聯(lián)合地指示信息,諸如宏塊(1MV、4MV或幀內(nèi)編碼)的運動矢量數(shù)量、對該宏塊是否存在已編碼塊模式CBPCY(5762)以及(在某些情況下)對該宏塊是否存在運動矢量差分?jǐn)?shù)據(jù)。運動矢量數(shù)據(jù)MVDATA(5763)元素是可變大小元素,它編碼宏塊的運動矢量的運動矢量信息(例如,水平和垂直差分)。對于具有兩個參考半幀的隔行掃描P半幀,MVDATA(5763)還編碼用于在運動矢量的主和非主運動矢量預(yù)測值之間進行選擇的信息。如果MBM0DE(5761)指示宏塊具有四個運動矢量,則四個運動矢量塊模式4MVBP(5764)元素存在。4MVBP(5764)元素指示四個亮度塊中哪些包含非零運動矢量差分。使用一個代碼表將4MVBP(5764)元素解碼成0與14之間的值。當(dāng)表示為二進制值時,這個解碼的值表示指示相應(yīng)亮度塊的運動矢量是否存在的1比特字段,如圖34所示。兩個運動矢量塊模式2MVBP元素(未示出)是存在于隔行掃描P幀的宏塊中的可變大小句法元素。在隔行掃描幀宏塊中,如果MBM0DE(5761)指示宏塊具有2個半幀運動矢量,則2MVBP存在。在這種情況下,2MVBP指示2個半幀(上和下)中哪一個包含非零運動矢量差分。塊級運動矢量數(shù)據(jù)BLKMVDATA(5765)元素是在某些情況下存在的可變大小元素。它包含宏塊的塊的運動信息?;旌线\動矢量預(yù)測HYBRIDPRED(5766)元素是每運動矢量1比特句法元素,它可存在于隔行掃描P半幀的宏塊中。當(dāng)使用混合運動矢量預(yù)測時,HYBRIDPRED(5766)指示要使用兩個運動矢量預(yù)測值中的哪一個。4.塊層句法和語義隔行掃描圖像的塊層遵循逐行掃描圖像的塊層的句法和語義。通常,塊和子塊的DC和AC系數(shù)的信息是在塊層上用信號表示的。D.在第二組合實現(xiàn)中解碼下面的章節(jié)集中于隔行掃描P半幀的解碼過程。1.隔行掃描P半幀解碼的參考隔行掃描P半幀可以在運動補償中參考一個或兩個先前解碼的半幀。在圖像層中的NUMREF(5731)半幀指示當(dāng)前半幀可以參考一個還是兩個先前的參考半幀圖像。如果NUMREF=0,則當(dāng)前隔行掃描P半幀可以只參考一個半幀。在這種情況下,REFFIELD(5732)元素跟隨在圖像層比特流中并且指示哪一個半幀用作參考。如果REFFIELD=0,則時間上最近(在顯示順序中)的I或P半幀用作參考。如果REFFIELD=1,則時間上第二最近的I或P半幀圖像用作參考。如果NUMREF=1,則當(dāng)前隔行掃描P半幀圖像使用兩個時間上最近(在顯示順序中)的I或P半幀圖像作為參考。如上所述,圖24A-24F所示的NUMREF=0和NUMREF=1的參考半幀圖像的示例應(yīng)用于第二組合實現(xiàn)。2.圖像類型和圖像層表選擇隔行掃描P半幀可以是兩種類型之一1MV或混合MV。在1MVP半幀中,對于1MV宏塊,使用單個運動矢量來指示宏塊中全部6個塊的預(yù)測塊的位移。在混合MVP半幀中,宏塊可以被編碼為1MV或4MV宏塊。對于4MV宏塊,四個亮度塊的每一個可具有與它相關(guān)聯(lián)的運動矢量。1MV模式或混合MV模式是由MVM0DE(5735)和MVM0DE2(5736)圖像層塊用信號表示的。對于隔行掃描P半幀,圖像層包含控制半幀的運動補償模式和強度補償?shù)木浞ㄔ?。MVM0DE(5735)用信號表示下面任一個1)半幀的四個運動矢量模式之一,或者2)在半幀中使用強度補償。如果用信號表示強度補償,則在圖像層中接著有MVM0DE2(5736)、LUMSCALE(5738)和LUMSHIFT(5739)字段。圖47E中的兩個表之一用于解碼MVM0DE(5735)和MVM0DE2(5736)字段,取決于PQUANT是否大于12。如果運動矢量模式是混合MV模式,則MBM0DETAB(5742)用信號表示四個混合MVMBM0DE表中哪一個用于用信號表示半幀中每個宏塊的模式。如果運動矢量模式不是混合MV(在這種情況下全部幀間編碼的宏塊使用1個運動矢量),則MBM0DETAB(5742)用信號表示四個1MVMBM0DE表中哪一個用于用信號表示半幀中每個宏塊的模式。MVTAB(5742)指示用于解碼隔行掃描P半幀中宏塊的運動矢量差分的代碼表。4MVBPTAB(5744)指示用于解碼隔行掃描P半幀中4MV宏塊的4MVBP(5764)的代碼表。3.宏塊模式和運動矢量塊模式在隔行掃描P-半幀中的宏塊可以是3種可能類型之一1MV,4MV和幀內(nèi)編碼。宏塊類型是由宏塊層中的MBM0DE(5761)用信號表示的。1MV宏塊可以在1MV和混合MVP半幀中出現(xiàn)。在1MV宏塊中,單個運動矢量表示宏塊的全部6個塊的當(dāng)前與參考圖像之間的位移。當(dāng)前與參考塊之間的差異在塊層中編碼。對于1MV宏塊,MBM0DE(5761)指示以下三項(1)宏塊類型是1MV;(2)CBPCY(5762)是否存在;以及(3)MVDATA(5763)是否存在。如果MBM0DE(5761)指示CBPCY(5762)存在,則CBPCY(5762)存在于宏塊層并且指示6個塊中哪些編碼在塊層中。如果MBM0DE(5761)指示CBPCY(5762)不存在,則CBPCY(5762)假定等于0,并且宏塊中的6個塊中任何一個都不存在塊數(shù)據(jù)。如果MBM0DE(5761)指示MVDATA(5763)存在,則MVDATA(5763)存在于宏塊層中并且編碼運動矢量差分,它與運動矢量預(yù)測值組合來重構(gòu)運動矢量。如果MBM0DE(5761)指示MVDATA(5763)不存在,則運動矢量差分假定為零,并且因此運動矢量等于運動矢量預(yù)測值。4MV宏塊只出現(xiàn)在混合MVP半幀中。在4MV宏塊中,宏塊中四個亮度塊的每一個可具有一個相關(guān)聯(lián)的運動矢量,它指示該塊的當(dāng)前與參考圖像之間的位移。色度塊的位移是從四個亮度運動矢量導(dǎo)出的。當(dāng)前與參考塊之間的差異在塊層中編碼。對于4MV宏塊,MBM0DE(5761)指示以下三項(1)宏塊類型是4MV;(2)CBPCY(5762)是否存在;以及(3)4MVBP(5764)是否存在。如果MBM0DE(5761)指示4MVBP(5764)存在,則4MVBP(5764)存在于宏塊層中并且指示四個亮度塊中的哪些包含非零運動矢量差分。4MVBP(5764)被解碼成0與14之間的值,它在表示為二進制值時表示1比特字段,它指示相應(yīng)亮度塊的運動矢量數(shù)據(jù)是否存在,如圖27所示。對于4MVBP(5764)中4比特位置的每一個,值0指示該塊不存在運動矢量差分(BLKMVDATA(5765)),并且運動矢量差分假定為0。值1指示該塊存在運動矢量差分(BLKMVDATA(5765))。如果MBM0DE(5761)指示4MVBP(5764)不存在,則假定全部四個亮度塊存在運動矢量差分?jǐn)?shù)據(jù)(BLKMVDATA(5765))。在隔行掃描幀中的半幀編碼宏塊可包括2個運動矢量。在2個半幀MV宏塊的情況下,2MVBP元素指示兩個半幀中哪些具有非零差分運動矢量。幀內(nèi)編碼宏塊可以出現(xiàn)在1MV或混合MVP半幀中。在幀內(nèi)宏塊中,在不參考任何先前圖像數(shù)據(jù)的情況下,編碼全部六個塊。當(dāng)前塊象素與常數(shù)值128之間的差異在塊層中編碼。對于幀內(nèi)編碼宏塊,MBM0DE(5761)指示以下兩項⑴宏塊類型是幀內(nèi)編碼;以及⑵CBPCY(5762)是否存在。對于幀內(nèi)編碼宏塊,CBPCY(5762)當(dāng)存在時,指示六個塊中的哪一個具有在塊層中編碼的AC系數(shù)數(shù)據(jù)。4.解碼運動矢量差分MVDATA(5763)和BLKDATA(5765)字段編碼宏塊或宏塊中的塊的運動信息。1MV宏塊具有單個MVDATA(5763)字段,而4MV宏塊可以具有零到四個BLKMVDATA(5765)。計算運動矢量差分對于一個參考(NUMREF=0)情況和兩個參考(NUMREF=1)情況是不同地進行的。在只有一個參考半幀的半幀圖像中,宏塊層中的每個MVDATA(5763)或BLKMVDATA(5765)字段聯(lián)合地編碼以下兩項(1)水平運動矢量差分分量;以及(2)垂直運動矢量差分分量。MVDATA(5763)或BLKMVDATA(5765)字段是一個哈夫曼VLC,后面跟著一個FLC。VLC的值確定FLC的大小。圖像層中的MVTAB(5743)字段指定用于解碼該VLC的表。圖58A示出偽代碼,它示出具有一個參考半幀的半幀圖像中的塊或宏塊的運動矢量的運動矢量差分解碼。在該偽代碼中,計算值dmv_x*dmv_y。值dmv_X是差分水平運動矢量分量,而值dmv_y是差分垂直運動矢量分量。變量k_x和k_y是用于長運動矢量的固定長度值,并且取決于如由MVRANGE(5733)定義的運動矢量范圍,如在圖58B的表中所示。值halfpel_flag是二進制值,指示使用二分之一象素還是四分之一象素精度用于圖像的運動補償。halfpelflag的值是由運動矢量模式確定的。如果模式是1MV或混合MV,則halfpel_flag=0和四分之一象素精度用于運動補償。如果模式是1MV象素或1MV二分之一象素雙線性,則halfpel_flag=1并且使用二分之一象素精度。offsetjable是如下定義的數(shù)組offset_table[9]={0,1,2,4,8,16,32,64,128}.在具有兩個參考半幀的半幀圖像中,宏塊層中的每個MVDATA(5763)或BLKMVDATA(5765)字段聯(lián)合地編碼以下三項(1)水平運動矢量差分分量;(2)垂直運動矢量差分分量;以及(3)使用主還是非主運動矢量預(yù)測值。MVDATA(5763)或BLKMVDATA(5765)字段是一個哈夫曼VLC,后面跟著一個FLC,并且VLC的值確定FLC的大小。MVTAB(5743)字段指定用于解碼VLC的表。圖59示出偽代碼,它示出具有兩個參考半幀的半幀圖像中塊或宏塊的運動矢量的運動矢量差分和主/非主預(yù)測值解碼。在該偽代碼中,值predict0r_flag是二進制標(biāo)志,它指示使用主還是非主運動矢量預(yù)測值(0=使用主預(yù)測值,1=使用非主預(yù)測值)。各種其它變量(包括dmv_x,dmv_y,k_x,k_y,halfpel_flag和offset_table[]如對一個參考半幀情況一樣地描述。表sizejable是如下定義的數(shù)組size-table[14]={10,0,1,1,2,2,3,3,4,4,5,5,6,6}.5.運動矢量預(yù)測值運動矢量是通過將在前面章節(jié)中計算出的運動矢量差分加到運動矢量預(yù)測值來計算的。預(yù)測值是從最多三個相鄰運動矢量計算出的。在1MV隔行掃描P半幀中,最多三個運動矢量用于計算當(dāng)前宏塊的預(yù)測值。相鄰預(yù)測值A(chǔ)、B和C的位置在圖5A和5B中示出。如對逐行掃描P幀所述,相鄰預(yù)測值是從左、上和右上宏塊取得的,除了在當(dāng)前宏塊是行中最后一個宏塊的情況下。在這種情況下,預(yù)測值B是從左上(代替右上)宏塊取得的。對于幀是一個宏塊寬的特殊情況,則預(yù)測值總是預(yù)測值A(chǔ)(上預(yù)測值)。在混合MV隔行掃描P半幀中,最多三個運動矢量用于計算當(dāng)前塊或宏塊的預(yù)測值。圖6A-10示出混合MVP半幀中1MV和4MV宏塊的三個候選運動矢量,如對逐行掃描P幀描述的。對于幀是一個宏塊寬的特殊情況,則預(yù)測值總是預(yù)測值A(chǔ)(上預(yù)測值)。如果圖像頭部中的NUMREF(5731)字段是0,則當(dāng)前隔行掃描P半幀可以只參考一個先前編碼的圖像。如果NUMREF=1,則當(dāng)前隔行掃描P半幀可以參考兩個最近的參考半幀圖像。在前一情況下,為每個運動矢量計算單個預(yù)測值。在后一種情況下,計算兩個運動矢量預(yù)測值。圖60A和60B中的偽代碼示出如何為一個參考半幀情況計算運動矢量預(yù)測值。變量fieldpred_X和fieldpred_y表示運動矢量預(yù)測值的水平和垂直分量。在2參考半幀隔行掃描P半幀(NUMREF=1)中,當(dāng)前半幀可以參考兩個最近的參考半幀。在這種情況下,為每個幀間編碼宏塊計算兩個運動矢量預(yù)測值。一個預(yù)測值來自相同極性的參考半幀,而另一個來自相反極性的參考半幀。圖61A-61F中的偽代碼描述如何在給出3個候選運動矢量預(yù)測值的情況下為兩個參考半幀情況計算運動矢量預(yù)測值。變量samefiledpred_x和samefieldpred_y表示來自相同半幀的運動矢量預(yù)測值的水平和垂直分量,而變量oppositefieldprecLx和oppositefieldprecLy表示來自相反半幀的運動矢量預(yù)測值的水平和垂直分量。變量dominantpredictor指示哪一個半幀包含主預(yù)測值。值predictor_flag(從運動矢量差分解碼的)指示使用主還是非主預(yù)測值。6.混合運動矢量預(yù)測如果隔行掃描P半幀是1MV或混合MV,則相對于A(上)和C(左)預(yù)測值測試在前面章節(jié)中計算的運動矢量預(yù)測值來確定在比特流中是否明確編碼了預(yù)測值。如果是,則存在指示是使用預(yù)測值A(chǔ)還是預(yù)測值C作為運動矢量預(yù)測值的一個比特。圖14A和14B中的偽代碼示出混合運動矢量預(yù)測解碼,使用如下變量變量prediCt0r_pre_X和prediCtor_pre_y和候選預(yù)測值A(chǔ)、B和C是如在前面章節(jié)中計算的(即,它們是相反半幀預(yù)測值或者它們是相同的半幀預(yù)測值,如由predictor_flag指示的)。變量predictor_post_x和predict0r_p0St_y分別是在檢查混合運動矢量預(yù)測之后的水平和垂直運動矢量預(yù)測值。7.重構(gòu)運動矢量對于1MV和4MV宏塊兩者,亮度運動矢量是通過將差分加到預(yù)測值來重構(gòu)的,如下my_x=(dmv_x+predictor_x)-smodrange_x,以及mv_y=(dmv_y+predictor_y)smodrange_y,其中變量range_x和range_y取決于MVRANGE(5733),并且在圖58B所示的表中指定的,并且其中運算“smod”是如下定義的有符號模。Asmodb=((A+b)%2b)-b,其中保證重構(gòu)的矢量是有效的。(Asmodb)位于b與b_l內(nèi).在1MV宏塊中,對用于構(gòu)成宏塊的亮度分量的四個塊將存在單個運動矢量。如果dmv_x指示宏塊是幀內(nèi)編碼的,則沒有運動矢量與宏塊相關(guān)聯(lián)。如果宏塊是跳過的,則dmv_x=0且dmv_y=0,因此mv_x=predictorx且mv_y=predictor_y。在4MV宏塊中,宏塊中幀間編碼的亮度塊的每一個具有它自己的運動矢量。因此,將有0至4個亮度運動矢量用于每個4MV宏塊。4MV宏塊中未編碼的塊可以用下面兩種方法之一出現(xiàn)(1)如果宏塊是跳過的并且宏塊是4MV(在這種情況下宏塊中的全部塊是跳過的);或者(2)如果宏塊的CBPCY(5762)指示該塊是未編碼的。如果塊沒有被編碼,則dmv_x=0且dmv_y=0,因此mv_x=predictor_x且。mv_y=predicotr_y8.導(dǎo)出色度運動矢量色度運動矢量是從亮度運動矢量導(dǎo)出的。而且,對于4MV宏塊,將色度塊編碼為幀間編碼還是幀內(nèi)編碼的判定是基于亮度塊的狀態(tài)作出的。色度運動矢量是在兩個步驟中重構(gòu)的。作為第一步驟,通過適當(dāng)?shù)亟M合和比例縮放亮度運動矢量獲得名義的色度運動矢量。比例縮放是以這樣一種方法進行的,即與四分之一象素偏移相比,二分之一象素是較佳的。在第二階段中,序列級1比特字段FASTUVMC字段用于確定色度運動矢量的進一步舍入是否必須。如果FASTUVMC=0,在第二階段中不進行舍入。如果FASTUVMC=1,在四分之一象素偏移處的色度運動矢量將舍入到最接近的整象素位置。另外,當(dāng)FASTUVMC=1時,將只使用雙線性濾波用于全部色度內(nèi)插。在1MV宏塊中,色度運動矢量是從亮度運動矢量中導(dǎo)出的,如下//s_RndTbl=0,s_RndTbl[l]=0,s_RndTbl[2]=0,s_RndTbl[3]=1cmv_x=(lmv_x+sRndTbl[lmv_x&3])>>1cmv_y=(lmv_y+s_RndTbl[lmv_y&3])>>1圖16B中的偽代碼出第一階段,即使用如下的變量,色度運動矢量是如何從4MV宏塊中四個亮度塊的運動信息中導(dǎo)出的。確定4MV宏塊的最多四個亮度運動矢量中的主極性,并且色度運動矢量是從具有主極性的亮度運動矢量確定的,(但不是從其它極性的亮度運動矢量)。9.強度補償如果強度補償用于參考半幀,則在使用參考幀中的象素作為預(yù)測值之前重新映射它們。當(dāng)使用強度補償時,LUMSCALE(5738)和LUMSHIFT(5739)存在于圖像比特流中。圖18或56中的偽代碼示出LUMSCALE(5738)和LUMSHIFT(5739)用于重新映射參考半幀象素。使用LUTY[]表重新映射參考的Y分量,并且使用LUTUV[]表重新映射U和V分量,如下=LUTY[pY],以及=LUTUV[puv],其中pY是參考半幀中的原始亮度象素值,是參考半幀中重新映射的亮度象素值,是參考半幀中原始的U或V象素值,并且是參考半幀中重新映射的U或V象素值。10.剩余的解碼當(dāng)CBPCY(5762)元素存在時,解碼器解碼宏塊的CBPCY(5762),其中CBPCY(5762)元素指示系數(shù)數(shù)據(jù)的存在/不存在。在塊層上,解碼器解碼幀間編碼的塊和幀內(nèi)編碼的塊的系數(shù)數(shù)據(jù)。為重構(gòu)幀間編碼的塊,解碼器⑴選擇變換類型(8x8,8x4,4x8或4x4),⑵解碼子塊模式,(3)解碼系數(shù),(4)執(zhí)行反變換,(5)執(zhí)行反量化,(6)獲得塊的預(yù)測,和(7)將預(yù)測和誤差塊相加。已經(jīng)參考各種實施例描述和示出了本發(fā)明的原理,將認(rèn)識到各種實施例可以在不脫離這樣的原理的情況下在排列和細(xì)節(jié)方面進行修改。應(yīng)該理解,在此描述的程序、過程或方法與任何特定類型的計算環(huán)境相關(guān)或受限于它,除非另外指示??稍诟鞣N類型的通用或?qū)S玫挠嬎悱h(huán)境下使用或者按照在此描述的教導(dǎo)執(zhí)行操作。在軟件中所示的實施例元素可用硬件實現(xiàn),反之亦然。鑒于許多可應(yīng)用本發(fā)明原理的可能實施例,因此要求保護落在所附的權(quán)利要求書及其等價技術(shù)方案的范圍和精神內(nèi)的所有這樣的實施例作為本發(fā)明。權(quán)利要求一種方法,包括處理表示具有多個亮度運動矢量的宏塊的第一信息的第一可變長度代碼,其中,所述第一信息對于所述宏塊的每個亮度運動矢量包括一個運動矢量數(shù)據(jù)存在指示符;以及處理表示所述宏塊的第二信息的第二可變長度代碼,其中,所述第二信息包括所述宏塊的多個塊的多個變換系數(shù)數(shù)據(jù)存在指示符。2.如權(quán)利要求1所述的方法,其特征在于,每個所述運動矢量數(shù)據(jù)存在指示符指示是否為所述多個亮度運動矢量中的相應(yīng)一個用信號表示運動矢量數(shù)據(jù),所述方法還包括對于由所述第一信息指示其運動矢量數(shù)據(jù)存在的多個亮度運動矢量的每一個處理運動矢量數(shù)據(jù)。3.如權(quán)利要求2所述的方法,其特征在于,所述運動矢量數(shù)據(jù)包括運動矢量差分信息和/或預(yù)測值極性選擇。4.如權(quán)利要求1所述的方法,其特征在于,所述宏塊具有四個亮度運動矢量,并且其中,所述第一信息由四個運動矢量數(shù)據(jù)存在指示符組成。5.如權(quán)利要求1所述的方法,其特征在于,所述宏塊具有兩個亮度運動矢量,并且其中,所述第一信息由兩個運動矢量數(shù)據(jù)存在指示符組成。6.如權(quán)利要求1所述的方法,其特征在于,所述第一和第二可變長度代碼的處理包括用所述第一和第二可變長度代碼編碼。7.如權(quán)利要求1所述的方法,其特征在于,所述第一和第二可變長度代碼的處理包括解碼所述第一和第二可變長度代碼。8.如權(quán)利要求1所述的方法,其特征在于,每個運動矢量數(shù)據(jù)存在指示符是單個比特。9.如權(quán)利要求1所述的方法,其特征在于,還包括處理表選擇代碼,它指示多個可變長度代碼表中的哪一個要用于處理所述第一可變長度代碼。10.如權(quán)利要求9所述的方法,其特征在于,所述表選擇代碼是在圖像級或者片級上用信號表示的。11.如權(quán)利要求9所述的方法,其特征在于,所述表選擇代碼是定長代碼。12.一種方法,包括對于具有第一數(shù)量的亮度運動矢量的宏塊,其中所述第一數(shù)量比一大,處理一運動矢量塊模式,所述模式由第二數(shù)量的比特組成,其中所述第二數(shù)量等于所述第一數(shù)量,并且其中,每個所述比特指示所述亮度運動矢量中相應(yīng)的一個在比特流中是否具有用信號表示的相關(guān)聯(lián)的運動矢量數(shù)據(jù);以及對于指示要在比特流中用信號表示其相關(guān)聯(lián)的運動矢量數(shù)據(jù)的亮度運動矢量的每一個處理相關(guān)聯(lián)運動矢量數(shù)據(jù)。13.如權(quán)利要求12所述的方法,其特征在于,還包括處理已編碼塊模式,所述模式指示宏塊的多個塊中的哪一些在比特流中具有用信號表示的相關(guān)聯(lián)變換系數(shù)數(shù)據(jù)。14.如權(quán)利要求12所述的方法,其特征在于,所述相關(guān)聯(lián)運動矢量數(shù)據(jù)包括運動矢量差分{曰息。15.如權(quán)利要求14所述的方法,其特征在于,所述相關(guān)聯(lián)運動矢量數(shù)據(jù)還包括預(yù)測值極性選擇。16.如權(quán)利要求12所述的方法,其特征在于,所述宏塊具有四個亮度運動矢量,分別用于所述宏塊的四個亮度塊。17.如權(quán)利要求12所述的方法,其特征在于,所述宏塊具有兩個亮度運動矢量,分別用于所述宏塊的上半幀和下半幀。18.如權(quán)利要求12所述的方法,其特征在于,所述宏塊具有四個亮度運動矢量,分別用于所述宏塊的上半幀和下半幀的左半側(cè)和右半側(cè)。19.如權(quán)利要求12所述的方法,其特征在于,所述運動矢量塊模式的處理包括用可變長度代碼來編碼所述運動矢量塊模式。20.如權(quán)利要求12所述的方法,其特征在于,所述運動矢量塊模式的處理包括解碼表示所述運動矢量塊模式的可變長度代碼。21.如權(quán)利要求12所述的方法,其特征在于,還包括處理表選擇代碼,所述表選擇代碼指示多個可變長度代碼表中的哪一個要用于處理所述運動矢量塊模式。22.—種解碼器,包括用于解碼表示多個運動矢量塊模式的多個可變長度代碼的裝置,其中所述多個運動矢量塊模式的每一個對于具有多個亮度運動矢量的宏塊的每個相應(yīng)亮度運動矢量具有一個比特,所述一個比特指示是否用信號表示相應(yīng)亮度運動矢量的運動矢量數(shù)據(jù);以及用于解碼運動矢量數(shù)據(jù)的裝置。23.如權(quán)利要求22所述的解碼器,其特征在于,還包括用于從多個可用可變長度代碼表中選擇一個可變長度代碼表的裝置,所述多個可用可變長度代碼表用于解碼表示所述多個運動矢量塊模式的多個可變長度代碼。全文摘要描述了編碼和解碼隔行掃描視頻的各種技術(shù)和工具,包括(1)隔行掃描前向預(yù)測半幀的混合運動矢量預(yù)測,(2)使用運動矢量塊模式,(3)在運動矢量預(yù)測值的主和非主極性之間選擇,(4)參考半幀選擇信息和差分運動矢量信息的聯(lián)合編碼和解碼,(5)隔行掃描前向預(yù)測半幀的宏塊的聯(lián)合編碼/解碼,(6)使用可用于隔行掃描前向預(yù)測半幀的參考半幀數(shù)量的信號,以及(7)導(dǎo)出隔行掃描前向預(yù)測半幀的宏塊的色度運動矢量。各種技術(shù)與工具可以組合或者獨立地使用。文檔編號H04NGK101848386SQ201010110149公開日2010年9月29日申請日期2004年9月3日優(yōu)先權(quán)日2003年9月7日發(fā)明者C·-L·林,P·蘇,S·斯里尼瓦杉,T·W·赫爾科比申請人:微軟公司