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

隔行掃描視頻的高級雙向預(yù)測編碼的制作方法

文檔序號:7607734閱讀:308來源:國知局

專利名稱::隔行掃描視頻的高級雙向預(yù)測編碼的制作方法
技術(shù)領(lǐng)域
:描述了用于隔行掃描視頻編碼和解碼的技術(shù)和工具。例如,視頻編碼器對隔行掃描視頻中的雙向預(yù)測宏塊進行編碼。
背景技術(shù)
:數(shù)字視頻消耗大量的存儲和傳輸容量。典型的原始數(shù)字視頻序列包括每秒15或30個圖片。每個圖片可包括數(shù)萬或數(shù)十萬個像素(也稱為pel)。每個像素表示圖片的小元素。在原始形式中,計算機通常用24個比特或以上來表示像素。因而,典型的原始數(shù)字視頻序列的每秒比特數(shù)或比特率可以是5百萬比特/秒或以上。大多數(shù)計算機和計算機網(wǎng)絡(luò)缺乏處理原始數(shù)字視頻的資源。為此,工程師們使用壓縮(也稱為譯碼或編碼)來降低數(shù)字視頻的比特率。壓縮可以是無損的,其中視頻的質(zhì)量未受損,但比特率的降低受視頻復(fù)雜性的限制?;蛘?,壓縮可以是有損的,其中視頻的質(zhì)量受損,但可獲得的比特率降幅更大。解壓縮是壓縮的反向過程。一般而言,視頻壓縮技術(shù)包括"幀內(nèi)"壓縮和"幀間"或預(yù)測壓縮。幀內(nèi)壓縮技術(shù)壓縮通常稱為I-幀或關(guān)鍵幀的各個圖片。幀間壓縮技術(shù)參考前面和/或后續(xù)的各幀來壓縮各個幀,而經(jīng)幀間壓縮的幀通常稱為預(yù)測幀、P-幀、或B-幀。I.WindowsMediaVideo版本8禾Q9中的幀間壓縮微軟公司的WindowsMediaVideo版本8["WMV8"]包括視頻編碼器和視頻解碼器。WMV8編碼器使用幀內(nèi)壓縮和幀間壓縮,且WMV8解碼器使用幀內(nèi)解壓縮和幀間解壓縮。WindowsMediaVideo版本9["WMV9"]則將類似的體系結(jié)構(gòu)用于許多操作。WMV8編碼器中的幀內(nèi)壓縮使用基于塊的運動補償預(yù)測編碼,然后使用殘差的變換編碼。圖1和2示出WMV8編碼器中預(yù)測幀的基于塊的幀間壓縮。特別地,圖1示出對預(yù)測幀110的運動估計,而圖2示出對預(yù)測幀的運動補償塊的預(yù)測殘差壓縮。例如,在圖1中,WMV8編碼器計算用于預(yù)測幀110中的宏塊115的運動向量。為了計算該運動向量,編碼器在參考幀130的搜索區(qū)域135中進行搜索。在搜索區(qū)域135內(nèi),編碼器對來自預(yù)測幀110的宏塊115和各個候選宏塊作比較,以便于尋找是好匹配的候選宏塊。編碼器輸出指定匹配宏塊的(經(jīng)熵編碼的)運動向量。因為運動向量值常常相關(guān)于空間上位于四周的運動向量的值,所以用來傳送運動向量信息的數(shù)據(jù)的壓縮可通過從相鄰宏塊中選擇運動向量預(yù)測值,并使用該預(yù)測值來預(yù)測當前宏塊的運動向量來獲得。編碼器可編碼運動向量和預(yù)測值之前的差值。在通過將差值添加到預(yù)測值中重構(gòu)運動向量之后,解碼器使用該運動向量來用來自參考幀130的信息計算用于宏塊115的預(yù)測宏塊,該參考幀是在編碼器和解碼器上可用的先前重構(gòu)幀。預(yù)測很少是完美的,所以編碼器常常編碼預(yù)測宏塊和宏塊115本身之間的像素差異(也稱為誤差或殘差塊)的各個塊。圖2示出WMV8編碼器中誤差塊235的計算和編碼的一個示例。該誤差塊235是預(yù)測塊215和原始當前塊225之間的差異。編碼器將離散余弦變換["DCT"]240應(yīng)用于誤差塊235,得到系數(shù)的8x8塊245。然后編碼器量化(250)DCT系數(shù),得到經(jīng)量化的DCT系數(shù)的8x8塊255。編碼器將8x8塊255掃描(260)成一維數(shù)組265,從而系數(shù)通常從最低頻率到最高頻率進行排序。編碼器使用運行長度編碼270的變體來熵編碼經(jīng)掃描的系數(shù)。編碼器從一個或多個run/level/last表格275中選擇熵碼,并輸出該熵碼。圖3示出對經(jīng)幀間編碼塊的相應(yīng)解碼過程300的一個示例。從圖3總地看來,解碼器使用具有一個或多個run/level/last表格315的可變長度解碼310和運行長度解碼320來解碼(310、320)表示預(yù)測殘差的經(jīng)熵編碼的信息。解碼器將存儲了經(jīng)熵編碼信息的一維數(shù)組325逆掃描(330)成二維塊335。解碼器逆量化并逆離散余弦變換(一起編號為340)該數(shù)據(jù),產(chǎn)生經(jīng)重構(gòu)的誤差塊345。在獨立的運動補償路徑中,解碼器使用運動向量信息355來計算預(yù)測塊365,用于相對參考幀的位移。解碼器將預(yù)測塊365與經(jīng)重構(gòu)的誤差塊345組合(370)在一起,以形成重構(gòu)塊375。原始和重構(gòu)幀之間的改變量是失真,且編碼該幀所需的比特數(shù)表示該幀的速率。失真量大致與速率成反比。II.隔行掃描視頻和逐行掃描視頻視頻幀包含視頻信號的各行空間信息。對于逐行掃描視頻,這些行包含從一時刻開始并繼續(xù)后續(xù)行直到幀的底部的樣本。逐行掃描I幀是幀內(nèi)編碼的逐行掃描視頻幀。逐行掃描P幀是使用正向預(yù)測編碼的逐行掃描視頻幀,而逐行掃描B幀是使用雙向預(yù)測編碼的逐行掃描視頻幀。典型的隔行掃描視頻幀由在不同時間開始掃描的兩個半幀組成。例如,參照圖4,隔行掃描的視頻幀400包括上半幀410和下半幀420。通常,偶數(shù)編號行(上半幀)在一時間(例如時間t)開始掃描而奇數(shù)編號行(下半幀)在不同(通常為后續(xù))時間(例如時間t+l)開始掃描。該定時可在隔行掃描視頻幀的區(qū)域中創(chuàng)建鋸齒狀特征,其中因為兩個半幀在不同時間開始掃描而呈現(xiàn)運動。因此,各個隔行掃描的視頻幀可根據(jù)半幀結(jié)構(gòu)來重新排列,其中奇數(shù)行組合在一個半幀中而偶數(shù)行組合在另一個半幀中。稱為半幀編碼的該排列對在高運動圖片中減少這種鋸齒邊緣人工效應(yīng)是有用的。另一方面,在靜態(tài)區(qū)域中,隔行掃描視頻幀中的圖像細節(jié)無需這種重新排列就可更為有效地保留。因此,幀編碼常用于靜態(tài)或低運動的隔行掃描視頻幀,其中原始的交替半幀行排列得以保留。典型的逐行掃描視頻幀由具有非交替行的一內(nèi)容幀組成。與隔行掃描視頻相比,逐行掃描視頻不將視頻幀分成各個半幀,并且整個幀從某個時間開始進行從左到右、從上到下的掃描。III.先前WMV編碼器和解碼器中的P-幀編碼和解碼先前的WMV編碼器和解碼器使用P-幀中的逐行掃描及隔行掃描的編碼和解碼。在隔行掃描和逐行掃描的P-幀中,運動向量通過計算運動向量和運動向量預(yù)測值之間的差值來在編碼器中編碼,其中運動向量預(yù)測值基于相鄰的運動向量進行計算。并且,在解碼器中,運動向量通過將運動向量差值添加到運動向量預(yù)測值來重新構(gòu)建,其中運動向量預(yù)測值再次基于相鄰的運動向量進行計算(這次是在解碼器中)。當前宏塊的預(yù)測值或當前宏塊的半幀基于候選預(yù)測值來選擇,而運動向量差值基于該預(yù)測值來計算。通過將運動向量差值添加到編碼器側(cè)或解碼器側(cè)的選定運動向量預(yù)測值,可重構(gòu)運動向量。通常,亮度運動向量從經(jīng)編碼的運動信息中重構(gòu),而色度運動向量從經(jīng)重構(gòu)的亮度運動向量中導(dǎo)出。A.逐行掃描P-幀的編碼和解碼例如,在先前的WMV編碼器和解碼器中,逐行掃描P-幀可包含以一運動向量(1MV)模式或四運動向量(4MV)模式編碼的宏塊,或被跳過的宏塊,其中決定通常在逐個宏塊的基礎(chǔ)上作出。僅具有1MV宏塊(以及可能被跳過的宏塊)的P-幀被稱為1MVP-幀,而都具有1MV和4MV宏塊(以及可能被跳過的宏塊)的P-幀被稱為混合MV的P-幀。一個運動向量與每個1MV宏塊相關(guān)聯(lián),而四個運動向量與每個4MV宏塊相關(guān)聯(lián)(每個塊一個)。圖5A和5B是示出被視作用于1MV逐行掃描P-幀中宏塊的候選運動向量預(yù)測值的宏塊的位置的示圖。候選預(yù)測值從左邊、上方和右上方宏塊中取得,除了宏塊是行中最后一個宏塊的情形。在該情形中,Predicator(預(yù)測值)B從左上方宏塊而不是從右上方中取得。對于幀為一個宏塊寬的特定情形,預(yù)測值總是預(yù)測值A(chǔ)(頂部預(yù)測值)。當因為宏塊在首行中從而預(yù)測值A(chǔ)在界限之外時,預(yù)測值為預(yù)測值C。各種其它規(guī)則解決其它特定情形,諸如幀內(nèi)編碼的預(yù)測值。圖6A-10示出被視作用于混合MV幀中的1MV或4MV宏塊的運動向量的至多3個候選運動向量的塊或宏塊的位置。在以下附圖中,較大的正方形是宏塊邊界而較小的正方形是塊邊界。對于幀為一個宏塊寬的特定情形,預(yù)測值總是PredictorA(頂部預(yù)測值)。各種其它規(guī)則解決其它特定情形,諸如用于首行4MV宏塊的首行塊、首行1MV宏塊、以及幀內(nèi)編碼預(yù)測值。圖6A和6B是示出被視作用于混合MV幀中的1MV當前宏塊的候選運動向量預(yù)測值的塊的位置的示圖。相鄰的各個宏塊可以是1MV或4MV宏塊。圖6A和6B示出假設(shè)鄰居都是4MV的候選運動向量的位置(即預(yù)測值A(chǔ)是當前宏塊上面的宏塊中塊2的運動向量,而預(yù)測值C是當前宏塊左側(cè)緊鄰的宏塊中塊1的運動向量)。如果鄰居的任一個是1MV宏塊,則圖5A和5B中示出的運動向量預(yù)測值被視為整個宏塊的運動向量預(yù)測值。如圖6B所示,如果宏塊是該行中的最后一個宏塊,則預(yù)測值B來自左上方宏塊的塊3而不像其它情形一樣來自右上方宏塊的塊2。圖7A-10示出被視作用于4MV宏塊中4個亮度塊的每一個的候選運動向量預(yù)測值的塊的位置。圖7A和7B是示出被視作用于位置0上一個塊的候選運動向量預(yù)測值的塊的位置的示圖;圖8A和8B是示出被視作用于位置1上一個塊的候選運動向量預(yù)測值的塊的位置的示圖;圖9是示出被視作用于位置2上一個塊的候選運動向量預(yù)測值的塊的位置的示圖;而圖10是示出被視作用于位置3上一個塊的候選運動向量預(yù)測值的塊的位置的示圖。再一次,如果鄰居是1MV宏塊,則該宏塊的運動向量預(yù)測值用于該宏塊的各個塊。對于宏塊是行中第一宏塊的情形,塊0的預(yù)測值B與該行中剩余宏塊的塊0進行不同的處理(參見圖7A和7B)。在該情形中,預(yù)測值B從當前宏塊上面緊鄰宏塊的塊3中取得,而不像其它情形一樣從當前宏塊左上方的宏塊的塊3中取得。類似地,對于宏塊是行中最后一個宏塊的情形,對塊1的預(yù)測值B進行不同的處理(參見圖8A和8B)。在該情形中,預(yù)測值從當前宏塊上面緊鄰宏塊的塊2中取得,而不像其它情形一樣從當前宏塊右上方的宏塊的塊2中取得。一般而言,如果該宏塊在第一宏塊列中,則塊0和2的預(yù)測值C被設(shè)置為等于0。B.先前WMV編碼器和解碼器中隔行掃描P-幀的編碼和解碼先前WMV編碼器和解碼器將4:1:1宏塊格式用于隔行掃描的P-幀,該宏塊格式可包含用半幀模式或幀模式編碼的宏塊,或被跳過的宏塊,其中決定通常在逐個宏塊的基礎(chǔ)上作出。兩個運動向量關(guān)聯(lián)于每個半幀編碼的宏塊(每個半幀一個運動向量),而一個運動向量關(guān)聯(lián)于每個幀編碼的宏塊。編碼器聯(lián)合編碼運動信息,包括水平和垂直運動向量差值分量,以及可能的其它信令信息。圖11和12A-B示出分別用于先前WMV編碼器和解碼器的隔行掃描P-幀中的幀編碼4:1:1宏塊和半幀編碼4:1:1宏塊的運動向量預(yù)測的候選預(yù)測值的示例。圖11示出用于隔行掃描P-幀的內(nèi)部位置中當前幀編碼4:1:1宏塊的候選預(yù)測值A(chǔ)、B和C(不是宏塊行中第一或最后一個宏塊、也不是首行)。預(yù)測值可從不同于那些標有A、B和C的不同候選方向中獲得(例如在諸如當前宏塊是行中第一宏塊或最后一個宏塊或在首行中的特定情形,因為對于這些情形得不到某些預(yù)測值)。對于當前的幀編碼宏塊,候選預(yù)測值取決于相鄰宏塊是半幀編碼還是幀編碼的來進行不同的計算。對于相鄰的幀編碼宏塊,運動向量簡便地取作候選預(yù)測值。對于相鄰的半幀編碼宏塊,候選運動向量通過平均上半幀和下半幀運動向量來確定。圖12A-B示出用于半幀內(nèi)部位置中半幀編碼的4:1:1宏塊內(nèi)的當前半幀的候選預(yù)測值A(chǔ)、B和C。在圖12A中,當前半幀是下半幀,且相鄰宏塊中的下半幀運動向量被用作候選預(yù)測值。在圖12B中,當前半幀是上半幀,且相鄰宏塊中的上半幀運動向量被用作候選預(yù)測值。因而,對于當前半幀編碼宏塊中的每個半幀,每個半幀的候選運動向量預(yù)測值的數(shù)量最多為3,其中每個候選值來自與當前半幀相同的同一半幀類型(例如上半幀或下半幀)。再一次,各種特定情形(未示出)在當前宏塊是行中第一宏塊或最后一個宏塊,或在首行中時應(yīng)用,因為對于這些情形得不到某些預(yù)測值。為了從候選預(yù)測值集中選擇一預(yù)測值,討論中的先前WMV編碼器和解碼器使用不同的選擇算法,諸如三者中值算法或四者中值算法。三者中值預(yù)測的過程在圖13的偽碼1300中說明。四者中值預(yù)測的過程在圖14的偽碼1400中說明。IV.雙向預(yù)測雙向預(yù)測幀(或B-幀)使用來自源視頻的兩個幀作為參考(或錨)幀,而不是在P-幀中使用的一個錨。在典型B-幀的錨幀中,一個錨幀來自時間上的過去而另一個錨幀來自時間上的將來。參照圖15,視頻序列中的B-幀1510具有時間上在先的參考幀1520和時間上將來的參考幀1530。使用B-幀提供了根據(jù)更大的比特率節(jié)約(例如出現(xiàn)某些類型的移動,諸如閉塞)而有效壓縮的優(yōu)點。具有B-幀的經(jīng)編碼比特流通常比沒有B-幀的經(jīng)編碼比特流使用較少的比特,同時提供相似的視覺質(zhì)量。B-幀還提供在較小設(shè)備空間中使用時的更多選項和靈活性。例如,解碼器可通過選擇不解碼或顯示B-幀來容許空間和時間限制,因為B-幀通常不被用作參考幀。對視頻序列中使用B-幀來使速率-失真改進的估計的范圍為從0到50%。V.先前WMV編碼器和解碼器中B-幀的編碼和解碼先前的WMV編碼器和解碼器使用B-幀。盡管正向預(yù)測幀(例如P-幀)中的宏塊僅具有一個方向模式的預(yù)測(正向,從先前的I-或P-幀),但B-幀中的宏塊可使用五種不同預(yù)測模式來預(yù)測正向、反向、直接、插值和幀內(nèi)。編碼器選擇并用信號表示比特流中不同的預(yù)測模式。例如,討論中的先前WMV編碼器在幀級別上發(fā)送經(jīng)壓縮的位平面,表示用于B-幀的每個宏塊的直接/非直接模式?jīng)Q定,而非直接模式(諸如正向、反向和插值模式)在宏塊級別中示出。正向模式類似于常規(guī)的P-幀預(yù)測。在正向模式中,宏塊從時間上在先的錨中導(dǎo)出。在反向模式中,宏塊從時間上后續(xù)的錨中導(dǎo)出。以直接或插值模式預(yù)測的宏塊在預(yù)測中使用正向和反向錨。直接和插值模式使用將兩個參考的像素值組合到一個宏塊像素集中的舍入平均,如以下公式所示平均像素值=(正向插值+反向插值+l)>>1A.共處(co-located)運動向量的分數(shù)編碼(FractionCoding)和縮放在討論中的先前WMV編碼器和解碼器中,編碼器通過縮放正向錨的共處運動向量來隱式地導(dǎo)出直接模式的運動向量。該縮放運算依賴于當前B-幀相對于其錨的時間位置。為了編碼參考圖片的時間位置,編碼器使用分數(shù)編碼。在分數(shù)編碼中,編碼器顯式地將當前B-幀的時間位置編碼為其兩個錨之間距離的一分數(shù)。變量BFRACTION用來表示不同的各個分數(shù),并在幀級別上發(fā)送。該分數(shù)在0和1之間離散值的有限集上取值。對于直接模式的運動向量,編碼器和解碼器使用該分數(shù)來縮放參考幀中的共處運動向量(MV),從而通過實現(xiàn)以下縮放運算來導(dǎo)出當前B-幀的隱式的直接模式運動向量(MVf和MVb):MV產(chǎn)分數(shù)承MVMV產(chǎn)(分數(shù)-1"MV圖16示出分數(shù)編碼如何使編碼器能任意縮放周圍參考幀之間的運動。為了導(dǎo)出在B-幀1620中編碼的當前宏塊的MVf和MVb,編碼器和解碼器使用分數(shù)編碼來縮放將來參考幀1630中相應(yīng)宏塊的運動向量(MV)。在圖16所示的示例中,對于分數(shù)p和q,p+q=l。該編碼器和解碼器使用兩個隱式的運動向量來處理在先參考幀1640和將來參考幀1630中的宏塊,并使用這些的平均來預(yù)測當前宏塊1610。例如,在圖16中,MFf辦*;)而肘^=(-&*9,-辦*9)。圖17中的表格1700是用于比特流元素BFRACTION的可變長度代碼(VLC)表格。在表格1700所示示例中,3-比特代碼字是"短"代碼字而7-比特代碼字是"長"代碼字。該解碼器根據(jù)圖18中所示偽碼1800基于分數(shù)的分子和分母來尋找縮放系數(shù)。一旦縮放系數(shù)已被確定,解碼器就用它來縮放用于共處宏塊的運動向量的x-和y-元素。給定后續(xù)的錨幀是P-幀(對于I-幀,所有的運動向量被假定為(O,O))且共處宏塊包含運動向量(MV一X,MV一Y),則解碼器導(dǎo)出兩個運動向量,其中一個(MV_XF,MV_YF)參考正向(在先)錨幀,而另一個(MV_XB,MV—YB)參考反向(后續(xù))錨幀。解碼器根據(jù)圖19中所示偽碼1900來執(zhí)行縮放。在偽碼1900的函數(shù)Scale—Direct—MV中,輸入MV一X和MV一Y是來自將來參考圖片的共處宏塊的運動向量的x-和y-元素,而輸出MV—XF、MV—YF、MV—Xb和MV—Ys是用于被解碼宏塊的正向和反向指示運動向量的x-和y-元素。B.B/I幀討論中的先前WMV編碼器和解碼器還在逐行掃描編碼和解碼中使用幀內(nèi)B-幀("B/I-幀")。B/I幀像I-幀一樣編碼,因為它們不依賴于參考幀。但與I-幀不一樣的是,B/I幀不是關(guān)鍵幀;不允許其它幀將B/I幀用作錨。C.隔行掃描的B-幀討論中的先前WMV編碼器和解碼器還使用隔行掃描的B-幀。隔行掃描B-幀中的宏塊可進行半幀編碼或幀編碼。經(jīng)幀編碼的宏塊可具有一個、兩個(例如插值模式的正向和反向運動向量,直接模式的導(dǎo)出正向和反向運動向量)、或沒有運動向量,而半幀編碼的宏塊可取決于預(yù)測模式具有多達四個運動向量。例如,在直接模式的半幀編碼宏塊中,導(dǎo)出四個隱式運動向量:上半幀的正向和反向運動向量,以及下半幀的正向和反向運動向量。盡管討論中的先前WMV編碼器和解碼器使用隔行掃描的B-幀,但它們在若干重要方面受限。例如,每個宏塊只允許一種宏塊預(yù)測模式(例如直接模式、正向模式等),不使用4MV編碼(即,對宏塊中的每個塊使用一個運動向量),且沒有任何B-幀部分可以是任何幀的運動補償?shù)膮⒖?。作為另一示例,討論中的先前WMV編碼器和解碼器的隔行掃描編碼和解碼(包括隔行掃描的B-幀)僅使用4:1:1宏塊格式執(zhí)行。VI.用于視頻壓縮和解壓縮的標準除了先前的WMV編碼器和解碼器之外,若干種國際標準涉及視頻壓縮和解壓縮。這些標準包括來自國際電信同盟["ITU"]的運動圖象專家組["MPEG"]1、2和4標準以及H.261、H.262、H.263和H.264標準。在國際標準中用來獲得數(shù)字視頻序列的數(shù)據(jù)壓縮的主要方法之一是減少圖片之間的時間冗余。這些流行壓縮方案(MPEG-1、MPEG-2、MPEG-4、H.261、H.263等)使用運動估計和補償。例如,當前幀被分成均勻的正方形區(qū)域(例如各個塊和/或宏塊)。每個當前區(qū)域的匹配區(qū)域通過發(fā)送該區(qū)域的運動向量信息來指定。該運動向量指示在先前編碼(和重構(gòu))幀中要用作當前區(qū)域的預(yù)測值的區(qū)域的位置。當前區(qū)域和參考幀中區(qū)域之間稱為誤差信號逐個像素差值被導(dǎo)出。該誤差信號通常具有比原始信號更低的熵。因此,信息可以較低速率進行編碼。因為在先前的WMV編碼器和解碼器中,運動向量值常常相關(guān)于空間上位于四周的運動向量,所以用來表示運動向量信息的數(shù)據(jù)的壓縮可通過編碼當前運動向量與基于先前編碼的、相鄰運動向量的預(yù)測值之間的差異來獲得。一些國際標準描述隔行掃描視頻幀的運動估計和補償。H.262標準使隔行掃描的視頻幀被編碼為單個幀或兩個半幀,其中幀編碼或半幀編碼可自適應(yīng)地在逐幀基礎(chǔ)上選擇。H.262標準描述基于半幀的預(yù)測,這是一種僅使用參考幀的一個半幀的預(yù)測模式。11.262標準還描述雙基預(yù)測,這是兩個正向的基于半幀預(yù)測值對隔行掃描P-圖片中的16xl6塊平均的預(yù)測模式。H.262標準的7.6節(jié)描述"半幀預(yù)測",包括在兩個參考半幀中進行選擇,以用作隔行掃描視頻幀的當前半幀的宏塊的運動補償。小節(jié)7.6.3描述運動向量預(yù)測和重構(gòu),其中給定宏塊的重構(gòu)運動向量變成經(jīng)后續(xù)編碼/解碼宏塊的運動向量預(yù)測值。這種運動向量預(yù)測在許多情形中未能充分預(yù)測用于隔行掃描視頻幀的半幀的宏塊的運動向量。此外,R262標準的7.6節(jié)描述B-圖片的"半幀預(yù)測"和"幀預(yù)測"。在"半幀預(yù)測"和"幀預(yù)測"中,對B-圖片的預(yù)測使用兩個最新重構(gòu)的參考幀(略去其它介入的B-圖片)執(zhí)行,這些參考幀可被編碼為兩個半幀或單個幀。知道了視頻壓縮和解壓縮對數(shù)字視頻的關(guān)鍵重要性,視頻壓縮和解壓縮是得以豐富開發(fā)的領(lǐng)域就不足為奇了。然而,不管先前的視頻壓縮和解壓縮技術(shù)的優(yōu)點是什么,它們并不具有以下技術(shù)和工具的優(yōu)點。
發(fā)明內(nèi)容總而言之,詳細描述涉及用于編碼和解碼雙向預(yù)測的隔行掃描視頻幀(例如隔行掃描的B-半幀、隔行掃描的B-幀)的各種技術(shù)和工具。所述技術(shù)和工具改進了速率/失真性能,并便于更好地支持具有較低CPU資源的設(shè)備(例如具有較小形狀系數(shù)的設(shè)備)。所述各實施例實現(xiàn)一種或多種用于編碼和/或解碼隔行掃描B-圖片的所述技術(shù)和工具,如下包括但不限于在一方面中,對于隔行掃描B-幀,編碼器/解碼器在隔行掃描B-幀的半幀編碼宏塊中的半幀之間切換預(yù)測模式。例如,編碼器/解碼器在半幀編碼宏塊中的上半幀的正向預(yù)測模式和下半幀的反向模式之間切換。同一半幀編碼宏塊內(nèi)正向和反向預(yù)測之間的切換使發(fā)現(xiàn)對隔行掃描B-幀的不同部分的有效預(yù)測模式更為靈活。在另一方面中,對于隔行掃描B-幀,編碼器/解碼器通過為先前解碼的時間后續(xù)錨的共處宏塊的上半幀和下半幀的每一個選擇至多一個代表性運動向量,計算當前宏塊的直接模式運動向量。例如,至少部分地基于編碼當前隔行掃描B-幀的宏塊的模式(例如1MV模式、2半幀MV模式等)執(zhí)行選擇。在又一方面中,對于隔行掃描B-半幀或隔行掃描B-幀,編碼器/解碼器使用4MV編碼。例如,4MV被用于單向預(yù)測模式(正向或反向模式),但不用于其它可用預(yù)測模式(例如直接、插值)。使用4MV允許對隔行掃描B-半幀和隔行掃描B-幀進行更準確的運動補償;將4MV限制在正向和反向模式減少了編碼開銷,并避免了關(guān)聯(lián)于組合4MV與諸如直接和插值的模式的解碼復(fù)雜性。在另一方面中,對于隔行掃描B-半幀或隔行掃描B-幀,正向運動向量使用來自正向運動向量緩沖區(qū)的先前重構(gòu)(或估計)的正向運動向量由編碼器/解碼器進行預(yù)測,而反向運動向量使用來自反向運動向量緩沖區(qū)的先前重構(gòu)(或估計)的反向運動向量進行預(yù)測。結(jié)果的運動向量被添加到相應(yīng)的緩沖區(qū)中。運動向量緩沖區(qū)中的空穴可用估計的運動向量值來填充。例如,對于隔行掃描B-幀,當正向預(yù)測用來預(yù)測運動向量且運動向量被添加到正向運動向量緩沖區(qū)中時,反向運動向量緩沖區(qū)中的相應(yīng)位置以僅將反向運動向量用作預(yù)測值的預(yù)測運動向量來填充("空穴填充")。作為另一示例,對于隔行掃描B-半幀,要為空穴填充在不同極性的運動向量(例如"相同極性"或"相反極性")之間選擇,編碼器/解碼器選擇主極性半幀運動向量。錨和當前幀之間的距離使用各種語法元素計算,且計算出的距離被用于縮放參考半幀運動向量。各個運動向量緩沖區(qū)和各個運動向量緩沖區(qū)中的空穴填充使得對隔行掃描B-半幀和隔行掃描B-幀的運動向量預(yù)測更為準確。在又一方面中,對于隔行掃描的B-半幀,編碼器/解碼器使用"自參考"幀。例如,當前幀中的第二個B-半幀在運動補償預(yù)測中參考來自當前幀的第一B-半幀。使幀中第一個B-半幀用作該幀中第二個B-半幀的參考使得第二個半幀的預(yù)測更加準確,同時還保留在當前幀中具有B-半幀的時間可縮放性優(yōu)點。在另一方面中,對于隔行掃描的B-半幀,編碼器發(fā)送指示用于隔行掃描B-半幀中的一個或多個宏塊的預(yù)測模式是正向還是非正向的二進制信息。例如,編碼器在經(jīng)壓縮位平面的B-半幀級別上發(fā)送正向/非正向決定信息。在經(jīng)壓縮位平面的B-半幀級別上發(fā)送正向/非正向預(yù)測模式?jīng)Q定信息可減少預(yù)測模式編碼的編碼開銷。解碼器執(zhí)行相應(yīng)的解碼。在又一方面中,對于隔行掃描的B-半幀,如果下一錨圖片的相應(yīng)半幀中的相應(yīng)宏塊使用四個運動向量編碼,則編碼器/解碼器使用利于主極性的邏輯來選擇直接模式的運動向量。例如,如果相應(yīng)宏塊的相同極性運動向量數(shù)量上超過其相反極性的運動向量,則編碼器/解碼器計算相同極性運動向量的中值,以獲得用于導(dǎo)出直接模式運動向量的運動向量。該選擇過程允許導(dǎo)出準確的用于具有4MV宏塊錨的隔行掃描B-半幀的直接模式運動向量。各種技術(shù)和工具可組合或單獨使用。從以下參照附圖進行的不同實施例的詳細描述中,本發(fā)明的其它特征和優(yōu)點將變得顯而易見。圖1是示出根據(jù)現(xiàn)有技術(shù)的視頻編碼器的運動估計的示圖。圖2是示出根據(jù)現(xiàn)有技術(shù)的視頻編碼器中預(yù)測殘差的8x8塊的基于塊的壓縮。圖3是示出根據(jù)現(xiàn)有技術(shù)的視頻編碼器中預(yù)測殘差的8x8塊的基于塊的解壓縮。圖4是示出根據(jù)現(xiàn)有技術(shù)的隔行掃描幀的示圖。圖5A和5B是示出用于根據(jù)現(xiàn)有技術(shù)的逐行掃描P-幀中1MV宏塊的候選運動向量預(yù)測值的宏塊的位置的示圖。圖6A和6B是示出用于根據(jù)現(xiàn)有技術(shù)的混合1MV/4MV逐行掃描P-幀中的1MV宏塊的候選運動向量預(yù)測值的塊的位置的示圖。圖7A、7B、8A、8B、9和10是示出用于根據(jù)現(xiàn)有技術(shù)的混合1MV/4MV逐行掃描P-幀中的4MV宏塊中各位置上塊的候選運動向量預(yù)測值的塊的位置的示圖。圖11是示出用于根據(jù)現(xiàn)有技術(shù)的隔行掃描P-幀中當前幀編碼宏塊的候選運動向量預(yù)測值的示圖。圖12A-12B是示出用于根據(jù)現(xiàn)有技術(shù)的隔行掃描P-幀中當前半幀編碼宏塊的候選運動向量預(yù)測值的示圖。圖13和14是示出根據(jù)現(xiàn)有技術(shù)的用于分別執(zhí)行三者中值和四者中值計算的偽碼的代碼示圖。圖15是示出根據(jù)現(xiàn)有技術(shù)的具有過去和將來參考幀的B-幀的示圖。圖16是示出根據(jù)現(xiàn)有技術(shù)的使用分數(shù)編碼的直接模式預(yù)測的示圖。圖17示出根據(jù)現(xiàn)有技術(shù)的比特流元素BFRACTION的VLC表格。圖18是示出根據(jù)現(xiàn)有技術(shù)的用于尋找縮放直接模式預(yù)測中共處宏塊的運動向量的縮放系數(shù)的偽碼的代碼清單。圖19是示出根據(jù)現(xiàn)有技術(shù)的用于根據(jù)縮放系數(shù)縮放共處宏塊中運動向量的X-和y-元素的偽碼的代碼清單。圖20是適當計算環(huán)境的框圖,結(jié)合該環(huán)境可實現(xiàn)若干所述實施例。圖21是通用視頻編碼器系統(tǒng)的框圖,結(jié)合該系統(tǒng)可實現(xiàn)若干所述實施例。圖22是通用視頻解碼器系統(tǒng)的框圖,結(jié)合該系統(tǒng)可實現(xiàn)若干所述實施例。圖23是在若干所述實施例中使用的宏塊格式的示圖。圖24A是一部分隔行掃描視頻幀的示圖,其中示出上半幀和下半幀的交替行。圖24B是為編碼/解碼組織成幀的隔行掃描視頻幀的示圖,而圖24C是為編碼/解碼組織成半幀的隔行掃描視頻幀的示圖。圖25和26是示出具有兩個參考半幀的隔行掃描P-半幀的示圖。圖27和28是示出使用所允許的最新參考半幀的隔行掃描P-半幀的示圖。圖29和30是示出使用所允許的第二最新參考半幀的隔行掃描P-半幀的示圖。圖31是示出運動向量的各垂直分量與當前和參考半幀極性的不同組合的相應(yīng)空間位置之間的關(guān)系的示圖。圖32是示出當前宏塊的兩組三個候選運動向量預(yù)測值的示圖。圖33A-33F是示出用于計算兩個參考半幀的隔行掃描P-或B-半幀中的運動向量預(yù)測值的偽碼的代碼清單。圖34A-34B是示出用于縮放來自一個半幀的預(yù)測值以導(dǎo)出來自另一個半幀的預(yù)測值的偽碼的代碼清單。圖35和36是示出關(guān)聯(lián)于不同參考幀距離的縮放運算值的表格。圖37是示出隔行掃描P-幀的2半幀MV宏塊中亮度塊的運動向量和色度塊的導(dǎo)出運動向量的示圖。圖38是示出隔行掃描P-幀的4幀MV宏塊中4個亮度塊的每一個的不同運動向量和4個色度子塊的每一個的導(dǎo)出運動向量的示圖。圖39是示出隔行掃描P-幀的4半幀MV宏塊中亮度塊的運動向量和色度塊的導(dǎo)出運動向量的示圖。圖40A-40B是示出隔行掃描P-幀的當前宏塊的候選預(yù)測值的示圖。圖41是示出使用不同預(yù)測模式預(yù)測隔行掃描B-幀的半幀編碼宏塊中的各個半幀的運動向量的技術(shù)的流程圖。圖42是示出計算隔行掃描B-幀的宏塊的直接模式運動向量的技術(shù)的流程43是先前已解碼的時間上后續(xù)錨幀的共處宏塊的各個塊的緩存運動向量的示圖,這些緩存運動向量用于計算隔行掃描B-幀的宏塊的直接模式運動向量。圖44是示出使用正向和/或反向運動向量緩沖區(qū)預(yù)測隔行掃描B-幀的當前宏塊的運動向量的技術(shù)的流程圖。圖45是示出用于預(yù)測宏塊運動向量的正向運動向量緩沖區(qū)和反向運動向量緩沖區(qū)中的運動向量的示圖。圖46是示出正向運動向量緩沖區(qū)和反向運動向量緩沖區(qū)中重構(gòu)宏塊的上半幀和下半幀運動向量的示圖。圖47是示出描述用于隔行掃描B-半幀運動向量預(yù)測中的實值緩存和空穴填充的極性選擇過程的偽碼的代碼清單。圖48A-48B是示出縮放來自一個半幀的預(yù)測值以導(dǎo)出來自另一半幀的預(yù)測值用于經(jīng)反向預(yù)測的隔行掃描B-半幀的偽碼的代碼清單。圖49是示出關(guān)聯(lián)于第一隔行掃描B-半幀的不同參考幀距離的縮放運算值的表格。圖50A和50B是示出隔行掃描B-半幀的參考半幀的示圖。圖51是示出用于在具有一個或多個位平面編碼模式的視頻編碼器中編碼隔行掃描B-半幀的宏塊的正向/非正向預(yù)測模式?jīng)Q定信息的技術(shù)的流程圖。圖52是示出用于解碼隔行掃描B-半幀的宏塊的正向/非正向預(yù)測模式?jīng)Q定信息的技術(shù)的流程圖,其中該決定信息由具有一個或多個位平面編碼模式的視頻編碼器編碼。圖53是顯示描述對用作隔行掃描B-半幀中直接模式運動向量的基礎(chǔ)的運動向量的選擇過程的偽碼的代碼清單。圖54是示出用于組合實現(xiàn)中隔行掃描B-半幀或BI-半幀的幀-層比特流語法的示圖。圖55是示出用于組合實現(xiàn)中隔行掃描B-半幀的半幀-層比特流語法的示圖。圖56是示出用于組合實現(xiàn)中隔行掃描BI-半幀的半幀-層比特流語法的示圖。圖57是用于組合實現(xiàn)中隔行掃描B-半幀的宏塊的宏塊-層比特流語法的示圖。圖58是用于組合實現(xiàn)中隔行掃描BI-半幀的宏塊的宏塊-層比特流語法的示圖。圖59是用于組合實現(xiàn)中隔行掃描B-幀的幀-層比特流語法的示圖。圖60是用于組合實現(xiàn)中隔行掃描B-幀的宏塊的宏塊-層比特流語法的示圖。圖61A-61B是示出用于組合實現(xiàn)中解碼運動向量差值和主/非主預(yù)測值信息的偽碼的代碼清單。圖62A-62F是示出用于組合實現(xiàn)中計算雙參考隔行掃描P-半幀中的運動向量預(yù)測值的偽碼的代碼清單。圖63是示出用于組合實現(xiàn)中確定隔行掃描B-半幀的參考半幀的偽碼的代碼清單。圖64是示出用于組合實現(xiàn)中收集隔行掃描P-幀的1MV宏塊的候選運動向量的偽碼的代碼清單。圖65、66、67和68是示出用于組合實現(xiàn)中收集隔行掃描P-幀的4幀MV宏塊的候選運動向量的偽碼的代碼清單。圖69和70是示出用于組合實現(xiàn)中收集隔行掃描P-幀的2半幀MV宏塊的候選運動向量的偽碼的代碼清單。圖71、72、73和74是示出用于組合實現(xiàn)中收集隔行掃描P-幀的4半幀MV宏塊的候選運動向量的偽碼的代碼清單。圖75是示出用于組合實現(xiàn)中計算隔行掃描P-幀的幀運動向量的運動向量預(yù)測值的偽碼的代碼清單。圖76是示出用于組合實現(xiàn)中計算隔行掃描P-幀的半幀運動向量的運動向量預(yù)測值的偽碼的代碼清單。圖77A和77B是示出用于組合實現(xiàn)中解碼隔行掃描P-幀和B-幀的運動向量差值的偽碼的代碼清單。圖78是示出用于組合實現(xiàn)中導(dǎo)出隔行掃描P-幀的色度運動向量的偽碼的代碼清單。圖79A-79C是示出用于隔行掃描B-半幀的宏塊的正向/非正向預(yù)測模式?jīng)Q定信息的Norm-6和Diff-6位平面編碼模式的平鋪顯示的示圖。具體實施例方式本申請涉及用于隔行掃描視頻的有效壓縮和解壓縮的技術(shù)和工具。在各個所述實施例中,視頻編碼器和解碼器結(jié)合用于編碼和解碼雙向預(yù)測的隔行掃描視頻幀的技術(shù),和以包括各種層或級別(例如序列級別、幀級別、半幀級別、宏塊級別、和/或塊級別)的比特流格式或語法使用的相應(yīng)信號表示技術(shù)。對所述實現(xiàn)的各種可選方案是可能的。例如,參照流程圖描述的方法可通過改變各流程圖中所示的各階段的順序、或重復(fù)或略去某些階段等來變更。作為另一示例,盡管某些實現(xiàn)參照特定宏塊格式進行了描述,但是也可使用其它格式。此外,參照雙向預(yù)測描述的技術(shù)和工具也可應(yīng)用于其它類型的預(yù)測。各種技術(shù)和工具可組合或獨立地使用。不同實施例實現(xiàn)所述技術(shù)和工具的一種或多種。在此所述的一些技術(shù)和工具可用于視頻編碼器或解碼器,或者在一些其它系統(tǒng)中并非具體受限于視頻編碼或解碼。I.計算環(huán)境圖20示出可實現(xiàn)若干所述實施例的適當計算環(huán)境2000的通用示例。計算環(huán)境2000并非旨在提出對本發(fā)明使用范圍或功能的任何限制,因為本發(fā)明的技術(shù)和工具可在不同的通用或?qū)S糜嬎悱h(huán)境中實現(xiàn)。參照圖20,計算環(huán)境2000包括至少一個處理單元2010和存儲2020。在圖20中,該最基本配置2030包括在虛線內(nèi)。處理單元2010執(zhí)行計算機可執(zhí)行指令,且可以是實際或虛擬處理器。在多處理系統(tǒng)中,多個處理單元執(zhí)行計算機可執(zhí)行指令以增加處理能力。存儲器2020可以是易失性存儲器(例如寄存器、高速緩存、RAM)、非易失性存儲器(例如ROM、EEPROM、閃存等)或兩者的組合。存儲器2020存儲實現(xiàn)進行隔行掃描視頻幀的雙向預(yù)測的視頻編碼器或解碼器的軟件2080。計算環(huán)境可具有附加特征。例如,計算環(huán)境2000包括存儲2040、一個或多個輸入設(shè)備2050、一個或多個輸出設(shè)備2060、以及一個或多個通信連接2070。諸如總線、控制器或網(wǎng)絡(luò)的互連機制(未示出)使計算環(huán)境2000的各個組件互相連接。通常,操作系統(tǒng)軟件(未示出)向在計算環(huán)境2000中執(zhí)行的其它軟件提供一個操作環(huán)境,并協(xié)調(diào)計算環(huán)境2000的各個組件的動作。存儲2040可以是可移動或不可移動的,并包括磁盤、磁帶或盒式磁帶、CD-ROM、CD-RW、DVD、或任何其它可用于存儲信息并可在計算環(huán)境2000內(nèi)訪問的媒體。存儲2040為軟件2080存儲實現(xiàn)視頻編碼器或解碼器的指令。輸入設(shè)備2050可以是諸如鍵盤、鼠標、電子筆、或跟蹤球、語音輸入設(shè)備、掃描設(shè)備、或向計算環(huán)境2000提供輸入的另一設(shè)備。對于音頻或視頻編碼,輸入設(shè)備2050可以是接受模擬或數(shù)字形式的音頻或視頻輸入的聲卡、視頻卡、TV調(diào)諧器卡或相似設(shè)備、或?qū)⒁纛l或視頻樣本讀入計算環(huán)境2000中的CD-ROM或CD-RW。輸出設(shè)備2060可以是顯示器、打印機、揚聲器、CD刻錄機、或從計算環(huán)境2000提供輸出的另一設(shè)備。通信連接2070允許經(jīng)通信媒體與另一計算實體的通信。通信媒體在已調(diào)制數(shù)據(jù)信號中傳送諸如計算機可執(zhí)行指令、音頻或視頻輸入或輸出、或其它數(shù)據(jù)等信息。已調(diào)制數(shù)據(jù)信號是使其特征的一個或多個以在信號中編碼信息的方式進行設(shè)置或改變的信號。作為示例且非限制,通信媒體包括用電子、光學、RF、紅外線、聲學或其它載體實現(xiàn)的有線或無線技術(shù)。這些技術(shù)和工具可在計算機可讀媒體的一般上下文中描述。計算機可讀媒體是可在計算環(huán)境內(nèi)訪問的任何可用媒體。作為示例,但非限制,對于計算環(huán)境2000,計算機可讀媒體包括存儲器2020、存儲2040、通信媒體、以及以上任一個的組合。這些技術(shù)和工具可在計算機可執(zhí)行指令的一般上下文中描述,諸如在目標實際或虛擬處理器上的計算環(huán)境中執(zhí)行的程序模塊所包括的計算機可執(zhí)行指令。通常,程序模塊包括執(zhí)行具體任務(wù)或?qū)崿F(xiàn)具體抽象數(shù)據(jù)類型的例程、程序、庫、對象、類、組件、數(shù)據(jù)結(jié)構(gòu)等。程序模塊的功能可在各個實施例中按需在程序模塊之間組合或劃分。程序模塊的計算機可執(zhí)行指令可在本地或分布式的計算環(huán)境內(nèi)執(zhí)行。為說明起見,詳細描述使用像"估計"、"補償"、"預(yù)測"和"應(yīng)用"的術(shù)語來描述計算環(huán)境中的計算機操作。這些術(shù)語是由計算機執(zhí)行的操作的高層抽象,且不應(yīng)與人執(zhí)行的動作相混淆。對應(yīng)于這些術(shù)語的實際計算機操作取決于實現(xiàn)而變化。II.通用視頻編碼器和解碼器圖21是通用視頻編碼器2100的框圖,結(jié)合該系統(tǒng)可實現(xiàn)若干所述實施例。圖22是通用視頻解碼器2200的框圖,結(jié)合該系統(tǒng)可實現(xiàn)若干所述實施例。編碼器2100和解碼器2200內(nèi)各模塊之間的所示關(guān)系表示編碼器和解碼器中的一般信息流;其它關(guān)系為簡化起見并未示出。特別地,圖21和22通常并未示出表示用于視頻序列、圖片、宏塊、塊等的編碼器設(shè)置、模式、表格等的輔助信息。這些輔助信息通常在輔助信息的熵編碼之后在輸出比特流中發(fā)送。輸出比特流的格式可以是WindowsMediaVideo版本9格式或其它格式。編碼器2100和解碼器2200處理視頻圖片,它們可以是視頻幀、視頻半幀、或幀和半幀的組合。圖片和宏塊級別上的比特流語法和語義可依賴于是使用幀還是半幀。也可以有對宏塊組織和整體定時的改變。編碼器2100和解碼器2200是基于塊的,并對幀使用4:2:0的宏塊格式,其中每個宏塊包括4個8x8亮度塊(常被視為一個16x16宏塊)和2個8x8色度塊。對于半幀,可使用相同或不同的宏塊組織和格式。這些8x8塊可在不同階段上作進一步的細分,例如在頻率變換和熵編碼階段。示例視頻幀組織如下進行更詳細的描述?;蛘?,編碼器2100和解碼器2200是基于對象的、使用不同的宏塊或塊格式、或?qū)Σ煌?x8塊和16x16宏塊的大小或配置的像素集執(zhí)行操作。取決于所需的壓縮實現(xiàn)和類型,編碼器或解碼器的模塊可添加、略去、劃分成多個模塊、與其它模塊相組合、和/或用類似模塊替換。在替換實施例中,具有不同模塊和/或模塊其它配置的編碼器或解碼器執(zhí)行一種或多種所述技術(shù)。A.視頻幀組織在一些實現(xiàn)中,編碼器2100和解碼器2200處理如下組織的視頻幀。幀包含視頻信號的各行空間信息。對于逐行掃描視頻,這些行包含從一時刻開始并繼續(xù)后續(xù)行直到幀的底部的樣本。逐行掃描視頻幀被分成諸如圖23中所示宏塊2300的宏塊。宏塊2300包括4個8x8亮度塊(Yl到Y(jié)4)和與4個亮度塊共處的2個8x8色度塊,這些色度塊符合常規(guī)的4:2:0宏塊格式但在水平和垂直方向分辨率減半。這些8x8塊可在不同階段上作進一步的細分,例如在頻率變換(例如8x4、4x8或4x4DCT)和熵編碼階段。逐行掃描I-幀是幀內(nèi)編碼的逐行掃描視頻幀。逐行掃描P-幀是使用正向預(yù)測編碼的逐行掃描視頻幀,而逐行掃描B-幀是使用雙向預(yù)測編碼的逐行掃描視頻幀。逐行掃描P-和B-幀可包括幀內(nèi)編碼宏塊以及不同類型的經(jīng)預(yù)測宏塊。隔行掃描視頻幀由一個幀的兩次掃描組成一一次包括該幀的偶數(shù)行(上半幀)而另一次包括該幀的奇數(shù)行(下半幀)。這兩個半幀可表示兩個不同時段,或者它們可來自同一時段。圖24A示出隔行掃描視頻幀2400的一部分,包括隔行掃描視頻幀2400中左上方的上半幀和下半幀的交替行。圖24B示出為編碼/解碼而組織為幀2430的圖24A的隔行掃描視頻幀2400。隔行掃描視頻幀2400已被分成諸如宏塊2431和2432的宏塊,它們使用如圖23所示的4:2:0格式。在亮度平面中,每個宏塊2431、2432包括來自上半幀的8行、與之交替的來自下半幀的8行(一共為16行),且每一行為16像素長。(宏塊2431、2432內(nèi)亮度塊和色度塊的實際組織和放置并未示出,且實際上對于不同的編碼決定可變化。)在給定宏塊內(nèi),上半幀信息和下半幀信息在各個階段的任一個上可聯(lián)合或獨立地編碼。隔行掃描的I-幀是隔行掃描視頻幀的兩個幀內(nèi)編碼半幀,其中宏塊包括兩個半幀的信息。隔行掃描P-幀是使用正向預(yù)測編碼的隔行掃描視頻幀的兩個半幀,而隔行掃描B-幀是使用雙向預(yù)測編碼的隔行掃描視頻幀的兩個半幀,其中宏塊包括兩個半幀的信息。隔行掃描P-和B-幀可包括幀內(nèi)編碼宏塊以及不同類型的預(yù)測宏塊。圖24C示出為編碼/解碼而組織為半幀2460的圖24A的隔行掃描視頻幀2400。隔行掃描視頻幀2400的兩個半幀的每一個被分成各個宏塊。上半幀被分成諸如宏塊2461的宏塊,而下半幀被分成諸如宏塊2462的宏塊。(再一次,各宏塊使用如圖23所示的4:2:0格式,且各宏塊內(nèi)亮度塊和色度塊的組織和放置并未示出。)在亮度平面中,宏塊2461包括來自上半幀的16行、宏塊2462包括來自下半幀的16行,且每一行為16像素長。隔行掃描的I-半幀是隔行掃描視頻幀的單個獨立表示半幀。隔行掃描P-半幀是使用正向預(yù)測編碼的隔行掃描視頻幀的單個獨立表示半幀,而隔行掃描B-半幀是使用雙向預(yù)測編碼的隔行掃描視頻幀的單個獨立表示半幀。隔行掃描P-和B-半幀可包括幀內(nèi)編碼宏塊以及不同類型的預(yù)測宏塊。術(shù)語圖片通常指源、經(jīng)編碼或重構(gòu)的圖像數(shù)據(jù)。對于逐行掃描視頻,圖片是逐行掃描視頻幀。對于隔行掃描視頻,取決于上下文,圖片可指隔行掃描視頻幀、幀的上半幀、或幀的下半幀?;蛘?,編碼器2100或解碼器2200是基于對象的、使用不同的宏塊或塊格式、或?qū)Σ煌?x8塊和16x16宏塊的大小或配置的像素集執(zhí)行操作。B.視頻編碼器圖21是通用視頻編碼器系統(tǒng)2100的框圖。編碼器系統(tǒng)2100接收包括當前圖片2105的一個視頻圖片序列(例如,逐行掃描視頻幀、隔行掃描視頻幀、或隔行掃描視頻幀的半幀),并產(chǎn)生壓縮后視頻信息2195作為輸出。視頻編碼器的特定實施例通常使用通用編碼器2100的變體或補充版本。編碼器系統(tǒng)2100壓縮預(yù)測圖片和關(guān)鍵圖片。為演示起見,圖21示出關(guān)鍵圖片通過編碼器系統(tǒng)2100的路徑,以及預(yù)測圖片的路徑。編碼器系統(tǒng)2100的許多組件用于壓縮關(guān)鍵圖片和預(yù)測圖片。由那些組件執(zhí)行的確切操作可取決于所壓縮的信息類型而變化。預(yù)測圖片(例如逐行掃描p-幀或b-幀、隔行掃描p-半幀或b-半幀、或隔行掃描p-幀或b—幀)根據(jù)來自一個或多個其它圖片(通常稱為參考圖片或錨)的預(yù)測(或差值)來表示。預(yù)測殘差是所預(yù)測圖片和原始圖片之間的差值。相反,關(guān)鍵圖片(例如逐行掃描I-幀、隔行掃描I-半幀、或隔行掃描I-幀)不參照其它圖片進行壓縮。如果當前圖片2105是正向預(yù)測圖片,則運動估計器2110參照一個或多個參考圖片估計當前圖片2105的宏塊或其它像素集的運動,其中參考圖片是例如緩存在圖片存儲2120中的重構(gòu)的先前圖片2125。如果當前圖片2105是雙向預(yù)測圖片,則運動估計器2110參照(例如隔行掃描B-半幀的)多達4個重構(gòu)參考圖片來估計當前圖片2105中的運動。通常,運動估計器參照一個或多個時間上在先的參考圖片和一個或多個時間上將來的參考圖片來估計B-圖片中的運動。因此,編碼器系統(tǒng)2100可將分別的存儲2120和2122用于多個參考圖片。對于有關(guān)逐行掃描B-幀的更多信息,參見序列號為10/622,378題為"AdvancedBi-DirectionalPredictiveCodingofVideoFrames"(視頻幀的高級雙向預(yù)測編碼)并于2003年7月18日提交的美國專利申請。運動估計器2110可按像素、1/2像素、1/4像素或其它增量進行估計,并可在逐個圖片基礎(chǔ)或其它基礎(chǔ)上切換運動估計的分辨率。運動估計器2110(和補償器2130)還可在每幀或其它基礎(chǔ)上在參考圖片像素插值類型之間(例如雙三次和雙線性)切換。運動估計的分辨率可水平地或垂直地相同或不同。運動估計器2110輸出諸如差值運動向量信息的輔助信息運動信息2115。編碼器2100通過例如計算運動向量的一個或多個預(yù)測值、計算運動向量和預(yù)測值之間的差值、并熵編碼這些差值,來編碼運動信息。為了重構(gòu)運動向量,運動補償器2130組合預(yù)測值與差值運動向量信息。用于計算運動向量預(yù)測值、計算差值運動向量、并重構(gòu)隔行掃描B-半幀和隔行掃描B-幀的運動向量的各種技術(shù)如下所述。運動補償器2130將重構(gòu)運動向量應(yīng)用于重構(gòu)圖片2125,以形成經(jīng)運動補償?shù)漠斍皥D片2135。然而,預(yù)測很少是完美的,且經(jīng)運動補償?shù)漠斍皥D片2135和原始的當前圖片2105之間的差值為預(yù)測殘差2145。在圖片的隨后重構(gòu)中,預(yù)測殘差2145被添加到經(jīng)運動補償?shù)漠斍皥D片2135中,以獲得更接近于原始當前圖片2105的重構(gòu)圖片。然而,在有損壓縮中,仍有一些信息從原始當前圖片2105中丟失。或者,運動估計器和運動補償器應(yīng)用另一類型的運動估計/補償。頻率變換器2160將空間域視頻信息轉(zhuǎn)換成頻域(即頻譜)數(shù)據(jù)。對于基于塊的視頻圖片,頻率變換器2160將DCT、DCT的變體、或其它塊變換應(yīng)用于像素數(shù)據(jù)或預(yù)測殘差數(shù)據(jù)的塊,從而產(chǎn)生頻率變換系數(shù)的塊?;蛘?,頻率變換器2160應(yīng)用諸如傅立葉變換的另一種常規(guī)頻率變換、或使用小波或子頻帶分析。頻率變換器2160可應(yīng)用8x8、8x4、4x8、4x4或其它大小的頻率變換。然后量化器2170量化頻譜數(shù)據(jù)系數(shù)的各個塊。該量化器將均勻的標量量化應(yīng)用于頻譜數(shù)據(jù),其中步長在逐個圖片或其它基礎(chǔ)上變化?;蛘?,量化器將另一種類型的量化應(yīng)用于頻譜數(shù)據(jù)系數(shù),例如不均勻的向量或非自適應(yīng)量化,或者直接在不使用頻率變換的編碼器系統(tǒng)中量化空間域數(shù)據(jù)。除了自適應(yīng)量化之外,編碼器2100可將幀丟棄、自適應(yīng)濾波或其它技術(shù)用于速率控制。編碼器2100可將特定的信號表示用于被跳過的宏塊,該宏塊是沒有特定類型信息的宏塊(例如沒有該宏塊的運動信息和沒有殘差信息)。當需要重構(gòu)后的當前幀用于隨后的運動估計/補償時,逆量化器2176對量化后的頻譜數(shù)據(jù)系數(shù)執(zhí)行逆量化。然后反向頻率變換器2166執(zhí)行頻率變換器2160的反向操作,產(chǎn)生重構(gòu)后預(yù)測殘差(用于預(yù)測圖片)或重構(gòu)后的關(guān)鍵圖片。如果當前圖片2105是關(guān)鍵圖片,則重構(gòu)后的關(guān)鍵圖片被取作重構(gòu)后的當前圖片(未示出)。如果當前圖片2105是預(yù)測圖片,則重構(gòu)后的預(yù)測殘差被添加到經(jīng)運動補償?shù)漠斍皥D片2135中以形成重構(gòu)后的當前圖片。一個或多個圖片存儲2120、2122緩存重構(gòu)后的當前圖片,以用于運動補償預(yù)測。在某些實施例中,編碼器將解塊濾波器應(yīng)用于重構(gòu)后的幀以自適應(yīng)地使圖片中的間斷點和其它人工效應(yīng)平滑。熵編碼器2180壓縮量化器2170的輸出以及某些輔助信息(例如運動信息2115、量化步長)。典型的熵編碼技術(shù)包括算術(shù)編碼、差分編碼、哈夫曼編碼、運行長度編碼、LZ編碼、字典編碼以及以上的組合。熵編碼器2180通常使用用于不同類型信息(例如DC系數(shù)、AC系數(shù)、不同類型的輔助信息)的不同編碼技術(shù),并可從特定編碼技術(shù)內(nèi)的多個代碼表中選擇。熵編碼器2180向多路復(fù)用器["MUX"]2190提供壓縮后的視頻信息2195。MUX2190可包括緩沖區(qū),且緩沖區(qū)級別指示符被反饋給比特率自適應(yīng)模塊作速率控制。在MUX2190之前或之后,壓縮后的視頻信息2195可被信道編碼用于在網(wǎng)絡(luò)上傳輸。信道編碼可將差錯檢測和糾正數(shù)據(jù)應(yīng)用于壓縮后的視頻信息2195。C視頻解碼器圖22是一般視頻解碼器系統(tǒng)2200的框圖。解碼器系統(tǒng)2200接收用于視頻圖片的經(jīng)壓縮序列的信息2295,并產(chǎn)生包括重構(gòu)圖片2205的輸出(例如,逐行掃描視頻幀、隔行掃描視頻幀、或隔行掃描視頻幀的半幀)。視頻解碼器的特定實施例通常使用通用解碼器2200的變體或補充版本。解碼器系統(tǒng)2200解壓縮預(yù)測圖片和關(guān)鍵圖片。為演示起見,圖22示出關(guān)鍵圖片通過解碼器系統(tǒng)2200的路徑,以及正向預(yù)測圖片的路徑。解碼器系統(tǒng)2200的許多組件用于解壓縮關(guān)鍵圖片和預(yù)測圖片。由那些組件執(zhí)行的確切操作取決于所解壓縮的信息類型而變化。DEMUX(多路分解器)2290接收壓縮后視頻序列的信息2295,并使接收到的信息可用于熵解碼器2280。DEMUX2290可包括一抖動緩沖區(qū)和其它緩沖區(qū)。在DEMUX2290之前或之后,經(jīng)壓縮的視頻信息可進行信道解碼和用于差錯檢測和糾正處理。熵解碼器2280通常應(yīng)用編碼器中執(zhí)行的熵編碼的逆,對熵編碼后的量化數(shù)據(jù)以及熵編碼后的輔助信息(例如運動信息2215、量化步長)進行熵解碼。熵解碼技術(shù)包括算術(shù)解碼、差分解碼、哈夫曼解碼、運行長度解碼、LZ解碼、字典解碼以及以上的組合。熵解碼器2280經(jīng)常使用用于不同類型信息(例如DC系數(shù)、AC系數(shù)、不同類型的輔助信息)的不同解碼技術(shù),并可從特定解碼技術(shù)內(nèi)的多個代碼表中選擇。解碼器2200通過例如計算運動向量的一個或多個預(yù)測值、熵解碼差值運動向量、并組合解碼后的差值運動向量和用于重構(gòu)運動向量的預(yù)測值,來解碼運動2215。用于計算運動向量預(yù)測值、計算差值運動向量、并重構(gòu)隔行掃描B-半幀和隔行掃描B-幀的各種技術(shù)如下所述。運動補償器2230將運動信息2215應(yīng)用于一個或多個參考圖片2225,以形成被重構(gòu)的圖片2205的預(yù)測值2235。例如,運動補償器2230使用一個或多個宏塊運動向量來尋找參考圖片2225中的宏塊。一個或多個圖片存儲(例如圖片存儲2220、2222)存儲先前重構(gòu)后的圖片,以用作參考圖片。通常,B-圖片具有一個以上的參考圖片(例如至少一個時間上在先的參考圖片和至少一個時間上將來的參考圖片)。因此,解碼器系統(tǒng)2200可將分別的圖片存儲2220和2222用于多個參考圖片。運動補償器2230可按像素、1/2像素、1/4像素或其它增量補償運動,并可在逐個圖片基礎(chǔ)或其它基礎(chǔ)上切換運動補償?shù)姆直媛?。運動補償器2230還可在每幀或其它基礎(chǔ)上在參考圖片像素插值類型之間(例如雙三次和雙線性)切換。運動補償?shù)姆直媛士伤降鼗虼怪钡叵嗤虿煌?。或者,運動補償器應(yīng)用另一類型的運動補償。由運動補償器進行的預(yù)測很少是完美的,因此解碼器2200還重構(gòu)預(yù)測殘差。逆量化器2270對熵解碼后的數(shù)據(jù)執(zhí)行逆量化。一般而言,該逆量化器將均勻的標量逆量化應(yīng)用于熵解碼后的數(shù)據(jù),其中步長在逐幀或其它基礎(chǔ)上變化?;蛘撸撃媪炕鲗⒘硪环N類型的逆量化應(yīng)用于數(shù)據(jù),例如在不均勻的向量或非自適應(yīng)量化后重構(gòu),或者在不使用逆頻率變換的解碼器系統(tǒng)中直接逆量化空間域數(shù)據(jù)。逆頻率變換器2260將量化后的頻域數(shù)據(jù)轉(zhuǎn)換成空間域視頻信息。對于基于塊的視頻圖片,逆頻率變換器2260將逆DCT["IDCT"]、IDCT的變體、或其它逆向塊變換應(yīng)用于頻率變換系數(shù)的塊,從而分別產(chǎn)生關(guān)鍵圖片或預(yù)測圖片的像素數(shù)據(jù)或預(yù)測殘差數(shù)據(jù)?;蛘?,反向頻率變換器2260應(yīng)用諸如傅立葉逆變換的另一種常規(guī)反向頻率變換、或使用小波或子頻帶分析。反向頻率變換器2260可應(yīng)用8x8、8x4、4x8、4x4或其它大小的反向頻率變換。對于預(yù)測圖片,解碼器2200組合重構(gòu)后的預(yù)測殘差2245和經(jīng)運動補償?shù)念A(yù)測2235來形成重構(gòu)后的圖片2205。當解碼器需要用于隨后運動補償?shù)闹貥?gòu)后圖片2205時,一個或兩個圖片存儲(例如圖片存儲2220)緩存重構(gòu)后圖片2205,以用于預(yù)測下一圖片。在一些實施例中,解碼器2200將解塊濾波器應(yīng)用于重構(gòu)后圖片以自適應(yīng)地使圖片中的間斷點和其它人工效應(yīng)平滑。III.隔行掃描P-半幀和隔行掃描P-幀典型的隔行掃描視頻幀由在不同時間掃描的兩個半幀(例如上半幀和下半幀)組成。一般而言,通過一起編碼半幀來編碼隔行掃描視頻幀的靜態(tài)區(qū)域是更為有效的("幀模式"編碼)。另一方面,通過分開編碼半幀來編碼隔行掃描視頻幀的移動區(qū)域通常更為有效("半幀模式"編碼),因為這兩個半幀傾向于具有不同的運動。正向預(yù)測的隔行掃描視頻幀可被編碼為兩個獨立的正向預(yù)測半幀一隔行掃描P-半幀。例如,當在隔行掃描視頻幀上有較高運動從而在各半幀之間有很大差異時,分開編碼正向預(yù)測的隔行掃描視頻幀的半幀會比較有效?;蛘撸蝾A(yù)測的隔行掃描視頻幀可使用半幀編碼和幀編碼的混合來編碼為隔行掃描P-幀。對于隔行掃描P-幀的宏塊,該宏塊包括上半幀和下半幀的像素行,且各行可用幀編碼模式一起編碼,或用半幀編碼模式分開編碼。A.隔行掃描P-半幀隔行掃描P-半幀參考一個或多個先前解碼的半幀。例如,在一些實現(xiàn)中,隔行掃描P-半幀參考一個或兩個先前解碼的半幀,而隔行掃描B-半幀參考多達兩個先前的和兩個將來的參考半幀(即多達總共四個參考半幀)。(用于隔行掃描B-半幀的編碼和解碼技術(shù)在下面詳細描述。)圖25和26示出具有兩個參考半幀的隔行掃描P-半幀的示例。在圖25中,當前半幀2510參考時間上在先的隔行掃描視頻幀中的上半幀2520和下半幀2530。因為半幀2540和2550是隔行掃描的B-半幀,所以它們不用作參考半幀。在圖26中,當前半幀2610參考在包含當前半幀2610的隔行掃描視頻幀前面緊鄰的隔行掃描視頻幀中的上半幀2620和下半幀2630。對于有關(guān)雙參考的隔行掃描P-半幀的更多信息,參見序列號為xx/yyy,zzz題為"PredictingMotionVectorsforFieldsofForward-predictedInterlacedVideoFrames"(預(yù)測正向預(yù)測的隔行掃描視頻幀的半幀的運動向量)并于2004年5月27日提交的美國專利申請。圖27和28示出具有一個參考半幀一所允許的時間上最新參考半幀的隔行掃描P-半幀的示例。在圖27中,當前半幀2710參考時間上在先的隔行掃描視頻幀的下半幀2730,但不參考該隔行掃描視頻幀上不那么新的上半幀2720。在圖27所示示例中,半幀2740和2750是隔行掃描B-半幀,且不是所允許的參考半幀。在圖28中,當前半幀2810參考在包含當前半幀2810的隔行掃描視頻幀前面緊鄰的隔行掃描視頻幀中的下半幀2830,而不參考不那么新的上半幀2820。圖29和30示出使用所允許的第二最新參考半幀的隔行掃描P-半幀的示例。在圖29中,當前半幀2910參考時間上在先的隔行掃描視頻幀的上半幀2920,但不參考更新的下半幀2920。在圖29所示示例中,半幀2940和2950是隔行掃描B-半幀,且不是所允許的參考半幀。在圖30中,當前半幀3010參考上半幀3020,而不參考更新的下半幀3030。在一實現(xiàn)中,圖25-30中示出的全部情形在隔行掃描P-半幀語法中都是許可的。其它實現(xiàn)也是可能的。例如,圖片可將來自不同類型或時間位置的其它圖片的半幀用作參考半幀。1.半幀圖片坐標系統(tǒng)和半幀極性運動向量表示以1/4像素為單位的水平和垂直位移。例如,如果運動向量的垂直分量表示6個1/4像素單位的位移,則這表示參考塊是當前塊位置下方1.5個半幀行處(6*1/4=11/2)。圖31示出在一實現(xiàn)中運動向量的垂直分量和空間位置之間的關(guān)系。圖31所示示例示出當前和參考半幀類型(例如上和下)的三種不同組合的三種不同情形3110、3120和3130。如果半幀類型對當前和參考半幀不同,則極性"相反"。如果半幀類型相同,則極性"相同"。對于每種情形,圖31示出當前半幀中一個垂直像素列和參考半幀中的第二垂直像素列。實際上,該兩列是水平對齊的。圓圈表示實際整數(shù)像素位置,而X表示插值的l/2或l/4像素位置。水平分量值(未示出)無需說明因為隔行掃描的任何偏移量,因為各個半幀都是水平對齊的。負值表示在相反方向上比所示正值垂直偏移量更偏上的偏移量。在情形3110中,極性"相反"。當前半幀為上半幀,而參考半幀為下半幀。相對于當前半幀,參考半幀的位置因為隔行掃描而在向下方向上偏移l/2像素。垂直運動向量分量值為0是"無垂直運動"偏移,并表示參考半幀中與當前半幀中位置在同一垂直水平上(絕對值)的位置;垂直運動向量分量值為+2表示參考半幀中偏移到當前半幀中位置下方l/2像素(絕對值)的位置,該位置是參考半幀中的實際值;而垂直分量值為+4表示參考半幀中偏移到當前半幀中位置下方1整個像素(絕對值)的位置,該位置是參考半幀中的插值。在情形3120中,極性也"相反"。當前半幀是下半幀,而參考半幀是上半幀。相對于當前半幀,參考半幀的位置因為隔行掃描而在向上方向上偏移1/2像素。垂直運動向量分量值為-2表示參考半幀中偏移到當前半幀中位置上方1/2像素(絕對值)的位置;垂直分量值為O表示參考半幀中與當前半幀中位置在同一水平上(絕對值)的位置;而垂直分量值為+2表示參考半幀中偏移到當前半幀中位置下方1/2像素(絕對值)的位置。在情形3130中,極性"相同"。相對于當前半幀,參考半幀的位置在垂直方向上相同。垂直運動向量分量值為O是"無垂直運動"偏移,并表示參考半幀中與當前半幀中位置在同一垂直水平上(絕對值)的位置;垂直運動向量分量值為+2表示參考半幀中偏移到當前半幀中位置下方l/2像素(絕對值)的位置,該位置是參考半幀中的插值;而垂直分量值為+4表示參考半幀中偏移到當前半幀中位置下方l整個像素(絕對值)的位置,該位置是參考半幀中的實際值?;蛘?,運動向量的位移根據(jù)不同慣例來表達。2.雙參考半幀的隔行掃描P-半幀中的運動向量預(yù)測雙參考半幀的隔行掃描P-半幀參考相同時間方向上的兩個半幀(例如兩個最近的先前參考半幀)。對每個宏塊計算兩個運動向量預(yù)測值。在一些實現(xiàn)中,一個預(yù)測值來自相同極性的參考半幀,而另一個預(yù)測值來自相反極性的參考半幀。極性的其它組合也是可能的。(以下描述每個方向上使用雙參考半幀的隔行掃描B-半幀。在一些實現(xiàn)中,這些隔行掃描B-半幀將與隔行掃描P-半幀相同的技術(shù)用于計算運動向量預(yù)測值。)在一些實現(xiàn)中,編碼器/解碼器通過尋找奇半幀預(yù)測值和偶半幀預(yù)測值、并選擇處理預(yù)測值之一用于處理宏塊,來計算當前塊或宏塊的運動向量預(yù)測值。例如,編碼器/解碼器確定奇半幀運動向量預(yù)測值和偶半幀運動向量預(yù)測值。運動向量預(yù)測值之一因而具有與當前半幀相同的極性,而另一運動向量預(yù)測值具有相反極性。編碼器/解碼器從奇半幀運動向量預(yù)測值和偶半幀運動向量預(yù)測值中選擇一運動向量預(yù)測值。例如,編碼器基于哪個給出較佳預(yù)測在各運動向量預(yù)測值之間選擇。編碼器使用簡單的選擇信號或使用較復(fù)雜的結(jié)合改進編碼效率的上下文信息的信號表示來用信號表示要使用哪個運動向量預(yù)測值。該上下文信息可表示奇半幀或偶半幀的哪一個、或相同極性半幀或相反極性半幀的哪一個已主要用于塊或宏塊周圍的鄰域中。解碼器基于選擇信號和/或上下文信息選擇要使用哪個運動向量預(yù)測值。然后,編碼器/解碼器使用選定的運動向量預(yù)測值處理該運動向量。例如,編碼器編碼運動向量和運動向量預(yù)測值之間的差值?;蛘?,解碼器通過組合運動向量差值和運動向量預(yù)測值來解碼運動向量?;蛘撸幋a器和/或解碼器可跳過確定奇半幀運動向量預(yù)測值、或跳過確定偶半幀運動向量預(yù)測值。例如,如果編碼器確定奇半幀將用于特定塊或宏塊的運動補償,則編碼器只確定奇半幀運動向量預(yù)測值?;蛘?,如果解碼器從上下文和/或信號表示信息中確定奇半幀將用于運動補償,則解碼器只確定奇半幀運動向量預(yù)測值。這樣,編碼器和解碼器可避免不必要的運算。解碼器可采用以下技術(shù)來確定當前隔行掃描P-半幀的運動向量預(yù)測值。對于隔行掃描P-半幀中具有運動向量的每個塊或宏塊,可獲得兩組三個候選運動向量預(yù)測值。從中獲得這些候選運動向量預(yù)測值的相鄰宏塊相對于當前宏塊3200的位置如圖32所示。這些候選值的三個來自偶參考半幀,而另三個來自奇參考半幀。因為每個候選方向中的相鄰宏塊(A、B和C)是幀內(nèi)編碼的或具有參考偶半幀或奇半幀的實際運動向量,所以需要導(dǎo)出其它半幀的運動向量(或?qū)С鰩瑑?nèi)編碼宏塊的奇半幀和偶半幀運動向量候選值)。例如,對于給定宏塊,假設(shè)預(yù)測值A(chǔ)具有參考奇半幀的運動向量。在該情形中,"偶半幀"候選預(yù)測值A(chǔ)從"奇半幀"候選預(yù)測值A(chǔ)的運動向量中導(dǎo)出。該導(dǎo)出使用縮放運算來完成。(參見例如以下圖34A和34B的解釋。)或者,導(dǎo)出用另一種方式完成。一旦已得到三個奇半幀候選運動向量預(yù)測值,就使用中值運算來從三個奇半幀候選值中導(dǎo)出奇半幀運動向量預(yù)測值。類似地,一旦已得到三個偶半幀候選運動向量預(yù)測值,就使用中值運算來從三個偶半幀候選值中導(dǎo)出偶半幀運動向量預(yù)測值。或者,使用另一種機制來基于候選半幀運動向量預(yù)測值選擇半幀運動向量預(yù)測值。解碼器判定是將偶半幀還是奇半幀用作運動向量預(yù)測值(例如通過選擇主預(yù)測值),及偶還是奇運動向量預(yù)測值被用來重構(gòu)運動向量。圖33A-33F中的偽碼3300示出用來從如圖32所示排列的預(yù)測值A(chǔ)、B和C中產(chǎn)生運動向量預(yù)測值的過程。盡管圖32示出當前隔行掃描P-半幀中典型宏塊的鄰域,但圖33A-33F的偽碼3300解決了宏塊位置的各個特定情形。此外,偽碼3300可用來計算各個位置上塊的運動向量的運動向量預(yù)測值。在偽碼3300中,術(shù)語"相同半幀"和"相反半幀"被理解成與當前編碼或解碼的半幀相關(guān)。例如,如果當前半幀是偶半幀,貝lj"相同半幀"是偶參考半幀而"相反半幀"是奇參考半幀。偽碼3300中的變量samefieldpred—x和samefieldpred_y表示來自相同半幀的運動向量預(yù)測值的水平和垂直分量,而變量oppositefieldpred_x和oppositefieldpred_y表示來自相反半幀的運動向量預(yù)測值的水平和垂直分量。變量samecount和oppositecount分別跟蹤當前塊或宏塊的鄰域的多少運動向量參考當前半幀的"相同"極性參考半幀,及多少參考"相反"極性參考半幀。變量samecount和oppositecount在偽碼開始時初始化為0。偽碼3300中所提及的縮放運算scaleforsame()和scaleforopposite()被用來從鄰居的實際運動向量值中導(dǎo)出"另一"半幀的候選運動向量預(yù)測值。縮放運算是實現(xiàn)無關(guān)的。示例縮放運算在以下參照圖34A、34B、35和36進行描述。或者,其它縮放運算可用來例如補償諸如圖31中所示的垂直位移。(具體用于隔行掃描B-半幀的縮放運算如下進行詳細描述。)圖33A和33B示出用于計算幀內(nèi)的內(nèi)部位置中典型塊或宏塊的運動向量預(yù)測值的偽碼。"幀內(nèi)"鄰居的運動向量被設(shè)置為0。對于每個鄰居,都設(shè)置相同半幀運動向量預(yù)測值和相反半幀運動向量預(yù)測值,在其中一個通過鄰居運動向量的實際值設(shè)置時,另一個從中導(dǎo)出。對相同半幀運動向量預(yù)測值和相反半幀運動向量預(yù)測值計算候選值的中值,而"主"預(yù)測值從samecount和oppositecount中確定。變量dominantpredictor表示哪個半幀包含主運動向量預(yù)測值。如果運動向量預(yù)測值具有與三個候選預(yù)測值的大部分相同的極性,則它是主要預(yù)測值。(用運動向量差值數(shù)據(jù)解碼的表示信號的值predictor_flag表示使用主還是非主預(yù)測值。)圖33C中的偽碼解決每行只有一個宏塊(它沒有鄰居B或C)的隔行掃描P-半幀的宏塊的情形。圖33D或33E中的偽碼解決塊或宏塊在隔行掃描P-半幀的左邊緣(沒有鄰居C)的情形。在此,如果運動向量預(yù)測值具有與兩個以上候選預(yù)測值相同的極性,則它是主預(yù)測值;而在不分上下的情形中,相反半幀運動向量預(yù)測值為主預(yù)測值。最后,圖33F中的偽碼解決例如宏塊在隔行掃描P-半幀的首行中的情形。3.—個半幀運動向量預(yù)測值從另一個半幀運動向量預(yù)測值導(dǎo)出的縮放在一實現(xiàn)中,編碼器/解碼器使用圖34A和34B的偽碼3400中示出的縮放運算,將一個半幀運動向量預(yù)測值從另一個半幀運動向量預(yù)測值導(dǎo)出。SCALEOPP、SCALESAME1、SCALESAME2、SCALEZO麗一X、SCALEZ0NE1一Y、ZONE10FFSET一X禾卩ZONE10FFSET_Y的值是實現(xiàn)相關(guān)的。示出兩個可能的值集,其中當前半幀是隔行掃描視頻幀中的第一半幀的情形在圖35的表格3500中示出,而當前半幀是隔行掃描視頻幀中的第二半幀的情形在圖36的表格3600中示出。對于P-幀,參考幀距離被第一為當前P-幀及其參考幀之間的B-幀(即包含兩個B-半幀的視頻幀)數(shù)量。如果不出現(xiàn)B-幀,則參考距離為O。例如,編碼器使用可變大小的語法元素(例如在以下XIV節(jié)詳細描述的REFDIST語法元素)來編碼參考幀距離。在表格3500和3600中示出的各個示例中,N的值(用作表格中SCALEZ0NE1_X、SCALEZ0NE1—Y、ZONE1OFFSET—X和ZONE10FFSET_Y值的乘數(shù))取決于運動向量范圍。例如,經(jīng)擴展的運動向量范圍可通過語法元素EXTENDED—MV=1來用信號表示。如果EXTENDED—MV=1,則MVRANGE語法元素在圖片頭中出現(xiàn),并用信號表示運動向量范圍。如果EXTENDED—MV=0,則使用缺省運動向量范圍。以下的表格1示出N和MVRANGE之間的關(guān)系。表格l:圖35和36中N的導(dǎo)出<table>tableseeoriginaldocumentpage46</column></row><table>表格3500和3600中示出的各個值可依賴于實現(xiàn)而更改。或者,N被假設(shè)為1(即縮放不依賴于N),或者縮放可用一些其它方式來執(zhí)行。B.隔行掃描P-幀在一些實現(xiàn)中,隔行掃描P-幀中的宏塊可以是5種類型之一1MV、2半幀MV、4幀MV、4半幀MV和幀內(nèi)。在1MV宏塊中,宏塊中4個亮度塊的位移通過單個運動向量表示。相應(yīng)的色度運動向量可從亮度運動向量導(dǎo)出,以表示運動向量的2個8x8色度塊的每一個的位移。例如,再參看圖23中示出的宏塊排列,1MV宏塊2300包括4個8x8亮度塊和2個8x8色度塊。亮度塊(Y1到Y(jié)4)的位移通過單個運動向量表示,且相應(yīng)的色度運動向量可從亮度運動向量導(dǎo)出,以表示2個色度塊(U和V)的每一個的位移。在2半幀MV宏塊中,宏塊中4個亮度塊的每個半幀的位移通過不同運動向量描述。例如,圖37示出,上半幀運動向量描述全部4個亮度塊的偶數(shù)行的位移,下半幀運動向量描述全部4個亮度塊的奇數(shù)行的位移。使用上半幀運動向量,編碼器可導(dǎo)出相應(yīng)的上半幀色度運動向量,它描述色度塊偶數(shù)行的位移。類似地,編碼器可導(dǎo)出下半幀色度運動向量,它描述色度塊奇數(shù)行的位移。參照圖38,在4幀MV宏塊中,4個亮度塊的每一個的位移通過不同運動向量(MV1、MV2、MV3和MV4)描述。每個色度塊可通過使用4個導(dǎo)出色度運動向量(MVr、MV2'、MV3'和MV4')來進行運動補償,這些色度運動向量描述4個4x4色度子塊的位移。每個4x4色度子塊的運動向量可從空間上相應(yīng)的亮度塊的運動向量中導(dǎo)出。參照圖39,在4半幀MV宏塊中,亮度塊的每一個半幀的位移通過兩個不同運動向量來描述。亮度塊的偶數(shù)行被垂直細分以形成2個8x8區(qū)域。對于偶數(shù)行,左邊區(qū)域的位移通過左上方半幀塊的運動向量描述,而右邊區(qū)域的位移通過右上方半幀塊的運動向量描述。亮度塊的奇數(shù)行也被垂直細分以形成2個8x8區(qū)域。左邊區(qū)域的位移通過左下方半幀塊的運動向量描述,而右邊區(qū)域的位移通過右下方半幀塊的運動向量描述。每個色度塊也可用與亮度塊相同的方式分成4個區(qū)域,且每個色度塊區(qū)域可使用導(dǎo)出運動向量進行運動補償。對于幀內(nèi)宏塊,運動假設(shè)為0。一般而言,計算隔行掃描P-幀中當前宏塊的運動向量預(yù)測值的過程包括兩個步驟。首先,從其相鄰宏塊收集當前宏塊的三個候選運動向量。例如,在一實現(xiàn)中,候選運動向量基于圖40A-40B中示出的排列(和首行宏塊等的各種特定情形)來收集?;蛘撸蜻x運動向量可在一些其它順序或排列中收集。其次,當前宏塊的運動向量預(yù)測值從候選運動向量集中計算。例如,預(yù)測值可使用3個預(yù)測值的中值、或通過其它方法來計算。對于有關(guān)隔行掃描P-幀的宏塊的預(yù)測值計算和色度運動向量導(dǎo)出的其它細節(jié),參見申請?zhí)枮?0/501,081題為"VideoEncodingandDecodingToolsandTechniques"(視頻編碼和解碼工具及技術(shù))并于2003年9月7日提交的美國臨時專利申請,如以下XIV節(jié)所述。IV.逐行掃描視頻幀的雙向預(yù)測如上所述,逐行掃描B-幀中的宏塊可使用5種不同預(yù)測模式來預(yù)測正向、反向、直接、插值和幀內(nèi)。編碼器選擇并用信號表示在宏塊級別或一些其它級別上比特流中的不同預(yù)測模式。在正向模式中,當前逐行掃描B-幀中的宏塊從時間上在先的錨中導(dǎo)出。在反向模式中,當前逐行掃描B-幀中的宏塊從時間上后續(xù)的錨中導(dǎo)出。用直接或插值模式預(yù)測的宏塊將正向和反向錨用于預(yù)測。因為有直接和插值模式的兩個參考幀,所以對于每個宏塊通常都有至少兩個運動向量(顯式編碼或?qū)С龅?。(用于逐行掃描B-幀的編碼、信號表示和解碼的各個方面也可用于隔行掃描B-幀,如下所述。)在一些實現(xiàn)中,編碼器通過使用分數(shù)值縮放正向錨的共處運動向量,隱式地用直接模式導(dǎo)出運動向量。該分數(shù)可反映當前逐行掃描B-幀在通過其錨形成的間隔內(nèi)的相對時間位置,但不需要反映真實的幀間距離。因而,編碼器無需采取固定速度。這使得編碼器有附加的自由度,來通過改變來自"實際"時間位置的分數(shù)準確并容易地描述錨和當前逐行掃描B-幀之間的真實運動,以便于改進運動補償預(yù)測。變量BFRACTION表示可在比特流中發(fā)送(例如在圖片級別或一些其它級別上)以表示該相對時間位置的不同分數(shù)。不同分數(shù)是0和1之間的有限離散值集。再參看圖17,表格1700是用于比特流元素BFRACTION的可變長度代碼(VLC)表格。在相同兩個錨之間的逐行掃描B-幀中對BFRACTION的唯一性沒有限制;具有相同錨的不同逐行掃描B-幀可具有相同的BFRACTION值。表格1700中的代碼可改變或重新安排,以用不同代碼表示不同分數(shù)。未在表格1700中示出的其它可能代碼(例如,1H1110或1111111)可被認為是無效代碼,或可用于其它目的。例如,條目1111110可用來顯式地編碼定點格式的BFRACTION。作為另一示例,條目1111111可用于用信號表示特定幀類型(例如,幀內(nèi)編碼的逐行掃描B-幀)。再參看圖18,解碼器根據(jù)偽碼1800尋找縮放系數(shù)。再參看圖19,解碼器使用該縮放系數(shù)來縮放后續(xù)參考圖片中共處宏塊的運動向量的x和y元素。偽碼1900中的函數(shù)Scale_Direct—MV取輸入MV—X和MV_Y,并用直接模式來導(dǎo)出兩個運動向量,其中一個運動向量參考正向(先前)錨圖片(MV_XF、MV_YF),而另一個運動向量參考反向(后續(xù))錨圖片(MV_XB、MV_YB)。逐行掃描B-幀中的"跳過"宏塊信號表示對給定宏塊未出現(xiàn)運動向量預(yù)測誤差。所預(yù)測的運動向量將精確地等同于編碼器/解碼器在重構(gòu)宏塊時使用的運動向量(即不應(yīng)用運動向量預(yù)測誤差)。編碼器仍然用信號表示宏塊的預(yù)測模式,因為該宏塊可使用直接、正向、反向或插值預(yù)測來跳過。V.對隔行掃描B-圖片的預(yù)測編碼/解碼的創(chuàng)新的縱覽各所述實施例包括用于編碼和解碼隔行掃描B-圖片(例如隔行掃描B-半幀、隔行掃描B-幀)的技術(shù)和工具。各所述實施例實現(xiàn)所述用于編碼和/或解碼雙向預(yù)測的隔行掃描圖片的技術(shù)和工具的一種或多種,如下包括但不限于1.對于隔行掃描B-幀,編碼器/解碼器在隔行掃描B-幀的宏塊中的上半幀和下半幀之間切換預(yù)測模式。2.對于隔行掃描B-幀,編碼器/解碼器通過為先前解碼的時間后續(xù)錨的共處宏塊的上和下半幀的每一個選擇一個代表性運動向量,計算當前宏塊的直接模式運動向量。該選擇至少可部分地基于編碼當前隔行掃描B-幀的宏塊的模式(例如1MV模式、2半幀MV模式等)執(zhí)行。3.對于隔行掃描B-半幀或隔行掃描B-幀,編碼器/解碼器使用4MV編碼。例如,4MV可用于單向預(yù)測模式(正向或反向模式),但不用于其它可用預(yù)測模式(例如直接、插值)。4.對于隔行掃描B-半幀或隔行掃描B-幀,正向運動向量使用來自正向運動向量緩沖區(qū)的先前重構(gòu)(或估計)的正向運動向量進行預(yù)測,而反向運動向量使用來自反向運動向量緩沖區(qū)的先前重構(gòu)(或估計)的反向運動向量進行預(yù)測。結(jié)果的運動向量被添加到相應(yīng)的緩沖區(qū)中,且運動向量緩沖區(qū)中的空穴可用估計的運動向量值來填充。a.對于隔行掃描B-幀,當正向預(yù)測用來預(yù)測運動向量且運動向量被添加到正向緩沖區(qū)中時,反向緩沖區(qū)中的相應(yīng)位置以僅將反向運動向量用作預(yù)測值的預(yù)測運動向量來填充("空穴填充")。類似地,當反向預(yù)測用來預(yù)測運動向量且運動向量被添加到反向緩沖區(qū)中時,正向運動向量緩沖區(qū)中的相應(yīng)位置以僅將正向運動向量用作預(yù)測值的預(yù)測運動向量來填充。b.對于隔行掃描B-半幀,要為空穴填充在不同極性的運動向量(例如"相同極性"或"相反極性")之間選擇,編碼器/解碼器選擇主極性半幀運動向量。錨和當前幀之間的距離使用各種語法元素計算,且計算出的距離被用于縮放參考半幀運動向量。5.對于隔行掃描的B-半幀,編碼器/解碼器使用"自參考"幀。例如,當前幀中的第二個B-半幀在運動補償預(yù)測中參考來自當前幀的第一B-半幀。6.對于隔行掃描的B-半幀,編碼器發(fā)送指示用于隔行掃描B-半幀中的一個或多個宏塊的預(yù)測模式是正向還是非正向的二進制信息(例如,在經(jīng)壓縮位平面的B-半幀級別上)。解碼器執(zhí)行相應(yīng)的解碼。7.對于隔行掃描的B-半幀,如果下一錨圖片的相應(yīng)半幀中的相應(yīng)宏塊使用四個運動向量編碼,則編碼器/解碼器使用利于主極性的邏輯來選擇直接模式的運動向量。8.幀內(nèi)編碼半幀當沒有好的運動補償對B半幀可能時,它可被編碼為幀內(nèi)(即非預(yù)測的)B-半幀("BI-半幀")。各種所述技術(shù)和工具可彼此組合、或與其它技術(shù)組合、或可單獨使用。VI.切換隔行掃描B-幀中半幀編碼宏塊內(nèi)的預(yù)測模式在一些實現(xiàn)中,編碼器在隔行掃描B-幀的宏塊內(nèi)執(zhí)行預(yù)測模式切換。例如,編碼器允許在隔行掃描B-幀的宏塊中從上半幀去到下半幀時,預(yù)測模式可從正向切換成反向,或從反向切換成正向。與用一種預(yù)測方向模式編碼整個宏塊相反,預(yù)測方向模式的組合被用來編碼單個宏塊。在宏塊的各個半幀中改變預(yù)測方向模式的能力在許多情形中導(dǎo)致隔行掃描B-幀的更有效編碼。圖41示出使用不同預(yù)測模式預(yù)測隔行掃描B-幀的半幀編碼宏塊中的各個半幀的運動向量的一種技術(shù)4100。在4110,在隔行掃描B-幀中,編碼器/解碼器使用第一預(yù)測模式預(yù)測半幀編碼宏塊中第一半幀的運動向量。在一些實現(xiàn)中,該"第一半幀"可以是上半幀或下半幀,對其的判定獨立地用信號表示。在4120,編碼器/解碼器使用一不同預(yù)測模式預(yù)測同一宏塊中第二半幀的運動向量。例如,對于使用兩個運動向量半幀編碼的宏塊,上半幀可以是正向預(yù)測的(即,上半幀運動向量參考先前的錨圖片),而下半幀可以是反向預(yù)測的(即,下半幀參考后續(xù)的錨圖片)。在一些實現(xiàn)中,隔行掃描B-幀中的半幀編碼宏塊不使用4個運動向量編碼?;蛘撸绻摵陦K使用4個運動向量進行半幀編碼(例如每個半幀兩個運動向量),則上半幀的這兩個運動向量將參考一個錨(正向或反向),而下半幀運動向量將參考另一個錨。這種預(yù)測模式的切換在該宏塊類型不是以直接或插值開始的情形中僅需一個附加比特,如在以下隔行掃描B-幀的偽碼中進一步示出IfMB是半幀編碼的ANDMB類型是正向或反向thenIfMVSwitch=lthen預(yù)測模式在上半幀和下半幀之間切換(從正向到反向或反之)因此,將預(yù)測模式切換限于正向和反向模式避免對用信號表示第二模式的更多比特的需要,因為該第二模式從第一模式(在先前用信號表示的)和切換值中隱含。如果在由隔行掃描B-幀的宏塊覆蓋的區(qū)域中有較高運動,則宏塊有可能用半幀模式編碼。在這些情形中,正向或反向預(yù)測更可能比直接或插值模式(包括像素平均)給出準確的運動補償結(jié)果。因為在平滑中平均了各個結(jié)果(例如損失了伴隨高運動的高頻率元素),所以直接和插值模式并非是編碼這些宏塊的最佳方法。試驗結(jié)果表明,因為在半幀編碼宏塊內(nèi)的半幀級別上將全部四種預(yù)測模式用信號表示為切換選項的增加開銷使其低效?;蛘撸幋a器可在隔行掃描B-幀的半幀編碼宏塊內(nèi)切換兩種以上的預(yù)測模式,或可在不同預(yù)測模式之間切換。VII.計算隔行掃描B-幀中的直接模式運動向量在一些實現(xiàn)中,編碼器/解碼器緩存來自經(jīng)先前解碼錨的I-幀或P-幀(它是時間上正向的參考幀,用作反向預(yù)測參考幀)的運動向量,并選擇一個或多個緩存運動向量,以用于計算隔行掃描B-幀中當前宏塊的直接模式運動向量。例如,編碼器/解碼器緩存來自錨幀的每個宏塊的上半幀和下半幀的每一個的代表性運動向量,并使用一個或多個所緩存的運動向量來計算當前直接模式宏塊的運動向量。該選擇至少部分地基于當前宏塊的編碼模式執(zhí)行(例如1MV模式、2半幀MV模式等)。圖42示出用于在一實現(xiàn)中計算隔行掃描B-幀中宏塊的直接模式運動向量的一種技術(shù)4200。在4210,編碼器/解碼器緩存在先前重構(gòu)的時間上將來的錨幀中共處宏塊的每個宏塊的多個運動向量。如果該共處宏塊僅具有一個運動向量,則如果需要,該運動向量將被緩存為共處宏塊的各個塊的運動向量值。在4220,編碼器/解碼器部分地依賴于當前宏塊所需運動向量的數(shù)量,選擇共處宏塊的一個或多個緩存運動向量,用于隔行掃描B-幀中當前宏塊的直接模式預(yù)測。在一實現(xiàn)中,解碼器緩存共處宏塊中的兩個運動向量,或緩存來自將來錨幀的最大可能數(shù)量的經(jīng)解碼亮度運動向量的一半。錨幀中的各宏塊可用不同方法編碼,其中每個宏塊最多達4個運動向量,但只能緩存最多達兩個運動向量,如下所述。而且,為當前宏塊產(chǎn)生的正向/反向運動向量對的數(shù)量取決于當前宏塊的編碼模式,而不是僅僅取決于經(jīng)先前解碼的將來錨幀的共處宏塊的編碼模式。例如,如果當前直接模式宏塊是1MV編碼的,則解碼器從錨幀的共處宏塊的上半幀中取得被緩存的運動向量,并產(chǎn)生一對直接運動向量一一個正向另一個反向。如果當前直接模式宏塊是半幀編碼的,則解碼器從錨幀的共處宏塊中取得被緩存的上半幀和下半幀運動向量,并產(chǎn)生兩對運動向量,一共有當前直接模式宏塊的4個運動向量一對每個半幀都有一個正向另一個反向的運動向量。圖43示出經(jīng)先前解碼的時間上將來的錨幀的共處宏塊4300的各個塊的運動向量MV1、MV2、MV3和MV4。如果該共處宏塊是1MV宏塊,則MV1、MV2、MV3和MV4都相等。如果該共處宏塊是2半幀MV宏塊,則MV1和MV2等于一個值,而MV3和MV4等于另一個值。如果該錨幀的共處宏塊是4半幀MV或4幀MV宏塊,則MV1、MV2、MV3和MV4可能都是不同的值。然而,即使MV1、MV2、MV3和MV4都可用,解碼器仍然僅緩存MV1和MV3。在圖43所示示例中,解碼器緩存MV1和MV3。如果當前宏塊使用1MV模式,則解碼器選擇MV1來計算當前宏塊的正向和反向直接模式運動向量,并略去MV3。如果當前宏塊使用2半幀MV模式,則解碼器使用MV1和MV3來計算4個直接模式運動向量。該運算產(chǎn)生當前宏塊的上下半幀的運動的良好表示。在已選擇來自錨幀中共處宏塊的運動向量時,解碼器應(yīng)用縮放邏輯來導(dǎo)出相應(yīng)的正向和反向指示運動向量,用于B幀宏塊的直接模式預(yù)測。例如,解碼器可應(yīng)用圖19中的函數(shù)Sca、Direct—MV?;蛘?,解碼器應(yīng)用不同的縮放函數(shù)。或者,編碼器/解碼器可緩存每個錨幀宏塊的4個運動向量。例如,如果當前宏塊是1MV編碼的,則編碼器/解碼器可取錨幀中共處宏塊的左上運動向量,并產(chǎn)生一對直接運動向量,或者可取錨幀宏塊的4個運動向量的均值。如果當前宏塊是半幀編碼的,則編碼器/解碼器可取左上和左下運動向量,并產(chǎn)生兩對(一個半幀一對),或者可取錨幀宏塊的上運動向量的均值和下運動向量的均值。當錨幀中的共處宏塊為幀內(nèi)、或當錨幀為I-幀時,直接模式運動向量被視為(0,0)。VIII.隔行掃描B-半幀和隔行掃描B-幀中的4MV編碼在一些實現(xiàn)中,編碼器使用4運動向量(4MV)編碼模式編碼隔行掃描的B-半幀和隔行掃描的B-幀。4MV編碼可允許復(fù)雜運動軌跡的表示比1運動向量(1MV)編碼更準確(例如,通過允許宏塊中的4個亮度塊獨立地進行預(yù)測和運動補償)。使用4MV可受限于某些預(yù)測模式。例如,在一些實現(xiàn)中,編碼器將4MV用于正向和反向模式(包括半幀和幀變化兩者),而不用于直接或插值模式。當4MV不用于逐行掃描B-幀時,這不同于逐行掃描編碼模式。直接和插值模式涉及計算經(jīng)運動補償預(yù)測時的像素平均,它用于平滑細微細節(jié)。如果這種平滑是可接受的,則可能可使用1MV模式而不是4MV模式,因為編碼1MV較容易,且1MV可用來準確地描述平滑運動軌跡。實驗已顯示,在隔行掃描B-半幀和隔行掃描B-幀的宏塊中使用4MV模式,而將4MV模式限于正向和反向預(yù)測宏塊中是有利的。有利于將4MV限于正向和反向模式中的另一個因素是組合4MV與直接或插值模式將導(dǎo)致每種情形中一共有8個運動向量。信號表示開銷(用于插值模式)和實現(xiàn)以及關(guān)聯(lián)于8個運動向量的解碼復(fù)雜性通常抵銷了準確性優(yōu)點。此外,當通常在較高質(zhì)量設(shè)置上編碼的(即較不強烈量化的)P-圖片通常可僅將一個或四個運動向量用于運動補償時,用8個運動向量來編碼隔行掃描B-圖片通常是不實用的。將4MV限于某些預(yù)測模式還具有其它優(yōu)點。例如,如果4MV僅限于正向和反向預(yù)測模式,并且如果正向/非正向模式?jīng)Q定已用信號表示(例如用諸如在以下XI節(jié)所述的位平面編碼技術(shù)),編碼器無需發(fā)送任何附加比特來用信號表示4MV宏塊的預(yù)測模式。以下偽碼可應(yīng)用于隔行掃描B-半幀的宏塊,其中正向/非正向決定是位平面編碼的,并在任何宏塊級別信息之前發(fā)送(例如在圖片級別上發(fā)送)IfMB是4MV編碼的AND預(yù)測模式是非正向的then預(yù)測模式=反向(不發(fā)送任何更多比特來用信號表示模式)在一些實現(xiàn)中,直接/非直接預(yù)測模式?jīng)Q定在任何宏塊級別信息之前發(fā)送(例如在圖片級別上的經(jīng)壓縮位平面中)。(對于有關(guān)編碼直接/非直接信息的更多信息,參見序列號為10/622,378的題為"AdvancedBi-DirectionalPredictiveCodingofVideoFrames"(視頻幀的高級雙向預(yù)測編碼)并于2003年7月18日提交的美國專利申請。)以下偽碼可應(yīng)用于隔行掃描B-幀的宏塊,其中4MV在這些實現(xiàn)中受限于正向和反向模式IfMB是4MV編碼的AND預(yù)測模式是非正向的then發(fā)送一附加比特來用信號表示預(yù)測模式(正向或反向)或者,4MV用于不同于或除正向或反向模式之外的預(yù)測模式、不用于正向模式、不用于反向模式、或不用于任何預(yù)測模式。例如,在一些實現(xiàn)中,4MV用于隔行掃描B-半幀,但不用于隔行掃描B-幀。在其它可選實現(xiàn)中,其它代碼或代碼長度可用于用信號表示結(jié)合4MV編碼的預(yù)測模式。IX.使用分開的正向和反向運動向量緩沖區(qū)來預(yù)測隔行掃描B-圖片中的運動隔行掃描B-圖片的運動向量使用分開的正向和反向運動向量上下文來預(yù)測。一般而言,正向運動向量使用存儲在正向運動向量緩沖區(qū)中的運動向量來預(yù)測,而反向運動向量使用存儲在反向運動向量緩沖區(qū)中的運動向量來預(yù)測。然后當前宏塊的結(jié)果運動向量存儲在適當?shù)木彌_區(qū)中,并可用于其它宏塊的后續(xù)運動向量預(yù)測值中。通常,正向和反向運動向量緩沖區(qū)中的相應(yīng)空間都為每個宏塊填充,即使給定宏塊僅用正向運動向量(在正向預(yù)測宏塊的情形中)或僅用反向運動向量(在反向預(yù)測宏塊的情形中)預(yù)測。以下各節(jié)描述用于預(yù)測隔行掃描B-圖片(如,隔行掃描B-半幀,隔行掃描B-幀)中的運動向量,以及用于為"遺漏"的正向或反向運動向量"填充"運動向量緩沖區(qū)中的相應(yīng)空間的技術(shù)。A.正向和反向緩沖區(qū)當預(yù)測隔行掃描B-圖片的運動向量時,編碼器/解碼器使用正向運動向量緩沖區(qū)和/或反向運動向量緩沖區(qū)中的先前重構(gòu)的運動向量。在正向模式中,編碼器/解碼器使用來自正向運動向量緩沖區(qū)的經(jīng)重構(gòu)正向運動向量,來預(yù)測用于正向運動補償?shù)漠斍斑\動向量。在反向模式中,編碼器/解碼器使用來自反向運動向量緩沖區(qū)的經(jīng)重構(gòu)反向運動向量,來預(yù)測用于反向運動補償?shù)漠斍斑\動向量。對于直接模式或插值模式宏塊,編碼器/解碼器使用正向運動向量緩沖區(qū)來預(yù)測正向運動向量分量(或可能多個正向運動分量),并使用反向運動向量緩沖區(qū)來預(yù)測反向運動向量分量(或可能多個反向運動分量)。在重構(gòu)隔行掃描B-圖片的運動向量之后,編碼器/解碼器將重構(gòu)后的正向運動向量緩存在正向運動向量緩沖區(qū)中,并將重構(gòu)后的反向運動向量緩存在反向運動向量緩沖區(qū)中。在正向模式中,編碼器/解碼器將重構(gòu)后的正向運動向量存儲在正向運動向量緩沖區(qū)中。在反向模式中,編碼器/解碼器將重構(gòu)后的反向運動向量存儲在反向運動向量緩沖區(qū)中。對于使用直接或插值預(yù)測模式的宏塊,編碼器/解碼器將(各)正向運動向量分量存儲在正向運動向量緩沖區(qū)中,并將(各)反向運動向量分量存儲在反向運動向量緩沖區(qū)中。例如,如果編碼器在隔行掃描B-圖片中的宏塊坐標位置(12,13)上編碼正向預(yù)測宏塊時,則編碼器計算正向運動向量預(yù)測值并在比特流中發(fā)送該正向運動向量的殘差(假設(shè)該宏塊未被"跳過")。解碼器解碼該殘差(即差值),并重構(gòu)運動向量。編碼器/解碼器將重構(gòu)后的運動向量插入正向運動向量緩沖區(qū)。然后編碼器/解碼器使用運動向量預(yù)測邏輯來計算要填充反向運動向量的反向運動向量預(yù)測值,并將反向運動向量置于反向運動向量緩沖區(qū)中的位置(12,13)上。例如,在三者中值的預(yù)測情形中,編碼器/解碼器可取位置(11,13)、(12,12)和(13,12)上的緩存反向運動向量的中值(當前正向預(yù)測宏塊的左、上、右上鄰居),來填充(12,13)的反向運動向量。圖44示出使用正向和/或反向運動向量緩沖區(qū)來預(yù)測隔行掃描B-圖片中當前宏塊的運動向量的一種技術(shù)4400。在4410,取決于要預(yù)測的運動向量是正向還是反向運動向量,編碼器/解碼器選擇使用正向還是反向運動向量緩沖區(qū)。如果當前運動向量是正向運動向量,則編碼器/解碼器在4420從正向運動向量緩沖區(qū)選擇一個候選運動向量預(yù)測值集。如果當前運動向量是反向運動向量,則編碼器/解碼器在4430從反向運動向量緩沖區(qū)選擇一個候選運動向量預(yù)測值集。在4440,編碼器/解碼器基于候選運動向量預(yù)測值集計算運動向量預(yù)測值。例如,編碼器/解碼器計算候選運動向量預(yù)測值集的中值。在簡單情形中,編碼器/解碼器基于都是1MV宏塊的預(yù)測值計算1MV當前宏塊的運動向量預(yù)測值。更復(fù)雜的變化描述如下,其中當前宏塊和/或鄰居宏塊具有不同模式。圖45示出正向運動向量緩沖區(qū)4510和反向運動向量緩沖區(qū)4520中的運動向量。在圖45所示示例中,對于重構(gòu)宏塊4530-4570,編碼器/解碼器將正向運動向量存儲在正向運動向量緩沖區(qū)4510中,并將反向運動向量存儲在反向運動向量緩沖區(qū)4520中。為了預(yù)測當前宏塊4580的運動向量,編碼器/解碼器使用來自相鄰宏塊的候選預(yù)測值。例如,如果當前宏塊4580用正向模式預(yù)測,則編碼器使用正向運動向量緩沖區(qū)中的相鄰正向運動向量來預(yù)測正向運動向量(例如使用三者中值預(yù)測),隨后用重構(gòu)后的運動向量值填充正向運動向量緩沖區(qū)中的當前宏塊位置。為了填充反向運動向量緩沖區(qū)4520中的相應(yīng)當前宏塊位置,編碼器/解碼器可使用反向運動向量緩沖區(qū)中的相鄰反向運動向量來預(yù)測反向運動向量,并將該預(yù)測值置于反向運動向量緩沖區(qū)的當前宏塊的位置中。B.隔行掃描B-幀中的運動向量預(yù)測在一些實現(xiàn)中,編碼器/解碼器采用以下方案來預(yù)測隔行掃描B-幀中宏塊(包括其不同半幀)的運動向量,它使用分開的正向和反向運動向量上下文。圖40A-40B示出從中收集候選運動向量的相鄰宏塊。如果1MV宏塊是正向預(yù)測的,則編碼器/解碼器從正向運動向量緩沖區(qū)的候選運動向量中預(yù)測其正向運動向量(例如使用諸如圖40A和40B中或別處示出的三者中值預(yù)測和預(yù)測模式)。編碼器/解碼器(在添加運動向量預(yù)測誤差后)將該正向運動向量存儲在正向運動向量緩沖區(qū)中。編碼器/解碼器通過從反向運動向量緩沖區(qū)的候選運動向量中預(yù)測反向運動向量來填充"空穴"(例如與正向預(yù)測情形中一樣),并將該反向運動向量(在此為預(yù)測值)存儲在反向運動向量緩沖區(qū)中。如果1MV宏塊是反向預(yù)測的,則編碼器/解碼器從反向運動向量緩沖區(qū)的候選運動向量中預(yù)測其反向運動向量(例如與正向預(yù)測情形中一樣)。編碼器/解碼器(在添加預(yù)測誤差后)將該反向運動向量存儲在反向運動向量緩沖區(qū)中。編碼器/解碼器通過從正向運動向量緩沖區(qū)的候選運動向量中預(yù)測正向運動向量來填充"空穴",并將該正向運動向量(在此為預(yù)測值)存儲在正向運動向量緩沖區(qū)中。在正向和反向運動向量緩沖區(qū)中略去作為幀內(nèi)編碼宏塊的鄰居。各種特定情形確定隔行掃描b-幀中1mv和半幀編碼2mv宏塊的組合。如果當前1mv宏塊的位置a、b或c中的相鄰宏塊是半幀編碼的2mv宏塊,則編碼器/解碼器取2mv宏塊的半幀運動向量的均值作為該位置的運動向量預(yù)測值。對于正向預(yù)測的當前2半幀mv宏塊,例如對于兩個正向預(yù)測半幀運動向量的每一個,來自鄰居的候選運動向量從正向運動向量緩沖區(qū)中收集。編碼器/解碼器基于相鄰宏塊的編碼模式(例如幀內(nèi)、1mv、2半幀mv)選擇一個候選運動向量集,這些相鄰宏塊存儲在正向運動向量緩沖區(qū)中。如果相鄰宏塊存在且不是幀內(nèi)編碼的,則編碼器/解碼器注意該宏塊的運動向量以添加到候選集中去。在一些實施例中,編碼器/解碼器繼續(xù)如下動作。對于上半幀正向運動向量,如果位置a、b或c中的相鄰宏塊是1mv宏塊,則編碼器將來自正向運動向量緩沖區(qū)的相應(yīng)位置的宏塊的運動向量添加到候選集中。對于是2半幀mv宏塊的位置a、b或c中的相鄰宏塊,編碼器/解碼器將來自正向運動向量緩沖區(qū)的相應(yīng)位置的上半幀mv添加到該集中。對于下半幀正向運動向量,如果位置a、b或c中的相鄰宏塊是1mv宏塊,則編碼器將來自正向運動向量緩沖區(qū)的相應(yīng)位置的宏塊的運動向量添加到候選集中。對于是2半幀mv宏塊的位置a、b或c中的相鄰宏塊,編碼器/解碼器將來自正向運動向量緩沖區(qū)的相應(yīng)位置的下半幀mv添加到該集中。為了計算2半幀mv宏塊的半幀運動向量的預(yù)測值,編碼器/解碼器然后計算候選集的中值。為了計算2半幀mv宏塊的反向預(yù)測運動向量,邏輯與正向預(yù)測情形相同,但來自鄰居的候選運動向量是從反向運動向量緩沖區(qū)中收集的。再一次,對于運動向量預(yù)測,略去位置a、b或c中幀內(nèi)編碼的鄰居。在重構(gòu)2半幀mv宏塊的運動向量之后(例如通過添加運動向量差值信息),重構(gòu)后的實際運動向量按適合重構(gòu)后運動向量的預(yù)測方向,被置入正向運動向量緩沖區(qū)或反向運動向量緩沖區(qū)。運動向量緩沖區(qū)的用于缺少方向的相應(yīng)空槽通過計算缺少方向的運動向量預(yù)測值并將該運動向量預(yù)測值存儲在空槽中來填充。如果使用預(yù)測模式切換(參見以上vi節(jié)),一例外牽涉到隔行掃描b-幀內(nèi)半幀編碼宏塊的空穴填充。在該情形中,給定半幀編碼的2mv宏塊具有一個正向運動向量和一個反向運動向量。在重構(gòu)隔行掃描b-幀的半幀編碼宏塊之后,在半幀編碼宏塊在上半幀和下半幀之間切換預(yù)測方向時,編碼器/解碼器用正向運動向量填充正向運動向量緩沖區(qū)的上下運動向量"槽",并用反向運動向量填充反向緩沖區(qū)的上下運動向量槽。盡管正向運動向量僅對一個半幀(例如上半幀)發(fā)送,編碼器將同一運動向量置入正向運動向量緩沖區(qū)的上下半幀運動向量槽。類似地,盡管反向運動向量僅對下半幀發(fā)送,編碼器將它置入反向運動向量緩沖區(qū)的上下半幀槽。例如,圖46示出正向運動向量緩沖區(qū)4610和反向運動向量緩沖區(qū)4620中重構(gòu)宏塊4680的上下半幀的運動向量。在圖46所示示例中,對于重構(gòu)宏塊4630-4670,編碼器/解碼器將正向運動向量存儲在正向運動向量緩沖區(qū)4610中,并將反向運動向量存儲在反向緩沖區(qū)4620中。重構(gòu)宏塊4680是用預(yù)測切換進行半幀編碼的,且其上半幀運動向量被存儲在正向或反向運動向量緩沖區(qū)中(取決于上半幀運動向量的預(yù)測方向)的上下位置。宏塊4680的下半幀運動向量被存儲在其它運動向量緩沖區(qū)的上下位置中。在該示例中,重構(gòu)宏塊4680使用預(yù)測模式切換。盡管正向運動向量和方向運動向量都僅對一個半幀發(fā)送,但編碼器將同一運動向量置入相應(yīng)正向和反向運動向量緩沖區(qū)的上下半幀運動向量槽中。如果當前宏塊被插值,則編碼器/解碼器使用正向運動向量緩沖區(qū)來預(yù)測正向運動向量(或2半幀MV宏塊的正向運動向量),使用反向運動向量緩沖區(qū)來預(yù)測反向運動向量(或2半幀MV宏塊的反向運動向量),并(在添加了一計算好就添加的預(yù)測誤差之后)將該正向和反向運動向量分別存儲在正向和反向運動向量緩沖區(qū)中。如果宏塊是在隔行掃描B-幀中直接預(yù)測的,則編碼器/解碼器可使用以上VII節(jié)描述的技術(shù)。在一些實現(xiàn)中,1MV宏塊、2半幀MV宏塊和幀內(nèi)宏塊被允許用于隔行掃描B-幀(但不是其它MV宏塊類型),因為只需要確定較少的當前/鄰居模式組合而簡化了用于預(yù)測運動向量的邏輯。或者,允許其它和/或附加MV模式,諸如4幀MV宏塊和4半幀MV宏塊。例如,圖64、69和70中示出的偽碼的一部分可用來確定隔行掃描B-幀的這種其它組合。C.隔行掃描B-半幀的運動向量預(yù)測一般而言,對于隔行掃描B-半幀,先前重構(gòu)(或?qū)С?的正向半幀運動向量被用作當前正向半幀運動向量的預(yù)測值,且先前重構(gòu)(或?qū)С?的反向半幀運動向量被用作當前反向半幀運動向量的預(yù)測值。在正向或反向模式中,當前正向或反向半幀的運動向量被添加到適當?shù)倪\動向量緩沖區(qū)中,且另一(缺少)方向的運動向量(例如正向模式中的反向方向,或反向模式中的正向方向)被導(dǎo)出用作將來使用的預(yù)測值。在一些實現(xiàn)中,半幀運動向量預(yù)測選擇根據(jù)以上III.A.2節(jié)的詳細描述和以下XIV.B.3節(jié)描述的雙參考半幀運動向量預(yù)測邏輯進行。例如,圖33A-33F中示出的偽碼用來計算隔行掃描B-半幀的宏塊的兩個半幀的正向運動向量預(yù)測值,且一個運動向量預(yù)測值被選擇用于重構(gòu)正向半幀的運動向量。然后將重構(gòu)的運動向量置于正向運動向量緩沖區(qū)中。該偽碼也用來計算該宏塊的兩個半幀的反向運動向量預(yù)測值,且一個預(yù)測值被選擇用作反向運動向量緩沖區(qū)的填充值。對于隔行掃描B-半幀,為了填充缺少方向的運動向量緩沖區(qū)中的"空穴",編碼器/解碼器在相同極性和相反極性的運動向量預(yù)測值之間選擇。這種極性之間的選擇因為兩個預(yù)測值在給定缺少方向中產(chǎn)生一一個與當前半幀極性相同,另一個與當前半幀極性相反。因此,在一些實現(xiàn)中,編碼器/解碼器選擇用于缺少方向運動向量的主要或"主"極性預(yù)測值。這樣,正向和方向運動向量的完整集就被提供用于運動向量預(yù)測。或者,確定主極性、首先進行預(yù)測值選擇、并只計算選定運動向量預(yù)測值。在一實現(xiàn)中通過從不同極性的半幀運動向量預(yù)測值中選擇來進行實際值緩存和空穴填充的過程如圖47中的偽碼4700所示。偽碼4700示出,在空穴填充預(yù)測期間,沒有實際運動向量被提供為缺少方向,因此具有主極性的經(jīng)預(yù)測的缺少方向運動向量由編碼器/解碼器來選擇。在一些實現(xiàn)中,隔行掃描B-半幀的運動向量預(yù)測的整個方案如下所述。如果宏塊是正向預(yù)測的,則編碼器/解碼器從正向運動向量緩沖區(qū)的候選相同和/或相反極性運動向量(例如大多數(shù)情形中使用來自左、上和右上鄰居的三者中值預(yù)測)或從緩存運動向量中導(dǎo)出的運動向量中預(yù)測其正向運動向量。編碼器/解碼器將重構(gòu)后的正向運動向量存儲在正向運動向量緩沖區(qū)中,計算主反向運動向量預(yù)測值(類似于用來自反向運動向量緩沖區(qū)的空間鄰域的三者中值預(yù)測的),并將其存儲在反向運動向量緩沖區(qū)中的相應(yīng)位置。如果宏塊是反向預(yù)測的,則編碼器/解碼器從反向運動向量緩沖區(qū)的候選相同和/或相反極性運動向量(例如大多數(shù)情形中使用來自左、上和右上鄰居的三者中值預(yù)測)或從緩存運動向量中導(dǎo)出的運動向量中預(yù)測其反向運動向量。編碼器/解碼器將重構(gòu)后的反向運動向量存儲在反向運動向量緩沖區(qū)中,計算主正向運動向量預(yù)測值(類似于用來自正向運動向量緩沖區(qū)的空間鄰域的三者中值預(yù)測的),并將其存儲在正向運動向量緩沖區(qū)中的相應(yīng)位置。如果該宏塊是插值的,則編碼器/解碼器使用正向運動向量緩沖區(qū)來預(yù)測正向運動向量分量,使用反向運動向量緩沖區(qū)來預(yù)測反向運動向量分量,并(在添加了一計算好就添加的預(yù)測誤差之后)將重構(gòu)后的正向和反向運動向量分別存儲在正向和反向運動向量緩沖區(qū)中。如果宏塊是直接預(yù)測的,則編碼器/解碼器計算當前半幀的直接模式運動向量,并將正向和反向運動向量分量存儲在相應(yīng)的運動向量緩沖區(qū)中。在運動向量預(yù)測中,略去位置A、B或C中幀內(nèi)編碼的鄰居。各種特定情形確定隔行掃描B-半幀中1MV和4MV宏塊的組合。圖6A-10示出用于逐行掃描P-幀的運動向量預(yù)測的預(yù)測值模式。這些相同模式示出被視為用于混合MV的隔行掃描B-半幀的1MV或4MV宏塊的運動向量的運動向量預(yù)測的候選運動向量的塊或宏塊的位置。對于幀是一個宏塊寬的特定情形,預(yù)測值總是PredicatorA(頂部預(yù)測值)。各種其它規(guī)則解決其它特定情形,諸如首行4MV宏塊、首行1MV宏塊、和幀內(nèi)編碼預(yù)測值。圖6A-10中所示的預(yù)測值模式用來使用來自正向運動向量緩沖區(qū)中各位置的候選值進行正向預(yù)測,并使用來自反向運動向量緩沖區(qū)中位置的候選值進行反向預(yù)測。此外,圖6A-10中所示的預(yù)測值模式結(jié)合以上所述的對隔行掃描B-半幀的雙參考半幀運動向量預(yù)測邏輯來使用。圖6A和6B示出被視作用于混合MV的隔行掃描B-半幀中的1MV當前宏塊的候選運動向量預(yù)測值的塊的位置。相鄰的各個宏塊可以是1MV或4MV宏塊。圖6A和6B示出假設(shè)鄰居是4MV的候選運動向量的位置(即預(yù)測值A(chǔ)是當前宏塊上面的宏塊中塊2的運動向量,而預(yù)測值C是當前宏塊左側(cè)緊鄰的宏塊中塊1的運動向量)。如果鄰居的任一個是1MV宏塊,則圖5A和5B中示出的運動向量預(yù)測值被視為整個宏塊的運動向量預(yù)測值。如圖6B所示,如果宏塊是該行中的最后一個宏塊,則預(yù)測值B來自左上方宏塊的塊3而不像其它情形一樣來自右上方宏塊的塊2。圖7A-10示出被視作用于混合MV的隔行掃描B-半幀的4MV宏塊中4個亮度塊的每一個的候選運動向量預(yù)測值的塊的位置。圖7A和7B是示出被視作用于位置0上一個塊的候選運動向量預(yù)測值的塊的位置的示圖;圖8A和8B是示出被視作用于位置1上一個塊的候選運動向量預(yù)測值的塊的位置的示圖;圖9是示出被視作用于位置2上一個塊的候選運動向量預(yù)測值的塊的位置的示圖;而圖10是示出被視作用于位置3上一個塊的候選運動向量預(yù)測值的塊的位置的示圖。再一次,如果鄰居是1MV宏塊,則該宏塊的運動向量預(yù)測值用于該宏塊的各個塊。對于宏塊是行中第一宏塊的情形,塊0的預(yù)測值B與該行中剩余宏塊的塊0進行不同的處理(參見圖7A和7B)。在該情形中,預(yù)測值B從當前宏塊上面緊鄰宏塊的塊3中取得,而不像其它情形一樣從當前宏塊左上方的宏塊的塊3中取得。類似地,對于宏塊是行中最后一個宏塊的情形,塊1的預(yù)測值B進行不同的處理(參見圖8A和8B)。在該情形中,預(yù)測值從當前宏塊上面緊鄰宏塊的塊2中取得,而不像其它情形一樣從當前宏塊右上方的宏塊的塊2中取得。一般而言,如果該宏塊在第一宏塊列中,則塊0和2的預(yù)測值C被設(shè)置為等于0。再一次,對于運動向量預(yù)測,略去位置A、B或C中幀內(nèi)編碼的鄰居。在重構(gòu)4MV宏塊的運動向量之后(例如通過添加運動向量差值信息),重構(gòu)后的實際運動向量按適合重構(gòu)后運動向量的預(yù)測方向,被置入正向運動向量緩沖區(qū)或反向運動向量緩沖區(qū)。運動向量緩沖區(qū)的用于缺少方向的相應(yīng)空槽通過計算缺少方向的相同和相反極性的運動向量預(yù)測值、在不同極性運動向量預(yù)測值之間選擇、并將該運動向量預(yù)測值存儲在空槽中來填充。再參看圖34A和34B,對于運動向量預(yù)測,編碼器/解碼器使用偽碼3400中所示的縮放運算,將一個半幀運動向量預(yù)測值從另一個半幀運動向量預(yù)測值導(dǎo)出。示出兩個可能的值集,其中當前半幀是隔行掃描視頻幀中的第一半幀的情形在圖35的表格3500中示出,而當前半幀是隔行掃描視頻幀中的第二半幀的情形在圖36的表格3600中示出。在表格3500和3600中,SCALEOPP、SCALESAME1、SCALESAME2、SCALEZONE1—X、SCALEZONEl一Y、ZONE10FFSET一X和ZO畫OFFSET_Y取決于參考幀距離。在一些實現(xiàn)中,使用分數(shù)編碼來計算用于隔行掃描B-半幀中的正向和反向參考的參考幀距離。BFRACTION語法元素(它用信號表示隔行掃描B-半幀的正向或反向預(yù)測模式宏塊,而不只是隔行掃描B-幀的直接模式宏塊)用來導(dǎo)出正向和反向參考圖片距離,如以下偽碼所示正向參考幀距離(FRFD)=NINT((BFRACTION分子)/(BFRACTION分母)*參考幀距離-1If(FRFDO)thenFRFD=0反向參考幀距離(BRFD)=參考幀距離-FRFD-l(其中NINT是最近整數(shù)操作符)BFRACTION分子和分母從BFRACTION語法元素中解碼。元素BFRACTION可用來表示可在比特流中發(fā)送的不同分數(shù)(例如在隔行掃描B-半幀的幀級別上)。該分數(shù)在0和1之間的有限離散值集中取值,并在通過其錨形成的間隔內(nèi)標示B-圖片的相對時間位置。對于具有隔行掃描B-半幀的幀中的第二半幀的正向預(yù)測和反向預(yù)測,編碼器/解碼器根據(jù)圖34A和34B中的偽碼3400執(zhí)行運動向量縮放。然而,在一些實現(xiàn)中,執(zhí)行第一半幀的反向運動向量預(yù)測的編碼器/解碼器使用如在圖48中所示偽碼4800中定義的函數(shù)scaleforopposite—x、scaleforopposite—y、scaleforsame—x、scaleforsame—y。在一實現(xiàn)中用于第一隔行掃描B-半幀的SCALESAME、SCALE0PP1、SCALEOPP2、SCALEZ0NE1一X、SCALEZONE1—Y、ZONE1OFFSET—X和ZONElOFFSET_Y在圖49的表格4900中示出。在表格4900中,變量N和運動向量范圍之間的關(guān)系與以上參考圖35和36和表格1所述的關(guān)系相同?;蛘?,參考幀距離用另一種方法計算,或者縮放根據(jù)不同算法執(zhí)行。例如,縮放與N的值無關(guān)地執(zhí)行(即N取為1)。X.具有隔行掃描B-半幀的"自參考"幀具有隔行掃描B-半幀的幀被編碼為兩個獨立(且某種程度上獨立編碼的)的半幀。上半幀由幀的偶光柵行(從行0開始)組成,而下半幀由幀的奇光柵行組成。因為"半幀圖片"中的半幀可獨立解碼,所以它們不需要以任何預(yù)先設(shè)置順序發(fā)送。例如,編碼器可先發(fā)送下半幀再發(fā)送上半幀,或反之。在有些實現(xiàn)中,兩個半幀的順序由"先上半幀"的語法元素表示,該語法元素取決于解碼幀的兩個半幀的準確時間順序而為真或假?,F(xiàn)有的編碼器和解碼器己將前后錨幀(例如I-或P-幀)或前后錨幀中的半幀用作"參考"圖片,以執(zhí)行對當前B-圖片的運動補償?,F(xiàn)有的編碼器和解碼器還限制B-圖片或其任何部分用作任何圖片的運動補償參考。然而,在所述技術(shù)和工具的一些實現(xiàn)中,一種或多種這些"規(guī)則"被放松。例如,在一些實現(xiàn)中,第一隔行掃描B-半幀參考來自前后錨圖片的第一和第二半幀。第二隔行掃描B-半幀參考作為"相反極性"半幀的來自當前圖片的第一隔行掃描B-半幀和作為"相同極性"半幀的前一錨幀的相同極性半幀,以及來自下一錨圖片的第一和第二半幀。圖50B是示出隔行掃描視頻幀B2中兩個隔行掃描B-半幀的每一個的參考半幀的示圖。在圖50B所示示例中,要解碼的第一B-半幀(在此為上半幀)被允許參考正向(時間上過去)錨P1中的兩個參考半幀和來自反向(時間上將來)錨P3中的兩個參考半幀,總共為4個參考半幀。B2的要解碼的第二隔行掃描B-半幀被允許參考來自同一隔行掃描視頻幀(因而打破了不允許B-圖片的各部分用作參考的慣例)的第一半幀和來自前一錨P1的一個參考半幀,以及來自將來錨P3的兩個半幀。為作比較,圖50A示出隔行掃描視頻幀的隔行掃描P-半幀遵守的慣例。實現(xiàn)這些隔行掃描B-半幀參考規(guī)則的技術(shù)和工具可提供更好的壓縮。隔行掃描視頻的半幀編碼對于編碼高運動是最為有效的,高運動即為在上半幀和下半幀之間有相當運動時。例如,在該情形中,幀的上(且首先編碼的)半幀對于同一幀下半幀中的像素將是比從前一幀中(來自較遠的時間距離)取得的上半幀好得多的預(yù)測值。由于它們之間較大的時間距離,當運動較高時這些時間上將來的預(yù)測值提供弱得多的預(yù)測。此外,對于時間上更遠的預(yù)測值來說閉塞的可能性放大,這導(dǎo)致更多編碼昂貴的幀內(nèi)編碼宏塊。特別地,實驗證實允許幀的第二個時間隔行掃描B-半幀參考同一幀的第一時間隔行掃描B-半幀可產(chǎn)生顯著的壓縮增益。XI.隔行掃描B-半幀中正向模式的位平面編碼如以上X節(jié)所述,在一些實現(xiàn)中,當前幀的第二已編碼隔行掃描B-半幀可參考當前幀的第一已編碼隔行掃描B-半幀。該"自參考"技術(shù)在具有高運動的幀的隔行掃描B-半幀中是有效的,因為當前幀的時間上較近的B-半幀常常是比時間上較遠的錨半幀更好的預(yù)測值。當具有隔行掃描B-半幀的幀具有較高運動,且時間上第二隔行掃描B-半幀首選時間上第一隔行掃描B-半幀作為預(yù)測參考時,第二隔行掃描B-半幀中宏塊的更有效預(yù)測模式將常常是"正向"模式。因為隔行掃描B-半幀中的正向模式預(yù)測是用于降低比特率的有效工具,所以特別是在低比特率情形中,減少信號表示開銷以降低用信號表示正向模式預(yù)測的整體成本是有利的。因此,在一些實施例中,編碼器使用統(tǒng)一的位平面編碼技術(shù)來編碼正向模式預(yù)測信息。例如,編碼器編碼壓縮位平面中的正向模式預(yù)測信息,其中位平面中的每個比特關(guān)聯(lián)于一宏塊,且每個比特的值用信號表示該宏塊是用正向模式還是用非正向預(yù)測模式編碼。經(jīng)壓縮位平面可在幀級別、半幀級別或在一些其它級別上發(fā)送。與用于隔行掃描B-半幀的其它預(yù)測模式相比,位平面編碼技術(shù)偏向于利用正向模式。例如,如果隔行掃描B-半幀上的大多數(shù)宏塊使用正向預(yù)測,則編碼器通過位平面編碼正向/非正向決定,可將信號表示開銷降為每個宏塊小于一個比特。圖51示出在具有一個或多個位平面編碼模式的視頻編碼器中用于編碼隔行掃描B-半幀的宏塊的正向/非正向預(yù)測模式?jīng)Q定信息的一種技術(shù)5100。圖52示出用于解碼由具有一個或多個位平面編碼模式的視頻編碼器編碼的正向/非正向預(yù)測模式?jīng)Q定信息的相應(yīng)技術(shù)5200。。參照圖51,編碼器選擇用于編碼正向/非正向預(yù)測模式?jīng)Q定信息的位平面編碼模式(5110)。在選擇編碼模式之后,編碼器用所選模式來編碼正向/非正向預(yù)測模式?jīng)Q定信息(5120)。該編碼器在逐個半幀基礎(chǔ)上選擇位平面編碼模式?;蛘?,編碼器在一些其它基礎(chǔ)上(例如在序列級別)選擇位平面編碼模式?;蛘?,如果只使用一種位平面編碼模式,則不進行位平面編碼模式的選擇。當編碼器完成編碼正向/非正向預(yù)測模式?jīng)Q定信息時(5130),正向/非正向預(yù)測模式?jīng)Q定信息的編碼結(jié)束。參照圖52,解碼器確定編碼器使用(并用信號表示)的編碼正向/非正向預(yù)測模式?jīng)Q定信息的位平面編碼模式(5210)。然后該解碼器用選定模式解碼正向/非正向預(yù)測模式?jīng)Q定信息。該解碼器在逐個半幀基礎(chǔ)上確定位平面編碼模式?;蛘?,解碼器在一些其它基礎(chǔ)上(例如在序列級別)確定位平面編碼模式?;蛘撸绻挥幸环N位平面編碼模式可用,則不進行位平面編碼模式的選擇。當解碼器完成解碼正向/非正向預(yù)測模式?jīng)Q定信息時(5230),正向/非正向預(yù)測模式?jīng)Q定信息的解碼結(jié)束。對于有關(guān)根據(jù)若干組合實現(xiàn)來用信號表示和解碼各種位平面編碼模式的其它細節(jié),參見以下XIV節(jié)。對于有關(guān)一般位平面編碼的更多細節(jié),參見序列號為10/321,415題為"SkipMacroblockCoding"(跳過宏塊編碼)并于2002年12月16日提交的美國專利申請,其公開內(nèi)容通過引用結(jié)合在此?;蛘撸硎菊?非正向模式信息的比特可未經(jīng)壓縮地和/或在一些其它級別(例如宏塊級別)上發(fā)送。如果指示的是非正向預(yù)測,則編碼器指定該宏塊的非正向預(yù)測模式(例如反向模式、直接模式、插值模式、或幀內(nèi)模式)。在一些實現(xiàn)中,編碼器在宏塊級別參照VLC表格編碼非正向預(yù)測模式,如以下表格2所示。<table>tableseeoriginaldocumentpage63</column></row><table>表格2.運動預(yù)測模式VLC表格在表格2所示示例中,反向模式是較佳的非正向預(yù)測模式。編碼器用1-比特信號表示反向模式,并用2-比特信號表示直接和插值模式?;蛘撸幋a器使用不同代碼來表示不同的預(yù)測模式和/或首選一種不同的非正向預(yù)測模式。在一些實現(xiàn)中,幀內(nèi)模式由特定運動向量差值來作信號表示,該值用預(yù)測模式是幀內(nèi)模式的編碼方式來表示。運動向量差值因此用來推斷該宏塊是幀內(nèi)編碼的,但是按照慣例編碼器將預(yù)測類型設(shè)置為反向,以便于不會具有任何未定義預(yù)測類型。XII.在隔行掃描B-半幀中選擇用于直接模式的共處運動向量在一些實現(xiàn)中,半幀編碼B-圖片中宏塊的直接模式運動向量使用特殊邏輯來選擇。對于隔行掃描B-半幀中的當前宏塊,如果下一錨圖片的相應(yīng)半幀的共處宏塊使用4個運動向量進行編碼,則該邏輯在該共處宏塊的最多達四個運動向量中偏向更主要的極性(例如相同或相反)。一旦選擇了用于當前宏塊的運動向量,編碼器/解碼器就可應(yīng)用縮放運算以給出直接模式運動向量。在一些實現(xiàn)中,對于隔行掃描B-半幀的直接模式1MV宏塊,編碼器/解碼器基于具有相同極性的參考半幀(例如時間上的下一P-半幀)內(nèi)共處宏塊的一個或多個運動向量,計算用于直接模式縮放的運動向量。如果參考半幀中的共處宏塊是1MV宏塊,則編碼器/解碼器使用單個運動向量來導(dǎo)出隔行掃描B-半幀中宏塊的直接模式運動向量。另一方面,如果參考半幀中的共處宏塊是4MV宏塊,則編碼器/解碼器在選擇用于導(dǎo)出隔行掃描B-半幀中宏塊的直接模式運動向量的運動向量時考慮該4個運動向量的極性(偏向主要極性)。在解碼隔行掃描B-半幀期間編碼器/解碼器在需要時可將該選擇邏輯應(yīng)用于參考半幀中的4MV宏塊。或者,編碼器/解碼器可在解碼參考半幀之后應(yīng)用該選擇邏輯,然后僅緩存要在后來隔行掃描B-半幀解碼中使用的值。例如,對于參考半幀中的共處4MV宏塊,如果(4者中)來自相同極性半幀的運動向量數(shù)量超過來自相反極性半幀的運動向量數(shù)量,則如果相同極性運動向量的數(shù)量分別為4、3、2或1,編碼器/解碼器可使用四者中值、三者中值、二者中值或相同極性半幀運動向量的值來計算在直接模式隔行掃描B-半幀解碼中使用的運動向量。否則,如果來自相反極性半幀的運動向量數(shù)量超過來自相同極性半幀的運動向量,則編碼器/解碼器可使用類似運算來從相反極性半幀的運動向量中得到代表性的運動向量,以用于直接模式的隔行掃描B-半幀解碼。如果共處宏塊的四個運動向量的原始集中(不管極性)兩個以上運動向量是幀內(nèi)編碼的,則編碼器/解碼器可將共處代表性運動向量簡單地視為是幀內(nèi)編碼的(即(0,0))。然而,在一些實現(xiàn)中,隔行掃描B-半幀中的所有幀內(nèi)MB都被編碼為1MV,所以原始的4個運動向量中的兩個以上為幀內(nèi)編碼的情形導(dǎo)致共處代表性運動向量被視為是幀內(nèi)編碼在實際上不可能。圖53中的偽碼5300示出對用作隔行掃描B-半幀中直接模式運動向量的基礎(chǔ)的運動向量的選擇過程。在一些實現(xiàn)中,該選擇過程是產(chǎn)生正向和反向指示直接模式運動向量的縮放運算的前身。XIII.隔行掃描視頻幀中的幀內(nèi)編碼B-半幀隔行掃描BI-半幀(或"幀內(nèi)B-半幀")是與其參考圖片獨立編碼的半幀。在隔行掃描BI-半幀不可用作預(yù)測其它圖片的錨的意義上,它們不同于其它幀內(nèi)半幀(例如隔行掃描I-半幀)。沒有對隔行掃描BI-半幀的圖片間依賴性,且它在比特流中的出現(xiàn)不表示可獨立解碼分段或圖片組的開始。然而,隔行掃描視頻幀中的第一半幀如果被編碼為BI-半幀,則可用來預(yù)測該幀中可被編碼為隔行掃描B-半幀的第二個半幀。這種革新還通過在許多情形中僅對幀的一半(第一編碼半幀)使用幀內(nèi)編碼而不將整個幀編碼為內(nèi)幀或?qū)蓚€半幀編碼為幀內(nèi)半幀,來改進整體壓縮。在一些實現(xiàn)中,幀可包括兩個B-半幀、兩個BI-半幀、或一個B-或一個BI-半幀。使用隔行掃描BI-半幀而不使用隔行掃描I-半幀是有理由的。一個理由是避免犧牲時間可縮放性。例如,當解碼器提交數(shù)字視頻且需要立即丟棄一些圖片以跟上處理需求時,它可尋找它可能丟棄的半幀序列。如果序列中的幀內(nèi)半幀變成關(guān)鍵半幀,則解碼器將被迫解碼它們以用作其它半幀的參考,并且不能丟棄它們。然而,如果序列中的幀內(nèi)半幀被編碼為BI-半幀,則解碼器將仍然有丟棄它們的選擇,而不損害后續(xù)運動補償。在隔行掃描BI-半幀更有效地用信號表示用于幀內(nèi)編碼和解碼的語法元素的意義上,隔行掃描BI-半幀不同于具有幀內(nèi)宏塊的隔行掃描B-半幀,因為BI-半幀內(nèi)運動補償相關(guān)元素(或信號表示其缺失的元素)可被消除。換言之,當在視頻序列中的幀間半幀預(yù)測中斷點上(例如因為場景變化或復(fù)雜運動)編碼隔行掃描B-半幀時,使用隔行掃描BI-半幀(而不是常規(guī)B-半幀)的理由產(chǎn)生。常常這種半幀中的大多數(shù)宏塊將需要編碼為幀內(nèi)宏塊。在該情形中,根據(jù)比特率來看,要將整個B-半幀編碼為一個BI-半幀常常比發(fā)送該半幀中每個宏塊的預(yù)測模式信息要容易。當對隔行掃描B-半幀的較好預(yù)測或運動補償不可能時,它可被編碼為BI-半幀。在一些實現(xiàn)中,編碼器可用信號表示比特流中作為圖片類型的可能值之一的BI-半幀的出現(xiàn)?;蛘撸珺I-半幀的出現(xiàn)可用一些其它方法來指示。XIV.組合實現(xiàn)現(xiàn)在描述對比特流語法、語義和解碼器的詳細組合實現(xiàn),以及與主要組合實現(xiàn)有細微差異的另一組合實現(xiàn)。A.比特流語法在各種組合實現(xiàn)中,用于隔行掃描B-圖片的數(shù)據(jù)以具有多個層(例如,序列、幀、半幀、宏塊、塊和/或子塊層)的比特流形式呈現(xiàn)。對于具有隔行掃描B-半幀和/或BI-半幀的隔行掃描視頻幀,幀級別比特流元素如圖54所示。每個幀的數(shù)據(jù)包括幀頭,隨后是半幀層的數(shù)據(jù)(示為每個半幀的重復(fù)"FieldPicLayer"元素)。組成隔行掃描B-半幀和BI-半幀的半幀頭的比特流元素分別如圖55和56所示。組成隔行掃描B-半幀(幀內(nèi)、1MV、或4MV宏塊)和BI-半幀的宏塊層的比特流元素分別如圖57和58所示。對于隔行掃描B-幀,幀級別比特流元素如圖59所示。每個幀的數(shù)據(jù)包括幀頭,隨后是宏塊層的數(shù)據(jù)。組成隔行掃描B-幀的宏塊層的比特流元素(幀內(nèi)或各種幀間類型宏塊)如圖60所示。以下小節(jié)描述幀、半幀和宏塊層中的選定比特流元素,它們與相關(guān)于雙向預(yù)測隔行掃描圖片的信號表示相關(guān)。盡管選定比特流元素在特定層的上下文中描述,但一些比特流元素可在一個以上層中使用。1.選定幀層元素圖54是示出包含隔行掃描B-半幀或BI-半幀(或可能其它類隔行掃描半幀)的幀的幀級別比特流語法的示圖。圖59是示出隔行掃描B-幀的幀級別比特流語法的示圖。特定的比特流元素如下所述。幀編碼模式(FCM)(可變大小)FCM是用來表示圖片編碼類型的可變長度代碼字["VLC"]。FCM具有如以下表格3所示的幀編碼模式的值。表格3.幀編碼模式VLC<table>tableseeoriginaldocumentpage66</column></row><table>半幀圖片類型(FPTYPE)(3個比特)FPTYPE是包括隔行掃描P-半幀、隔行掃描I-半幀、隔行掃描B-半幀和/或隔行掃描BI半幀的幀的幀頭中提供的3-比特語法元素。FPTYPE具有隔行掃描視頻幀中半幀類型的不同組合的值,如下表4所示。<table>tableseeoriginaldocumentpage67</column></row><table>表格5中的最后一行表示用來表示大于2的參考幀距離的代碼字。這些被編碼為(二進制)11,隨后是N-3ls,其中N是參考幀距離。代碼字中最后一個比特為O。例如N=3,VLC代碼字410,VLC大小=3N=4,VLC代碼字-1110,VLC大小=4N=5,VLC代碼字-11110,VLC大小=5圖片類型(PTYPE)(可變大小)PTYPE是隔行掃描B-幀(或其它類型的隔行掃描幀,諸如隔行掃描I-幀、或隔行掃描P-幀)的幀頭中提供的可變大小的語法元素。PTYPE具有不同幀類型的值,如以下表格6所示。表格6.圖片類型VLC<table>tableseeoriginaldocumentpage67</column></row><table>如果PTYPE指示該幀被跳過,則該幀被視為與其參考幀等同的P幀。被跳過幀的重構(gòu)在概念上等同于復(fù)制該參考幀。被跳過幀意思是沒有該幀的其它數(shù)據(jù)被傳送。B-幀直接模式MB比特語法元素(DIRECTMB)(可變大小)DIRECTMB語法元素使用位平面編碼來表示B圖片(在此為隔行掃描B-幀)中以直接模式編碼的宏塊。DIRECTMB語法元素還可用信號表示該直接模式是用原始模式來作信號表示的,在該情形中直接模式在隔行掃描B-幀的宏塊的宏塊級別上作信號表示。經(jīng)擴展的MV范圍標記(MVRANGE)(可變大小)MVRANGE是在序列層EXTENDED一MV比特被設(shè)置為1時提供的可變大小的語法元素。MVRANGEVLC表示運動向量范圍。經(jīng)擴展的差值MV范圍標記(DMVRANGE)(可變大小)DMVRANGE是如果序列層語法元素EXTENDED_DMV=1時提供的可變大小的語法元素,該DMVRANGEVLC表示運動向量差值范圍。宏塊模式表格(MBMODETAB)(2或3個比特)MBMODETAB語法元素是固定長度的字段。對于隔行掃描P-半幀,MBMODETAB是3比特值,表示8個哈夫曼表格的哪一個用來解碼宏塊層中的宏塊模式語法元素(MBMODE)。運動向量表格(MVTAB)(2或3個比特)MVTAB語法元素是2或3個比特的值。對于NUMREF=1的隔行掃描P-半幀,MVTAB是表示8個隔行掃描哈夫曼表格的哪一個用來解碼運動向量的數(shù)據(jù)的3比特語法元素。2MV塊模式表格(2MVBPTAB)(2個比特)2MVBPTAB語法元素是2個比特的值,它表示4個哈夫曼表格的哪一個用來解碼2MV半幀宏塊中2MV塊模式(2MVBP)語法元素。4MV塊模式表格(4MVBPTAB)(2個比特)4MVBPTAB語法元素是2個比特的值,它表示4個哈夫曼表格的哪一個用來解碼4MV半幀宏塊中4MV塊模式(4MVBP)語法元素。在另一組合實現(xiàn)中,圖片類型信息在隔行掃描B-半幀的半幀級別的開始處,而不是在包括隔行掃描B-半幀的隔行掃描視頻幀的幀級別上用信號表示,并可略去參考距離。2.選定半幀層元素圖55是示出組合實現(xiàn)中隔行掃描B-半幀的半幀級別比特流語法的示圖。特定比特流元素如下所述。運動向量模式(MVMODE)(可變大小或l比特)MVMODE語法元素用信號表示4種運動向量編碼模式之一,或一種亮度補償模式(還有某些圖片類型的較少可能)。若干后續(xù)元素提供附加運動向量模式和/或亮度補償信息。B-半幀正向模式MB比特語法元素(FORWARDMB)(可變大小)FORWARDMB語法元素將位平面編碼用來表示用正向模式編碼的B-半幀中宏塊。FORWARDMB語法元素還用信號表示,正向模式用原始模式來作信號表示,在該情形中正向/非正向模式?jīng)Q定在宏塊級別上作信號表示。圖56是示出組合實現(xiàn)中隔行掃描B-半幀的半幀級別比特流語法的示圖。在該組合實現(xiàn)中,隔行掃描BI-半幀的半幀級別比特流語法使用與隔行掃描I-半幀一樣的語法元素。3.選定宏塊層元素圖57是示出組合實現(xiàn)中隔行掃描B-半幀的宏塊的宏塊級別比特流語法的示圖。圖60是示出組合實現(xiàn)中隔行掃描B-幀的宏塊的宏塊級別比特流語法的示圖。特定比特流元素如下所述。宏塊的數(shù)據(jù)包括宏塊頭,隨后是塊層數(shù)據(jù)。宏塊模式(MBMODE)(可變大小)MBMODE語法元素指示宏塊類型(例如隔行掃描B-半幀的1MV、4MV或幀內(nèi)),以及CBP標記和運動向量數(shù)據(jù)的出現(xiàn)。正向B半幀編碼模式(FORWARDBIT)(1比特)FORWARDBIT是如果半幀級別語法元素FORWARDMB表示使用了原始模式時在隔行掃描B-半幀宏塊中提供的1-比特語法元素。如果FORWARDBIT=l,則宏塊使用正向模式編碼。B宏塊運動預(yù)測類型(BMVTYPE)(可變大小)BMVTYPE是隔行掃描B-幀宏塊和隔行掃描B-半幀宏塊中提供的可變大小語法元素,它表示該宏塊使用正向、反向還是插值預(yù)測。如表格7所示,對于隔行掃描B-幀的宏塊,BFRACTION以及BMVTYPE的值確定使用哪一種類型。表格7.BMVTYPEVLCBMVTYPE運動預(yù)測類型BFRACTIONS1/2BFRACTION〉1/20反向正向10正向反向11插值插值在隔行掃描B-半幀中,如果宏塊模式不是正向(由FORWARDMB或FORWARDBIT語法元素所示)且不使用4MV,則發(fā)送BMVTYPE。在該情形中,BMVTYPE用于用信號表示該B宏塊是反向、直接、還是插值的。這是簡單的VLC,其中反向=0,直接=10,插值=11。在宏塊模式不是正向且使用4MV的情形中,BMVTYPE是反向的,因為只有正向和反向模式被允許用于4MV。插值MV提供(INTERPMVP)(1比特)INTERPMVP是如果半幀級別語法元素BMVTYPE表示該宏塊類型為插值時在B-半幀中提供的1-比特語法元素。如果INTERPMVP-1,則插值MV出現(xiàn),否則它不出現(xiàn)。B宏塊運動向量l(BMV1)(可變大小)BMV1是差分編碼宏塊的第一運動向量的可變大小的語法元素。B宏塊運動向量2(BMV2)(可變大小)BMV2是如果使用插值模式時隔行掃描B-幀宏塊和隔行掃描B-半幀宏塊中提供的可變大小的語法元素。該語法元素差分地編碼宏塊的第二運動向量。4MV塊模式(4MVBP)(4個比特)該4MVBP語法元素指示4個亮度塊的哪一個包含非零運動向量差值,它的使用在下面詳細描述。塊級別運動向量數(shù)據(jù)(BLKMVDATA)(可變大小)BLKMVDATA是包含該塊的運動信息并在4MV宏塊中提供的可變大小的語法元素。半幀變換標記(FIELDTX)(1比特)FIELDTX是在隔行掃描B-幀的幀內(nèi)編碼宏塊中提供的1比特語法。該語法元素指示宏塊是幀編碼還是半幀編碼(基本上是宏塊的內(nèi)部組織)。FIELDTX=1指示該宏塊是半幀編碼的。否則,宏塊是幀編碼的。在幀間編碼宏塊中,該語法元素可從MBMODE推斷。直接B幀編碼模式(DIRECTBBIT)(1比特)DIRECTBBIT是如果幀級別語法元素DIRECTMB表示使用原始模式時在隔行掃描B-幀宏塊中提供的1-比特語法元素。如果DIRECTBBIT-1,則宏塊使用直接模式編碼。B幀MV切換(MVSW)(1比特)MVSW是如果MB為半幀模式以及如果BMVTYPE為正向或反向時在隔行掃描B-幀宏塊中提供的1-比特語法元素。如果MVSW-1,則MV類型和預(yù)測類型在從上半幀去到下半幀時從正向變成反向(或者從反向變成正向)。兩運動向量塊模式(2MVBP)(可變大小)2MVBP是在隔行掃描B-幀宏塊中提供的可變大小語法元素。如果MBMODE語法元素指示該宏塊包含一個運動向量,并且如果該宏塊是插值宏塊,則提供該語法元素。在該情形中,2MVBP指示提供兩個運動向量(正向和反向運動向量)的運動向量數(shù)據(jù)(MVDATA)(可變大小)MVDATA是編碼宏塊的運動向量差值的可變大小語法元素,它的解碼在下面詳細描述。圖58是示出組合實現(xiàn)中隔行掃描BI-半幀的宏塊級別比特流語法的示圖。在組合實現(xiàn)中,隔行掃描BI-半幀的宏塊級別比特流語法使用與隔行掃描I-半幀的相同語法元素。B.解碼隔行掃描的B-半幀以下各節(jié)描述用于解碼組合實現(xiàn)中隔行掃描B-半幀的過程。1.幀/半幀層解碼隔行掃描B-半幀可以是兩種類型之一1MV或混合MV。在lMV隔行掃描B-半幀中,取決于宏塊的預(yù)測類型(BMVTYPE),用0、1或2個運動向量來表示各預(yù)測塊的位移。當BMVTYPE等于DIRECT(直接)時,推斷出正向和反向運動向量,并且不顯式地用信號表示其它的運動向量。當BMVTYPE是INTERPOLATED(插值)時,解碼兩個運動向量正向和反向。在正向和反向情形中,只解碼一個運動向量。1MV模式通過MVM0DE圖片層語法元素來用信號表示。在混合MV隔行掃描B-半幀中,每個宏塊可被編碼為1MV或4MV宏塊。在4MV宏塊中,4個亮度塊的每一個都具有與之相關(guān)聯(lián)的運動向量。此外,4MV宏塊只可關(guān)聯(lián)于隔行掃描B-半幀中的正向或反向預(yù)測類型(BMVTYPE)。每個宏塊的1MV或4MV模式通過每個宏塊上的MBMODE語法元素來指示?;旌螹V模式通過MVMODE圖片層語法元素來用信號表示。2.宏塊層解碼隔行掃描B-半幀中的宏塊可以是三種可能類型之一1MV、4MV和幀內(nèi)。此夕卜,宏塊可以是四種預(yù)測類型(BMVTYPE)之一正向、反向、直接或插值。宏塊類型通過宏塊層中的MBMODE語法元素用信號表示。預(yù)測類型通過幀級別位平面FORWARDMB和宏塊級別BMVTYPE語法元素的組合用信號表示,其中幀級別位平面FORWARDMB用信號表示每個宏塊的正向/非正向,而宏塊級別BMVTYPE語法元素則在預(yù)測類型為非正向的情形中用信號表示。以下各節(jié)描述1MV和4MV類型、以及如何用信號表示它們。隔行掃描B-半幀中的1MV宏塊1MV宏塊可出現(xiàn)在1MV和混合MV隔行掃描B-半幀中。在1MV宏塊中,單個運動向量表示宏塊中全部6個塊的當前和參考圖片之間的位移。對于1MV宏塊,宏塊層中的MBMODE語法元素表示三點1)該宏塊類型為1MV2)是否出現(xiàn)CBPCY語法元素3)是否出現(xiàn)BMV1語法元素如果MBMODE語法元素表示BMV1語法元素出現(xiàn),則BMV1語法元素出現(xiàn)在相應(yīng)位置的宏塊層中。BMV1語法元素編碼運動向量差值。運動向量差值與運動向量預(yù)測值相組合,以重構(gòu)運動向量。如果MBMODE語法元素表示BMV1語法元素未出現(xiàn),則運動向量差值被取為O且因此運動向量等于運動向量預(yù)測值。如果MBMODE語法元素表示CBCPY語法元素出現(xiàn),則CBCPY語法元素出現(xiàn)在相應(yīng)位置的宏塊層中。CBCPY語法元素表示6個塊的哪一個在塊層上編碼。如果MBMODE語法元素表示CBCPY語法元素未出現(xiàn),則CBCPY被取為等于0且對宏塊中6個塊的任一個都不出現(xiàn)塊數(shù)據(jù)。此外,如果宏塊類型為1MV且宏塊的預(yù)測類型是插值,則編碼器使用INTERPMVP語法元素來用信號表示是否出現(xiàn)第二個運動向量差值BMV2。如果出現(xiàn),則解碼器在BMV1之后立即解碼BMV2。否則,BMV2的運動向量差值被取為0,而第二個運動向量等于運動向量預(yù)測值。當預(yù)測類型是插值時,BMV1對應(yīng)于正向運動向量而BMV2對應(yīng)于反向運動向量。隔行掃描B-半幀中的4MV宏塊4MV宏塊僅可出現(xiàn)在混合MVB-半幀圖片中,且限于正向和反向預(yù)測類型。在4MV宏塊中,4個亮度塊的每一個都具有關(guān)聯(lián)運動向量。色度塊的位移從4個亮度運動向量中導(dǎo)出。在混合MV隔行掃描B-半幀中,4MV宏塊僅可關(guān)聯(lián)于正向和反向預(yù)測類型。對于4MV宏塊,宏塊層中的MBMODE語法元素表示三點1)該宏塊類型為4MV2)是否出現(xiàn)CBPCY語法元素3)是否出現(xiàn)4MVBP語法元素4MVBP語法元素表示4個亮度塊的哪一個包含非零運動向量差值。該4MVBP語法元素解碼到0到15的值。對于4MVBP中4個比特位置的每一個,值0表示未出現(xiàn)該塊的運動向量差值(BLKMVDATA)且運動向量差值取為0。值1表示該塊的運動向量差值(BLKMVDATA)出現(xiàn)在相應(yīng)位置中。例如,如果4MVBP解碼為值100(二進制),則比特流包含塊0和1的BLKMVDATA并且未出現(xiàn)塊2和3的BLKMVDATA。如果MBMODE語法元素表示4MVBP語法元素未出現(xiàn),則假設(shè)出現(xiàn)全部4個亮度塊的運動向量差值數(shù)據(jù)(BLKMVDATA)。取決于MVMODE語法元素是表示混合MV還是全-lMV,MBMODE如下用信號表示信息。以下表格8示出MBMODE元素如何用信號表示有關(guān)全-lMV圖片中宏塊的信息。表格8.全-lMV圖片中的宏塊模式<table>tableseeoriginaldocumentpage73</column></row><table>以下表格9示出MBMODE元素如何用信號表示有關(guān)混合MV圖片中宏塊的信息。表格9.混合1MV圖片中的宏塊模式<table>tableseeoriginaldocumentpage73</column></row><table>8個編碼表格之一用于用信號表示MBMODE。所用特定表格通過MBMODETAB語法元素用信號表示。以下各節(jié)描述預(yù)測類型解碼和直接模式運動向量的解碼。隔行掃描B-半幀中的預(yù)測類型解碼(BMVTYPE)預(yù)測類型根據(jù)以下規(guī)則進行解碼。如果圖片級別位平面FORWARDMB表示宏塊是正向類型,則該宏塊的預(yù)測類型被設(shè)置為正向。如果FORWARDMB元素被編碼為原始,則編碼器/解碼器在宏塊級別上使用一附加比特FORWARDBIT,來判定預(yù)測類型是否為正向。如果預(yù)測類型為非正向,且如MBMODE語法元素用信號表示的該宏塊使用4MV(僅在混合MVB圖片中可能),則解碼器可直接推斷預(yù)測類型為反向,因為只有正向和反向類型可與4MV模式相關(guān)聯(lián)。否則,解碼器顯式地解碼BMVTYPE語法元素。解碼隔行掃描B-半幀中的直接模式運動向量為了解碼隔行掃描B-半幀中的直接模式運動向量,解碼器首先緩存來自先前解碼(即時間上在將來)的錨(I或P)圖片的運動向量。這樣,解碼器將所緩存的對應(yīng)于上半幀的運動向量用作預(yù)測值,以便于計算上部B-半幀的直接模式運動向量,并使用對應(yīng)于下半幀的運動向量計算下部B-半幀的運動向量。例如,半幀z(2=上/下)中的宏塊(x,y)將參考從先前解碼I或P半幀z(即與當前半幀相同極性的錨半幀中的共處宏塊)的宏塊(x,y)中緩存的運動向量。如果所緩存的來自錨圖片的運動向量為幀內(nèi)運動向量(諸如當先前解碼半幀z是I-半幀時),或者如果錨圖片是P-半幀但宏塊(x,y)是幀內(nèi)編碼的,則解碼器將經(jīng)緩存的運動向量視為(O,O)。如果共處宏塊為1MV,則解碼器使用該運動向量。如果共處宏塊為4MV,則解碼器將圖53中偽碼5300所述的邏輯用來計算運動向量預(yù)測值。在偽碼5300中,SelectDirectModeMVFromColocatedMB導(dǎo)出在直接模式計算中使用的運動向量預(yù)測值。解碼器可緩存來自先前解碼的錨圖片的所有運動向量,并在解碼B-半幀期間應(yīng)用以上直接模式,或者解碼器在解碼錨半幀的同時可應(yīng)用以上直接模式規(guī)則,并緩存用于B-半幀的結(jié)果運動向量。使用以上獲得的運動向量,解碼器應(yīng)用縮放邏輯(圖19中的Scale—Direct—MV)。Scale—Direct—MV獲得正向和反向指示運動向量。Scale—Direct—MV可導(dǎo)致指向上下半幀的正向和反向運動向量。這是有效的,因為直接運動向量由編碼器評估并僅在它們給出好預(yù)測時選擇,還因為隔行掃描B-半幀在正向和反向方向上都使用兩個參考半幀。在另一實現(xiàn)中,可使用產(chǎn)生以直接模式縮放的運動向量的任何其它過程,包括不涉及任何緩存的過程,它在存儲器受限設(shè)備中會有用(例如使用隨機數(shù)發(fā)生器來模擬偏零拉普拉斯分布)。這種過程仍將起作用,因為好的編碼器將丟棄對直接模式運動向量的較差推測,而在比特流中保留更為準確的推測。3.運動向量解碼過程以下各節(jié)描述組合實現(xiàn)中隔行掃描B-半幀的塊和宏塊的運動向量解碼過程。填充正向和反向預(yù)測上下文正向和反向運動向量被分開緩存,并分別用來預(yù)測正向和反向運動向量。例如在以上X節(jié)描述了單獨緩沖區(qū)在正向和反向上下文中的使用。用于選擇運動向量預(yù)測值的技術(shù)在III節(jié)
背景技術(shù)
、III節(jié)詳細說明、以及說明書的其它部分中描述。在解碼正向運動向量期間用預(yù)測運動向量填充反向緩沖區(qū)("缺少方向"緩沖區(qū))時(或在解碼反向運動向量期間填充正向緩沖區(qū)時),要添加另外兩個細節(jié)。通常,編碼器/解碼器可使用運動向量類型信息(例如1MV等)、以及先前解碼的運動向量的極性來形成預(yù)測。然而,在"空穴填充"情形中,因為編碼器/解碼器實際上并不解碼缺少方向類型的運動向量,編碼器/解碼器并不具有運動向量類型信息或極性信息(例如相同極性或相反極性)。在該組合實現(xiàn)中,編碼器/解碼器將運動向量類型設(shè)置為1MV,并將主半幀運動向量選為預(yù)測值。圖47中的偽碼4700描述該組合實現(xiàn)中的極性選擇過程。對于幀內(nèi)編碼宏塊,"幀內(nèi)運動向量"用來填充正向和反向運動預(yù)測平面。"幀內(nèi)運動向量"的任何一致表示可由解碼器實現(xiàn)來選擇。例如,如果運動向量被存儲在2-字節(jié)短數(shù)組中,則"幀內(nèi)運動向量"可被表示為唯一的大常數(shù),它被填充到運動向量數(shù)組中來表示該宏塊被編碼為幀內(nèi)宏塊。B-半幀中的正向運動向量預(yù)測正向參考幀距離從BFRACTION語法元素和REFDIST語法元素中計算。正向運動向量預(yù)測如以上X節(jié)所述地進行。B-半幀中的反向運動向量預(yù)測正向參考幀距離從BFRACTION語法元素和REFDIST語法元素中計算。正向運動向量預(yù)測如以上X節(jié)所述地進行。解碼運動向量差值BMV1、BMV2或BLKMVDATA語法元素編碼宏塊或宏塊中各塊的運動信息。1MV宏塊具有BMV1和BMV2語法元素,且4MV宏塊可具有0到4個之間的BLKMVDATA元素。當預(yù)測類型(BMVTYPE)為插值時,BMV1對應(yīng)于正向而BMV2對應(yīng)于反向運動向量殘差。以下各節(jié)描述對于應(yīng)用于B-圖片的雙參考情形如何計算運動向量差值。雙參考半幀圖片中的運動向量差值雙參考半幀圖片在使用半幀圖片對隔行掃描幀的編碼中出現(xiàn)。序列的每個幀都被分成兩個半幀,且每個半幀使用實際上逐行掃描代碼路徑來編碼。在具有兩個參考半幀的半幀圖片中(諸如具有隔行掃描B-半幀的圖片),宏塊層中的每個MVDATA或BLKMVDATA語法元素聯(lián)合編碼三種信息1)水平運動向量差值分量,2)垂直運動向量差值分量,3)使用主還是非主預(yù)測值,即兩個半幀的哪一個被運動向量參考。MVDATA或BLKMVDATA語法元素是可變長度的哈夫曼代碼字,然后是一固定長度代碼字。哈夫曼代碼字的值確定固定長度代碼字的大小。圖片層中的MVTAB語法元素指定用來解碼可變大小代碼字的哈夫曼表格。圖61A中的偽碼6100示出如何解碼運動向量差值和主/非主預(yù)測值信息。值predictor_flag、dmv—x和dmv—y在圖61A中的偽碼6100中計算。偽碼6100中的各個值定義如下dmv_x:運動向量水平差值分量,dmv_y:運動向量垂直差值分量,k—x,k_y:長運動向量的固定長度,k一x和k_y取決于由MVRANGE符號定義的運動向量范圍。表格10.由MVRANGE指定的k—x和k—y<table>tableseeoriginaldocumentpage76</column></row><table>extend—x:水平運動向量差值的擴展范圍,extend一y:垂直運動向量差值的擴展范圍,extend_x和extend_y從DMVRANGE圖片半幀語法元素中導(dǎo)出。如果DMVRANGE表示使用水平分量的擴展范圍,則extend一x^。否則,extend—x=0。類似地,如果DMVRANGE表示使用垂直分量的擴展范圍,則extend_y=l。否則,extend_y=0。變量predictor—flag是表示使用主還是非主運動向量預(yù)測值的二進制標記(0=使用主預(yù)測值,1=使用非主預(yù)測值)。offset_table和size—table數(shù)組被定義為如圖61A所示。圖61B中的偽碼6110示出在另一組合實現(xiàn)中如何解碼雙參考半幀的運動向量差值。偽碼6110用不同方法解碼運動向量差值。例如,偽碼6110略去經(jīng)擴展運動向量差值范圍的處理。運動向量預(yù)測值運動向量通過將前面部分中計算的運動向量差值添加到運動向量預(yù)測值中來計算。以下各節(jié)描述在該組合實現(xiàn)中如何計算1MV-和混合MV隔行掃描B-半幀中宏塊的運動向量預(yù)測值。1MV隔行掃描B-半幀中的運動向量預(yù)測值圖5A和5B是示出被視作用于1MV宏塊的候選運動向量預(yù)測值的宏塊的位置的示圖。候選預(yù)測值從左邊、上方和右上方宏塊中取得,除了宏塊是行中最后一個宏塊的情形。在該情形中,預(yù)測值B從左上方宏塊而不是從右上方中取得。對于幀為一個宏塊寬的特定情形,預(yù)測值總是預(yù)測值A(chǔ)(頂部預(yù)測值)。當前宏塊在首行中的特定情形(沒有A或B預(yù)測值、或者根本沒有預(yù)測值)在以上參照圖33A-33F以及在以下參照圖62A-62F解決?;旌螹V隔行掃描B-半幀中的運動向量預(yù)測值圖6A-10示出被視作用于混合MV隔行掃描B-半幀中的1MV或4MV宏塊的運動向量的候選運動向量的塊或宏塊的位置。隔行掃描B-半幀中的主和非主MV預(yù)測值對于每個幀間編碼的宏塊,導(dǎo)出兩個運動向量預(yù)測值。一個來自主半幀而另一個來自非主半幀。主半幀被視為包含鄰域中候選運動向量預(yù)測值的大部分實際值的半幀。在不分上下的情形中,相反半幀的運動向量預(yù)測值被視為是主預(yù)測值(因為它在時間上較為接近)。幀內(nèi)編碼宏塊在主/非主預(yù)測值的計算中不作考慮。如果全部候選預(yù)測值宏塊都是幀內(nèi)編碼的,則主和非主運動向量預(yù)測值都被設(shè)置為0且主預(yù)測值被視為來自相反半幀。計算隔行掃描B-半幀中的運動向量預(yù)測值對塊或宏塊的每個運動向量計算兩個運動向量預(yù)測值一每個參考一個。圖62A-62F中的偽碼6200描述在組合實現(xiàn)中如何對雙參考情形計算運動向量預(yù)測值。(圖33A-33F中的偽碼3300描述在另一實現(xiàn)中如何對雙參考情形計算運動向量預(yù)測值。)在雙參考圖片中,當前半幀可參考兩個最新半幀。一個預(yù)測值用于相同極性的參考半幀,而另一個用于相反極性的參考半幀。重構(gòu)隔行掃描B-半幀中的運動向量以下各節(jié)描述如何重構(gòu)1MV和4MV宏塊的亮度和色度運動向量。在重構(gòu)運動向量之后,它隨后可用作鄰域運動向量以預(yù)測相鄰宏塊的運動向量。該運動向量將具有"相同"或"相反"的關(guān)聯(lián)極性,并可用來導(dǎo)出另一半幀極性的運動向量預(yù)測值,用于運動向量預(yù)測。隔行掃描B-半幀中的亮度運動向量重構(gòu)在所有情形(1MV和4MV宏塊)中,亮度運動向量通過如下將差值添加到預(yù)測值來重構(gòu)mv—x=(dmv—x+predictor—x)smodrange_xmv—y=(dmv_y+predictor_y)smodrange_y+#::-掛"_____j"曰e\、/4tnnriV!Ttr效且憤Asmodb=((A+b)%(2*b))-b這確保重構(gòu)向量是有效的。(Asmodb)位于-b和b-l之間。range—x和range—y取決于MVRANGE。因為隔行掃描B-半幀圖片使用兩個參考圖片,在解碼運動向量差值之后導(dǎo)出的predictor—flag與從運動向量預(yù)測導(dǎo)出的dominantpredictor值相組合,以確定哪個半幀被用作參考。圖63中的偽碼6300描述如何確定參考半幀。在1MV宏塊中,對于組成宏塊的亮度分量的4個塊將有單個運動向量。如果MBMODE語法元素表示沒有MV數(shù)據(jù)在宏塊層中出現(xiàn),則dmv_x=0且dmv_y=0(mv—x=predictor—x禾Bmv—y=predictor—y)。在4MV宏塊中,宏塊中每個幀間編碼亮度塊將具有它自己的運動向量。因此在每個4MV宏塊中將有0到4個亮度運動向量。如果4MVBP語法元素表示未出現(xiàn)塊的運動向量信息,則該塊的dmv_x=0且dmv—y=0(mv—x=predictor_x和mv_y=predictor一y)。色度運動向量重構(gòu)色度運動向量從亮度運動向量中導(dǎo)出。此外,對于4MV宏塊,對要將色度塊編碼為幀間塊還是幀內(nèi)塊的決定是基于亮度塊或半幀的狀態(tài)作出的。C.解碼隔行掃描P-幀在描述組合實現(xiàn)中用于解碼隔行掃描B-幀的過程之前,描述用于解碼隔行掃描P-幀的過程。描述用于解碼隔行掃描B-幀的過程的小節(jié)將參照本節(jié)中討論的各個概念進行。1.隔行掃描P-幀的宏塊層解碼在隔行掃描P-幀中,每個宏塊可用使用一個或四個運動向量的幀模式、或使用兩個或四個運動向量的半幀模式作運動補償。幀間編碼的宏塊不包含任何幀內(nèi)塊。此外,運動補償之后的殘差可用幀變換模式或半幀變換模式來編碼。更具體地,如果用半幀變換模式編碼殘差,則殘差的亮度分量根據(jù)各個半幀來重新排列,而在幀變換模式中當色度分量保持不變時殘差保持不變。宏塊也可被編碼為幀內(nèi)宏塊。運動補償可被限制為不包括四個運動向量(半幀/幀),并且它通過4MVSWITCH用信號表示。每個宏塊的運動補償和殘差編碼的類型通過MBMODE和SKIPMB聯(lián)合表示。MBMODE根據(jù)4MVSWITCH采用不同的表格集。隔行掃描P-幀中的各個宏塊被分成5種類型1MV、2半幀MV、4幀MV、4半幀MV和幀內(nèi)。前四類宏塊是幀間編碼的,而最后一類表示該宏塊是幀內(nèi)編碼的。宏塊類型由宏塊層中的MBMODE語法元素以及跳過比特用信號表示。MBMODE對不同類型的宏塊共同編碼宏塊類型以及有關(guān)該宏塊的各條信息。用信號表示跳過的宏塊SKIPMB字段表示宏塊的跳過條件。如果SKIPMB字段為1,則表示要跳過當前宏塊,并且在SKIPMB字段之后沒有發(fā)送其它信息。該跳過條件暗示當前宏塊是具有0差值運動向量的1MV(B卩,該宏塊是使用其1MV運動預(yù)測值做運動補償?shù)?,并且沒有經(jīng)編碼的塊(CBP-O)。另一方面,如果SKIPMB字段不是1,則MBMODE半幀被解碼為表示宏塊的類型和有關(guān)當前宏塊的其它信息,諸如以下小節(jié)中描述的信息。用信號表示宏塊模式有15種通過MBMODE表示的可能事件;MBMODE共同指定宏塊的類型(1MV、4幀MV、2半幀MV、4半幀MV、或幀內(nèi))、幀間編碼宏塊的變換類型(即半幀或幀或未編碼的塊)、以及是否有1MV宏塊的運動向量差值。設(shè)〈MVP〉表示用信號表示是否有非零1MV運動向量差值的二進制事件。設(shè)<Field/Frametransform>(<半幀順變換〉)表示用信號表示宏塊的殘差是幀變換編碼、半幀變換編碼、還是零編碼塊(即CBP-0)的三元事件。MBMODE共同用信號表示以下事件集MBM0DE={<1MV,MVP,半幀/幀變換>,<2半幀MV,半幀/幀變換〉,<4幀MV,半幀/幀變換>,<4半幀MV,半幀/幀變換>,<幀內(nèi)>};<1MV,MVP=0,CBP=0>的事件除外,它通過跳過條件用信號表示。對于幀間編碼宏塊,當MBMODE中的半幀/幀變換事件表示無編碼塊時,不解碼CBPCY語法元素。另一方面,如果MBMODE中的半幀/幀變換事件表示半幀或幀變換時,則解碼CBPCY。所解碼事件<半幀/幀變換>被用來設(shè)置標記FIELDTX。如果該事件表示宏塊是半幀變換編碼的,則FIELDTX被設(shè)置為1。如果該事件表示宏塊是幀變換編碼的,則FIELDTX被設(shè)置為0。如果該事件表示O編碼塊,則FIELDTX被設(shè)置為與運動向量相同的類型,即如果它是FIELDMV則FIELDTX被設(shè)置為1,且如果它是FRAMEMV則被設(shè)置為0。對于非1MV的幀間編碼宏塊,發(fā)送表示零差值運動向量事件的另一字段。在2半幀MV宏塊的情形中,發(fā)送表示兩個運動向量的哪一個包含非零運動向量差值的2MVBP字段。類似地,發(fā)送表示四個運動向量的哪一個包含非零運動向量差值的4MVBP字段。對于幀內(nèi)編碼宏塊,半幀/幀變換和零編碼塊在各個字段中編碼。2.對隔行掃描P-幀的運動向量解碼隔行掃描P-幀的運動向量預(yù)測值計算當前宏塊的運動向量預(yù)測值的過程包括兩個步驟。首先,當前宏塊的三個候選運動向量從其相鄰宏塊中收集。其次,當前宏塊的運動向量預(yù)測值從候選運動向量集中計算。圖40A-40B示出從中收集候選運動向量的相鄰宏塊。候選運動向量的收集順序是重要的。在該組合實現(xiàn)中,收集順序總是從A開始、繼續(xù)到B、并在C結(jié)束。注意,如果相應(yīng)塊在幀邊界之外或者相應(yīng)塊是不同片的一部分,則候選預(yù)測值被視為不存在。因而,不跨片邊界執(zhí)行運動向量預(yù)測。以下各節(jié)描述是否收集不同類型宏塊的候選運動向量,以及如何計算運動向量預(yù)測值。1MV候選運動向量在該組合實現(xiàn)中,圖64中的偽碼6400被用來收集該運動向量的最多三個候選運動向量。4幀MV候選運動向量對于4幀MV宏塊,對于當前宏塊中四個幀塊運動向量的每一個,收集來自相鄰塊的候選運動向量。在該組合實現(xiàn)中,圖65中的偽碼6500用來收集左上幀塊運動向量的最多三個候選運動向量。圖66中的偽碼6600用來收集右上幀塊運動向量的最多三個候選運動向量。圖67中的偽碼6700用來收集左下幀塊運動向量的最多三個候選運動向量。圖68中的偽碼6800用來收集右下幀塊運動向量的最多三個運動向量。2半幀MV候選運動向量的導(dǎo)出對于2半幀MV宏塊,對于當前宏塊中兩個幀運動向量的每一個,收集來自相鄰塊的候選運動向量。圖69中的偽碼6900用來收集上半幀運動向量的最多三個候選運動向量。圖70中的偽碼7000用來收集下半幀運動向量的最多三個候選運動4半幀MV候選運動向量的導(dǎo)出對于4半幀MV宏塊,對于當前宏塊中四個半幀塊的每一個,收集來自相鄰塊的候選運動向量。圖71中的偽碼7100用來收集左上半幀塊運動向量的最多三個候選運動向量。圖72中的偽碼7200用來收集右上半幀塊運動向量的最多三個候選運動向量。圖73中的偽碼7300用來收集左下半幀塊運動向量的最多三個候選運動向量。圖74中的偽碼7400用來收集右下半幀塊運動向量的最多三個候選運動向量。平均半幀運動向量給定兩個半幀運動向量(MVX!,MVY》和(MVX2,MVY2),用來形成候選運動向量(MVXa,MVYa)的平均運算是MVXA=(MVX丄十MVX2+1)》1;MVXA=(MVYt十MVY2+1)》1;從候選運動向量中計算幀的MV預(yù)測值本節(jié)描述給定一個候選運動向量集如何計算幀運動向量的運動向量預(yù)測值。在該組合實現(xiàn)中,運算對計算4幀MV宏塊中4幀塊運動向量的每一個的預(yù)測值相同。圖75中的偽碼7500描述如何計算幀運動向量的運動向量預(yù)測值(PMVX,PMVy)。在偽碼7500中,TotalValidMV表示候選運動向量集中運動向量的總數(shù)(TotalValidMV-O,1,2或3),且ValidMV數(shù)組表示候選運動向量集中的運動向量。從候選運動向量中計算半幀的MV預(yù)測值本節(jié)描述給定一個候選運動向量集如何計算半幀運動向量的運動向量預(yù)測值。運算對計算2半幀MV宏塊中2個半幀運動向量的每一個、或4半幀MV宏塊中4個半幀塊運動向量的每一個的預(yù)測值相同。首先,候選運動向量被分成兩個集,其中一個集只包含指向與當前半幀相同的半幀的候選運動向量,而另一個集包含指向相反半幀的候選運動向量。假設(shè)候選運動向量在1/4像素單元中表示,編碼器或解碼器可通過對其y-分量的以下檢查,來檢查候選運動向量是否指向相同半幀if(ValidMVy&4){ValidMV指向相反半幀。}else{ValidMV指向相同半幀。圖76中的偽碼7600描述如何計算半幀運動向量的運動向量預(yù)測值(PMVX,PMVy)。在偽碼7600中,SameFieldMV和OppFieldMV表示兩個候選運動向量集,而NumSameFieldMV和NumOppFieldMV表示屬于每個集的候選運動向量的數(shù)量。每個集中的候選運動向量的順序從候選A(如果它存在)開始,然后是候選B(如果它存在),再后是候選C(如果它存在)。例如,如果SameFieldMV候選運動向量集只包含候選B和候選C,則SameFieldMV[O]是候選B。解碼運動向量差值MVDATA語法元素包含宏塊的運動向量差值信息。取決于運動補償?shù)念愋秃兔總€宏塊上用信號表示的運動向量塊模式,每個宏塊最多可有四個MVDATA語法元素。更具體地,對于1MV宏塊,取決于MBMODE中的MVP字段可出現(xiàn)0或1個MVDATA語法元素。對于2半幀MV宏塊,取決于2MVBP可出現(xiàn)0、1、或2個MVDATA語法元素。對于4幀/半幀MV宏塊,取決于4MVBP可出現(xiàn)0、1、2、3或4個MVDATA語法元素。在該組合實現(xiàn)中,運動向量差值用與隔行掃描P-半幀的單參考半幀運動向量差值相同的方法來解碼。(圖77A中的偽碼7700示出如何解碼單參考半幀的運動向量差值。圖77B中的偽碼7710示出在另一組合實現(xiàn)中如何解碼單參考半幀的運動向量差值。偽碼7710用一種不同方法解碼運動向量差值。例如,偽碼7710略去對經(jīng)擴展的運動向量差值范圍的處理。)重構(gòu)運動向量給出運動向量差值dmv,亮度運動向量通過如以上XV.B.3節(jié)中所述的將差值添加到預(yù)測值中來重構(gòu)。給定亮度幀或半幀運動向量,導(dǎo)出相應(yīng)的色度幀或半幀運動向量來補償Cb/Cr塊的一部分或全部。圖78中的偽碼7800描述色度運動向量CMV如何從隔行掃描P-幀中的亮度運動向量LMV中導(dǎo)出。D.解碼隔行掃描B-幀本節(jié)參照前一節(jié)中討論的概念描述組合實現(xiàn)中用于解碼隔行掃描B-幀的過程。1.隔行掃描B-幀的宏塊級別解碼在宏塊級別上,隔行掃描B-幀語法類似于上述隔行掃描P-幀。隔行掃描B-幀中的宏塊被分成三種類型1MV、2半幀MV、和幀內(nèi)。在本組合實現(xiàn)中4幀MV和4半幀MV模式不被允許用于隔行掃描B-幀。這三種模式像在隔行掃描P-幀中一樣,與MBMODE語法元素共同編碼。每個宏塊也被預(yù)測為正向、反向、直接或插值(使用DIRECTMB和BMVTYPE語法元素)如果1MV宏塊是正向或反向,則它使用單個運動向量。如果它是1MV但是直接或插值的,則它使用兩個運動向量。如果它是2半幀MV類型并是正向或反向預(yù)測的,則它使用兩個運動向量。如果它是2半幀MV類型并是直接或插值的,則它使用四個運動向量。以下各節(jié)描述隔行掃描B-幀中不同幀間編碼的宏塊類型的特征。隔行掃描B-幀中的1MV宏塊在隔行掃描B-幀中的1MV宏塊中,亮度塊的位移在預(yù)測類型是正向或反向時由單個運動向量表示,而在類型是直接或插值時由兩個運動向量表示。在每一情形中導(dǎo)出相應(yīng)的色度向量。在插值和直接預(yù)測的情形中,平均來自正向和反向參考圖片的運動補償像素以形成最終預(yù)測。隔行掃描B-幀中的2半幀MV宏塊在隔行掃描B-幀中的2半幀MV宏塊中,亮度塊的每個半幀的位移由一不同運動向量描述,如圖37所示。此外,在從上半幀去到下半幀時該預(yù)測類型被允許從正向切換到反向,或反之,從而使上半幀從一參考圖片中得到運動補償,而下半幀從另一參考圖片中得到運動補償,如在以上VII節(jié)中所述的。隔行掃描B-幀中的2MVBP、4MVBP的解釋和運動向量順序在1MV宏塊中,編碼器用插值模式使用2MVBP語法元素,以表示出現(xiàn)兩個運動向量的哪一個。比特l對應(yīng)于正向運動向量,而比特O對應(yīng)于反向運動向量。在2半幀MV宏塊中,編碼器用正向和反向模式使用2MVBP語法元素,來表示出現(xiàn)兩個半幀的運動向量的哪一個。比特1對應(yīng)于上半幀運動向量而比特0對應(yīng)于下半幀運動向量。當MVSW語法元素用來從用于上半幀的正向預(yù)測切換到用于下半幀的反向預(yù)測或反之時,編碼器使用相同的上/下信號表示。編碼器用插值模式使用4MVBP語法元素,來表示出現(xiàn)四個運動向量的哪一個。比特3對應(yīng)于上半幀正向運動向量,比特2對應(yīng)于上半幀反向運動向量,比特l對應(yīng)于下半幀正向運動向量,而比特O對應(yīng)于下半幀反向運動向量。設(shè)置為的2MVBP和4MVBP的比特表示出現(xiàn)相應(yīng)運動向量差值,同時設(shè)置為'0'的比特表示相應(yīng)運動向量等于所預(yù)測的運動向量,即未出現(xiàn)相應(yīng)的運動向量差值。經(jīng)實際解碼的運動向量用與2MVBP或4MVBP中各比特相同的順序發(fā)送。例如,在使用差值模式的2半幀MV宏塊中,要由解碼器接收的第一運動向量是上半幀正向運動向量,而要接收的最后(即第四)運動向量是下半幀反向運動向量。用信號表示跳過的宏塊被跳過的宏塊以與P幀相同的方式用信號表示。然而,隔行掃描B-幀中的被跳過宏塊限于1MV幀類型,即不允許半幀類型。運動向量用零差值運動向量編碼(即宏塊是使用其1MV運動補償值進行運動補償?shù)?且沒有已編碼塊(CBP=0)。如果宏塊被跳過,則編碼器僅發(fā)送該宏塊的BMVTYPE信息,從而運動向量可被準確預(yù)測為正向、反向、直接或插值。用信號表示宏塊模式用信號表示宏塊模式用與隔行掃描P-幀相同的方法執(zhí)行,如以上XV.C.節(jié)中所述。預(yù)測類型解碼(BMVTYPE和MVSW)隔行掃描B-幀的預(yù)測類型根據(jù)以下規(guī)則解碼。如果圖片層位平面DIRECTMB表示宏塊是直接類型,則該宏塊的預(yù)測類型被設(shè)置成直接。如果直接/非直接決定用原始模式編碼,則編碼器使用宏塊級別上的附加比特DIRECTBBIT,來表示預(yù)測類型是否是直接。如果預(yù)測類型是非直接的,則解碼器解碼BMVTYPE語法元素。如果宏塊模式是"2MV半幀編碼",且如果BMVTYPE是正向或反向的,則解碼器還解碼MVSW比特來判定從該宏塊的上半幀去到下半幀時預(yù)測類型是否將改變(即,從正向變?yōu)榉聪?,或反?。解碼直接模式運動向量為了解碼直接模式運動向量,解碼器首先緩存來自先前解碼錨幀的運動向量。具體地,對于先前解碼的將來P-幀,解碼器緩存來自將來P-幀的經(jīng)解碼亮度運動向量的最大可能數(shù)量的一半(即(2*NumberOfMB)個運動向量)。選擇要緩存的來自錨幀的這些運動向量的方法在以上XIII節(jié)中描述。使用以上所獲得的運動向量,解碼器應(yīng)用圖19中偽碼1900示出的Scale—Direct一MV中的縮放邏輯,來獲得正向和反向指示運動向量,而無需回拉運動向量。在本組合實現(xiàn)中,不計算其中不使用諸如正向和反向預(yù)測宏塊的直接模式預(yù)測的宏塊的直接模式運動向量。相反,非直接宏塊的運動向量基于正向或反向運動向量緩沖區(qū)來預(yù)測。2.對隔行掃描B-幀的運動向量解碼隔行掃描B-幀的運動向量預(yù)測值與隔行掃描P-幀一樣,計算隔行掃描B-幀的當前宏塊的運動向量預(yù)測值的過程包括,從當前宏塊的相鄰宏塊中收集其候選運動向量,并且從候選運動向量集中計算當前宏塊的運動向量預(yù)測值。圖40A-40B示出從中收集候選運動向量的相鄰宏塊。在該組合實現(xiàn)中,隔行掃描B-幀的運動向量預(yù)測值根據(jù)以上XV.C.節(jié)所述的用于隔行掃描P-幀的規(guī)則來從候選集中選擇。不同的預(yù)測上下文被用于正向和反向模式運動向量。解碼器使用正向預(yù)測上下文來預(yù)測正向運動向量,并使用反向預(yù)測上下文來預(yù)測反向運動向量。填充隔行掃描B-幀中的正向和反向預(yù)測上下文解碼器分開緩存正向和反向運動向量,并分別用它們來預(yù)測正向和反向運動向量。對于插值宏塊,解碼器使用正向預(yù)測緩沖區(qū)來預(yù)測正向運動向量(第一個經(jīng)解碼的MVDATA元素),并使用反向緩沖區(qū)來預(yù)測反向運動向量(第二個經(jīng)解碼的MVDATA元素)。當宏塊是直接或插值,則解碼器將正向MV分量緩存在正向緩沖區(qū)中,并將反向MV分量緩存在反向緩沖區(qū)中。每種情形中(例如1MV宏塊、2半幀MV宏塊等)用于從一個候選集中選擇運動向量預(yù)測值的實際預(yù)測邏輯如以上XV.C.節(jié)中所述。用于填充正向和反向運動向量緩沖區(qū)、并從這些緩沖區(qū)的運動向量中預(yù)測運動向量的方案如以上X.C.節(jié)中所述。解碼隔行掃描B-幀中的運動向量差值隔行掃描B-幀中的運動向量差值根據(jù)圖77A和77B中的偽碼7700和7710解碼,如以上XV.C.2節(jié)中所述。重構(gòu)隔行掃描B-幀中的運動向量隔行掃描B-幀中的運動向量根據(jù)圖78中的偽碼7800并如以上XV.B.3和XV.C.2節(jié)中所述地解碼。E.位平面編碼宏塊特定的二進制信息可用每個宏塊一個二進制符號來編碼,這些二進制信息諸如(l)隔行掃描B-半幀的宏塊的正向/非正向決定(即FORWARDMB標記),以及(2)隔行掃描B-半幀的宏塊的直接/非直接決定(即DIRECTMB標記)。例如,隔行掃描B-半幀的宏塊是否用正向模式(與諸如反向、直接或插值的另一模式相對)作運動補償可用1個比特作信號表示。在這些情形中,半幀或幀中全部宏塊的狀態(tài)可被編碼為位平面并在半幀或幀頭中傳送。該規(guī)則的一個例外是如果位平面編碼模式被設(shè)置成原始模式時,在該情形中每個宏塊的狀態(tài)被編碼為每個符號1個比特,并在宏塊級別上與其它宏塊級別語法元素一起傳送。半幀/幀級別位平面編碼被用來編碼兩維二進制數(shù)組。每個數(shù)組的大小是rowMBxcolMB,其中rowMB和colMB分別是討論中半幀或幀中宏塊行和列的數(shù)量。在比特流內(nèi),每個數(shù)組被編碼為一個連續(xù)比特集。七種模式之一被用來編碼每個數(shù)組。該七種模式是1.原始模式一編碼為每個符號1個比特并作為MB級別語法的一部分傳送的信息;2.正常-2(Norm-2)模式一共同編碼的兩個符號;3.差值-2(Diff-2)模式一位平面的差值編碼,隨后是共同編碼兩個殘差符號;4.正常-6(Norm-6)模式一共同編碼的六個符號;5.差值-6(Diff-6)模式一位平面的差值編碼,隨后是共同編碼六個殘差符號;6.rowskip(跳行)模式一用信號表示跳過沒有設(shè)置比特的行的一個比特;以及7.columnskip(跳列)模式一用信號表示跳過沒有設(shè)置比特的列的一個比特。半幀或幀級別上位平面的語法元素順序如下INVERT、IMODE和DATABITS。逆轉(zhuǎn)標記(INVERT)INVERT語法元素是l-比特值,如果設(shè)置則表示該位平面具有比0比特更多的設(shè)置比特。取決于INVERT和模式,解碼器將逆轉(zhuǎn)所解釋的位平面以重新創(chuàng)建原始位平面。注意,當使用原始模式時,將忽略該比特的值。以下提供對解碼位平面時如何使用INVERT值的描述。編碼模式(IMODE)IMODE語法元素是指示用來編碼位平面的編碼模式的可變長度值。表格11示出用來編碼IMODE語法元素的代碼表。以下提供對解碼位平面時如何使用IMODE值的描述。表格11.IMODEVLC代碼表<table>tableseeoriginaldocumentpage87</column></row><table>位平面編碼比特(DATABITS)DATABITS語法元素是編碼位平面的符號流的可變大小語法元素。用來編碼位平面的方法根據(jù)IMODE的值來確定。七種編碼模式在以下各節(jié)中描述。原始模式在該模式中,位平面被編碼為每個以宏塊的光柵掃描順序掃描的符號1個比特,并作為宏塊層的一部分發(fā)送?;蛘?,該信息在半幀或幀級別上以原始模式編碼,且DATABITS在長度上為rowMBxcolMB比特。Norm-2模式如果rowMBxcolMB為奇數(shù),則第一個符號被編碼為原始。后續(xù)符號成對地用自然掃描順序編碼。表格12中的二進制VLC表格被用來編碼符號對。表格1.Norm-2/Diff-2代碼表<table>tableseeoriginaldocumentpage87</column></row><table>Diff-2模式Norm-2模式用來如上所述地產(chǎn)生位平面,然后Diff1運算如下所述地應(yīng)用于位平面。Norm-6模式在Norm-6和Diff-6模式中,位平面分6個像素的組進行編碼。這些像素被分成2x3或3x2的塊。位平面使用一系列規(guī)則來最大程度地平鋪,且剩余像素使用跳行和跳列模式的變體進行編碼。如果且僅當rowMB是3的倍數(shù)而colMB不是,則使用2x3"豎直"塊。否則,使用3x2"水平"塊。圖79A示出2x3"豎直"塊的簡化示例。圖79B和79C示出3x2"水平"塊,對這些塊細長的黑色矩形為1個像素寬并使用跳行和跳列編碼進行編碼。對于如圖79C所示平鋪的平面,在圖片的上邊緣和左邊緣使用線性塊,這些塊的編碼順序符合以下模式。先編碼6-元素塊,然后是跳列和跳行編碼的線性塊。如果數(shù)組大小是2x3或3x2的倍數(shù),則后面的線性塊不存在,且位平面被完美平鋪。該6-元素矩形塊使用不完整的哈夫曼代碼編碼,即不將所有端點用于編碼的哈夫曼代碼。設(shè)N是塊中設(shè)置比特的數(shù)量,即0《NS6。對于N〈3,使用VLC來編碼該塊。對于N-3,固定長度的轉(zhuǎn)義碼之后為5比特固定長度代碼,對于N〉3,固定長度轉(zhuǎn)義碼之后為該塊的補碼。該矩形塊包含6個比特的信息。設(shè)k為關(guān)聯(lián)于塊的代碼,其中*=6,.2',6,.為該塊內(nèi)自然掃描順序中第i個比特的二進制值。因此,(Kk<64。VLC、轉(zhuǎn)義碼、加上固定長度代碼被用來用信號表示k。Diff-6模式Norm-6模式用來如上所述地產(chǎn)生位平面,然后Diff1運算如下所述地應(yīng)用于位平面。跳行模式在跳行編碼模式中,用1個比特的開銷跳過所有零行。語法如下對于每一行,單個ROWSKIP比特表示是否跳過該行;如果跳過該行,則接著是下一行的ROWSKIP比特;否則(未跳過該行),則接著是ROWBITS比特(該行中每個宏塊的比特)。因而,如果整行為零,則零比特被發(fā)送為ROWSKIP符號,并跳過ROWBITS。如果在該行中有一設(shè)置比特,ROWSKIP被設(shè)置為1,且整個行被發(fā)送為原始(ROWBITS)。各行從半幀或幀的頂部掃描到底部。跳列模式跳列是跳行的轉(zhuǎn)置。各列從半幀或幀的頂部掃描到底部。Diff1:逆向差值解碼在使用任一差值模式(Diff-2或Diff-6)時,"差值比特"的位平面首先使用相應(yīng)的正常模式(Norm-2或Norm-6)解碼。差值比特被用來重新產(chǎn)生原始位平面。重新產(chǎn)生過程是二進制字母表上的2-DDPCM。為了在位置(i,j)上重新產(chǎn)生比特,預(yù)測值^(/,力如下產(chǎn)生(從位置(i,j)上的比特6(/,力)<formula>formulaseeoriginaldocumentpage89</formula>否則對于差值編碼模式,不執(zhí)行基于INVERT的逐個比特逆轉(zhuǎn)過程。然而,INVERT標記以不同容量用來表示符號A的值,用于導(dǎo)出所示預(yù)測值。更具體地,如果INVERT等于0則A等于0,且如果INVERT等于1則A等于1。位平面的實際值通過異或預(yù)測值和經(jīng)解碼的差值比特值來獲取。在以上公式中,b(i,j)是在最終解碼之后(即進行Norm-2或Norm-6,然后是與其預(yù)測值的差值異或之后)第(i,j)位置上的比特。已經(jīng)參照各個實施例描述和示出了本發(fā)明的各個原理,可以理解各個實施例可在排列和細節(jié)中進行更改而不背離這些原理。應(yīng)當理解,在此所述的程序、過程或方法并不相關(guān)于或限于任何特定類型的計算環(huán)境,除非另有所示。各種類型的通用或?qū)S糜嬎悱h(huán)境可根據(jù)在此所述的教授內(nèi)容使用或執(zhí)行操作。在軟件中示出的各個實施例的元素可用硬件實現(xiàn),反之亦然。根據(jù)本發(fā)明各原理可應(yīng)用其中的許多可能實施例,我們將本發(fā)明解釋為可在以下權(quán)利要求及其等效方案的范圍和精神內(nèi)的所有這些實施例。權(quán)利要求1.一種方法,包括對于隔行掃描的雙向預(yù)測圖片的當前宏塊,具有第一預(yù)測方向的第一運動向量的所述當前宏塊選擇所述第一運動向量的第一組多個候選運動向量預(yù)測值;以及至少部分地基于所述第一組多個候選運動向量預(yù)測值中的一個或多個候選運動向量預(yù)測值,計算所述第一運動向量的第一運動向量預(yù)測值;其中所述第一組多個候選運動向量預(yù)測值是從用于所述第一預(yù)測方向的第一運動向量緩沖區(qū)中選擇的。2.如權(quán)利要求1所述的方法,還包括至少部分地基于所述第一運動向量預(yù)測值和運動向量差值信息重構(gòu)所述第一運動向量。3.如權(quán)利要求2所述的方法,其特征在于,所述運動向量差值信息表示對所述第一運動向量不存在運動向量差值。4.如權(quán)利要求2所述的方法,還包括將所述重構(gòu)后的第一運動向量存儲在所述第一運動向量緩沖區(qū)中,用于預(yù)測所述隔行掃描的雙向預(yù)測圖片的后續(xù)宏塊的運動向量。5.如權(quán)利要求1所述的方法,其特征在于,計算所述第一運動向量預(yù)測值包括計算所述第一組多個候選運動向量預(yù)測值中多個候選運動向量預(yù)測值的中值。6.如權(quán)利要求l所述的方法,其特征在于,所述第一預(yù)測方向為正向,且所述第一運動向量緩沖區(qū)是正向運動向量緩沖區(qū)。7.如權(quán)利要求l所述的方法,其特征在于,所述第一預(yù)測方向為反向,且所述第一運動向量緩沖區(qū)是反向運動向量緩沖區(qū)。8.如權(quán)利要求1所述的方法,還包括,對于隔行掃描的雙向預(yù)測圖片的當前宏塊的第二運動向量-從第二運動向量緩沖區(qū)中選擇第二組多個候選運動向量預(yù)測值,其中所述第二運動向量緩沖區(qū)用于與所述第一預(yù)測方向相反的第二預(yù)測方向;以及至少部分地基于所述第二組多個候選運動向量預(yù)測值中的一個或多個候選運動向量預(yù)測值,計算第二運動向量預(yù)測值。9.如權(quán)利要求8所述的方法,還包括將第二運動向量預(yù)測值存儲在所述第二運動向量緩沖區(qū)中,用于預(yù)測所述隔行掃描的雙向預(yù)測圖片的后續(xù)宏塊的運動向量。10.如權(quán)利要求8所述的方法,還包括至少部分地基于所述第二運動向量預(yù)測值和運動向量差值信息重構(gòu)所述第二運動向量;將所述重構(gòu)后的第二運動向量存儲在所述第二運動向量緩沖區(qū)中,用于預(yù)測所述隔行掃描的雙向預(yù)測圖片的后續(xù)宏塊的運動向量。11.如權(quán)利要求l所述的方法,其特征在于,所述隔行掃描的雙向預(yù)測圖片是隔行掃描B-半幀,且其中所述第一運動向量用于整個當前宏塊的正向或反向預(yù)測。12.如權(quán)利要求l所述的方法,其特征在于,所述隔行掃描的雙向預(yù)測圖片是隔行掃描B-半幀,且其中所述第一運動向量用于當前宏塊中單個塊的正向或反向預(yù)測。13.如權(quán)利要求l所述的方法,其特征在于,所述隔行掃描的雙向預(yù)測圖片是隔行掃描B-幀,且其中所述第一運動向量用于整個當前宏塊的正向或反向預(yù)測。14.如權(quán)利要求l所述的方法,其特征在于,所述隔行掃描的雙向預(yù)測圖片是隔行掃描B-幀,且其中所述第一運動向量用于當前宏塊中一個半幀的正向或反向預(yù)測。15.—種具有存儲其上的計算機可執(zhí)行指令的計算機可讀媒體,所述計算機可執(zhí)行指令用于執(zhí)行如權(quán)利要求1所述的方法。16.—種方法,包括選擇用于隔行掃描的雙向預(yù)測圖片的宏塊的第一預(yù)測方向中的第一運動向量的第一組一個或多個候選運動向量預(yù)測值,其中所述第一組一個或多個候選運動向量預(yù)測值是從用于第一預(yù)測方向的第一運動向量緩沖區(qū)中選擇的;至少部分地基于所述第一組一個或多個候選運動向量預(yù)測值中的一個或多個候選運動向量預(yù)測值,計算所述第一運動向量的第一運動向量預(yù)測值;至少部分地基于所述第一運動向量預(yù)測值重構(gòu)所述第一運動向量;將所述重構(gòu)后的第一運動向量添加到所述第一運動向量緩沖區(qū);選擇用于隔行掃描的雙向預(yù)測圖片的宏塊的第二組一個或多個候選運動向量預(yù)測值,其中所述第二組一個或多個候選運動向量預(yù)測值是從第二運動向量緩沖區(qū)中選擇的,所述第二運動向量緩沖區(qū)用于不同于第一預(yù)測方向的第二預(yù)測方向;至少部分地基于所述第二組一個或多個候選運動向量預(yù)測值中的一個或多個候選運動向量預(yù)測值,計算所述宏塊的第二運動向量預(yù)測值;以及將所述第二運動向量預(yù)測值添加到所述第二運動向量緩沖區(qū)。17.如權(quán)利要求16所述的方法,其特征在于,重構(gòu)所述第一運動向量還基于運動向量差值信息。18.如權(quán)利要求17所述的方法,其特征在于,所述運動向量差值信息表示對所述第一運動向量不存在運動向量差值。19.如權(quán)利要求16所述的方法,其特征在于,所述第一預(yù)測方向為正向,其中所述第一運動向量緩沖區(qū)是正向運動向量緩沖區(qū),且所述第二預(yù)測方向為反向,其中所述第二運動向量緩沖區(qū)是反向運動向量緩沖區(qū)。20.如權(quán)利要求19所述的方法,其特征在于,所述宏塊具有預(yù)測模式,且其中所述預(yù)測模式為正向。21.如權(quán)利要求16所述的方法,其特征在于,所述第一預(yù)測方向為反向,其中所述第一運動向量緩沖區(qū)是反向運動向量緩沖區(qū),且所述第二預(yù)測方向為正向,其中所述第二運動向量緩沖區(qū)是正向運動向量緩沖區(qū)。22.如權(quán)利要求21所述的方法,其特征在于,所述宏塊具有預(yù)測模式,且其中所述預(yù)測模式為反向。23.如權(quán)利要求16所述的方法,其特征在于,所述隔行掃描的雙向預(yù)測圖片是隔行掃描B-幀。24.如權(quán)利要求16所述的方法,其特征在于,所述隔行掃描的雙向預(yù)測圖片是隔行掃描B-半幀。25.如權(quán)利要求16所述的方法,其特征在于,第一運動向量用于整個宏塊。26.如權(quán)利要求16所述的方法,其特征在于,計算所述第一運動向量預(yù)測值包括計算所述第一組中多個候選運動向量預(yù)測值的中值,且其中計算所述第二運動向量預(yù)測值包括計算所述第二組中多個候選運動向量預(yù)測值的中值。27.—種具有存儲其上的計算機可執(zhí)行指令的計算機可讀媒體,所述計算機可執(zhí)行指令用于在視頻解碼器中執(zhí)行如權(quán)利要求16所述的方法。28.—種具有存儲其上的計算機可執(zhí)行指令的計算機可讀媒體,所述計算機可執(zhí)行指令用于在視頻編碼器中執(zhí)行如權(quán)利要求16所述的方法。29.—種方法,包括選擇用于隔行掃描的雙向預(yù)測圖片的宏塊的第一預(yù)測方向中的第一運動向量的第一組多個候選運動向量預(yù)測值,其中所述多個候選運動向量預(yù)測值是從用于第一預(yù)測方向的第一運動向量緩沖區(qū)中選擇的;以及至少部分地基于所述多個候選運動向量預(yù)測值中的一個或多個候選運動向量預(yù)測值,計算所述第一運動向量的第一運動向量預(yù)測值。30.如權(quán)利要求29所述的方法,其特征在于,計算所述第一運動向量預(yù)測值包括計算多個候選運動向量預(yù)測值的中值。31.如權(quán)利要求29所述的方法,其特征在于,所述第一預(yù)測方向為正向,且所述第一運動向量緩沖區(qū)是正向運動向量緩沖區(qū)。32.如權(quán)利要求29所述的方法,其特征在于,所述第一預(yù)測方向為反向,且所述第一運動向量緩沖區(qū)是反向運動向量緩沖區(qū)。33.如權(quán)利要求29所述的方法,還包括從第二運動向量緩沖區(qū)中選擇用于宏塊的第二組多個候選運動向量預(yù)測值;至少部分地基于所述多個候選運動向量預(yù)測值的一個或多個,計算所述宏塊的第二運動向量預(yù)測值;以及將所述第二運動向量預(yù)測值存儲在所述第二運動向量緩沖區(qū)中。34.如權(quán)利要求29所述的方法,還包括從第二運動向量緩沖區(qū)中選擇用于宏塊的第二組多個候選運動向量預(yù)測值;至少部分地基于所述多個候選運動向量預(yù)測值的一個或多個,計算所述宏塊的第二運動向量預(yù)測值;至少部分地基于所述第二運動向量預(yù)測值重構(gòu)所述宏塊的第二運動向量;以及將所述第二運動向量存儲在所述第二運動向量緩沖區(qū)中。35.—種具有存儲其上的計算機可執(zhí)行指令的計算機可讀媒體,所述計算機可執(zhí)行指令用于在視頻編碼器中執(zhí)行如權(quán)利要求29所述的方法。36.—種具有存儲其上的計算機可執(zhí)行指令的計算機可讀媒體,所述計算機可執(zhí)行指令用于在視頻解碼器中執(zhí)行如權(quán)利要求29所述的方法。37.—種方法,包括使用第一預(yù)測模式預(yù)測隔行掃描的雙向預(yù)測圖片的半幀編碼宏塊中第一半幀的第一運動向量;以及使用第二預(yù)測模式預(yù)測隔行掃描的雙向預(yù)測圖片的半幀編碼宏塊中第二半幀的第二運動向量,其中所述第二預(yù)測模式不同于所述第一預(yù)測模式。38.如權(quán)利要求37所述的方法,其特征在于,所述半幀編碼宏塊的運動補償一共使用兩個運動向量,包括所述第一和第二運動向量。39.如權(quán)利要求37所述的方法,其特征在于,所述第一半幀是上半幀而所述第二半幀是下半幀。40.如權(quán)利要求37所述的方法,其特征在于,所述第一半幀是下半幀而所述第二半幀是上半幀。41.如權(quán)利要求37所述的方法,其特征在于,所述隔行掃描的雙向預(yù)測圖片是隔行掃描B-幀,且其中所述第一模式為正向而所述第一模式為反向。42.如權(quán)利要求41所述的方法,其特征在于,所述第一半幀的一個或多個候選運動向量預(yù)測值至少部分地基于正向運動向量緩沖區(qū)中的運動向量確定。43.如權(quán)利要求41所述的方法,其特征在于,所述第二半幀的一個或多個候選運動向量預(yù)測值至少部分地基于反向運動向量緩沖區(qū)中的運動向量確定。44.如權(quán)利要求37所述的方法,其特征在于,所述第一預(yù)測模式為反向而所述第二預(yù)測模式為正向。45.如權(quán)利要求37所述的方法,還包括至少部分地基于所預(yù)測的第一運動向量重構(gòu)所述第一運動向量;以及將所述重構(gòu)后的第一運動向量存儲在用于第一預(yù)測模式的所述第一運動向量緩沖區(qū)中。46.如權(quán)利要求45所述的方法,還包括至少部分地基于所預(yù)測的第二運動向量重構(gòu)所述第二運動向量;以及將所述重構(gòu)后的第二運動向量存儲在用于第二預(yù)測模式的所述第二運動向量緩沖區(qū)中。47.—種具有存儲其上的計算機可執(zhí)行指令的計算機可讀媒體,所述計算機可執(zhí)行指令用于在視頻編碼器中執(zhí)行如權(quán)利要求37所述的方法。48.—種具有存儲其上的計算機可執(zhí)行指令的計算機可讀媒體,所述計算機可執(zhí)行指令用于在視頻解碼器中執(zhí)行如權(quán)利要求37所述的方法。49.一種方法,包括使用正向預(yù)測模式預(yù)測隔行掃描B-幀的半幀編碼宏塊中第一半幀的第一運動向量;以及使用反向預(yù)測模式預(yù)測隔行掃描B-幀的半幀編碼宏塊中第二半幀的第二運動向量。50.如權(quán)利要求49所述的方法,其特征在于,所述第一半幀是隔行掃描B-幀的半幀編碼宏塊中的上半幀而所述第二半幀是下半幀。51.如權(quán)利要求49所述的方法,其特征在于,所述第一半幀是隔行掃描B-幀的半幀編碼宏塊中的下半幀而所述第二半幀是上半幀。52.如權(quán)利要求49所述的方法,其特征在于,所述半幀編碼宏塊的運動補償僅使用所述第一和第二運動向量。53.—種具有存儲其上的計算機可執(zhí)行指令的計算機可讀媒體,所述計算機可執(zhí)行指令用于在視頻編碼器中執(zhí)行如權(quán)利要求49所述的方法。54.—種具有存儲其上的計算機可執(zhí)行指令的計算機可讀媒體,所述計算機可執(zhí)行指令用于在視頻解碼器中執(zhí)行如權(quán)利要求49所述的方法。55.—種方法,包括用信號表示隔行掃描B-幀的當前半幀編碼宏塊的第一預(yù)測模式;以及用信號表示所述當前半幀編碼宏塊的預(yù)測模式切換,從而指定對所述當前半幀編碼宏塊的第一半幀使用所述第一預(yù)測模式,并對所述當前半幀編碼宏塊的第二半幀使用與所述第一預(yù)測模式相反的第二預(yù)測模式。56.如權(quán)利要求55所述的方法,其特征在于,所述第一預(yù)測模式為正向而所述第二預(yù)測模式為反向。57.如權(quán)利要求55所述的方法,其特征在于,所述第一預(yù)測模式為反向而所述第二預(yù)測模式為正向。58.如權(quán)利要求55所述的方法,其特征在于,僅在所述第一預(yù)測模式為正向或反向時才用信號表示所述預(yù)測模式切換。59.—種方法,包括接收表示隔行掃描B-幀的當前半幀編碼宏塊的第一預(yù)測模式的預(yù)測模式信號;接收表示預(yù)測模式切換是否應(yīng)用于所述當前半幀編碼宏塊的切換模式信號;以及在應(yīng)用預(yù)測模式切換時,對所述當前半幀編碼宏塊的第一半幀使用所述第一預(yù)測模式,并對所述當前半幀編碼宏塊的第二半幀使用與所述第一預(yù)測模式相反的第二預(yù)測模式。60.如權(quán)利要求59所述的方法,其特征在于,所述第一預(yù)測模式為正向而所述第二預(yù)測模式為反向。61.如權(quán)利要求59所述的方法,其特征在于,所述第一預(yù)測模式為反向而所述第二預(yù)測模式為正向。62.如權(quán)利要求59所述的方法,其特征在于,僅在所述第一預(yù)測模式為正向或反向時才接收所述切換模式信號。63.—種方法,包括計算隔行掃描的雙向預(yù)測圖片的宏塊中的四個塊的每一個的運動向量;以及在處理隔行掃描的雙向預(yù)測圖片中,使用所計算運動向量的一個或多個。64.如權(quán)利要求63所述的方法,其特征在于,計算所述宏塊中四個塊的每一個的運動向量包括確定所述宏塊中四個塊的每一個的一個或多個候選運動向量預(yù)測值;至少部分地基于所述塊的一個或多個候選運動向量預(yù)測值中的一個或多個,計算所述四個塊的每一個的運動向量預(yù)測值;以及至少部分地基于所述塊的運動向量預(yù)測值,重構(gòu)所述四個塊的每一個的運動向量。65.如權(quán)利要求64所述的方法,其特征在于,重構(gòu)所述四個塊的每一個的運動向量包括組合所述塊的運動向量預(yù)測值與所述塊的運動向量差值信息。66.如權(quán)利要求63所述的方法,其特征在于,所述宏塊是正向預(yù)測的宏塊。67.如權(quán)利要求63所述的方法,其特征在于,所述宏塊是反向預(yù)測的宏塊。68.如權(quán)利要求63所述的方法,其特征在于,所述隔行掃描的雙向預(yù)測圖片是隔行掃描B-幀,且其中所述宏塊是所述隔行掃描B-幀中的幀編碼宏塊。69.如權(quán)利要求63所述的方法,其特征在于,所述隔行掃描的雙向預(yù)測圖片是隔行掃描B-半幀。70.如權(quán)利要求63所述的方法,還包括對所述隔行掃描的雙向預(yù)測圖片中多個其它宏塊的每一個重復(fù)所述計算和重構(gòu),其中四個運動向量宏塊可能用于正向和反向預(yù)測模式,但不用于其它可用預(yù)測模式。71.—種具有存儲其上的計算機可執(zhí)行指令的計算機可讀媒體,所述計算機可執(zhí)行指令用于在視頻編碼器中執(zhí)行如權(quán)利要求63所述的方法。72.—種具有存儲其上的計算機可執(zhí)行指令的計算機可讀媒體,所述計算機可執(zhí)行指令用于在視頻解碼器中執(zhí)行如權(quán)利要求63所述的方法。73.—種方法,包括在經(jīng)編碼比特流的宏塊級別上用信號表示用于所述隔行掃描的雙向預(yù)測圖片的當前宏塊的預(yù)測模式;以及當所述用信號表示的預(yù)測模式允許每個宏塊有四個運動向量時,用信號表示用于重構(gòu)所述當前宏塊的最多達四個塊的每一個的運動向量的信息。74.如權(quán)利要求73所述的方法,其特征在于,如果所述用信號表示的預(yù)測模式是正向或反向,則所述用信號表示的預(yù)測模式允許每個宏塊有四個運動向量,但是如果用信號表示的預(yù)測模式是另一可用模式,則不允許。75.如權(quán)利要求73所述的方法,其特征在于,所述當前宏塊的預(yù)測模式至少部分地也在所述經(jīng)編碼比特流的幀或半幀級別上用信號表示。76.如權(quán)利要求75所述的方法,其特征在于,所述隔行掃描的雙向預(yù)測圖片是隔行掃描B-半幀,且其中對所述預(yù)測模式的半幀級別信號表示包括位平面中的正向/非正向預(yù)測模式?jīng)Q定。77.如權(quán)利要求75所述的方法,其特征在于,所述隔行掃描的雙向預(yù)測圖片是隔行掃描B-幀,且其中對所述預(yù)測模式?jīng)Q定的幀級別信號表示包括位平面中的直接/非直接預(yù)測模式?jīng)Q定。78.—種具有存儲其上的計算機可執(zhí)行指令的計算機可讀媒體,所述計算機可執(zhí)行指令用于執(zhí)行如權(quán)利要求73所述的方法。79.—種方法,包括在經(jīng)編碼比特流的宏塊級別上接收并處理對用于所述隔行掃描的雙向預(yù)測圖片的當前宏塊的預(yù)測模式的預(yù)測模式信息;以及當所述預(yù)測模式允許每個宏塊有四個運動向量時,接收并處理用于重構(gòu)所述當前宏塊的最多達四個塊的每一個的運動向量的運動向量重構(gòu)信息。80.如權(quán)利要求79所述的方法,其特征在于,如果所述預(yù)測模式是正向或反向,則所述預(yù)測模式允許每個宏塊有四個運動向量,但是如果所述預(yù)測模式是另一可用模式,則不然。81.如權(quán)利要求79所述的方法,其特征在于,所述當前宏塊的預(yù)測模式至少部分地也在所述經(jīng)編碼比特流的幀或半幀級別上用信號表示。82.如權(quán)利要求81所述的方法,其特征在于,所述隔行掃描的雙向預(yù)測圖片是隔行掃描B-半幀,且其中對所述預(yù)測模式的半幀級別信號表示包括位平面中的正向/非正向預(yù)測模式?jīng)Q定。83.如權(quán)利要求81所述的方法,其特征在于,所述隔行掃描的雙向預(yù)測圖片是隔行掃描B-幀,且其中對所述預(yù)測模式?jīng)Q定的幀級別信號表示包括位平面中的直接/非直接預(yù)測模式?jīng)Q定。84.—種具有存儲其上的計算機可執(zhí)行指令的計算機可讀媒體,所述計算機可執(zhí)行指令用于執(zhí)行如權(quán)利要求79所述的方法。85.—種方法,包括-對于隔行掃描B-半幀中的宏塊,具有第一預(yù)測方向的重構(gòu)后第一運動向量的所述宏塊將所述重構(gòu)后第一運動向量存儲在用于所述第一預(yù)測方向的第一運動向量緩沖區(qū)中;計算用于不同于所述第一預(yù)測方向的第二預(yù)測方向的運動向量預(yù)測值,其中所述運動向量預(yù)測值至少部分地基于來自用于所述第二預(yù)測方向的第二運動向量緩沖區(qū)的一個或多個候選運動向量預(yù)測值;以及將所述運動向量預(yù)測值存儲在所述第二運動向量緩沖區(qū)中。86.如權(quán)利要求85所述的方法,其特征在于,計算用于所述第二預(yù)測方向的運動向量預(yù)測值至少部分地基于來自所述第二運動向量緩沖區(qū)的一個或多個候選運動向量預(yù)測值的極性信息。87.如權(quán)利要求86所述的方法,其特征在于,所述極性信息包括主極性的指示,且其中計算用于所述第二預(yù)測方向的運動向量預(yù)測值包括選擇一候選主極性預(yù)測值。88.如權(quán)利要求85所述的方法,其特征在于,所述第一預(yù)測方向為正向而所述第二預(yù)測方向為反向。89.如權(quán)利要求85所述的方法,其特征在于,所述第一預(yù)測方向為反向而所述第二預(yù)測方向為正向。90.如權(quán)利要求85所述的方法,其特征在于,重構(gòu)所述第一運動向量包括至少部分地基于來自第一運動向量緩沖區(qū)的一個或多個候選運動向量預(yù)測值,計算用于所述第一預(yù)測方向的運動向量預(yù)測值;以及組合用于所述第一預(yù)測方向的運動向量預(yù)測值與運動向量差值信息。91.如權(quán)利要求85所述的方法,其特征在于,所述隔行掃描B-半幀中的宏塊是1MV宏塊,且其中具有所述第一和第二運動向量緩沖區(qū)中的運動向量的至少一個宏塊是4MV宏塊。92.如權(quán)利要求85所述的方法,其特征在于,所述隔行掃描B-半幀中的宏塊是4MV宏塊,且其中具有所述第一和第二運動向量緩沖區(qū)中的運動向量的至少一個宏塊是1MV宏塊。93.—種具有存儲其上的計算機可執(zhí)行指令的計算機可讀媒體,所述計算機可執(zhí)行指令用于在視頻編碼器中執(zhí)行如權(quán)利要求85所述的方法。94.一種具有存儲其上的計算機可執(zhí)行指令的計算機可讀媒體,所述計算機可執(zhí)行指令用于在視頻解碼器中執(zhí)行如權(quán)利要求85所述的方法。95.—種方法,包括將第一運動向量存儲在用于第一預(yù)測方向的第一運動向量緩沖區(qū)中,其中所述第一運動向量用于隔行掃描B-半幀中的宏塊;計算用于不同于所述第一預(yù)測方向的第二預(yù)測方向的主極性運動向量預(yù)測值,其中所述主極性運動向量預(yù)測值至少部分地基于極性信息以及來自用于所述第二預(yù)測方向的第二運動向量緩沖區(qū)的一個或多個候選運動向量預(yù)測值;以及將所述主極性運動向量預(yù)測值存儲在所述第二運動向量緩沖區(qū)中。96.如權(quán)利要求95所述的方法,其特征在于,所述第一預(yù)測方向為正向而所述第二預(yù)測方向為反向,或者所述第一預(yù)測方向為反向而所述第二預(yù)測方向為正向。97.如權(quán)利要求95所述的方法,其特征在于,所述隔行掃描B-半幀中的宏塊是1MV或4MV宏塊。98.—種具有存儲其上的計算機可執(zhí)行指令的計算機可讀媒體,所述計算機可執(zhí)行指令用于執(zhí)行如權(quán)利要求95所述的方法。99.一種方法,包括確定當前隔行掃描的雙向預(yù)測圖片在視頻序列中的分數(shù),其中所述分數(shù)表示當前隔行掃描的雙向預(yù)測圖片在第一參考圖片和第二參考圖片之間的間隔中的位置;以及對于當前隔行掃描的雙向預(yù)測圖片中的宏塊,至少部分地基于所述分數(shù)計算運動向量預(yù)測值。100.如權(quán)利要求99所述的方法,其特征在于,所述分數(shù)影響來自運動向量緩沖區(qū)的第一半幀運動向量的縮放,以導(dǎo)出第二半幀運動向量。101.如權(quán)利要求99所述的方法,其特征在于,所述運動向量預(yù)測值被計算,用于重構(gòu)所述宏塊的運動向量。102.如權(quán)利要求101所述的方法,其特征在于,所述運動向量的預(yù)測模式為反向。103.如權(quán)利要求101所述的方法,其特征在于,所述運動向量的預(yù)測模式為正向。104.如權(quán)利要求101所述的方法,其特征在于,所述運動向量的預(yù)測模式為插值。105.如權(quán)利要求99所述的方法,其特征在于,所述運動向量預(yù)測值被計算,用于運動向量緩沖區(qū)的空穴填充。106.如權(quán)利要求99所述的方法,其特征在于,所述當前隔行掃描的雙向圖片是隔行掃描B-半幀。107.—種存儲計算機可執(zhí)行指令的計算機可讀媒體,所述計算機可執(zhí)行指令用于使計算機系統(tǒng)在視頻編碼期間執(zhí)行如權(quán)利要求99所述的方法。108.—種存儲計算機可執(zhí)行指令的計算機可讀媒體,所述計算機可執(zhí)行指令用于使計算機系統(tǒng)在視頻解碼期間執(zhí)行如權(quán)利要求99所述的方法。109.—種處理雙向預(yù)測視頻圖片的方法,所述方法包括對當前雙向預(yù)測圖片的當前隔行掃描宏塊確定所述當前圖片的分數(shù),其中所述當前圖片具有先前參考圖片和將來參考圖片,且其中所述分數(shù)表示所述當前圖片相對于其參考圖片的時間位置;尋找所述將來參考圖片中的共處宏塊的運動向量;使用所述分數(shù)縮放所述共處宏塊的運動向量;以及使用所述縮放后的運動向量來估計所述當前宏塊中的運動。110.如權(quán)利要求109所述的方法,其特征在于,縮放所述共處宏塊的運動向量包括縮放所述共處宏塊的運動向量的垂直分量和水平分量。111.一種存儲計算機可執(zhí)行指令的計算機可讀媒體,所述計算機可執(zhí)行指令用于使計算機系統(tǒng)在視頻編碼期間執(zhí)行如權(quán)利要求109所述的方法。112.—種存儲計算機可執(zhí)行指令的計算機可讀媒體,所述計算機可執(zhí)行指令用于使計算機系統(tǒng)在視頻解碼期間執(zhí)行如權(quán)利要求109所述的方法。113.—種方法,包括至少部分地基于當前隔行掃描幀的第一雙向預(yù)測半幀的多個參考半幀處理所述第一半幀;以及至少部分地基于當前隔行掃描幀的第二雙向預(yù)測半幀的多個參考半幀處理所述第二半幀,其中所述當前隔行掃描幀的第一半幀是用于所述當前隔行掃描幀的第二半幀的多個參考半幀之一。114.如權(quán)利要求113所述的方法,其特征在于,所述第一半幀是當前隔行掃描幀的上半幀,而所述第二半幀是當前隔行掃描幀的下半幀。115.如權(quán)利要求113所述的方法,其特征在于,所述第一半幀的多個參考半幀的每一個在當前隔行掃描幀之外,且其中所述第二半幀的多個參考半幀的每一個,除了所述第一半幀之外都在所述當前隔行掃描幀之外。116.如權(quán)利要求113所述的方法,其特征在于,所述第一半幀的多個參考半幀還包括前一隔行掃描幀中的上下半幀;以及后一隔行掃描幀中的上下半幀。117.如權(quán)利要求113所述的方法,其特征在于,所述第二半幀的多個參考半幀還包括前一隔行掃描幀中的相同極性半幀;以及后一隔行掃描幀中的上下半幀。118.如權(quán)利要求113所述的方法,其特征在于,處理所述第一半幀包括用參考所述第一半幀可用的多個參考半幀的一個或多個的運動向量執(zhí)行運動補償,且其中處理所述第二半幀包括用參考所述第二半幀可用的多個參考半幀的一個或多個的運動向量執(zhí)行運動補償。119.一種具有存儲其上的計算機可執(zhí)行指令的計算機可讀媒體,所述計算機可執(zhí)行指令用于在視頻編碼器中執(zhí)行如權(quán)利要求113所述的方法。120.—種具有存儲其上的計算機可執(zhí)行指令的計算機可讀媒體,所述計算機可執(zhí)行指令用于在視頻解碼器中執(zhí)行如權(quán)利要求113所述的方法。121.—種方法,包括至少部分地基于當前隔行掃描幀的第一雙向預(yù)測半幀的多個參考半幀處理所述第一半幀;以及至少部分地基于當前隔行掃描幀的第二雙向預(yù)測半幀的多個參考半幀處理所述第二半幀;其中所述第一半幀的多個參考半幀包括前一隔行掃描幀中的上下半幀以及后一隔行掃描幀中的上下半幀,且其中所述第二半幀的多個參考半幀包括當前隔行掃描幀的第一半幀、前一隔行掃描幀中的相同極性半幀、以及后一隔行掃描幀中的上下半幀。122.如權(quán)利要求121所述的方法,其特征在于,所述第一半幀是當前隔行掃描幀的上半幀,而所述第二半幀是當前隔行掃描幀的下半幀。123.如權(quán)利要求121所述的方法,其特征在于,處理所述第一半幀包括用參考所述第一半幀可用的多個參考半幀的一個或多個的運動向量執(zhí)行運動補償,且其中處理所述第二半幀包括用參考所述第二半幀可用的多個參考半幀的一個或多個的運動向量執(zhí)行運動補償。124.—種具有存儲其上的計算機可執(zhí)行指令的計算機可讀媒體,所述計算機可執(zhí)行指令用于在視頻編碼器中執(zhí)行如權(quán)利要求121所述的方法。125.—種具有存儲其上的計算機可執(zhí)行指令的計算機可讀媒體,所述計算機可執(zhí)行指令用于在視頻解碼器中執(zhí)行如權(quán)利要求121所述的方法。126.—種方法,包括處理當前隔行掃描幀的第一半幀;以及至少部分地基于當前隔行掃描幀的第二半幀的多個參考半幀處理所述第二半幀,其中所述第二半幀是隔行掃描B-半幀,且其中所述第二半幀的多個參考半幀包括所述第一半幀。127.如權(quán)利要求126所述的方法,其特征在于,所述第一半幀是當前隔行掃描幀的上半幀,而所述第二半幀是當前隔行掃描幀的下半幀。128.如權(quán)利要求126所述的方法,其特征在于,所述第一半幀是當前隔行掃描幀的下半幀,而所述第二半幀是當前隔行掃描幀的上半幀。129.如權(quán)利要求126所述的方法,其特征在于,所述第一半幀是隔行掃描B-半幀。130.如權(quán)利要求129所述的方法,其特征在于,所述第一半幀的多個參考半幀包括前一隔行掃描幀中的上下半幀以及后一隔行掃描幀中的上下半幀。131.如權(quán)利要求126所述的方法,其特征在于,所述第二半幀的多個參考半幀還包括前一隔行掃描幀中的相同極性半幀;以及后一隔行掃描幀中的上下半幀。132.如權(quán)利要求126所述的方法,其特征在于,處理所述第二半幀包括用參考所述第二半幀可用的多個參考半幀的一個或多個的運動向量執(zhí)行運動補償。133.—種具有存儲其上的計算機可執(zhí)行指令的計算機可讀媒體,所述計算機可執(zhí)行指令用于在視頻編碼器中執(zhí)行如權(quán)利要求126所述的方法。134.—種具有存儲其上的計算機可執(zhí)行指令的計算機可讀媒體,所述計算機可執(zhí)行指令用于在視頻解碼器中執(zhí)行如權(quán)利要求126所述的方法。135.—種方法,包括處理用于包括多個宏塊的雙向預(yù)測圖片的位平面,其中所述位平面表示二進制決定信息,它表示雙向預(yù)測圖片中的多個宏塊是使用正向模式預(yù)測還是使用非正向模式預(yù)測進行運動補償。136.如權(quán)利要求135所述的方法,其特征在于,所述雙向預(yù)測圖片是隔行掃描B-半幀。137.如權(quán)利要求135所述的方法,還包括從用于處理所述位平面的多個可用編碼模式中選擇一編碼模式。138.如權(quán)利要求135所述的方法,其特征在于,所述位平面是半幀頭級別位平面。139.如權(quán)利要求135所述的方法,還包括,當所述二進制決定信息表示運動補償將非正向預(yù)測模式用于所述多個宏塊之一時,處理來自可變長度代碼表的一可變長度代碼,其中所述可變長度代碼表示用于所述宏塊的不同于正向模式的預(yù)測模式。140.—種存儲計算機可執(zhí)行指令的計算機可讀媒體,所述計算機可執(zhí)行指令用于使計算機系統(tǒng)在視頻編碼期間執(zhí)行如權(quán)利要求135所述的方法。141.一種存儲計算機可執(zhí)行指令的計算機可讀媒體,所述計算機可執(zhí)行指令用于使計算機系統(tǒng)在視頻解碼期間執(zhí)行如權(quán)利要求B5所述的方法。142.—種方法,包括從一組多個可用編碼模式中選擇一編碼模式;以及根據(jù)所述選定編碼模式處理隔行掃描B-半幀的位平面,其中所述位平面表示二進制決定信息,它表示隔行掃描B-半幀中的多個宏塊是使用正向模式預(yù)測還是使用非正向模式預(yù)測進行運動補償。143.如權(quán)利要求142所述的方法,其特征在于,所述多個可用編碼模式的至少兩個包括降低關(guān)聯(lián)于所述二進制決定信息的比特率。144.如權(quán)利要求142所述的方法,其特征在于,所述多個可用編碼模式包括行預(yù)測編碼模式、列預(yù)測編碼模式、一個或多個向量可變長度編碼模式、以及一個或多個差值編碼模式。145.如權(quán)利要求142所述的方法,其特征在于,所述位平面在半幀級別上用信號表示。146.如權(quán)利要求142所述的方法,還包括,當所述二進制決定信息表示運動補償將非正向預(yù)測模式用于所述多個宏塊之一時,處理來自可變長度代碼表的一可變長度代碼,其中所述可變長度代碼表示用于所述宏塊的不同于正向模式的預(yù)測模式。147.—種存儲計算機可執(zhí)行指令的計算機可讀媒體,所述計算機可執(zhí)行指令用于使計算機系統(tǒng)在視頻編碼期間執(zhí)行如權(quán)利要求142所述的方法,其中處理所述位平面包括編碼所述位平面。148.—種存儲計算機可執(zhí)行指令的計算機可讀媒體,所述計算機可執(zhí)行指令用于使計算機系統(tǒng)在視頻解碼期間執(zhí)行如權(quán)利要求142所述的方法,其中處理所述位平面包括解碼所述位平面。149.一種方法,包括從多個可用編碼模式中選擇一編碼模式,其中所述多個可用編碼模式包括一原始模式;以及如果所選定的編碼模式為所述原始模式,則在宏塊級別上處理二進制決定信息,它表示雙向預(yù)測圖片中的多個宏塊是使用正向模式預(yù)測還是使用非正向模式預(yù)測進行運動補償,否則,根據(jù)所選定的編碼模式,將二進制決定信息處理為位平面。150.如權(quán)利要求149所述的方法,其特征在于,所述雙向預(yù)測圖片是隔行掃描B-半幀。151.如權(quán)利要求149所述的方法,其特征在于,所述位平面是半幀頭級別位平面。152.如權(quán)利要求149所述的方法,還包括,當所述二進制決定信息表示運動補償將非正向預(yù)測模式用于所述多個宏塊之一時,處理來自可變長度代碼表的一可變長度代碼,其中所述可變長度代碼表示用于所述宏塊的不同于正向模式的預(yù)測模式。153.—種存儲計算機可執(zhí)行指令的計算機可讀媒體,所述計算機可執(zhí)行指令用于使計算機系統(tǒng)在視頻編碼期間執(zhí)行如權(quán)利要求149所述的方法。154.—種存儲計算機可執(zhí)行指令的計算機可讀媒體,所述計算機可執(zhí)行指令用于使計算機系統(tǒng)在視頻解碼期間執(zhí)行如權(quán)利要求149所述的方法。155.—種方法,包括計算要在對隔行掃描B-半幀中的當前宏塊進行直接模式縮放時使用的運動向量,包括當參考半幀的共處宏塊是1MV宏塊時,將所述共處宏塊的單個運動向量選擇為要在直接模式縮放中使用的運動向量,以及當參考半幀的共處宏塊是4MV宏塊時,將來自所述共處宏塊的最多達4個運動向量的主極性運動向量選擇為要在直接模式縮放中使用的運動向量。156.如權(quán)利要求155所述的方法,其特征在于,計算所述主極性運動向量包括在最多達4個的運動向量中,計數(shù)相同極性運動向量并計數(shù)相反極性運動向量;以及如果相反極性運動向量的計數(shù)值超過相同極性運動向量的計數(shù)值,則基于所述相反極性運動向量計算所述主極性運動向量,否則基于所述相同極性運動向量計算所述主極性運動向量。157.如權(quán)利要求155所述的方法,其特征在于,計算所述主極性運動向量包括平均兩個運動向量。158.如權(quán)利要求155所述的方法,其特征在于,計算所述主極性運動向量包括計算三個或四個運動向量的中值。159.如權(quán)利要求155所述的方法,其特征在于,計算所述主極性運動向量包括從最多達四個的運動向量中選擇單個可用運動向量。160.如權(quán)利要求155所述的方法,包括在處理隔行掃描B-半幀中的當前宏塊期間執(zhí)行所述計算。161.如權(quán)利要求155所述的方法,包括在開始處理隔行掃描B-半幀中的當前宏塊之前處理所述共處宏塊期間執(zhí)行所述計算。162.如權(quán)利要求155所述的方法,所述參考半幀具有與隔行掃描B-半幀相同的極性。163.—種存儲計算機可執(zhí)行指令的計算機可讀媒體,所述計算機可執(zhí)行指令用于使計算機系統(tǒng)在視頻編碼期間執(zhí)行如權(quán)利要求155.所述的方法。164.—種存儲計算機可執(zhí)行指令的計算機可讀媒體,所述計算機可執(zhí)行指令用于使計算機系統(tǒng)在視頻解碼期間執(zhí)行如權(quán)利要求155所述的方法。165.—種方法,包括緩存隔行掃描錨幀中多個宏塊的多個運動向量,包括對所述多個宏塊的至少之一緩存所述宏塊中不同半幀的不同運動向量;對于當前隔行掃描雙向預(yù)測幀中的直接模式宏塊,在所述隔行掃描錨幀的多個宏塊中選擇對應(yīng)于共處宏塊的一個或多個緩存運動向量;以及至少部分地基于所選定的一個或多個運動向量,計算直接模式宏塊的多個直接模式運動向量。166.如權(quán)利要求165所述的方法,其特征在于,選擇一個或多個緩存運動向量至少部分地基于直接模式宏塊的運動補償預(yù)測模式。167.如權(quán)利要求166所述的方法,其特征在于,所述直接模式宏塊的運動補償預(yù)測模式為1MV。168.如權(quán)利要求167所述的方法,其特征在于,所選定的一個或多個運動向量包括一個選定運動向量。169.如權(quán)利要求167所述的方法,其特征在于,所述共處宏塊是半幀編碼的,且其中所選定的一個或多個運動向量包括從所述共處宏塊的上半幀選定的運動向170.如權(quán)利要求166所述的方法,其特征在于,所述直接模式宏塊的運動補償預(yù)測模式為2半幀MV。171.如權(quán)利要求170所述的方法,其特征在于,所選定的一個或多個運動向量包括兩個選定運動向量。172.如權(quán)利要求170所述的方法,其特征在于,所述共處宏塊是半幀編碼的,且其中所選定的一個或多個運動向量包括所述共處宏塊的上半幀運動向量和下半幀運動向量。173.如權(quán)利要求165所述的方法,其特征在于,緩存多個運動向量包括對所述多個宏塊的每一個緩存不超過兩個運動向量。174.如權(quán)利要求165所述的方法,其特征在于,所述多個直接模式運動向量包括一對正向和反向直接模式運動向量,且其中所述直接模式宏塊是1MV宏塊。175.如權(quán)利要求165所述的方法,其特征在于,所述多個直接模式運動向量包括兩對正向和反向直接模式運動向量,且其中所述直接模式宏塊是2半幀MV宏塊。176.如權(quán)利要求175所述的方法,其特征在于,所述兩對正向和后向直接模式運動向量的每一對用于所述直接模式宏塊的不同半幀。177.—種具有存儲其上的計算機可執(zhí)行指令的計算機可讀媒體,所述計算機可執(zhí)行指令用于在視頻編碼器中執(zhí)行如權(quán)利要求165所述的方法。178.—種具有存儲其上的計算機可執(zhí)行指令的計算機可讀媒體,所述計算機可執(zhí)行指令用于在視頻解碼器中執(zhí)行如權(quán)利要求165所述的方法。179.—種方法,包括計算要在對隔行掃描B-半幀中的當前宏塊進行直接模式縮放時使用的一個或多個運動向量,其中所述計算至少部分地依賴于隔行掃描參考幀中當前宏塊的運動補償模式和共處宏塊的運動補償模式而變化;以及使用所述一個或多個運動向量執(zhí)行所述直接模式縮放。180.如權(quán)利要求179所述的方法,其特征在于,所述計算包括,當所述共處宏塊是具有單個運動向量的1MV宏塊時當當前宏塊是1MV宏塊時,選擇要在所述當前宏塊的直接模式縮放中使用的共處宏塊的單個運動向量;以及當當前宏塊是具有上下半幀的半幀編碼的2MV宏塊時,選擇要在所述當前宏塊的上下半幀的每一個的直接模式縮放中使用的共處宏塊的單個運動向量。181.如權(quán)利要求179所述的方法,其特征在于,所述計算包括當所述共處宏塊是具有上半幀運動向量和下半幀運動向量的半幀編碼的2MV宏塊時當當前宏塊是1MV宏塊時,選擇要在所述當前宏塊的直接模式縮放中使用的共處宏塊的上半幀運動向量;以及當當前宏塊是半幀編碼的2MV宏塊時,選擇要在所述當前宏塊的上半幀的直接模式縮放中使用的共處宏塊的上半幀運動向量,并選擇要在所述當前宏塊的下半幀的直接模式縮放中使用的共處宏塊的下半幀運動向量。182.—種具有存儲其上的計算機可執(zhí)行指令的計算機可讀媒體,所述計算機可執(zhí)行指令用于在視頻編碼器中執(zhí)行如權(quán)利要求179所述的方法。183.—種具有存儲其上的計算機可執(zhí)行指令的計算機可讀媒體,所述計算機可執(zhí)行指令用于在視頻解碼器中執(zhí)行如權(quán)利要求179所述的方法。全文摘要對于隔行掃描B-半幀或隔行掃描B-幀,正向運動向量使用來自正向運動向量緩沖區(qū)的正向運動向量由編碼器/解碼器預(yù)測,而反向運動向量使用來自反向運動向量緩沖區(qū)的反向運動向量由編碼器/解碼器預(yù)測。結(jié)果的運動向量被添加到相應(yīng)的緩沖區(qū)中。運動向量緩沖區(qū)中的空穴可用所估計的運動向量值填充。編碼器/解碼器在隔行掃描B-幀的半幀編碼宏塊中的半幀之間切換預(yù)測模式。對于隔行掃描B-半幀或隔行掃描B-幀,編碼器/解碼器計算直接模式運動向量。對于隔行掃描B-半幀或隔行掃描B-幀,編碼器/解碼器使用4MV編碼。編碼器/解碼器使用“自參考”B-幀。編碼器發(fā)送二進制信息,表示對隔行掃描B-半幀的一個或多個宏塊的預(yù)測模式是正向還是非正向的。編碼器/解碼器使用幀內(nèi)編碼的B-半幀[“BI-半幀”]。文檔編號H04N7/12GK101416525SQ200480024621公開日2009年4月22日申請日期2004年9月3日優(yōu)先權(quán)日2003年9月7日發(fā)明者K·慕克吉,T·W·赫爾科比申請人:微軟公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1