專利名稱:隔行掃描視頻的高級(jí)雙向預(yù)測(cè)編碼的制作方法
技術(shù)領(lǐng)域:
描述了用于隔行掃描視頻編碼和解碼的技術(shù)和工具。例如,視頻編碼器對(duì)隔行掃 描視頻中的雙向預(yù)測(cè)宏塊進(jìn)行編碼。
背景技術(shù):
數(shù)字視頻消耗大量的存儲(chǔ)和傳輸容量。典型的原始數(shù)字視頻序列包括每秒15或 30個(gè)圖片。每個(gè)圖片可包括數(shù)萬(wàn)或數(shù)十萬(wàn)個(gè)像素(也稱為pel)。每個(gè)像素表示圖片的小 元素。在原始形式中,計(jì)算機(jī)通常用24個(gè)比特或以上來(lái)表示像素。因而,典型的原始數(shù)字 視頻序列的每秒比特?cái)?shù)或比特率可以是5百萬(wàn)比特/秒或以上。大多數(shù)計(jì)算機(jī)和計(jì)算機(jī)網(wǎng)絡(luò)缺乏處理原始數(shù)字視頻的資源。為此,工程師們使用 壓縮(也稱為譯碼或編碼)來(lái)降低數(shù)字視頻的比特率。壓縮可以是無(wú)損的,其中視頻的質(zhì) 量未受損,但比特率的降低受視頻復(fù)雜性的限制?;蛘?,壓縮可以是有損的,其中視頻的質(zhì) 量受損,但可獲得的比特率降幅更大。解壓縮是壓縮的反向過(guò)程。一般而言,視頻壓縮技術(shù)包括“幀內(nèi)”壓縮和“幀間”或預(yù)測(cè)壓縮。幀內(nèi)壓縮技術(shù) 壓縮通常稱為I-幀或關(guān)鍵幀的各個(gè)圖片。幀間壓縮技術(shù)參考前面和/或后續(xù)的各幀來(lái)壓 縮各個(gè)幀,而經(jīng)幀間壓縮的幀通常稱為預(yù)測(cè)幀、P-幀、或B-幀。I. Windows Media Video版本8和9中的幀間壓縮微軟公司的Windows Media Video版本8 [ “WMV8” ]包括視頻編碼器和視頻解碼器。WMV8編碼器使用幀內(nèi)壓縮和幀間壓縮,且WMV8解碼器使用幀內(nèi)解壓縮和幀間解壓縮。 Windows Media Video版本9[ “WMV9”]則將類似的體系結(jié)構(gòu)用于許多操作。WMV8編碼器中的幀內(nèi)壓縮使用基于塊的運(yùn)動(dòng)補(bǔ)償預(yù)測(cè)編碼,然后使用殘差的變換 編碼。圖1和2示出WMV8編碼器中預(yù)測(cè)幀的基于塊的幀間壓縮。特別地,圖1示出對(duì)預(yù)測(cè) 幀110的運(yùn)動(dòng)估計(jì),而圖2示出對(duì)預(yù)測(cè)幀的運(yùn)動(dòng)補(bǔ)償塊的預(yù)測(cè)殘差壓縮。例如,在圖1中,WMV8編碼器計(jì)算用于預(yù)測(cè)幀110中的宏塊115的運(yùn)動(dòng)向量。為 了計(jì)算該運(yùn)動(dòng)向量,編碼器在參考幀130的搜索區(qū)域135中進(jìn)行搜索。在搜索區(qū)域135內(nèi), 編碼器對(duì)來(lái)自預(yù)測(cè)幀110的宏塊115和各個(gè)候選宏塊作比較,以便于尋找是好匹配的候選 宏塊。編碼器輸出指定匹配宏塊的(經(jīng)熵編碼的)運(yùn)動(dòng)向量。因?yàn)檫\(yùn)動(dòng)向量值常常相關(guān)于空間上位于四周的運(yùn)動(dòng)向量的值,所以用來(lái)傳送運(yùn)動(dòng) 向量信息的數(shù)據(jù)的壓縮可通過(guò)從相鄰宏塊中選擇運(yùn)動(dòng)向量預(yù)測(cè)值,并使用該預(yù)測(cè)值來(lái)預(yù)測(cè) 當(dāng)前宏塊的運(yùn)動(dòng)向量來(lái)獲得。編碼器可編碼運(yùn)動(dòng)向量和預(yù)測(cè)值之前的差值。在通過(guò)將差值 添加到預(yù)測(cè)值中重構(gòu)運(yùn)動(dòng)向量之后,解碼器使用該運(yùn)動(dòng)向量來(lái)用來(lái)自參考幀130的信息計(jì) 算用于宏塊115的預(yù)測(cè)宏塊,該參考幀是在編碼器和解碼器上可用的先前重構(gòu)幀。預(yù)測(cè)很 少是完美的,所以編碼器常常編碼預(yù)測(cè)宏塊和宏塊115本身之間的像素差異(也稱為誤差 或殘差塊)的各個(gè)塊。圖2示出WMV8編碼器中誤差塊235的計(jì)算和編碼的一個(gè)示例。該誤差塊235是 預(yù)測(cè)塊215和原始當(dāng)前塊225之間的差異。編碼器將離散余弦變換[“DCT”]240應(yīng)用于誤 差塊235,得到系數(shù)的8x8塊245。然后編碼器量化(250) DCT系數(shù),得到經(jīng)量化的DCT系數(shù) 的8x8塊255。編碼器將8x8塊255掃描(260)成一維數(shù)組265,從而系數(shù)通常從最低頻率 到最高頻率進(jìn)行排序。編碼器使用運(yùn)行長(zhǎng)度編碼270的變體來(lái)熵編碼經(jīng)掃描的系數(shù)。編碼 器從一個(gè)或多個(gè)run/level/last表格275中選擇熵碼,并輸出該熵碼。圖3示出對(duì)經(jīng)幀間編碼塊的相應(yīng)解碼過(guò)程300的一個(gè)示例。從圖3總地看來(lái),解 碼器使用具有一個(gè)或多個(gè)run/level/last表格315的可變長(zhǎng)度解碼310和運(yùn)行長(zhǎng)度解碼 320來(lái)解碼(310、320)表示預(yù)測(cè)殘差的經(jīng)熵編碼的信息。解碼器將存儲(chǔ)了經(jīng)熵編碼信息的 一維數(shù)組325逆掃描(330)成二維塊335。解碼器逆量化并逆離散余弦變換(一起編號(hào)為 340)該數(shù)據(jù),產(chǎn)生經(jīng)重構(gòu)的誤差塊345。在獨(dú)立的運(yùn)動(dòng)補(bǔ)償路徑中,解碼器使用運(yùn)動(dòng)向量信 息355來(lái)計(jì)算預(yù)測(cè)塊365,用于相對(duì)參考幀的位移。解碼器將預(yù)測(cè)塊365與經(jīng)重構(gòu)的誤差塊 345組合(370)在一起,以形成重構(gòu)塊375。原始和重構(gòu)幀之間的改變量是失真,且編碼該幀所需的比特?cái)?shù)表示該幀的速率。 失真量大致與速率成反比。II.隔行掃描視頻和逐行掃描視頻視頻幀包含視頻信號(hào)的各行空間信息。對(duì)于逐行掃描視頻,這些行包含從一時(shí)刻 開始并繼續(xù)后續(xù)行直到幀的底部的樣本。逐行掃描I幀是幀內(nèi)編碼的逐行掃描視頻幀。逐 行掃描P幀是使用正向預(yù)測(cè)編碼的逐行掃描視頻幀,而逐行掃描B幀是使用雙向預(yù)測(cè)編碼 的逐行掃描視頻幀。典型的隔行掃描視頻幀由在不同時(shí)間開始掃描的兩個(gè)半幀組成。例如,參照?qǐng)D4, 隔行掃描的視頻幀400包括上半幀410和下半幀420。通常,偶數(shù)編號(hào)行(上半幀)在一時(shí) 間(例如時(shí)間t)開始掃描而奇數(shù)編號(hào)行(下半幀)在不同(通常為后續(xù))時(shí)間(例如時(shí)間t+1)開始掃描。該定時(shí)可在隔行掃描視頻幀的區(qū)域中創(chuàng)建鋸齒狀特征,其中因?yàn)閮蓚€(gè)半 幀在不同時(shí)間開始掃描而呈現(xiàn)運(yùn)動(dòng)。因此,各個(gè)隔行掃描的視頻幀可根據(jù)半幀結(jié)構(gòu)來(lái)重新 排列,其中奇數(shù)行組合在一個(gè)半幀中而偶數(shù)行組合在另一個(gè)半幀中。稱為半幀編碼的該排 列對(duì)在高運(yùn)動(dòng)圖片中減少這種鋸齒邊緣人工效應(yīng)是有用的。另一方面,在靜態(tài)區(qū)域中,隔行 掃描視頻幀中的圖像細(xì)節(jié)無(wú)需這種重新排列就可更為有效地保留。因此,幀編碼常用于靜 態(tài)或低運(yùn)動(dòng)的隔行掃描視頻幀,其中原始的交替半幀行排列得以保留。典型的逐行掃描視頻幀由具有非交替行的一內(nèi)容幀組成。與隔行掃描視頻相比,逐行掃描視頻不將視頻幀分成各個(gè)半幀,并且整個(gè)幀從某個(gè)時(shí)間開始進(jìn)行從左到右、從上 到下的掃描。III.先前WMV編碼器和解碼器中的P-幀編碼和解碼先前的WMV編碼器和解碼器使用P-幀中的逐行掃描及隔行掃描的編碼和解碼。在 隔行掃描和逐行掃描的P-幀中,運(yùn)動(dòng)向量通過(guò)計(jì)算運(yùn)動(dòng)向量和運(yùn)動(dòng)向量預(yù)測(cè)值之間的差 值來(lái)在編碼器中編碼,其中運(yùn)動(dòng)向量預(yù)測(cè)值基于相鄰的運(yùn)動(dòng)向量進(jìn)行計(jì)算。并且,在解碼器 中,運(yùn)動(dòng)向量通過(guò)將運(yùn)動(dòng)向量差值添加到運(yùn)動(dòng)向量預(yù)測(cè)值來(lái)重新構(gòu)建,其中運(yùn)動(dòng)向量預(yù)測(cè) 值再次基于相鄰的運(yùn)動(dòng)向量進(jìn)行計(jì)算(這次是在解碼器中)。當(dāng)前宏塊的預(yù)測(cè)值或當(dāng)前宏 塊的半幀基于候選預(yù)測(cè)值來(lái)選擇,而運(yùn)動(dòng)向量差值基于該預(yù)測(cè)值來(lái)計(jì)算。通過(guò)將運(yùn)動(dòng)向量 差值添加到編碼器側(cè)或解碼器側(cè)的選定運(yùn)動(dòng)向量預(yù)測(cè)值,可重構(gòu)運(yùn)動(dòng)向量。通常,亮度運(yùn)動(dòng) 向量從經(jīng)編碼的運(yùn)動(dòng)信息中重構(gòu),而色度運(yùn)動(dòng)向量從經(jīng)重構(gòu)的亮度運(yùn)動(dòng)向量中導(dǎo)出。A.逐行掃描P-幀的編碼和解碼例如,在先前的WMV編碼器和解碼器中,逐行掃描P-幀可包含以一運(yùn)動(dòng)向量(IMV) 模式或四運(yùn)動(dòng)向量(4MV)模式編碼的宏塊,或被跳過(guò)的宏塊,其中決定通常在逐個(gè)宏塊的 基礎(chǔ)上作出。僅具有IMV宏塊(以及可能被跳過(guò)的宏塊)的P-幀被稱為IMV P-幀,而都 具有IMV和4MV宏塊(以及可能被跳過(guò)的宏塊)的P-幀被稱為混合MV的P-幀。一個(gè)運(yùn) 動(dòng)向量與每個(gè)IMV宏塊相關(guān)聯(lián),而四個(gè)運(yùn)動(dòng)向量與每個(gè)4MV宏塊相關(guān)聯(lián)(每個(gè)塊一個(gè))。圖5A和5B是示出被視作用于IMV逐行掃描P-幀中宏塊的候選運(yùn)動(dòng)向量預(yù)測(cè)值 的宏塊的位置的示圖。候選預(yù)測(cè)值從左邊、上方和右上方宏塊中取得,除了宏塊是行中最后 一個(gè)宏塊的情形。在該情形中,Predicator (預(yù)測(cè)值)B從左上方宏塊而不是從右上方中取 得。對(duì)于幀為一個(gè)宏塊寬的特定情形,預(yù)測(cè)值總是預(yù)測(cè)值A(chǔ)(頂部預(yù)測(cè)值)。當(dāng)因?yàn)楹陦K在 首行中從而預(yù)測(cè)值A(chǔ)在界限之外時(shí),預(yù)測(cè)值為預(yù)測(cè)值C。各種其它規(guī)則解決其它特定情形, 諸如幀內(nèi)編碼的預(yù)測(cè)值。圖6A-10示出被視作用于混合MV幀中的IMV或4MV宏塊的運(yùn)動(dòng)向量的至多3個(gè) 候選運(yùn)動(dòng)向量的塊或宏塊的位置。在以下附圖中,較大的正方形是宏塊邊界而較小的正方 形是塊邊界。對(duì)于幀為一個(gè)宏塊寬的特定情形,預(yù)測(cè)值總是PredictorA(頂部預(yù)測(cè)值)。各 種其它規(guī)則解決其它特定情形,諸如用于首行4MV宏塊的首行塊、首行IMV宏塊、以及幀內(nèi) 編碼預(yù)測(cè)值。圖6A和6B是示出被視作用于混合MV幀中的IMV當(dāng)前宏塊的候選運(yùn)動(dòng)向量預(yù)測(cè) 值的塊的位置的示圖。相鄰的各個(gè)宏塊可以是IMV或4MV宏塊。圖6A和6B示出假設(shè)鄰居 都是4MV的候選運(yùn)動(dòng)向量的位置(即預(yù)測(cè)值A(chǔ)是當(dāng)前宏塊上面的宏塊中塊2的運(yùn)動(dòng)向量, 而預(yù)測(cè)值C是當(dāng)前宏塊左側(cè)緊鄰的宏塊中塊1的運(yùn)動(dòng)向量)。如果鄰居的任一個(gè)是IMV宏塊,則圖5A和5B中示出的運(yùn)動(dòng)向量預(yù)測(cè)值被視為整個(gè)宏塊的運(yùn)動(dòng)向量預(yù)測(cè)值。如圖6B所 示,如果宏塊是該行中的最后一個(gè)宏塊,則預(yù)測(cè)值B來(lái)自左上方宏塊的塊3而不像其它情形 一樣來(lái)自右上方宏塊的塊2。圖7A-10示出被視作用于4MV宏塊中4個(gè)亮度塊的每一個(gè)的候選運(yùn)動(dòng)向量預(yù)測(cè)值 的塊的位置。圖7A和7B是示出被視作用于位置0上一個(gè)塊的候選運(yùn)動(dòng)向量預(yù)測(cè)值的塊的 位置的示圖;圖8A和8B是示出被視作用于位置1上一個(gè)塊的候選運(yùn)動(dòng)向量預(yù)測(cè)值的塊的 位置的示圖;圖9是示出被視作用于位置2上一個(gè)塊的候選運(yùn)動(dòng)向量預(yù)測(cè)值的塊的位置的 示圖;而圖10是示出被視作用于位置3上一個(gè)塊的候選運(yùn)動(dòng)向量預(yù)測(cè)值的塊的位置的示 圖。再一次,如果鄰居是IMV宏塊,則該宏塊的運(yùn)動(dòng)向量預(yù)測(cè)值用于該宏塊的各個(gè)塊。對(duì)于宏塊是行中第一宏塊的情形,塊0的預(yù)測(cè)值B與該行中剩余宏塊的塊0進(jìn)行 不同的處理(參見圖7A和7B)。在該情形中,預(yù)測(cè)值B從當(dāng)前宏塊上面緊鄰宏塊的塊3中 取得,而不像其它情形一樣從當(dāng)前宏塊左上方的宏塊的塊3中取得。類似地,對(duì)于宏塊是行 中最后一個(gè)宏塊的情形,對(duì)塊1的預(yù)測(cè)值B進(jìn)行不同的處理(參見圖8A和8B)。在該情形 中,預(yù)測(cè)值從當(dāng)前宏塊上面緊鄰宏塊的塊2中取得,而不像其它情形一樣從當(dāng)前宏塊右上 方的宏塊的塊2中取得。一般而言,如果該宏塊在第一宏塊列中,則塊0和2的預(yù)測(cè)值C被 設(shè)置為等于0。B.先前WMV編碼器和解碼器中隔行掃描P-幀的編碼和解碼先前WMV編碼器和解碼器將4:1 1宏塊格式用于隔行掃描的P-幀,該宏塊格式可 包含用半幀模式或幀模式編碼的宏塊,或被跳過(guò)的宏塊,其中決定通常在逐個(gè)宏塊的基礎(chǔ) 上作出。兩個(gè)運(yùn)動(dòng)向量關(guān)聯(lián)于每個(gè)半幀編碼的宏塊(每個(gè)半幀一個(gè)運(yùn)動(dòng)向量),而一個(gè)運(yùn)動(dòng) 向量關(guān)聯(lián)于每個(gè)幀編碼的宏塊。編碼器聯(lián)合編碼運(yùn)動(dòng)信息,包括水平和垂直運(yùn)動(dòng)向量差值 分量,以及可能的其它信令信息。圖11和12A-B示出分別用于先前WMV編碼器和解碼器的隔行掃描P-幀中的幀編 碼4:1:1宏塊和半幀編碼4:1:1宏塊的運(yùn)動(dòng)向量預(yù)測(cè)的候選預(yù)測(cè)值的示例。圖11示出用 于隔行掃描P-幀的內(nèi)部位置中當(dāng)前幀編碼4:1 1宏塊的候選預(yù)測(cè)值A(chǔ)、B和C(不是宏塊行 中第一或最后一個(gè)宏塊、也不是首行)。預(yù)測(cè)值可從不同于那些標(biāo)有A、B和C的不同候選方 向中獲得(例如在諸如當(dāng)前宏塊是行中第一宏塊或最后一個(gè)宏塊或在首行中的特定情形, 因?yàn)閷?duì)于這些情形得不到某些預(yù)測(cè)值)。對(duì)于當(dāng)前的幀編碼宏塊,候選預(yù)測(cè)值取決于相鄰宏 塊是半幀編碼還是幀編碼的來(lái)進(jìn)行不同的計(jì)算。對(duì)于相鄰的幀編碼宏塊,運(yùn)動(dòng)向量簡(jiǎn)便地 取作候選預(yù)測(cè)值。對(duì)于相鄰的半幀編碼宏塊,候選運(yùn)動(dòng)向量通過(guò)平均上半幀和下半幀運(yùn)動(dòng) 向量來(lái)確定。圖12A-B示出用于半幀內(nèi)部位置中半幀編碼的4:1:1宏塊內(nèi)的當(dāng)前半幀的候選預(yù) 測(cè)值A(chǔ)、B和C。在圖12A中,當(dāng)前半幀是下半幀,且相鄰宏塊中的下半幀運(yùn)動(dòng)向量被用作候 選預(yù)測(cè)值。在圖12B中,當(dāng)前半幀是上半幀,且相鄰宏塊中的上半幀運(yùn)動(dòng)向量被用作候選預(yù) 測(cè)值。因而,對(duì)于當(dāng)前半幀編碼宏塊中的每個(gè)半幀,每個(gè)半幀的候選運(yùn)動(dòng)向量預(yù)測(cè)值的數(shù)量 最多為3,其中每個(gè)候選值來(lái)自與當(dāng)前半幀相同的同一半幀類型(例如上半幀或下半幀)。 再一次,各種特定情形(未示出)在當(dāng)前宏塊是行中第一宏塊或最后一個(gè)宏塊,或在首行中 時(shí)應(yīng)用,因?yàn)閷?duì)于這些情形得不到某些預(yù)測(cè)值。為了從候選預(yù)測(cè)值集中選擇一預(yù)測(cè)值,討論中的先前WMV編碼器和解碼器使用不同的選擇算法,諸如三者中值算法或四者中值算法。三者中值預(yù)測(cè)的過(guò)程在圖13的偽碼 1300中說(shuō)明。四者中值預(yù)測(cè)的過(guò)程在圖14的偽碼1400中說(shuō)明。IV.雙向預(yù)測(cè)雙向預(yù)測(cè)幀(或B-幀)使用來(lái)自源視頻的兩個(gè)幀作為參考(或錨)幀,而不是在P-幀中使用的一個(gè)錨。在典型B-幀的錨幀中,一個(gè)錨幀來(lái)自時(shí)間上的過(guò)去而另一個(gè)錨幀來(lái) 自時(shí)間上的將來(lái)。參照?qǐng)D15,視頻序列中的B-幀1510具有時(shí)間上在先的參考幀1520和時(shí) 間上將來(lái)的參考幀1530。使用B-幀提供了根據(jù)更大的比特率節(jié)約(例如出現(xiàn)某些類型的 移動(dòng),諸如閉塞)而有效壓縮的優(yōu)點(diǎn)。具有B-幀的經(jīng)編碼比特流通常比沒(méi)有B-幀的經(jīng)編 碼比特流使用較少的比特,同時(shí)提供相似的視覺質(zhì)量。B-幀還提供在較小設(shè)備空間中使用 時(shí)的更多選項(xiàng)和靈活性。例如,解碼器可通過(guò)選擇不解碼或顯示B-幀來(lái)容許空間和時(shí)間限 制,因?yàn)锽-幀通常不被用作參考幀。對(duì)視頻序列中使用B-幀來(lái)使速率-失真改進(jìn)的估計(jì) 的范圍為從0到50%。V.先前WMV編碼器和解碼器中B-幀的編碼和解碼先前的WMV編碼器和解碼器使用B-幀。盡管正向預(yù)測(cè)幀(例如P-幀)中的宏塊 僅具有一個(gè)方向模式的預(yù)測(cè)(正向,從先前的I-或P-幀),但B-幀中的宏塊可使用五種 不同預(yù)測(cè)模式來(lái)預(yù)測(cè)正向、反向、直接、插值和幀內(nèi)。編碼器選擇并用信號(hào)表示比特流中不 同的預(yù)測(cè)模式。例如,討論中的先前WMV編碼器在幀級(jí)別上發(fā)送經(jīng)壓縮的位平面,表示用于 B-幀的每個(gè)宏塊的直接/非直接模式?jīng)Q定,而非直接模式(諸如正向、反向和插值模式)在 宏塊級(jí)別中示出。正向模式類似于常規(guī)的P-幀預(yù)測(cè)。在正向模式中,宏塊從時(shí)間上在先的錨中導(dǎo) 出。在反向模式中,宏塊從時(shí)間上后續(xù)的錨中導(dǎo)出。以直接或插值模式預(yù)測(cè)的宏塊在預(yù)測(cè) 中使用正向和反向錨。直接和插值模式使用將兩個(gè)參考的像素值組合到一個(gè)宏塊像素集中 的舍入平均,如以下公式所示平均像素值=(正向插值+反向插值+1) >> 1A.共處(co-located)運(yùn)動(dòng)向量的分?jǐn)?shù)編碼(Fraction Coding)和縮放在討論中的先前WMV編碼器和解碼器中,編碼器通過(guò)縮放正向錨的共處運(yùn)動(dòng)向量 來(lái)隱式地導(dǎo)出直接模式的運(yùn)動(dòng)向量。該縮放運(yùn)算依賴于當(dāng)前B-幀相對(duì)于其錨的時(shí)間位置。 為了編碼參考圖片的時(shí)間位置,編碼器使用分?jǐn)?shù)編碼。在分?jǐn)?shù)編碼中,編碼器顯式地將當(dāng)前B-幀的時(shí)間位置編碼為其兩個(gè)錨之間距離 的一分?jǐn)?shù)。變量BFRACTI0N用來(lái)表示不同的各個(gè)分?jǐn)?shù),并在幀級(jí)別上發(fā)送。該分?jǐn)?shù)在0和1 之間離散值的有限集上取值。對(duì)于直接模式的運(yùn)動(dòng)向量,編碼器和解碼器使用該分?jǐn)?shù)來(lái)縮 放參考幀中的共處運(yùn)動(dòng)向量(MV),從而通過(guò)實(shí)現(xiàn)以下縮放運(yùn)算來(lái)導(dǎo)出當(dāng)前B-幀的隱式的 直接模式運(yùn)動(dòng)向量(MVjP MVb)MVf=分?jǐn)?shù) *MVMVf =(分?jǐn)?shù)-1)*MV圖16示出分?jǐn)?shù)編碼如何使編碼器能任意縮放周圍參考幀之間的運(yùn)動(dòng)。為了導(dǎo)出 在B-幀1620中編碼的當(dāng)前宏塊的MVf和MVb,編碼器和解碼器使用分?jǐn)?shù)編碼來(lái)縮放將來(lái)參 考幀1630中相應(yīng)宏塊的運(yùn)動(dòng)向量(MV)。在圖16所示的示例中,對(duì)于分?jǐn)?shù)ρ和q,p+q = 1。 該編碼器和解碼器使用兩個(gè)隱式的運(yùn)動(dòng)向量來(lái)處理在先參考幀1640和將來(lái)參考幀1630中的宏塊,并使用這些的平均來(lái)預(yù)測(cè)當(dāng)前宏塊1610。例如,在圖16中,MVf = (dx*p,dy*p)而 MVb = (_dx氺q,_dy氺q)。圖17中的表格1700是用于比特流元素BFRACTI0N的可變長(zhǎng)度代碼(VLC)表格。 在表格1700所示示例中,3-比特代碼字是“短”代碼字而7-比特代碼字是“長(zhǎng)”代碼字。該 解碼器根據(jù)圖18中所示偽碼1800基于分?jǐn)?shù)的分子和分母來(lái)尋找縮放系數(shù)。一旦縮放系數(shù)已被確定,解碼器就用它來(lái)縮放用于共處宏塊的運(yùn)動(dòng)向量的χ-和 y-元素。給定后續(xù)的錨幀是P-幀(對(duì)于I-幀,所有的運(yùn)動(dòng)向量被假定為(0,0))且共處宏 塊包含運(yùn)動(dòng)向量(MV_X,MV_Y),則解碼器導(dǎo)出兩個(gè)運(yùn)動(dòng)向量,其中一個(gè)(MV_XF,MV_Yf)參考 正向(在先)錨幀,而另一個(gè)(MV_Xb,MV_Yb)參考反向(后續(xù))錨幀。解碼器根據(jù)圖19中所示偽碼1900來(lái)執(zhí)行縮放。在偽碼1900的函數(shù)Scale_ Direct_MV中,輸入MV_X和MV_Y是來(lái)自將來(lái)參考圖片的共處宏塊的運(yùn)動(dòng)向量的χ-和y_元 素,而輸出MV_Xf、MV_Yf、MV_Xb和MV_Yb是用于被解碼宏塊的正向和反向指示運(yùn)動(dòng)向量的 χ-禾口 y_元素。B. B/1 幀討論中的先前WMV編碼器和解碼器還在逐行掃描編碼和解碼中使用幀內(nèi)B-幀 (“B/I-幀”)。B/I幀像I-幀一樣編碼,因?yàn)樗鼈儾灰蕾囉趨⒖紟?。但與I-幀不一樣的 是,B/I幀不是關(guān)鍵幀;不允許其它幀將B/I幀用作錨。C.隔行掃描的B-幀討論中的先前WMV編碼器和解碼器還使用隔行掃描的B-幀。隔行掃描B-幀中的 宏塊可進(jìn)行半幀編碼或幀編碼。經(jīng)幀編碼的宏塊可具有一個(gè)、兩個(gè)(例如插值模式的正向 和反向運(yùn)動(dòng)向量,直接模式的導(dǎo)出正向和反向運(yùn)動(dòng)向量)、或沒(méi)有運(yùn)動(dòng)向量,而半幀編碼的 宏塊可取決于預(yù)測(cè)模式具有多達(dá)四個(gè)運(yùn)動(dòng)向量。例如,在直接模式的半幀編碼宏塊中,導(dǎo)出 四個(gè)隱式運(yùn)動(dòng)向量上半幀的正向和反向運(yùn)動(dòng)向量,以及下半幀的正向和反向運(yùn)動(dòng)向量。盡管討論中的先前WMV編碼器和解碼器使用隔行掃描的B-幀,但它們?cè)谌舾芍匾?方面受限。例如,每個(gè)宏塊只允許一種宏塊預(yù)測(cè)模式(例如直接模式、正向模式等),不使用 4MV編碼(即,對(duì)宏塊中的每個(gè)塊使用一個(gè)運(yùn)動(dòng)向量),且沒(méi)有任何B-幀部分可以是任何幀 的運(yùn)動(dòng)補(bǔ)償?shù)膮⒖?。作為另一示例,討論中的先前WMV編碼器和解碼器的隔行掃描編碼和 解碼(包括隔行掃描的B-幀)僅使用4:1:1宏塊格式執(zhí)行。VI.用于視頻壓縮和解壓縮的標(biāo)準(zhǔn)除了先前的WMV編碼器和解碼器之外,若干種國(guó)際標(biāo)準(zhǔn)涉及視頻壓縮和解壓縮。 這些標(biāo)準(zhǔn)包括來(lái)自國(guó)際電信同盟[“ITU”]的運(yùn)動(dòng)圖象專家組[“MPEG”]1、2和4標(biāo)準(zhǔn)以 及H. 261、H. 262、H. 263和H. 264標(biāo)準(zhǔn)。在國(guó)際標(biāo)準(zhǔn)中用來(lái)獲得數(shù)字視頻序列的數(shù)據(jù)壓縮的 主要方法之一是減少圖片之間的時(shí)間冗余。這些流行壓縮方案(MPEG-l、MPEG-2、MPEG-4、 H. 261、H. 263等)使用運(yùn)動(dòng)估計(jì)和補(bǔ)償。例如,當(dāng)前幀被分成均勻的正方形區(qū)域(例如各個(gè) 塊和/或宏塊)。每個(gè)當(dāng)前區(qū)域的匹配區(qū)域通過(guò)發(fā)送該區(qū)域的運(yùn)動(dòng)向量信息來(lái)指定。該運(yùn)動(dòng)向量指示在先前編碼(和重構(gòu))幀中要用作當(dāng)前區(qū)域的預(yù)測(cè)值的區(qū)域的位置。當(dāng)前區(qū)域 和參考幀中區(qū)域之間稱為誤差信號(hào)逐個(gè)像素差值被導(dǎo)出。該誤差信號(hào)通常具有比原始信號(hào) 更低的熵。因此,信息可以較低速率進(jìn)行編碼。因?yàn)樵谙惹暗腤MV編碼器和解碼器中,運(yùn)動(dòng) 向量值常常相關(guān)于空間上位于四周的運(yùn)動(dòng)向量,所以用來(lái)表示運(yùn)動(dòng)向量信息的數(shù)據(jù)的壓縮可通過(guò)編碼當(dāng)前運(yùn)動(dòng)向量與基于先前編碼的、相鄰運(yùn)動(dòng)向量的預(yù)測(cè)值之間的差異來(lái)獲得?!﹪?guó)際標(biāo)準(zhǔn)描述隔行掃描視頻幀的運(yùn)動(dòng)估計(jì)和補(bǔ)償。H. 262標(biāo)準(zhǔn)使隔行掃描 的視頻幀被編碼為單個(gè)幀或兩個(gè)半幀,其中幀編碼或半幀編碼可自適應(yīng)地在逐幀基礎(chǔ)上選 擇。H. 262標(biāo)準(zhǔn)描述基于半幀的預(yù)測(cè),這是一種僅使用參考幀的一個(gè)半幀的預(yù)測(cè)模式。H. 262 標(biāo)準(zhǔn)還描述雙基預(yù)測(cè),這是兩個(gè)正向的基于半幀預(yù)測(cè)值對(duì)隔行掃描P-圖片中的16x16塊平 均的預(yù)測(cè)模式。H. 262標(biāo)準(zhǔn)的7. 6節(jié)描述“半幀預(yù)測(cè)”,包括在兩個(gè)參考半幀中進(jìn)行選擇,以 用作隔行掃描視頻幀的當(dāng)前半幀的宏塊的運(yùn)動(dòng)補(bǔ)償。小節(jié)7. 6. 3描述運(yùn)動(dòng)向量預(yù)測(cè)和重 構(gòu),其中給定宏塊的重構(gòu)運(yùn)動(dòng)向量變成經(jīng)后續(xù)編碼/解碼宏塊的運(yùn)動(dòng)向量預(yù)測(cè)值。這種運(yùn) 動(dòng)向量預(yù)測(cè)在許多情形中未能充分預(yù)測(cè)用于隔行掃描視頻幀的半幀的宏塊的運(yùn)動(dòng)向量。此外,H.262標(biāo)準(zhǔn)的7.6節(jié)描述B-圖片的“半幀預(yù)測(cè)”和“幀預(yù)測(cè)”。在“半幀預(yù) 測(cè)”和“幀預(yù)測(cè)”中,對(duì)B-圖片的預(yù)測(cè)使用兩個(gè)最新重構(gòu)的參考幀(略去其它介入的B-圖 片)執(zhí)行,這些參考幀可被編碼為兩個(gè)半幀或單個(gè)幀。知道了視頻壓縮和解壓縮對(duì)數(shù)字視頻的關(guān)鍵重要性,視頻壓縮和解壓縮是得以豐富開發(fā)的領(lǐng)域就不足為奇了。然而,不管先前的視頻壓縮和解壓縮技術(shù)的優(yōu)點(diǎn)是什么,它們 并不具有以下技術(shù)和工具的優(yōu)點(diǎn)。
發(fā)明內(nèi)容
總而言之,詳細(xì)描述涉及用于編碼和解碼雙向預(yù)測(cè)的隔行掃描視頻幀(例如隔行 掃描的B-半幀、隔行掃描的B-幀)的各種技術(shù)和工具。所述技術(shù)和工具改進(jìn)了速率/失 真性能,并便于更好地支持具有較低CPU資源的設(shè)備(例如具有較小形狀系數(shù)的設(shè)備)。所述各實(shí)施例實(shí)現(xiàn)一種或多種用于編碼和/或解碼隔行掃描B-圖片的所述技術(shù) 和工具,如下包括但不限于在一方面中,對(duì)于隔行掃描B-幀,編碼器/解碼器在隔行掃描B-幀的半幀編碼宏 塊中的半幀之間切換預(yù)測(cè)模式。例如,編碼器/解碼器在半幀編碼宏塊中的上半幀的正向 預(yù)測(cè)模式和下半幀的反向模式之間切換。同一半幀編碼宏塊內(nèi)正向和反向預(yù)測(cè)之間的切換 使發(fā)現(xiàn)對(duì)隔行掃描B-幀的不同部分的有效預(yù)測(cè)模式更為靈活。在另一方面中,對(duì)于隔行掃描B-幀,編碼器/解碼器通過(guò)為先前解碼的時(shí)間后續(xù) 錨的共處宏塊的上半幀和下半幀的每一個(gè)選擇至多一個(gè)代表性運(yùn)動(dòng)向量,計(jì)算當(dāng)前宏塊的 直接模式運(yùn)動(dòng)向量。例如,至少部分地基于編碼當(dāng)前隔行掃描B-幀的宏塊的模式(例如 IMV模式、2半幀MV模式等)執(zhí)行選擇。在又一方面中,對(duì)于隔行掃描B-半幀或隔行掃描B-幀,編碼器/解碼器使用4MV 編碼。例如,4MV被用于單向預(yù)測(cè)模式(正向或反向模式),但不用于其它可用預(yù)測(cè)模式(例 如直接、插值)。使用4MV允許對(duì)隔行掃描B-半幀和隔行掃描B-幀進(jìn)行更準(zhǔn)確的運(yùn)動(dòng)補(bǔ) 償;將4MV限制在正向和反向模式減少了編碼開銷,并避免了關(guān)聯(lián)于組合4MV與諸如直接和 插值的模式的解碼復(fù)雜性。在另一方面中,對(duì)于隔行掃描B-半幀或隔行掃描B-巾貞,正向運(yùn)動(dòng)向量使用來(lái)自正 向運(yùn)動(dòng)向量緩沖區(qū)的先前重構(gòu)(或估計(jì))的正向運(yùn)動(dòng)向量由編碼器/解碼器進(jìn)行預(yù)測(cè),而 反向運(yùn)動(dòng)向量使用來(lái)自反向運(yùn)動(dòng)向量緩沖區(qū)的先前重構(gòu)(或估計(jì))的反向運(yùn)動(dòng)向量進(jìn)行預(yù) 測(cè)。結(jié)果的運(yùn)動(dòng)向量被添加到相應(yīng)的緩沖區(qū)中。運(yùn)動(dòng)向量緩沖區(qū)中的空穴可用估計(jì)的運(yùn)動(dòng)向量值來(lái)填充。例如,對(duì)于隔行掃描B-幀,當(dāng)正向預(yù)測(cè)用來(lái)預(yù)測(cè)運(yùn)動(dòng)向量且運(yùn)動(dòng)向量被添 加到正向運(yùn)動(dòng)向量緩沖區(qū)中時(shí),反向運(yùn)動(dòng)向量緩沖區(qū)中的相應(yīng)位置以僅將反向運(yùn)動(dòng)向量用 作預(yù)測(cè)值的預(yù)測(cè)運(yùn)動(dòng)向量來(lái)填充(“空穴填充”)。作為另一示例,對(duì)于隔行掃描B-半幀,要 為空穴填充在不同極性的運(yùn)動(dòng)向量(例如“相同極性”或“相反極性”)之間選擇,編碼器/ 解碼器選擇主極性半幀運(yùn)動(dòng)向量。錨和當(dāng)前幀之間的距離使用各種語(yǔ)法元素計(jì)算,且計(jì)算 出的距離被用于縮放參考半幀運(yùn)動(dòng)向量。各個(gè)運(yùn)動(dòng)向量緩沖區(qū)和各個(gè)運(yùn)動(dòng)向量緩沖區(qū)中的 空穴填充使得對(duì)隔行掃描B-半幀和隔行掃描B-幀的運(yùn)動(dòng)向量預(yù)測(cè)更為準(zhǔn)確。在又一方面中,對(duì)于隔行掃描的B-半幀,編碼器/解碼器使用“自參考”巾貞。例如, 當(dāng)前幀中的第二個(gè)B-半幀在運(yùn)動(dòng)補(bǔ)償預(yù)測(cè)中參考來(lái)自當(dāng)前幀的第一 B-半幀。使幀中第一個(gè)B-半幀用作該幀中第二個(gè)B-半幀的參考使得第二個(gè)半幀的預(yù)測(cè)更加準(zhǔn)確,同時(shí)還保留 在當(dāng)前幀中具有B-半幀的時(shí)間可縮放性優(yōu)點(diǎn)。在另一方面中,對(duì)于隔行掃描的B-半巾貞,編碼器發(fā)送指示用于隔行掃描B-半幀中 的一個(gè)或多個(gè)宏塊的預(yù)測(cè)模式是正向還是非正向的二進(jìn)制信息。例如,編碼器在經(jīng)壓縮位 平面的B-半幀級(jí)別上發(fā)送正向/非正向決定信息。在經(jīng)壓縮位平面的B-半幀級(jí)別上發(fā)送 正向/非正向預(yù)測(cè)模式?jīng)Q定信息可減少預(yù)測(cè)模式編碼的編碼開銷。解碼器執(zhí)行相應(yīng)的解 碼。在又一方面中,對(duì)于隔行掃描的B-半幀,如果下一錨圖片的相應(yīng)半幀中的相應(yīng)宏 塊使用四個(gè)運(yùn)動(dòng)向量編碼,則編碼器/解碼器使用利于主極性的邏輯來(lái)選擇直接模式的運(yùn) 動(dòng)向量。例如,如果相應(yīng)宏塊的相同極性運(yùn)動(dòng)向量數(shù)量上超過(guò)其相反極性的運(yùn)動(dòng)向量,則編 碼器/解碼器計(jì)算相同極性運(yùn)動(dòng)向量的中值,以獲得用于導(dǎo)出直接模式運(yùn)動(dòng)向量的運(yùn)動(dòng)向 量。該選擇過(guò)程允許導(dǎo)出準(zhǔn)確的用于具有4MV宏塊錨的隔行掃描B-半幀的直接模式運(yùn)動(dòng) 向量。各種技術(shù)和工具可組合或單獨(dú)使用。從以下參照附圖進(jìn)行的不同實(shí)施例的詳細(xì)描述中,本發(fā)明的其它特征和優(yōu)點(diǎn)將變 得顯而易見。
圖1是示出根據(jù)現(xiàn)有技術(shù)的視頻編碼器的運(yùn)動(dòng)估計(jì)的示圖。圖2是示出根據(jù)現(xiàn)有技術(shù)的視頻編碼器中預(yù)測(cè)殘差的8x8塊的基于塊的壓縮。圖3是示出根據(jù)現(xiàn)有技術(shù)的視頻編碼器中預(yù)測(cè)殘差的8x8塊的基于塊的解壓縮。圖4是示出根據(jù)現(xiàn)有技術(shù)的隔行掃描幀的示圖。圖5A和5B是示出用于根據(jù)現(xiàn)有技術(shù)的逐行掃描P-幀中IMV宏塊的候選運(yùn)動(dòng)向 量預(yù)測(cè)值的宏塊的位置的示圖。圖6A和6B是示出用于根據(jù)現(xiàn)有技術(shù)的混合1MV/4MV逐行掃描P-幀中的IMV宏 塊的候選運(yùn)動(dòng)向量預(yù)測(cè)值的塊的位置的示圖。圖7A、7B、8A、8B、9和10是示出用于根據(jù)現(xiàn)有技術(shù)的混合1MV/4MV逐行掃描P-幀 中的4MV宏塊中各位置上塊的候選運(yùn)動(dòng)向量預(yù)測(cè)值的塊的位置的示圖。圖11是示出用于根據(jù)現(xiàn)有技術(shù)的隔行掃描P-幀中當(dāng)前幀編碼宏塊的候選運(yùn)動(dòng)向 量預(yù)測(cè)值的示圖。
圖12A-12B是示出用于根據(jù)現(xiàn)有技術(shù)的隔行掃描P-幀中當(dāng)前半幀編碼宏塊的候 選運(yùn)動(dòng)向量預(yù)測(cè)值的示圖。圖13和14是示出根據(jù)現(xiàn)有技術(shù)的用于分別執(zhí)行三者中值和四者中值計(jì)算的偽碼的代碼示圖。圖15是示出根據(jù)現(xiàn)有技術(shù)的具有過(guò)去和將來(lái)參考幀的B-幀的示圖。圖16是示出根據(jù)現(xiàn)有技術(shù)的使用分?jǐn)?shù)編碼的直接模式預(yù)測(cè)的示圖。圖17示出根據(jù)現(xiàn)有技術(shù)的比特流元素BFRACTI0N的VLC表格。圖18是示出根據(jù)現(xiàn)有技術(shù)的用于尋找縮放直接模式預(yù)測(cè)中共處宏塊的運(yùn)動(dòng)向量 的縮放系數(shù)的偽碼的代碼清單。圖19是示出根據(jù)現(xiàn)有技術(shù)的用于根據(jù)縮放系數(shù)縮放共處宏塊中運(yùn)動(dòng)向量的χ-和 y-元素的偽碼的代碼清單。圖20是適當(dāng)計(jì)算環(huán)境的框圖,結(jié)合該環(huán)境可實(shí)現(xiàn)若干所述實(shí)施例。圖21是通用視頻編碼器系統(tǒng)的框圖,結(jié)合該系統(tǒng)可實(shí)現(xiàn)若干所述實(shí)施例。圖22是通用視頻解碼器系統(tǒng)的框圖,結(jié)合該系統(tǒng)可實(shí)現(xiàn)若干所述實(shí)施例。圖23是在若干所述實(shí)施例中使用的宏塊格式的示圖。圖24A是一部分隔行掃描視頻幀的示圖,其中示出上半幀和下半幀的交替行。圖 24B是為編碼/解碼組織成幀的隔行掃描視頻幀的示圖,而圖24C是為編碼/解碼組織成半 幀的隔行掃描視頻幀的示圖。圖25和26是示出具有兩個(gè)參考半幀的隔行掃描P-半幀的示圖。圖27和28是示出使用所允許的最新參考半幀的隔行掃描P-半幀的示圖。圖29和30是示出使用所允許的第二最新參考半幀的隔行掃描P-半幀的示圖。圖31是示出運(yùn)動(dòng)向量的各垂直分量與當(dāng)前和參考半幀極性的不同組合的相應(yīng)空 間位置之間的關(guān)系的示圖。圖32是示出當(dāng)前宏塊的兩組三個(gè)候選運(yùn)動(dòng)向量預(yù)測(cè)值的示圖。圖33A-33F是示出用于計(jì)算兩個(gè)參考半幀的隔行掃描P-或B-半幀中的運(yùn)動(dòng)向量 預(yù)測(cè)值的偽碼的代碼清單。圖34A-34B是示出用于縮放來(lái)自一個(gè)半幀的預(yù)測(cè)值以導(dǎo)出來(lái)自另一個(gè)半幀的預(yù) 測(cè)值的偽碼的代碼清單。圖35和36是示出關(guān)聯(lián)于不同參考幀距離的縮放運(yùn)算值的表格。圖37是示出隔行掃描P-幀的2半幀MV宏塊中亮度塊的運(yùn)動(dòng)向量和色度塊的導(dǎo) 出運(yùn)動(dòng)向量的示圖。圖38是示出隔行掃描P-幀的4幀MV宏塊中4個(gè)亮度塊的每一個(gè)的不同運(yùn)動(dòng)向 量和4個(gè)色度子塊的每一個(gè)的導(dǎo)出運(yùn)動(dòng)向量的示圖。圖39是示出隔行掃描P-幀的4半幀MV宏塊中亮度塊的運(yùn)動(dòng)向量和色度塊的導(dǎo) 出運(yùn)動(dòng)向量的示圖。圖40A-40B是示出隔行掃描P-幀的當(dāng)前宏塊的候選預(yù)測(cè)值的示圖。圖41是示出使用不同預(yù)測(cè)模式預(yù)測(cè)隔行掃描B-幀的半幀編碼宏塊中的各個(gè)半幀 的運(yùn)動(dòng)向量的技術(shù)的流程圖。圖42是示出計(jì)算隔行掃描B-幀的宏塊的直接模式運(yùn)動(dòng)向量的技術(shù)的流程圖。
圖43是先前已解碼的時(shí)間上后續(xù)錨幀的共處宏塊的各個(gè)塊的緩存運(yùn)動(dòng)向量的示 圖,這些緩存運(yùn)動(dòng)向量用于計(jì)算隔行掃描B-幀的宏塊的直接模式運(yùn)動(dòng)向量。圖44是示出使用正向和/或反向運(yùn)動(dòng)向量緩沖區(qū)預(yù)測(cè)隔行掃描B-幀的當(dāng)前宏塊的運(yùn)動(dòng)向量的技術(shù)的流程圖。圖45是示出用于預(yù)測(cè)宏塊運(yùn)動(dòng)向量的正向運(yùn)動(dòng)向量緩沖區(qū)和反向運(yùn)動(dòng)向量緩沖 區(qū)中的運(yùn)動(dòng)向量的示圖。圖46是示出正向運(yùn)動(dòng)向量緩沖區(qū)和反向運(yùn)動(dòng)向量緩沖區(qū)中重構(gòu)宏塊的上半幀和 下半幀運(yùn)動(dòng)向量的示圖。圖47是示出描述用于隔行掃描B-半幀運(yùn)動(dòng)向量預(yù)測(cè)中的實(shí)值緩存和空穴填充的 極性選擇過(guò)程的偽碼的代碼清單。圖48A-48B是示出縮放來(lái)自一個(gè)半幀的預(yù)測(cè)值以導(dǎo)出來(lái)自另一半幀的預(yù)測(cè)值用 于經(jīng)反向預(yù)測(cè)的隔行掃描B-半幀的偽碼的代碼清單。圖49是示出關(guān)聯(lián)于第一隔行掃描B-半幀的不同參考幀距離的縮放運(yùn)算值的表 格。圖50A和50B是示出隔行掃描B-半幀的參考半幀的示圖。圖51是示出用于在具有一個(gè)或多個(gè)位平面編碼模式的視頻編碼器中編碼隔行掃 描B-半幀的宏塊的正向/非正向預(yù)測(cè)模式?jīng)Q定信息的技術(shù)的流程圖。圖52是示出用于解碼隔行掃描B-半幀的宏塊的正向/非正向預(yù)測(cè)模式?jīng)Q定信息 的技術(shù)的流程圖,其中該決定信息由具有一個(gè)或多個(gè)位平面編碼模式的視頻編碼器編碼。圖53是顯示描述對(duì)用作隔行掃描B-半幀中直接模式運(yùn)動(dòng)向量的基礎(chǔ)的運(yùn)動(dòng)向量 的選擇過(guò)程的偽碼的代碼清單。圖54是示出用于組合實(shí)現(xiàn)中隔行掃描B-半幀或BI-半幀的幀_層比特流語(yǔ)法的 示圖。圖55是示出用于組合實(shí)現(xiàn)中隔行掃描B-半幀的半幀-層比特流語(yǔ)法的示圖。圖56是示出用于組合實(shí)現(xiàn)中隔行掃描BI-半幀的半幀-層比特流語(yǔ)法的示圖。圖57是用于組合實(shí)現(xiàn)中隔行掃描B-半幀的宏塊的宏塊-層比特流語(yǔ)法的示圖。圖58是用于組合實(shí)現(xiàn)中隔行掃描BI-半幀的宏塊的宏塊-層比特流語(yǔ)法的示圖。圖59是用于組合實(shí)現(xiàn)中隔行掃描B-幀的幀-層比特流語(yǔ)法的示圖。圖60是用于組合實(shí)現(xiàn)中隔行掃描B-幀的宏塊的宏塊-層比特流語(yǔ)法的示圖。圖61A-61B是示出用于組合實(shí)現(xiàn)中解碼運(yùn)動(dòng)向量差值和主/非主預(yù)測(cè)值信息的偽 碼的代碼清單。圖62A-62F是示出用于組合實(shí)現(xiàn)中計(jì)算雙參考隔行掃描P-半幀中的運(yùn)動(dòng)向量預(yù) 測(cè)值的偽碼的代碼清單。圖63是示出用于組合實(shí)現(xiàn)中確定隔行掃描B-半幀的參考半幀的偽碼的代碼清單。圖64是示出用于組合實(shí)現(xiàn)中收集隔行掃描P-幀的IMV宏塊的候選運(yùn)動(dòng)向量的偽 碼的代碼清單。圖65、66、67和68是示出用于組合實(shí)現(xiàn)中收集隔行掃描P-幀的4幀MV宏塊的候 選運(yùn)動(dòng)向量的偽碼的代碼清單。
圖69和70是示出用于組合實(shí)現(xiàn)中收集隔行掃描P-幀的2半幀MV宏塊的候選運(yùn) 動(dòng)向量的偽碼的代碼清單。圖71、72、73和74是示出用于組合實(shí)現(xiàn)中收集隔行掃描P-幀的4半幀MV宏塊的 候選運(yùn)動(dòng)向量的偽碼的代碼清單。圖75是示出用于組合實(shí)現(xiàn)中計(jì)算隔行掃描P-幀的幀運(yùn)動(dòng)向量的運(yùn)動(dòng)向量預(yù)測(cè)值 的偽碼的代碼清單。圖76是示出用于組合實(shí)現(xiàn)中計(jì)算隔行掃描P-幀的半幀運(yùn)動(dòng)向量的運(yùn)動(dòng)向量預(yù)測(cè) 值的偽碼的代碼清單。圖77A和77B是示出用于組合實(shí)現(xiàn)中解碼隔行掃描P-幀和B-幀的運(yùn)動(dòng)向量差值 的偽碼的代碼清單。圖78是示出用于組合實(shí)現(xiàn)中導(dǎo)出隔行掃描P-幀的色度運(yùn)動(dòng)向量的偽碼的代碼清單。圖79A-79C是示出用于隔行掃描B-半幀的宏塊的正向/非正向預(yù)測(cè)模式?jīng)Q定信 息的Norm-6和Diff-6位平面編碼模式的平鋪顯示的示圖。
具體實(shí)施例方式本申請(qǐng)涉及用于隔行掃描視頻的有效壓縮和解壓縮的技術(shù)和工具。在各個(gè)所述實(shí) 施例中,視頻編碼器和解碼器結(jié)合用于編碼和解碼雙向預(yù)測(cè)的隔行掃描視頻幀的技術(shù),和 以包括各種層或級(jí)別(例如序列級(jí)別、幀級(jí)別、半幀級(jí)別、宏塊級(jí)別、和/或塊級(jí)別)的比特 流格式或語(yǔ)法使用的相應(yīng)信號(hào)表示技術(shù)。對(duì)所述實(shí)現(xiàn)的各種可選方案是可能的。例如,參照流程圖描述的方法可通過(guò)改變 各流程圖中所示的各階段的順序、或重復(fù)或略去某些階段等來(lái)變更。作為另一示例,盡管某 些實(shí)現(xiàn)參照特定宏塊格式進(jìn)行了描述,但是也可使用其它格式。此外,參照雙向預(yù)測(cè)描述的 技術(shù)和工具也可應(yīng)用于其它類型的預(yù)測(cè)。各種技術(shù)和工具可組合或獨(dú)立地使用。不同實(shí)施例實(shí)現(xiàn)所述技術(shù)和工具的一種或多種。在此所述的一些技術(shù)和工具可用于視頻編碼器或解碼器,或者在一些其它系統(tǒng)中并 非具體受限于視頻編碼或解碼。I.計(jì)算環(huán)境圖20示出可實(shí)現(xiàn)若干所述實(shí)施例的適當(dāng)計(jì)算環(huán)境2000的通用示例。計(jì)算環(huán)境 2000并非旨在提出對(duì)本發(fā)明使用范圍或功能的任何限制,因?yàn)楸景l(fā)明的技術(shù)和工具可在不 同的通用或?qū)S糜?jì)算環(huán)境中實(shí)現(xiàn)。參照?qǐng)D20,計(jì)算環(huán)境2000包括至少一個(gè)處理單元2010和存儲(chǔ)2020。在圖20中, 該最基本配置2030包括在虛線內(nèi)。處理單元2010執(zhí)行計(jì)算機(jī)可執(zhí)行指令,且可以是實(shí)際或 虛擬處理器。在多處理系統(tǒng)中,多個(gè)處理單元執(zhí)行計(jì)算機(jī)可執(zhí)行指令以增加處理能力。存 儲(chǔ)器2020可以是易失性存儲(chǔ)器(例如寄存器、高速緩存、RAM)、非易失性存儲(chǔ)器(例如ROM、 EEPR0M、閃存等)或兩者的組合。存儲(chǔ)器2020存儲(chǔ)實(shí)現(xiàn)進(jìn)行隔行掃描視頻幀的雙向預(yù)測(cè)的 視頻編碼器或解碼器的軟件2080。計(jì)算環(huán)境可具有附加特征。例如,計(jì)算環(huán)境2000包括存儲(chǔ)2040、一個(gè)或多個(gè)輸入 設(shè)備2050、一個(gè)或多個(gè)輸出設(shè)備2060、以及一個(gè)或多個(gè)通信連接2070。諸如總線、控制器或網(wǎng)絡(luò)的互連機(jī)制(未示出)使計(jì)算環(huán)境2000的各個(gè)組件互相連接。通常,操作系統(tǒng)軟件 (未示出)向在計(jì)算環(huán)境2000中執(zhí)行的其它軟件提供一個(gè)操作環(huán)境,并協(xié)調(diào)計(jì)算環(huán)境2000 的各個(gè)組件的動(dòng)作。存儲(chǔ)2040可以是可移動(dòng)或不可移動(dòng)的,并包括磁盤、磁帶或盒式磁帶、⑶-ROM、CD-RW、DVD、或任何其它可用于存儲(chǔ)信息并可在計(jì)算環(huán)境2000內(nèi)訪問(wèn)的媒體。存儲(chǔ)2040為 軟件2080存儲(chǔ)實(shí)現(xiàn)視頻編碼器或解碼器的指令。輸入設(shè)備2050可以是諸如鍵盤、鼠標(biāo)、電子筆、或跟蹤球、語(yǔ)音輸入設(shè)備、掃描設(shè) 備、或向計(jì)算環(huán)境2000提供輸入的另一設(shè)備。對(duì)于音頻或視頻編碼,輸入設(shè)備2050可以是 接受模擬或數(shù)字形式的音頻或視頻輸入的聲卡、視頻卡、TV調(diào)諧器卡或相似設(shè)備、或?qū)⒁纛l 或視頻樣本讀入計(jì)算環(huán)境2000中的⑶-ROM或⑶-RW。輸出設(shè)備2060可以是顯示器、打印 機(jī)、揚(yáng)聲器、CD刻錄機(jī)、或從計(jì)算環(huán)境2000提供輸出的另一設(shè)備。通信連接2070允許經(jīng)通信媒體與另一計(jì)算實(shí)體的通信。通信媒體在已調(diào)制數(shù)據(jù) 信號(hào)中傳送諸如計(jì)算機(jī)可執(zhí)行指令、音頻或視頻輸入或輸出、或其它數(shù)據(jù)等信息。已調(diào)制數(shù) 據(jù)信號(hào)是使其特征的一個(gè)或多個(gè)以在信號(hào)中編碼信息的方式進(jìn)行設(shè)置或改變的信號(hào)。作為 示例且非限制,通信媒體包括用電子、光學(xué)、RF、紅外線、聲學(xué)或其它載體實(shí)現(xiàn)的有線或無(wú)線 技術(shù)。這些技術(shù)和工具可在計(jì)算機(jī)可讀媒體的一般上下文中描述。計(jì)算機(jī)可讀媒體是可 在計(jì)算環(huán)境內(nèi)訪問(wèn)的任何可用媒體。作為示例,但非限制,對(duì)于計(jì)算環(huán)境2000,計(jì)算機(jī)可讀 媒體包括存儲(chǔ)器2020、存儲(chǔ)2040、通信媒體、以及以上任一個(gè)的組合。這些技術(shù)和工具可在計(jì)算機(jī)可執(zhí)行指令的一般上下文中描述,諸如在目標(biāo)實(shí)際或 虛擬處理器上的計(jì)算環(huán)境中執(zhí)行的程序模塊所包括的計(jì)算機(jī)可執(zhí)行指令。通常,程序模塊 包括執(zhí)行具體任務(wù)或?qū)崿F(xiàn)具體抽象數(shù)據(jù)類型的例程、程序、庫(kù)、對(duì)象、類、組件、數(shù)據(jù)結(jié)構(gòu)等。 程序模塊的功能可在各個(gè)實(shí)施例中按需在程序模塊之間組合或劃分。程序模塊的計(jì)算機(jī)可 執(zhí)行指令可在本地或分布式的計(jì)算環(huán)境內(nèi)執(zhí)行。為說(shuō)明起見,詳細(xì)描述使用像“估計(jì)”、“補(bǔ)償”、“預(yù)測(cè)”和“應(yīng)用”的術(shù)語(yǔ)來(lái)描述計(jì) 算環(huán)境中的計(jì)算機(jī)操作。這些術(shù)語(yǔ)是由計(jì)算機(jī)執(zhí)行的操作的高層抽象,且不應(yīng)與人執(zhí)行的 動(dòng)作相混淆。對(duì)應(yīng)于這些術(shù)語(yǔ)的實(shí)際計(jì)算機(jī)操作取決于實(shí)現(xiàn)而變化。II.通用視頻編碼器和解碼器圖21是通用視頻編碼器2100的框圖,結(jié)合該系統(tǒng)可實(shí)現(xiàn)若干所述實(shí)施例。圖22 是通用視頻解碼器2200的框圖,結(jié)合該系統(tǒng)可實(shí)現(xiàn)若干所述實(shí)施例。編碼器2100和解碼器2200內(nèi)各模塊之間的所示關(guān)系表示編碼器和解碼器中的一 般信息流;其它關(guān)系為簡(jiǎn)化起見并未示出。特別地,圖21和22通常并未示出表示用于視頻 序列、圖片、宏塊、塊等的編碼器設(shè)置、模式、表格等的輔助信息。這些輔助信息通常在輔助 信息的熵編碼之后在輸出比特流中發(fā)送。輸出比特流的格式可以是Windows Media Video 版本9格式或其它格式。編碼器2100和解碼器2200處理視頻圖片,它們可以是視頻幀、視頻半幀、或幀和 半幀的組合。圖片和宏塊級(jí)別上的比特流語(yǔ)法和語(yǔ)義可依賴于是使用幀還是半幀。也可 以有對(duì)宏塊組織和整體定時(shí)的改變。編碼器2100和解碼器2200是基于塊的,并對(duì)幀使用 4:2:0的宏塊格式,其中每個(gè)宏塊包括4個(gè)8x8亮度塊(常被視為一個(gè)16x16宏塊)和2個(gè)8x8色度塊。對(duì)于半幀,可使用相同或不同的宏塊組織和格式。這些8x8塊可在不同階段上作進(jìn)一步的細(xì)分,例如在頻率變換和熵編碼階段。示例視頻幀組織如下進(jìn)行更詳細(xì)的描 述。或者,編碼器2100和解碼器2200是基于對(duì)象的、使用不同的宏塊或塊格式、或?qū)Σ煌?于8x8塊和16x16宏塊的大小或配置的像素集執(zhí)行操作。取決于所需的壓縮實(shí)現(xiàn)和類型,編碼器或解碼器的模塊可添加、略去、劃分成多個(gè) 模塊、與其它模塊相組合、和/或用類似模塊替換。在替換實(shí)施例中,具有不同模塊和/或 模塊其它配置的編碼器或解碼器執(zhí)行一種或多種所述技術(shù)。A.視頻幀組織在一些實(shí)現(xiàn)中,編碼器2100和解碼器2200處理如下組織的視頻幀。幀包含視頻 信號(hào)的各行空間信息。對(duì)于逐行掃描視頻,這些行包含從一時(shí)刻開始并繼續(xù)后續(xù)行直到幀 的底部的樣本。逐行掃描視頻幀被分成諸如圖23中所示宏塊2300的宏塊。宏塊2300包 括4個(gè)8x8亮度塊(Yl到Y(jié)4)和與4個(gè)亮度塊共處的2個(gè)8x8色度塊,這些色度塊符合常 規(guī)的4:2:0宏塊格式但在水平和垂直方向分辨率減半。這些8x8塊可在不同階段上作進(jìn)一 步的細(xì)分,例如在頻率變換(例如8x4、4x8或4x4DCT)和熵編碼階段。逐行掃描1_幀是幀 內(nèi)編碼的逐行掃描視頻幀。逐行掃描P-幀是使用正向預(yù)測(cè)編碼的逐行掃描視頻幀,而逐行 掃描B-幀是使用雙向預(yù)測(cè)編碼的逐行掃描視頻幀。逐行掃描P-和B-幀可包括幀內(nèi)編碼 宏塊以及不同類型的經(jīng)預(yù)測(cè)宏塊。隔行掃描視頻幀由一個(gè)幀的兩次掃描組成一一次包括該幀的偶數(shù)行(上半幀)而 另一次包括該幀的奇數(shù)行(下半幀)。這兩個(gè)半幀可表示兩個(gè)不同時(shí)段,或者它們可來(lái)自同 一時(shí)段。圖24A示出隔行掃描視頻幀2400的一部分,包括隔行掃描視頻幀2400中左上方 的上半幀和下半幀的交替行。圖24B示出為編碼/解碼而組織為幀2430的圖24A的隔行掃描視頻幀2400。隔 行掃描視頻幀2400已被分成諸如宏塊2431和2432的宏塊,它們使用如圖23所示的4:2:0 格式。在亮度平面中,每個(gè)宏塊2431、2432包括來(lái)自上半幀的8行、與之交替的來(lái)自下半幀 的8行(一共為16行),且每一行為16像素長(zhǎng)。(宏塊2431、2432內(nèi)亮度塊和色度塊的實(shí) 際組織和放置并未示出,且實(shí)際上對(duì)于不同的編碼決定可變化。)在給定宏塊內(nèi),上半幀信 息和下半幀信息在各個(gè)階段的任一個(gè)上可聯(lián)合或獨(dú)立地編碼。隔行掃描的I-幀是隔行掃 描視頻幀的兩個(gè)幀內(nèi)編碼半幀,其中宏塊包括兩個(gè)半幀的信息。隔行掃描P-幀是使用正向 預(yù)測(cè)編碼的隔行掃描視頻幀的兩個(gè)半幀,而隔行掃描B-幀是使用雙向預(yù)測(cè)編碼的隔行掃 描視頻幀的兩個(gè)半幀,其中宏塊包括兩個(gè)半幀的信息。隔行掃描P-和B-幀可包括幀內(nèi)編 碼宏塊以及不同類型的預(yù)測(cè)宏塊。圖24C示出為編碼/解碼而組織為半幀2460的圖24A的隔行掃描視頻幀2400。 隔行掃描視頻幀2400的兩個(gè)半幀的每一個(gè)被分成各個(gè)宏塊。上半幀被分成諸如宏塊2461 的宏塊,而下半幀被分成諸如宏塊2462的宏塊。(再一次,各宏塊使用如圖23所示的4 2 0 格式,且各宏塊內(nèi)亮度塊和色度塊的組織和放置并未示出。)在亮度平面中,宏塊2461包括 來(lái)自上半幀的16行、宏塊2462包括來(lái)自下半幀的16行,且每一行為16像素長(zhǎng)。隔行掃描 的ι-半幀是隔行掃描視頻幀的單個(gè)獨(dú)立表示半幀。隔行掃描P-半幀是使用正向預(yù)測(cè)編碼 的隔行掃描視頻幀的單個(gè)獨(dú)立表示半幀,而隔行掃描B-半幀是使用雙向預(yù)測(cè)編碼的隔行 掃描視頻幀的單個(gè)獨(dú)立表示半幀。隔行掃描P-和B-半幀可包括幀內(nèi)編碼宏塊以及不同類型的預(yù)測(cè)宏塊。術(shù)語(yǔ)圖片通常指源、經(jīng)編碼或重構(gòu)的圖像數(shù)據(jù)。對(duì)于逐行掃描視頻,圖片是逐行掃描視頻幀。對(duì)于隔行掃描視頻,取決于上下文,圖片可指隔行掃描視頻幀、幀的上半幀、或幀 的下半幀?;蛘?,編碼器2100或解碼器2200是基于對(duì)象的、使用不同的宏塊或塊格式、或?qū)Σ煌?x8塊和16x16宏塊的大小或配置的像素集執(zhí)行操作。B.視頻編碼器圖21是通用視頻編碼器系統(tǒng)2100的框圖。編碼器系統(tǒng)2100接收包括當(dāng)前圖片 2105的一個(gè)視頻圖片序列(例如,逐行掃描視頻幀、隔行掃描視頻幀、或隔行掃描視頻幀的 半幀),并產(chǎn)生壓縮后視頻信息2195作為輸出。視頻編碼器的特定實(shí)施例通常使用通用編 碼器2100的變體或補(bǔ)充版本。編碼器系統(tǒng)2100壓縮預(yù)測(cè)圖片和關(guān)鍵圖片。為演示起見,圖21示出關(guān)鍵圖片通 過(guò)編碼器系統(tǒng)2100的路徑,以及預(yù)測(cè)圖片的路徑。編碼器系統(tǒng)2100的許多組件用于壓縮 關(guān)鍵圖片和預(yù)測(cè)圖片。由那些組件執(zhí)行的確切操作可取決于所壓縮的信息類型而變化。預(yù)測(cè)圖片(例如逐行掃描ρ-幀或b_幀、隔行掃描ρ-半幀或b_半幀、或隔行掃描 P-幀或b_幀)根據(jù)來(lái)自一個(gè)或多個(gè)其它圖片(通常稱為參考圖片或錨)的預(yù)測(cè)(或差值) 來(lái)表示。預(yù)測(cè)殘差是所預(yù)測(cè)圖片和原始圖片之間的差值。相反,關(guān)鍵圖片(例如逐行掃描 I-幀、隔行掃描I-半幀、或隔行掃描I-幀)不參照其它圖片進(jìn)行壓縮。如果當(dāng)前圖片2105是正向預(yù)測(cè)圖片,則運(yùn)動(dòng)估計(jì)器2110參照一個(gè)或多個(gè)參考圖 片估計(jì)當(dāng)前圖片2105的宏塊或其它像素集的運(yùn)動(dòng),其中參考圖片是例如緩存在圖片存儲(chǔ) 2120中的重構(gòu)的先前圖片2125。如果當(dāng)前圖片2105是雙向預(yù)測(cè)圖片,則運(yùn)動(dòng)估計(jì)器2110 參照(例如隔行掃描B-半幀的)多達(dá)4個(gè)重構(gòu)參考圖片來(lái)估計(jì)當(dāng)前圖片2105中的運(yùn)動(dòng)。通 常,運(yùn)動(dòng)估計(jì)器參照一個(gè)或多個(gè)時(shí)間上在先的參考圖片和一個(gè)或多個(gè)時(shí)間上將來(lái)的參考圖 片來(lái)估計(jì)B-圖片中的運(yùn)動(dòng)。因此,編碼器系統(tǒng)2100可將分別的存儲(chǔ)2120和2122用于多個(gè) 參考圖片。對(duì)于有關(guān)逐行掃描B-幀的更多信息,參見序列號(hào)為10/622,378題為“Advanced Bi-Directional PredictiveCoding of Video Frames”(視頻幀的高級(jí)雙向預(yù)測(cè)編碼)并 于2003年7月18日提交的美國(guó)專利申請(qǐng)。運(yùn)動(dòng)估計(jì)器2110可按像素、1/2像素、1/4像素或其它增量進(jìn)行估計(jì),并可在逐個(gè) 圖片基礎(chǔ)或其它基礎(chǔ)上切換運(yùn)動(dòng)估計(jì)的分辨率。運(yùn)動(dòng)估計(jì)器2110 (和補(bǔ)償器2130)還可在 每幀或其它基礎(chǔ)上在參考圖片像素插值類型之間(例如雙三次和雙線性)切換。運(yùn)動(dòng)估計(jì) 的分辨率可水平地或垂直地相同或不同。運(yùn)動(dòng)估計(jì)器2110輸出諸如差值運(yùn)動(dòng)向量信息的 輔助信息運(yùn)動(dòng)信息2115。編碼器2100通過(guò)例如計(jì)算運(yùn)動(dòng)向量的一個(gè)或多個(gè)預(yù)測(cè)值、計(jì)算運(yùn) 動(dòng)向量和預(yù)測(cè)值之間的差值、并熵編碼這些差值,來(lái)編碼運(yùn)動(dòng)信息。為了重構(gòu)運(yùn)動(dòng)向量,運(yùn) 動(dòng)補(bǔ)償器2130組合預(yù)測(cè)值與差值運(yùn)動(dòng)向量信息。用于計(jì)算運(yùn)動(dòng)向量預(yù)測(cè)值、計(jì)算差值運(yùn)動(dòng) 向量、并重構(gòu)隔行掃描B-半幀和隔行掃描B-幀的運(yùn)動(dòng)向量的各種技術(shù)如下所述。運(yùn)動(dòng)補(bǔ)償器2130將重構(gòu)運(yùn)動(dòng)向量應(yīng)用于重構(gòu)圖片2125,以形成經(jīng)運(yùn)動(dòng)補(bǔ)償?shù)漠?dāng) 前圖片2135。然而,預(yù)測(cè)很少是完美的,且經(jīng)運(yùn)動(dòng)補(bǔ)償?shù)漠?dāng)前圖片2135和原始的當(dāng)前圖片 2105之間的差值為預(yù)測(cè)殘差2145。在圖片的隨后重構(gòu)中,預(yù)測(cè)殘差2145被添加到經(jīng)運(yùn)動(dòng) 補(bǔ)償?shù)漠?dāng)前圖片2135中,以獲得更接近于原始當(dāng)前圖片2105的重構(gòu)圖片。然而,在有損壓縮中,仍有一些信息從原始當(dāng)前圖片2105中丟失。或者,運(yùn)動(dòng)估計(jì)器和運(yùn)動(dòng)補(bǔ)償器應(yīng)用另 一類型的運(yùn)動(dòng)估計(jì)計(jì)/補(bǔ)償。頻率變換器2160將空間域視頻信息轉(zhuǎn)換成頻域(即頻譜)數(shù)據(jù)。對(duì)于基于塊的 視頻圖片,頻率變換器2160將DCT、DCT的變體、或其它塊變換應(yīng)用于像素?cái)?shù)據(jù)或預(yù)測(cè)殘差 數(shù)據(jù)的塊,從而產(chǎn)生頻率變換系數(shù)的塊?;蛘撸l率變換器2160應(yīng)用諸如傅立葉變換的另 一種常規(guī)頻率變換、或使用小波或子頻帶分析。頻率變換器2160可應(yīng)用8x8、8x4、4x8、4x4 或其它大小的頻率變換。然后量化器2170量化頻譜數(shù)據(jù)系數(shù)的各個(gè)塊。該量化器將均勻的標(biāo)量量化應(yīng)用 于頻譜數(shù)據(jù),其中步長(zhǎng)在逐個(gè)圖片或其它基礎(chǔ)上變化?;蛘?,量化器將另一種類型的量化應(yīng) 用于頻譜數(shù)據(jù)系數(shù),例如不均勻的向量或非自適應(yīng)量化,或者直接在不使用頻率變換的編 碼器系統(tǒng)中量化空間域數(shù)據(jù)。除了自適應(yīng)量化之外,編碼器2100可將幀丟棄、自適應(yīng)濾波 或其它技術(shù)用于速率控制。編碼器2100可將特定的信號(hào)表示用于被跳過(guò)的宏塊,該宏塊是沒(méi)有特定類型信 息的宏塊(例如沒(méi)有該宏塊的運(yùn)動(dòng)信息和沒(méi)有殘差信息)。當(dāng)需要重構(gòu)后的當(dāng)前幀用于隨后的運(yùn)動(dòng)估計(jì)/補(bǔ)償時(shí),逆量化器2176對(duì)量化后的 頻譜數(shù)據(jù)系數(shù)執(zhí)行逆量化。然后反向頻率變換器2166執(zhí)行頻率變換器2160的反向操作,產(chǎn) 生重構(gòu)后預(yù)測(cè)殘差(用于預(yù)測(cè)圖片)或重構(gòu)后的關(guān)鍵圖片。如果當(dāng)前圖片2105是關(guān)鍵圖 片,則重構(gòu)后的關(guān)鍵圖片被取作重構(gòu)后的當(dāng)前圖片(未示出)。如果當(dāng)前圖片2105是預(yù)測(cè) 圖片,則重構(gòu)后的預(yù)測(cè)殘差被添加到經(jīng)運(yùn)動(dòng)補(bǔ)償?shù)漠?dāng)前圖片2135中以形成重構(gòu)后的當(dāng)前 圖片。一個(gè)或多個(gè)圖片存儲(chǔ)2120、2122緩存重構(gòu)后的當(dāng)前圖片,以用于運(yùn)動(dòng)補(bǔ)償預(yù)測(cè)。在 某些實(shí)施例中,編碼器將解塊濾波器應(yīng)用于重構(gòu)后的幀以自適應(yīng)地使圖片中的間斷點(diǎn)和其 它人工效應(yīng)平滑。熵編碼器2180壓縮量化器2170的輸出以及某些輔助信息(例如運(yùn)動(dòng)信息2115、 量化步長(zhǎng))。典型的熵編碼技術(shù)包括算術(shù)編碼、差分編碼、哈夫曼編碼、運(yùn)行長(zhǎng)度編碼、LZ編 碼、字典編碼以及以上的組合。熵編碼器2180通常使用用于不同類型信息(例如DC系數(shù)、 AC系數(shù)、不同類型的輔助信息)的不同編碼技術(shù),并可從特定編碼技術(shù)內(nèi)的多個(gè)代碼表中 選擇。熵編碼器2180向多路復(fù)用器[“MUX”]2190提供壓縮后的視頻信息2195。MUX 2190可包括緩沖區(qū),且緩沖區(qū)級(jí)別指示符被反饋給比特率自適應(yīng)模塊作速率控制。在MUX 2190之前或之后,壓縮后的視頻信息2195可被信道編碼用于在網(wǎng)絡(luò)上傳輸。信道編碼可將 差錯(cuò)檢測(cè)和糾正數(shù)據(jù)應(yīng)用于壓縮后的視頻信息2195。C.視頻解碼器圖22是一般視頻解碼器系統(tǒng)2200的框圖。解碼器系統(tǒng)2200接收用于視頻圖片的經(jīng)壓縮序列的信息2295,并產(chǎn)生包括重構(gòu)圖片2205的輸出(例如,逐行掃描視頻幀、隔行 掃描視頻幀、或隔行掃描視頻幀的半幀)。視頻解碼器的特定實(shí)施例通常使用通用解碼器 2200的變體或補(bǔ)充版本。解碼器系統(tǒng)2200解壓縮預(yù)測(cè)圖片和關(guān)鍵圖片。為演示起見,圖22示出關(guān)鍵圖片 通過(guò)解碼器系統(tǒng)2200的路徑,以及正向預(yù)測(cè)圖片的路徑。解碼器系統(tǒng)2200的許多組件用 于解壓縮關(guān)鍵圖片和預(yù)測(cè)圖片。由那些組件執(zhí)行的確切操作取決于所解壓縮的信息類型而變化。DEMUX (多路分解器)2290接收壓縮后視頻序列的信息2295,并使接收到的信息可用于熵解碼器2280。DEMUX 2290可包括一抖動(dòng)緩沖區(qū)和其它緩沖區(qū)。在DEMUX 2290之前 或之后,經(jīng)壓縮的視頻信息可進(jìn)行信道解碼和用于差錯(cuò)檢測(cè)和糾正處理。熵解碼器2280通常應(yīng)用編碼器中執(zhí)行的熵編碼的逆,對(duì)熵編碼后的量化數(shù)據(jù)以 及熵編碼后的輔助信息(例如運(yùn)動(dòng)信息2215、量化步長(zhǎng))進(jìn)行熵解碼。熵解碼技術(shù)包括算 術(shù)解碼、差分解碼、哈夫曼解碼、運(yùn)行長(zhǎng)度解碼、LZ解碼、字典解碼以及以上的組合。熵解碼 器2280經(jīng)常使用用于不同類型信息(例如DC系數(shù)、AC系數(shù)、不同類型的輔助信息)的不 同解碼技術(shù),并可從特定解碼技術(shù)內(nèi)的多個(gè)代碼表中選擇。解碼器2200通過(guò)例如計(jì)算運(yùn)動(dòng)向量的一個(gè)或多個(gè)預(yù)測(cè)值、熵解碼差值運(yùn)動(dòng)向量、 并組合解碼后的差值運(yùn)動(dòng)向量和用于重構(gòu)運(yùn)動(dòng)向量的預(yù)測(cè)值,來(lái)解碼運(yùn)動(dòng)2215。用于計(jì)算 運(yùn)動(dòng)向量預(yù)測(cè)值、計(jì)算差值運(yùn)動(dòng)向量、并重構(gòu)隔行掃描B-半幀和隔行掃描B-幀的各種技術(shù) 如下所述。運(yùn)動(dòng)補(bǔ)償器2230將運(yùn)動(dòng)信息2215應(yīng)用于一個(gè)或多個(gè)參考圖片2225,以形成被重 構(gòu)的圖片2205的預(yù)測(cè)值2235。例如,運(yùn)動(dòng)補(bǔ)償器2230使用一個(gè)或多個(gè)宏塊運(yùn)動(dòng)向量來(lái)尋 找參考圖片2225中的宏塊。一個(gè)或多個(gè)圖片存儲(chǔ)(例如圖片存儲(chǔ)2220、2222)存儲(chǔ)先前重 構(gòu)后的圖片,以用作參考圖片。通常,B-圖片具有一個(gè)以上的參考圖片(例如至少一個(gè)時(shí) 間上在先的參考圖片和至少一個(gè)時(shí)間上將來(lái)的參考圖片)。因此,解碼器系統(tǒng)2200可將分 別的圖片存儲(chǔ)2220和2222用于多個(gè)參考圖片。運(yùn)動(dòng)補(bǔ)償器2230可按像素、1/2像素、1/4 像素或其它增量補(bǔ)償運(yùn)動(dòng),并可在逐個(gè)圖片基礎(chǔ)或其它基礎(chǔ)上切換運(yùn)動(dòng)補(bǔ)償?shù)姆直媛?。運(yùn) 動(dòng)補(bǔ)償器2230還可在每幀或其它基礎(chǔ)上在參考圖片像素插值類型之間(例如雙三次和雙 線性)切換。運(yùn)動(dòng)補(bǔ)償?shù)姆直媛士伤降鼗虼怪钡叵嗤虿煌;蛘?,運(yùn)動(dòng)補(bǔ)償器應(yīng)用另 一類型的運(yùn)動(dòng)補(bǔ)償。由運(yùn)動(dòng)補(bǔ)償器進(jìn)行的預(yù)測(cè)很少是完美的,因此解碼器2200還重構(gòu)預(yù)測(cè) 殘差。逆量化器2270對(duì)熵解碼后的數(shù)據(jù)執(zhí)行逆量化。一般而言,該逆量化器將均勻的標(biāo) 量逆量化應(yīng)用于熵解碼后的數(shù)據(jù),其中步長(zhǎng)在逐幀或其它基礎(chǔ)上變化。或者,該逆量化器將 另一種類型的逆量化應(yīng)用于數(shù)據(jù),例如在不均勻的向量或非自適應(yīng)量化后重構(gòu),或者在不 使用逆頻率變換的解碼器系統(tǒng)中直接逆量化空間域數(shù)據(jù)。逆頻率變換器2260將量化后的頻域數(shù)據(jù)轉(zhuǎn)換成空間域視頻信息。對(duì)于基于塊的 視頻圖片,逆頻率變換器2260將逆DCT[ “IDCT"] ,IDCT的變體、或其它逆向塊變換應(yīng)用于 頻率變換系數(shù)的塊,從而分別產(chǎn)生關(guān)鍵圖片或預(yù)測(cè)圖片的像素?cái)?shù)據(jù)或預(yù)測(cè)殘差數(shù)據(jù)?;蛘撸?反向頻率變換器2260應(yīng)用諸如傅立葉逆變換的另一種常規(guī)反向頻率變換、或使用小波或 子頻帶分析。反向頻率變換器2260可應(yīng)用8x8、8x4、4x8、4x4或其它大小的反向頻率變換。對(duì)于預(yù)測(cè)圖片,解碼器2200組合重構(gòu)后的預(yù)測(cè)殘差2245和經(jīng)運(yùn)動(dòng)補(bǔ)償?shù)念A(yù)測(cè) 2235來(lái)形成重構(gòu)后的圖片2205。當(dāng)解碼器需要用于隨后運(yùn)動(dòng)補(bǔ)償?shù)闹貥?gòu)后圖片2205時(shí), 一個(gè)或兩個(gè)圖片存儲(chǔ)(例如圖片存儲(chǔ)2220)緩存重構(gòu)后圖片2205,以用于預(yù)測(cè)下一圖片。 在一些實(shí)施例中,解碼器2200將解塊濾波器應(yīng)用于重構(gòu)后圖片以自適應(yīng)地使圖片中的間 斷點(diǎn)和其它人工效應(yīng)平滑。III.隔行掃描P-半幀和隔行掃描P-幀
典型的隔行掃描視頻幀由在不同時(shí)間掃描的兩個(gè)半幀(例如上半幀和下半幀)組成。一般而言,通過(guò)一起編碼半幀來(lái)編碼隔行掃描視頻幀的靜態(tài)區(qū)域是更為有效的(“幀模 式”編碼)。另一方面,通過(guò)分開編碼半幀來(lái)編碼隔行掃描視頻幀的移動(dòng)區(qū)域通常更為有效 (“半幀模式”編碼),因?yàn)檫@兩個(gè)半幀傾向于具有不同的運(yùn)動(dòng)。正向預(yù)測(cè)的隔行掃描視頻 幀可被編碼為兩個(gè)獨(dú)立的正向預(yù)測(cè)半幀-隔行掃描P-半幀。例如,當(dāng)在隔行掃描視頻幀上 有較高運(yùn)動(dòng)從而在各半幀之間有很大差異時(shí),分開編碼正向預(yù)測(cè)的隔行掃描視頻幀的半幀 會(huì)比較有效。或者,正向預(yù)測(cè)的隔行掃描視頻幀可使用半幀編碼和幀編碼的混合來(lái)編碼為隔行 掃描P-幀。對(duì)于隔行掃描P-幀的宏塊,該宏塊包括上半幀和下半幀的像素行,且各行可用 幀編碼模式一起編碼,或用半幀編碼模式分開編碼。A.隔行掃描P-半幀隔行掃描P-半幀參考一個(gè)或多個(gè)先前解碼的半幀。例如,在一些實(shí)現(xiàn)中,隔行掃 描P-半幀參考一個(gè)或兩個(gè)先前解碼的半幀,而隔行掃描B-半幀參考多達(dá)兩個(gè)先前的和兩 個(gè)將來(lái)的參考半幀(即多達(dá)總共四個(gè)參考半幀)。(用于隔行掃描B-半幀的編碼和解碼技 術(shù)在下面詳細(xì)描述。)圖25和26示出具有兩個(gè)參考半幀的隔行掃描P-半幀的示例。在圖25中,當(dāng)前 半幀2510參考時(shí)間上在先的隔行掃描視頻幀中的上半幀2520和下半幀2530。因?yàn)榘霂?2540和2550是隔行掃描的B-半幀,所以它們不用作參考半幀。在圖26中,當(dāng)前半幀2610 參考在包含當(dāng)前半幀2610的隔行掃描視頻幀前面緊鄰的隔行掃描視頻幀中的上半幀2620 和下半幀2630。對(duì)于有關(guān)雙參考的隔行掃描P-半幀的更多信息,參見序列號(hào)為xx/yyy,ZZZ 題為"Predicting Motion Vectors for Fields of Forward-predicted Interlaced Video Frames”(預(yù)測(cè)正向預(yù)測(cè)的隔行掃描視頻幀的半幀的運(yùn)動(dòng)向量)并于2004年5月27日提 交的美國(guó)專利申請(qǐng)。圖27和28示出具有一個(gè)參考半幀-所允許的時(shí)間上最新參考半幀的隔行掃描 P-半幀的示例。在圖27中,當(dāng)前半幀2710參考時(shí)間上在先的隔行掃描視頻幀的下半幀 2730,但不參考該隔行掃描視頻幀上不那么新的上半幀2720。在圖27所示示例中,半幀 2740和2750是隔行掃描B-半幀,且不是所允許的參考半幀。在圖28中,當(dāng)前半幀2810參 考在包含當(dāng)前半幀2810的隔行掃描視頻幀前面緊鄰的隔行掃描視頻幀中的下半幀2830, 而不參考不那么新的上半幀2820。圖29和30示出使用所允許的第二最新參考半幀的隔行掃描P-半幀的示例。在 圖29中,當(dāng)前半幀2910參考時(shí)間上在先的隔行掃描視頻幀的上半幀2920,但不參考更新的 下半幀2920。在圖29所示示例中,半幀2940和2950是隔行掃描B-半幀,且不是所允許的 參考半幀。在圖30中,當(dāng)前半幀3010參考上半幀3020,而不參考更新的下半幀3030。在一實(shí)現(xiàn)中,圖25-30中示出的全部情形在隔行掃描P-半幀語(yǔ)法中都是許可的。 其它實(shí)現(xiàn)也是可能的。例如,圖片可將來(lái)自不同類型或時(shí)間位置的其它圖片的半幀用作參 考半幀。1.半幀圖片坐標(biāo)系統(tǒng)和半幀極性運(yùn)動(dòng)向量表示以1/4像素為單位的水平和垂直位移。例如,如果運(yùn)動(dòng)向量的垂直 分量表示6個(gè)1/4像素單位的位移,則這表示參考?jí)K是當(dāng)前塊位置下方1. 5個(gè)半幀行處(6*1/4 = 1 1/2)。圖31示出在一實(shí)現(xiàn)中運(yùn)動(dòng)向量的垂直分量和空間位置之間的關(guān)系。圖31所示示 例示出當(dāng)前和參考半幀類型(例如上和下)的三種不同組合的三種不同情形3110、3120和 3130。如果半幀類型對(duì)當(dāng)前和參考半幀不同,則極性“相反”。如果半幀類型相同,則極性 “相同”。對(duì)于每種情形,圖31示出當(dāng)前半幀中一個(gè)垂直像素列和參考半幀中的第二垂直像 素列。實(shí)際上,該兩列是水平對(duì)齊的。圓圈表示實(shí)際整數(shù)像素位置,而X表示插值的1/2或 1/4像素位置。水平分量值(未示出)無(wú)需說(shuō)明因?yàn)楦粜袙呙璧娜魏纹屏?,因?yàn)楦鱾€(gè)半幀 都是水平對(duì)齊的。負(fù)值表示在相反方向上比所示正值垂直偏移量更偏上的偏移量。在情形3110中,極性“相反”。當(dāng)前半幀為上半幀,而參考半幀為下半幀。相對(duì)于當(dāng) 前半幀,參考半幀的位置因?yàn)楦粜袙呙瓒谙蛳路较蛏掀?/2像素。垂直運(yùn)動(dòng)向量分量 值為0是“無(wú)垂直運(yùn)動(dòng)”偏移,并表示參考半幀中與當(dāng)前半幀中位置在同一垂直水平上(絕 對(duì)值)的位置;垂直運(yùn)動(dòng)向量分量值為+2表示參考半幀中偏移到當(dāng)前半幀中位置下方1/2 像素(絕對(duì)值)的位置,該位置是參考半幀中的實(shí)際值;而垂直分量值為+4表示參考半幀 中偏移到當(dāng)前半幀中位置下方1整個(gè)像素(絕對(duì)值)的位置,該位置是參考半幀中的插值。在情形3120中,極性也“相反”。當(dāng)前半幀是下半幀,而參考半幀是上半幀。相對(duì) 于當(dāng)前半幀,參考半幀的位置因?yàn)楦粜袙呙瓒谙蛏戏较蛏掀?/2像素。垂直運(yùn)動(dòng)向量 分量值為-2表示參考半幀中偏移到當(dāng)前半幀中位置上方1/2像素(絕對(duì)值)的位置;垂直 分量值為0表示參考半幀中與當(dāng)前半幀中位置在同一水平上(絕對(duì)值)的位置;而垂直分 量值為+2表示參考半幀中偏移到當(dāng)前半幀中位置下方1/2像素(絕對(duì)值)的位置。在情形3130中,極性“相同”。相對(duì)于當(dāng)前半幀,參考半幀的位置在垂直方向上相 同。垂直運(yùn)動(dòng)向量分量值為0是“無(wú)垂直運(yùn)動(dòng)”偏移,并表示參考半幀中與當(dāng)前半幀中位置 在同一垂直水平上(絕對(duì)值)的位置;垂直運(yùn)動(dòng)向量分量值為+2表示參考半幀中偏移到當(dāng) 前半幀中位置下方1/2像素(絕對(duì)值)的位置,該位置是參考半幀中的插值;而垂直分量值 為+4表示參考半幀中偏移到當(dāng)前半幀中位置下方1整個(gè)像素(絕對(duì)值)的位置,該位置是 參考半幀中的實(shí)際值?;蛘撸\(yùn)動(dòng)向量的位移根據(jù)不同慣例來(lái)表達(dá)。2.雙參考半幀的隔行掃描P-半幀中的運(yùn)動(dòng)向量預(yù)測(cè)雙參考半幀的隔行掃描P-半幀參考相同時(shí)間方向上的兩個(gè)半幀(例如兩個(gè)最近的先前參考半幀)。對(duì)每個(gè)宏塊計(jì)算兩個(gè)運(yùn)動(dòng)向量預(yù)測(cè)值。在一些實(shí)現(xiàn)中,一個(gè)預(yù)測(cè)值來(lái)自 相同極性的參考半幀,而另一個(gè)預(yù)測(cè)值來(lái)自相反極性的參考半幀。極性的其它組合也是可 能的。(以下描述每個(gè)方向上使用雙參考半幀的隔行掃描B-半幀。在一些實(shí)現(xiàn)中,這些隔 行掃描B-半幀將與隔行掃描P-半幀相同的技術(shù)用于計(jì)算運(yùn)動(dòng)向量預(yù)測(cè)值。)在一些實(shí)現(xiàn)中,編碼器/解碼器通過(guò)尋找奇半幀預(yù)測(cè)值和偶半幀預(yù)測(cè)值、并選擇 處理預(yù)測(cè)值之一用于處理宏塊,來(lái)計(jì)算當(dāng)前塊或宏塊的運(yùn)動(dòng)向量預(yù)測(cè)值。例如,編碼器/解 碼器確定奇半幀運(yùn)動(dòng)向量預(yù)測(cè)值和偶半幀運(yùn)動(dòng)向量預(yù)測(cè)值。運(yùn)動(dòng)向量預(yù)測(cè)值之一因而具有 與當(dāng)前半幀相同的極性,而另一運(yùn)動(dòng)向量預(yù)測(cè)值具有相反極性。編碼器/解碼器從奇半幀 運(yùn)動(dòng)向量預(yù)測(cè)值和偶半幀運(yùn)動(dòng)向量預(yù)測(cè)值中選擇一運(yùn)動(dòng)向量預(yù)測(cè)值。例如,編碼器基于哪 個(gè)給出較佳預(yù)測(cè)在各運(yùn)動(dòng)向量預(yù)測(cè)值之間選擇。編碼器使用簡(jiǎn)單的選擇信號(hào)或使用較復(fù)雜 的結(jié)合改進(jìn)編碼效率的上下文信息的信號(hào)表示來(lái)用信號(hào)表示要使用哪個(gè)運(yùn)動(dòng)向量預(yù)測(cè)值。該上下文信息可表示奇半幀或偶半幀的哪一個(gè)、或相同極性半幀或相反極性半幀的哪一個(gè)已主要用于塊或宏塊周圍的鄰域中。解碼器基于選擇信號(hào)和/或上下文信息選擇要使用哪 個(gè)運(yùn)動(dòng)向量預(yù)測(cè)值。然后,編碼器/解碼器使用選定的運(yùn)動(dòng)向量預(yù)測(cè)值處理該運(yùn)動(dòng)向量。例 如,編碼器編碼運(yùn)動(dòng)向量和運(yùn)動(dòng)向量預(yù)測(cè)值之間的差值?;蛘撸獯a器通過(guò)組合運(yùn)動(dòng)向量差 值和運(yùn)動(dòng)向量預(yù)測(cè)值來(lái)解碼運(yùn)動(dòng)向量。或者,編碼器和/或解碼器可跳過(guò)確定奇半幀運(yùn)動(dòng)向量預(yù)測(cè)值、或跳過(guò)確定偶半 幀運(yùn)動(dòng)向量預(yù)測(cè)值。例如,如果編碼器確定奇半幀將用于特定塊或宏塊的運(yùn)動(dòng)補(bǔ)償,則編碼 器只確定奇半幀運(yùn)動(dòng)向量預(yù)測(cè)值。或者,如果解碼器從上下文和/或信號(hào)表示信息中確定 奇半幀將用于運(yùn)動(dòng)補(bǔ)償,則解碼器只確定奇半幀運(yùn)動(dòng)向量預(yù)測(cè)值。這樣,編碼器和解碼器可 避免不必要的運(yùn)算。解碼器可采用以下技術(shù)來(lái)確定當(dāng)前隔行掃描P-半幀的運(yùn)動(dòng)向量預(yù)測(cè)值。對(duì)于隔行掃描P-半幀中具有運(yùn)動(dòng)向量的每個(gè)塊或宏塊,可獲得兩組三個(gè)候選運(yùn) 動(dòng)向量預(yù)測(cè)值。從中獲得這些候選運(yùn)動(dòng)向量預(yù)測(cè)值的相鄰宏塊相對(duì)于當(dāng)前宏塊3200的位 置如圖32所示。這些候選值的三個(gè)來(lái)自偶參考半幀,而另三個(gè)來(lái)自奇參考半幀。因?yàn)槊總€(gè) 候選方向中的相鄰宏塊(A、B和C)是幀內(nèi)編碼的或具有參考偶半幀或奇半幀的實(shí)際運(yùn)動(dòng)向 量,所以需要導(dǎo)出其它半幀的運(yùn)動(dòng)向量(或?qū)С鰩瑑?nèi)編碼宏塊的奇半幀和偶半幀運(yùn)動(dòng)向量 候選值)。例如,對(duì)于給定宏塊,假設(shè)預(yù)測(cè)值A(chǔ)具有參考奇半幀的運(yùn)動(dòng)向量。在該情形中, “偶半幀”候選預(yù)測(cè)值A(chǔ)從“奇半幀”候選預(yù)測(cè)值A(chǔ)的運(yùn)動(dòng)向量中導(dǎo)出。該導(dǎo)出使用縮放運(yùn) 算來(lái)完成。(參見例如以下圖34A和34B的解釋。)或者,導(dǎo)出用另一種方式完成。一旦已得到三個(gè)奇半幀候選運(yùn)動(dòng)向量預(yù)測(cè)值,就使用中值運(yùn)算來(lái)從三個(gè)奇半幀候 選值中導(dǎo)出奇半幀運(yùn)動(dòng)向量預(yù)測(cè)值。類似地,一旦已得到三個(gè)偶半幀候選運(yùn)動(dòng)向量預(yù)測(cè)值, 就使用中值運(yùn)算來(lái)從三個(gè)偶半幀候選值中導(dǎo)出偶半幀運(yùn)動(dòng)向量預(yù)測(cè)值?;蛘?,使用另一種 機(jī)制來(lái)基于候選半幀運(yùn)動(dòng)向量預(yù)測(cè)值選擇半幀運(yùn)動(dòng)向量預(yù)測(cè)值。解碼器判定是將偶半幀還 是奇半幀用作運(yùn)動(dòng)向量預(yù)測(cè)值(例如通過(guò)選擇主預(yù)測(cè)值),及偶還是奇運(yùn)動(dòng)向量預(yù)測(cè)值被 用來(lái)重構(gòu)運(yùn)動(dòng)向量。圖33A-33F中的偽碼3300示出用來(lái)從如圖32所示排列的預(yù)測(cè)值A(chǔ)、B和C中產(chǎn) 生運(yùn)動(dòng)向量預(yù)測(cè)值的過(guò)程。盡管圖32示出當(dāng)前隔行掃描P-半幀中典型宏塊的鄰域,但圖 33A-33F的偽碼3300解決了宏塊位置的各個(gè)特定情形。此外,偽碼3300可用來(lái)計(jì)算各個(gè)位 置上塊的運(yùn)動(dòng)向量的運(yùn)動(dòng)向量預(yù)測(cè)值。在偽碼3300中,術(shù)語(yǔ)“相同半幀”和“相反半幀”被理解成與當(dāng)前編碼或解碼的半 幀相關(guān)。例如,如果當(dāng)前半幀是偶半幀,則“相同半幀”是偶參考半幀而“相反半幀”是奇參考 半幀。偽碼3300中的變量samefieldpred_x和samefieldpred_y表示來(lái)自相同半幀的運(yùn)動(dòng) 向量預(yù)測(cè)值的水平和垂直分量,而變量oppositefieldpred_x和oppositef ieldpred_y表 示來(lái)自相反半幀的運(yùn)動(dòng)向量預(yù)測(cè)值的水平和垂直分量。變量samecount和oppositecount 分別跟蹤當(dāng)前塊或宏塊的鄰域的多少運(yùn)動(dòng)向量參考當(dāng)前半幀的“相同”極性參考半幀,及多 少參考“相反”極性參考半幀。變量samecount和oppositecount在偽碼開始時(shí)初始化為 O0偽碼3300中所提及的縮放運(yùn)算scaleforsameO和scaleforopposite ()被用來(lái) 從鄰居的實(shí)際運(yùn)動(dòng)向量值中導(dǎo)出“另一”半幀的候選運(yùn)動(dòng)向量預(yù)測(cè)值??s放運(yùn)算是實(shí)現(xiàn)無(wú)關(guān)的。示例縮放運(yùn)算在以下參照?qǐng)D34A、34B、35和36進(jìn)行描述?;蛘?,其它縮放運(yùn)算可用來(lái)例如補(bǔ)償諸如圖31中所示的垂直位移。(具體用于隔行掃描B-半幀的縮放運(yùn)算如下進(jìn) 行詳細(xì)描述。)圖33A和33B示出用于計(jì)算幀內(nèi)的內(nèi)部位置中典型塊或宏塊的運(yùn)動(dòng)向量預(yù)測(cè)值的 偽碼?!皫瑑?nèi)”鄰居的運(yùn)動(dòng)向量被設(shè)置為0。對(duì)于每個(gè)鄰居,都設(shè)置相同半幀運(yùn)動(dòng)向量預(yù)測(cè)值 和相反半幀運(yùn)動(dòng)向量預(yù)測(cè)值,在其中一個(gè)通過(guò)鄰居運(yùn)動(dòng)向量的實(shí)際值設(shè)置時(shí),另一個(gè)從中 導(dǎo)出。對(duì)相同半幀運(yùn)動(dòng)向量預(yù)測(cè)值和相反半幀運(yùn)動(dòng)向量預(yù)測(cè)值計(jì)算候選值的中值,而“主” 預(yù)測(cè)值從samecount禾口 oppositecount中確定。變量dominantpredictor表示明個(gè)半中貞包 含主運(yùn)動(dòng)向量預(yù)測(cè)值。如果運(yùn)動(dòng)向量預(yù)測(cè)值具有與三個(gè)候選預(yù)測(cè)值的大部分相同的極性, 則它是主要預(yù)測(cè)值。(用運(yùn)動(dòng)向量差值數(shù)據(jù)解碼的表示信號(hào)的值prediCt0r_flag表示使用 主還是非主預(yù)測(cè)值。)圖33C中的偽碼解決每行只有一個(gè)宏塊(它沒(méi)有鄰居B或C)的隔行掃描P-半幀 的宏塊的情形。圖33D或33E中的偽碼解決塊或宏塊在隔行掃描P-半幀的左邊緣(沒(méi)有 鄰居C)的情形。在此,如果運(yùn)動(dòng)向量預(yù)測(cè)值具有與兩個(gè)以上候選預(yù)測(cè)值相同的極性,則它 是主預(yù)測(cè)值;而在不分上下的情形中,相反半幀運(yùn)動(dòng)向量預(yù)測(cè)值為主預(yù)測(cè)值。最后,圖33F 中的偽碼解決例如宏塊在隔行掃描P-半幀的首行中的情形。3. 一個(gè)半幀運(yùn)動(dòng)向量預(yù)測(cè)值從另一個(gè)半幀運(yùn)動(dòng)向量預(yù)測(cè)值導(dǎo)出的縮放在一實(shí)現(xiàn)中,編碼器/解碼器使用圖34A和34B的偽碼3400中示出的縮放運(yùn)算, 將一個(gè)半幀運(yùn)動(dòng)向量預(yù)測(cè)值從另一個(gè)半幀運(yùn)動(dòng)向量預(yù)測(cè)值導(dǎo)出。SCALE0PP、SCALESAME1、 SCALESAME2、SCALEZ0NE1_X、SCALEZ0NE1_Y、Z0NE10FFSET_X 和 Z0NE10FFSET_Y 的值是實(shí)現(xiàn) 相關(guān)的。示出兩個(gè)可能的值集,其中當(dāng)前半幀是隔行掃描視頻幀中的第一半幀的情形在圖 35的表格3500中示出,而當(dāng)前半幀是隔行掃描視頻幀中的第二半幀的情形在圖36的表格 3600中示出。對(duì)于P-幀,參考幀距離被第一為當(dāng)前P-幀及其參考幀之間的B-幀(即包含 兩個(gè)B-半幀的視頻幀)數(shù)量。如果不出現(xiàn)B-幀,則參考距離為0。例如,編碼器使用可變 大小的語(yǔ)法元素(例如在以下XIV節(jié)詳細(xì)描述的REFDIST語(yǔ)法元素)來(lái)編碼參考幀距離。在表格3500和3600中示出的各個(gè)示例中,N的值(用作表格中SCALEZ0NE1_X、 SCALEZONE 1_Y>ZONE 10FFSET_X和Z0NE10FFSET_Y值的乘數(shù))取決于運(yùn)動(dòng)向量范圍。例如, 經(jīng)擴(kuò)展的運(yùn)動(dòng)向量范圍可通過(guò)語(yǔ)法元素EXTENDED_MV = 1來(lái)用信號(hào)表示。如果EXTENDED_ MV=I,則MVRANGE語(yǔ)法元素在圖片頭中出現(xiàn),并用信號(hào)表示運(yùn)動(dòng)向量范圍。如果EXTENDED_ MV = 0,則使用缺省運(yùn)動(dòng)向量范圍。以下的表格1示出N和MVRANGE之間的關(guān)系。表格1 圖35和36中N的導(dǎo)出 表格3500和3600中示出的各個(gè)值可依賴于實(shí)現(xiàn)而更改?;蛘撸琋被假設(shè)為1(即縮放不依賴于N),或者縮放可用一些其它方式來(lái)執(zhí)行。B.隔行掃描P-幀在一些實(shí)現(xiàn)中,隔行掃描P-幀中的宏塊可以是5種類型之一 1MV、2半幀MV、4幀 MV,4半幀MV和幀內(nèi)。在IMV宏塊中,宏塊中4個(gè)亮度塊的位移通過(guò)單個(gè)運(yùn)動(dòng)向量表示。相應(yīng)的色度運(yùn) 動(dòng)向量可從亮度運(yùn)動(dòng)向量導(dǎo)出,以表示運(yùn)動(dòng)向量的2個(gè)8x8色度塊的每一個(gè)的位移。例如, 再參看圖23中示出的宏塊排列,IMV宏塊2300包括4個(gè)8x8亮度塊和2個(gè)8x8色度塊。亮 度塊(Yl到Y(jié)4)的位移通過(guò)單個(gè)運(yùn)動(dòng)向量表示,且相應(yīng)的色度運(yùn)動(dòng)向量可從亮度運(yùn)動(dòng)向量 導(dǎo)出,以表示2個(gè)色度塊(U和V)的每一個(gè)的位移。在2半幀MV宏塊中,宏塊中4個(gè)亮度塊的每個(gè)半幀的位移通過(guò)不同運(yùn)動(dòng)向量描 述。例如,圖37示出,上半幀運(yùn)動(dòng)向量描述全部4個(gè)亮度塊的偶數(shù)行的位移,下半幀運(yùn)動(dòng)向 量描述全部4個(gè)亮度塊的奇數(shù)行的位移。使用上半幀運(yùn)動(dòng)向量,編碼器可導(dǎo)出相應(yīng)的上半 幀色度運(yùn)動(dòng)向量,它描述色度塊偶數(shù)行的位移。類似地,編碼器可導(dǎo)出下半幀色度運(yùn)動(dòng)向 量,它描述色度塊奇數(shù)行的位移。參照?qǐng)D38,在4幀MV宏塊中,4個(gè)亮度塊的每一個(gè)的位移通過(guò)不同運(yùn)動(dòng)向量(MV1、 MV2、MV3和MV4)描述。每個(gè)色度塊可通過(guò)使用4個(gè)導(dǎo)出色度運(yùn)動(dòng)向量(MV1’、MV2’、MV3’ 和MV4’ )來(lái)進(jìn)行運(yùn)動(dòng)補(bǔ)償,這些色度運(yùn)動(dòng)向量描述4個(gè)4x4色度子塊的位移。每個(gè)4x4色 度子塊的運(yùn)動(dòng)向量可從空間上相應(yīng)的亮度塊的運(yùn)動(dòng)向量中導(dǎo)出。參照?qǐng)D39,在4半幀MV宏塊中,亮度塊的每一個(gè)半幀的位移通過(guò)兩個(gè)不同運(yùn)動(dòng)向 量來(lái)描述。亮度塊的偶數(shù)行被垂直細(xì)分以形成2個(gè)8x8區(qū)域。對(duì)于偶數(shù)行,左邊區(qū)域的位 移通過(guò)左上方半幀塊的運(yùn)動(dòng)向量描述,而右邊區(qū)域的位移通過(guò)右上方半幀塊的運(yùn)動(dòng)向量描 述。亮度塊的奇數(shù)行也被垂直細(xì)分以形成2個(gè)8x8區(qū)域。左邊區(qū)域的位移通過(guò)左下方半幀 塊的運(yùn)動(dòng)向量描述,而右邊區(qū)域的位移通過(guò)右下方半幀塊的運(yùn)動(dòng)向量描述。每個(gè)色度塊也 可用與亮度塊相同的方式分成4個(gè)區(qū)域,且每個(gè)色度塊區(qū)域可使用導(dǎo)出運(yùn)動(dòng)向量進(jìn)行運(yùn)動(dòng) 補(bǔ)償。對(duì)于幀內(nèi)宏塊,運(yùn)動(dòng)假設(shè)為0。一般而言,計(jì)算隔行掃描P-幀中當(dāng)前宏塊的運(yùn)動(dòng)向量預(yù)測(cè)值的過(guò)程包括兩個(gè)步 驟。首先,從其相鄰宏塊收集當(dāng)前宏塊的三個(gè)候選運(yùn)動(dòng)向量。例如,在一實(shí)現(xiàn)中,候選運(yùn)動(dòng) 向量基于圖40A-40B中示出的排列(和首行宏塊等的各種特定情形)來(lái)收集?;蛘?,候選 運(yùn)動(dòng)向量可在一些其它順序或排列中收集。其次,當(dāng)前宏塊的運(yùn)動(dòng)向量預(yù)測(cè)值從候選運(yùn)動(dòng) 向量集中計(jì)算。例如,預(yù)測(cè)值可使用3個(gè)預(yù)測(cè)值的中值、或通過(guò)其它方法來(lái)計(jì)算。對(duì)于有關(guān)隔行掃描P-幀的宏塊的預(yù)測(cè)值計(jì)算和色度運(yùn)動(dòng)向量導(dǎo)出的其它細(xì)節(jié),參 見申請(qǐng)?zhí)枮?60/501,081 題為"Video Encoding and Decoding Tools andTechniques”(視 頻編碼和解碼工具及技術(shù))并于2003年9月7日提交的美國(guó)臨時(shí)專利申請(qǐng),如以下XIV節(jié) 所述。
IV.逐行掃描視頻幀的雙向預(yù)測(cè)如上所述,逐行掃描B-幀中的宏塊可使用5種不同預(yù)測(cè)模式來(lái)預(yù)測(cè)正向、反向、 直接、插值和幀內(nèi)。編碼器選擇并用信號(hào)表示在宏塊級(jí)別或一些其它級(jí)別上比特流中的不 同預(yù)測(cè)模式。在正向模式中,當(dāng)前逐行掃描B-幀中的宏塊從時(shí)間上在先的錨中導(dǎo)出。在反 向模式中,當(dāng)前逐行掃描B-幀中的宏塊從時(shí)間上后續(xù)的錨中導(dǎo)出。用直接或插值模式預(yù)測(cè) 的宏塊將正向和反向錨用于預(yù)測(cè)。因?yàn)橛兄苯雍筒逯的J降膬蓚€(gè)參考幀,所以對(duì)于每個(gè)宏 塊通常都有至少兩個(gè)運(yùn)動(dòng)向量(顯式編碼或?qū)С龅?。(用于逐行掃描B-幀的編碼、信號(hào) 表示和解碼的各個(gè)方面也可用于隔行掃描B-幀,如下所述。)在一些實(shí)現(xiàn)中,編碼器通過(guò)使用分?jǐn)?shù)值縮放正向錨的共處運(yùn)動(dòng)向量,隱式地用直接模式導(dǎo)出運(yùn)動(dòng)向量。該分?jǐn)?shù)可反映當(dāng)前逐行掃描B-幀在通過(guò)其錨形成的間隔內(nèi)的相對(duì) 時(shí)間位置,但不需要反映真實(shí)的幀間距離。因而,編碼器無(wú)需采取固定速度。這使得編碼器 有附加的自由度,來(lái)通過(guò)改變來(lái)自“實(shí)際”時(shí)間位置的分?jǐn)?shù)準(zhǔn)確并容易地描述錨和當(dāng)前逐行 掃描B-幀之間的真實(shí)運(yùn)動(dòng),以便于改進(jìn)運(yùn)動(dòng)補(bǔ)償預(yù)測(cè)。變量BFRACTI0N表示可在比特流中 發(fā)送(例如在圖片級(jí)別或一些其它級(jí)別上)以表示該相對(duì)時(shí)間位置的不同分?jǐn)?shù)。不同分?jǐn)?shù) 是0和1之間的有限離散值集。再參看圖17,表格1700是用于比特流元素BFRACTI0N的可變長(zhǎng)度代碼(VLC)表格。在相同兩個(gè)錨之間的逐行掃描B-幀中對(duì)BFRACTI0N的唯一性沒(méi)有限制;具有相同錨 的不同逐行掃描B-幀可具有相同的BFRACTI0N值。表格1700中的代碼可改變或重新安 排,以用不同代碼表示不同分?jǐn)?shù)。未在表格1700中示出的其它可能代碼(例如,1111110或 1111111)可被認(rèn)為是無(wú)效代碼,或可用于其它目的。例如,條目1111110可用來(lái)顯式地編碼 定點(diǎn)格式的BFRACTI0N。作為另一示例,條目1111111可用于用信號(hào)表示特定幀類型(例 如,幀內(nèi)編碼的逐行掃描B-幀)。再參看圖18,解碼器根據(jù)偽碼1800尋找縮放系數(shù)。再參看圖19,解碼器使用該 縮放系數(shù)來(lái)縮放后續(xù)參考圖片中共處宏塊的運(yùn)動(dòng)向量的X和y元素。偽碼1900中的函數(shù) Scale_Direct_MV取輸入MV_X和MV_Y,并用直接模式來(lái)導(dǎo)出兩個(gè)運(yùn)動(dòng)向量,其中一個(gè)運(yùn)動(dòng) 向量參考正向(先前)錨圖片(MV_XF、MV_YF),而另一個(gè)運(yùn)動(dòng)向量參考反向(后續(xù))錨圖片 (MV_Xb, MV_Yb) ο逐行掃描B-幀中的“跳過(guò)”宏塊信號(hào)表示對(duì)給定宏塊未出現(xiàn)運(yùn)動(dòng)向量預(yù)測(cè)誤差。 所預(yù)測(cè)的運(yùn)動(dòng)向量將精確地等同于編碼器/解碼器在重構(gòu)宏塊時(shí)使用的運(yùn)動(dòng)向量(即不應(yīng) 用運(yùn)動(dòng)向量預(yù)測(cè)誤差)。編碼器仍然用信號(hào)表示宏塊的預(yù)測(cè)模式,因?yàn)樵摵陦K可使用直接、 正向、反向或插值預(yù)測(cè)來(lái)跳過(guò)。V.對(duì)隔行掃描B-圖片的預(yù)測(cè)編碼/解碼的創(chuàng)新的縱覽各所述實(shí)施例包括用于編碼和解碼隔行掃描B-圖片(例如隔行掃描B-半幀、隔 行掃描B-幀)的技術(shù)和工具。各所述實(shí)施例實(shí)現(xiàn)所述用于編碼和/或解碼雙向預(yù)測(cè)的隔 行掃描圖片的技術(shù)和工具的一種或多種,如下包括但不限于1.對(duì)于隔行掃描B-幀,編碼器/解碼器在隔行掃描B-幀的宏塊中的上半幀和下 半幀之間切換預(yù)測(cè)模式。2.對(duì)于隔行掃描B-幀,編碼器/解碼器通過(guò)為先前解碼的時(shí)間后續(xù)錨的共處宏塊 的上和下半幀的每一個(gè)選擇一個(gè)代表性運(yùn)動(dòng)向量,計(jì)算當(dāng)前宏塊的直接模式運(yùn)動(dòng)向量。該選擇至少可部分地基于編碼當(dāng)前隔行掃描B-幀的宏塊的模式(例如IMV模式、2半幀MV模 式等)執(zhí)行。3.對(duì)于隔行掃描B-半幀或隔行掃描B-幀,編碼器/解碼器使用4MV編碼。例如,4MV可用于單向預(yù)測(cè)模式(正向或反向模式),但不用于其它可用預(yù)測(cè)模式(例如直接、插 值)。4.對(duì)于隔行掃描B-半幀或隔行掃描B-幀,正向運(yùn)動(dòng)向量使用來(lái)自正向運(yùn)動(dòng)向量 緩沖區(qū)的先前重構(gòu)(或估計(jì))的正向運(yùn)動(dòng)向量進(jìn)行預(yù)測(cè),而反向運(yùn)動(dòng)向量使用來(lái)自反向運(yùn) 動(dòng)向量緩沖區(qū)的先前重構(gòu)(或估計(jì))的反向運(yùn)動(dòng)向量進(jìn)行預(yù)測(cè)。結(jié)果的運(yùn)動(dòng)向量被添加到 相應(yīng)的緩沖區(qū)中,且運(yùn)動(dòng)向量緩沖區(qū)中的空穴可用估計(jì)的運(yùn)動(dòng)向量值來(lái)填充。a.對(duì)于隔行掃描B-幀,當(dāng)正向預(yù)測(cè)用來(lái)預(yù)測(cè)運(yùn)動(dòng)向量且運(yùn)動(dòng)向量被添加到正向 緩沖區(qū)中時(shí),反向緩沖區(qū)中的相應(yīng)位置以僅將反向運(yùn)動(dòng)向量用作預(yù)測(cè)值的預(yù)測(cè)運(yùn)動(dòng)向量來(lái) 填充(“空穴填充”)。類似地,當(dāng)反向預(yù)測(cè)用來(lái)預(yù)測(cè)運(yùn)動(dòng)向量且運(yùn)動(dòng)向量被添加到反向緩 沖區(qū)中時(shí),正向運(yùn)動(dòng)向量緩沖區(qū)中的相應(yīng)位置以僅將正向運(yùn)動(dòng)向量用作預(yù)測(cè)值的預(yù)測(cè)運(yùn)動(dòng) 向量來(lái)填充。b.對(duì)于隔行掃描B-半幀,要為空穴填充在不同極性的運(yùn)動(dòng)向量(例如“相同極性” 或“相反極性”)之間選擇,編碼器/解碼器選擇主極性半幀運(yùn)動(dòng)向量。錨和當(dāng)前幀之間的 距離使用各種語(yǔ)法元素計(jì)算,且計(jì)算出的距離被用于縮放參考半幀運(yùn)動(dòng)向量。5.對(duì)于隔行掃描的B-半幀,編碼器/解碼器使用“自參考”巾貞。例如,當(dāng)前幀中的 第二個(gè)B-半幀在運(yùn)動(dòng)補(bǔ)償預(yù)測(cè)中參考來(lái)自當(dāng)前幀的第一 B-半幀。6.對(duì)于隔行掃描的B-半幀,編碼器發(fā)送指示用于隔行掃描B-半幀中的一個(gè)或多 個(gè)宏塊的預(yù)測(cè)模式是正向還是非正向的二進(jìn)制信息(例如,在經(jīng)壓縮位平面的B-半幀級(jí)別 上)。解碼器執(zhí)行相應(yīng)的解碼。7.對(duì)于隔行掃描的B-半幀,如果下一錨圖片的相應(yīng)半幀中的相應(yīng)宏塊使用四個(gè) 運(yùn)動(dòng)向量編碼,則編碼器/解碼器使用利于主極性的邏輯來(lái)選擇直接模式的運(yùn)動(dòng)向量。8.幀內(nèi)編碼半幀當(dāng)沒(méi)有好的運(yùn)動(dòng)補(bǔ)償對(duì)B半幀可能時(shí),它可被編碼為幀內(nèi)(即 非預(yù)測(cè)的)B-半幀(“Bi-半幀”)。各種所述技術(shù)和工具可彼此組合、或與其它技術(shù)組合、或可單獨(dú)使用。VI.切換隔行掃描B-幀中半幀編碼宏塊內(nèi)的預(yù)測(cè)模式在一些實(shí)現(xiàn)中,編碼器在隔行掃描B-幀的宏塊內(nèi)執(zhí)行預(yù)測(cè)模式切換。例如,編碼 器允許在隔行掃描B-幀的宏塊中從上半幀去到下半幀時(shí),預(yù)測(cè)模式可從正向切換成反向, 或從反向切換成正向。與用一種預(yù)測(cè)方向模式編碼整個(gè)宏塊相反,預(yù)測(cè)方向模式的組合被 用來(lái)編碼單個(gè)宏塊。在宏塊的各個(gè)半幀中改變預(yù)測(cè)方向模式的能力在許多情形中導(dǎo)致隔行 掃描B-幀的更有效編碼。圖41示出使用不同預(yù)測(cè)模式預(yù)測(cè)隔行掃描B-幀的半幀編碼宏塊中的各個(gè)半幀的 運(yùn)動(dòng)向量的一種技術(shù)4100。在4110,在隔行掃描B-幀中,編碼器/解碼器使用第一預(yù)測(cè)模 式預(yù)測(cè)半幀編碼宏塊中第一半幀的運(yùn)動(dòng)向量。在一些實(shí)現(xiàn)中,該“第一半幀”可以是上半幀 或下半幀,對(duì)其的判定獨(dú)立地用信號(hào)表示。在4120,編碼器/解碼器使用一不同預(yù)測(cè)模式預(yù) 測(cè)同一宏塊中第二半幀的運(yùn)動(dòng)向量。例如,對(duì)于使用兩個(gè)運(yùn)動(dòng)向量半幀編碼的宏塊,上半幀可以是正向預(yù)測(cè)的(即,上半幀運(yùn)動(dòng)向量參考先前的錨圖片),而下半幀可以是反向預(yù)測(cè)的(即,下半幀參考后續(xù)的錨 圖片)。在一些實(shí)現(xiàn)中,隔行掃描B-幀中的半幀編碼宏塊不使用4個(gè)運(yùn)動(dòng)向量編碼。或者, 如果該宏塊使用4個(gè)運(yùn)動(dòng)向量進(jìn)行半幀編碼(例如每個(gè)半幀兩個(gè)運(yùn)動(dòng)向量),則上半幀的這 兩個(gè)運(yùn)動(dòng)向量將參考一個(gè)錨(正向或反向),而下半幀運(yùn)動(dòng)向量將參考另一個(gè)錨。這種預(yù)測(cè)模式的切換在該宏塊類型不是以直接或插值開始的情形中僅需一個(gè)附加比特,如在以下隔行掃描B-幀的偽碼中進(jìn)一步示出IfMB是半幀編碼的AND MB類型是正向或反向thenIfMVSwitch = Ithen預(yù)測(cè)模式在上半幀和下半幀之間切換(從正向到反向或反 之)因此,將預(yù)測(cè)模式切換限于正向和反向模式避免對(duì)用信號(hào)表示第二模式的更多比 特的需要,因?yàn)樵摰诙J綇牡谝荒J?在先前用信號(hào)表示的)和切換值中隱含。如果在由隔行掃描B-幀的宏塊覆蓋的區(qū)域中有較高運(yùn)動(dòng),則宏塊有可能用半幀 模式編碼。在這些情形中,正向或反向預(yù)測(cè)更可能比直接或插值模式(包括像素平均)給出 準(zhǔn)確的運(yùn)動(dòng)補(bǔ)償結(jié)果。因?yàn)樵谄交衅骄烁鱾€(gè)結(jié)果(例如損失了伴隨高運(yùn)動(dòng)的高頻率元 素),所以直接和插值模式并非是編碼這些宏塊的最佳方法。試驗(yàn)結(jié)果表明,因?yàn)樵诎霂?碼宏塊內(nèi)的半幀級(jí)別上將全部四種預(yù)測(cè)模式用信號(hào)表示為切換選項(xiàng)的增加開銷使其低效?;蛘?,編碼器可在隔行掃描B-幀的半幀編碼宏塊內(nèi)切換兩種以上的預(yù)測(cè)模式,或 可在不同預(yù)測(cè)模式之間切換。VII.計(jì)算隔行掃描B-幀中的直接模式運(yùn)動(dòng)向量在一些實(shí)現(xiàn)中,編碼器/解碼器緩存來(lái)自經(jīng)先前解碼錨的I-幀或P-幀(它是時(shí) 間上正向的參考幀,用作反向預(yù)測(cè)參考幀)的運(yùn)動(dòng)向量,并選擇一個(gè)或多個(gè)緩存運(yùn)動(dòng)向量, 以用于計(jì)算隔行掃描B-幀中當(dāng)前宏塊的直接模式運(yùn)動(dòng)向量。例如,編碼器/解碼器緩存來(lái) 自錨幀的每個(gè)宏塊的上半幀和下半幀的每一個(gè)的代表性運(yùn)動(dòng)向量,并使用一個(gè)或多個(gè)所緩 存的運(yùn)動(dòng)向量來(lái)計(jì)算當(dāng)前直接模式宏塊的運(yùn)動(dòng)向量。該選擇至少部分地基于當(dāng)前宏塊的編 碼模式執(zhí)行(例如IMV模式、2半幀MV模式等)。圖42示出用于在一實(shí)現(xiàn)中計(jì)算隔行掃描B-幀中宏塊的直接模式運(yùn)動(dòng)向量的一種 技術(shù)4200。在4210,編碼器/解碼器緩存在先前重構(gòu)的時(shí)間上將來(lái)的錨幀中共處宏塊的每 個(gè)宏塊的多個(gè)運(yùn)動(dòng)向量。如果該共處宏塊僅具有一個(gè)運(yùn)動(dòng)向量,則如果需要,該運(yùn)動(dòng)向量將 被緩存為共處宏塊的各個(gè)塊的運(yùn)動(dòng)向量值。在4220,編碼器/解碼器部分地依賴于當(dāng)前宏 塊所需運(yùn)動(dòng)向量的數(shù)量,選擇共處宏塊的一個(gè)或多個(gè)緩存運(yùn)動(dòng)向量,用于隔行掃描B-幀中 當(dāng)前宏塊的直接模式預(yù)測(cè)。在一實(shí)現(xiàn)中,解碼器緩存共處宏塊中的兩個(gè)運(yùn)動(dòng)向量,或緩存來(lái)自將來(lái)錨幀的最 大可能數(shù)量的經(jīng)解碼亮度運(yùn)動(dòng)向量的一半。錨幀中的各宏塊可用不同方法編碼,其中每個(gè) 宏塊最多達(dá)4個(gè)運(yùn)動(dòng)向量,但只能緩存最多達(dá)兩個(gè)運(yùn)動(dòng)向量,如下所述。而且,為當(dāng)前宏塊 產(chǎn)生的正向/反向運(yùn)動(dòng)向量對(duì)的數(shù)量取決于當(dāng)前宏塊的編碼模式,而不是僅僅取決于經(jīng)先 前解碼的將來(lái)錨幀的共處宏塊的編碼模式。例如,如果當(dāng)前直接模式宏塊是IMV編碼的,則解碼器從錨幀的共處宏塊的上半 幀中取得被緩存的運(yùn)動(dòng)向量,并產(chǎn)生一對(duì)直接運(yùn)動(dòng)向量-一個(gè)正向另一個(gè)反向。如果當(dāng)前 直接模式宏塊是半幀編碼的,則解碼器從錨幀的共處宏塊中取得被緩存的上半幀和下半幀運(yùn)動(dòng)向量,并產(chǎn)生兩對(duì)運(yùn)動(dòng)向量,一共有當(dāng)前直接模式宏塊的4個(gè)運(yùn)動(dòng)向量-對(duì)每個(gè)半幀都 有一個(gè)正向另一個(gè)反向的運(yùn)動(dòng)向量。圖43示出經(jīng)先前解碼的時(shí)間上將來(lái)的錨幀的共處宏塊4300的各個(gè)塊的運(yùn)動(dòng)向量 MV1、MV2、MV3和MV4。如果該共處宏塊是IMV宏塊,則MV1、MV2、MV3和MV4都相等。如果 該共處宏塊是2半幀MV宏塊,則MVl和MV2等于一個(gè)值,而MV3和MV4等于另一個(gè)值。如 果該錨幀的共處宏塊是4半幀MV或4幀MV宏塊,則MV1、MV2、MV3和MV4可能都是不同的 值。然而,即使MV1、MV2、MV3和MV4都可用,解碼器仍然僅緩存MVl和MV3。在圖43所示示例中,解碼器緩存MVl和MV3。如果當(dāng)前宏塊使用IMV模式,則解碼 器選擇MVl來(lái)計(jì)算當(dāng)前宏塊的正向和反向直接模式運(yùn)動(dòng)向量,并略去MV3。如果當(dāng)前宏塊使 用2半幀MV模式,則解碼器使用MVl和MV3來(lái)計(jì)算4個(gè)直接模式運(yùn)動(dòng)向量。該運(yùn)算產(chǎn)生當(dāng) 前宏塊的上下半幀的運(yùn)動(dòng)的良好表示。在已選擇來(lái)自錨幀中共處宏塊的運(yùn)動(dòng)向量時(shí),解碼器應(yīng)用縮放邏輯來(lái)導(dǎo)出相應(yīng)的 正向和反向指示運(yùn)動(dòng)向量,用于B幀宏塊的直接模式預(yù)測(cè)。例如,解碼器可應(yīng)用圖19中的 函數(shù)Scale_Direct_MV?;蛘?,解碼器應(yīng)用不同的縮放函數(shù)?;蛘撸幋a器/解碼器可緩存每個(gè)錨幀宏塊的4個(gè)運(yùn)動(dòng)向量。例如,如果當(dāng)前宏塊 是IMV編碼的,則編碼器/解碼器可取錨幀中共處宏塊的左上運(yùn)動(dòng)向量,并產(chǎn)生一對(duì)直接運(yùn) 動(dòng)向量,或者可取錨幀宏塊的4個(gè)運(yùn)動(dòng)向量的均值。如果當(dāng)前宏塊是半幀編碼的,則編碼器 /解碼器可取左上和左下運(yùn)動(dòng)向量,并產(chǎn)生兩對(duì)(一個(gè)半幀一對(duì)),或者可取錨幀宏塊的上 運(yùn)動(dòng)向量的均值和下運(yùn)動(dòng)向量的均值。當(dāng)錨幀中的共處宏塊為幀內(nèi)、或當(dāng)錨幀為I-幀時(shí),直接模式運(yùn)動(dòng)向量被視為(0, 0)。VIII.隔行掃描B-半幀和隔行掃描B-幀中的4MV編碼在一些實(shí)現(xiàn)中,編碼器使用4運(yùn)動(dòng)向量(4MV)編碼模式編碼隔行掃描的B-半幀和 隔行掃描的B-幀。4MV編碼可允許復(fù)雜運(yùn)動(dòng)軌跡的表示比1運(yùn)動(dòng)向量(IMV)編碼更準(zhǔn)確 (例如,通過(guò)允許宏塊中的4個(gè)亮度塊獨(dú)立地進(jìn)行預(yù)測(cè)和運(yùn)動(dòng)補(bǔ)償)。使用4MV可受限于某 些預(yù)測(cè)模式。例如,在一些實(shí)現(xiàn)中,編碼器將4MV用于正向和反向模式(包括半幀和幀變化 兩者),而不用于直接或插值模式。當(dāng)4MV不用于逐行掃描B-幀時(shí),這不同于逐行掃描編碼 模式。直接和插值模式涉及計(jì)算經(jīng)運(yùn)動(dòng)補(bǔ)償預(yù)測(cè)時(shí)的像素平均,它用于平滑細(xì)微細(xì)節(jié)。 如果這種平滑是可接受的,則可能可使用IMV模式而不是4MV模式,因?yàn)榫幋aIMV較容易, 且IMV可用來(lái)準(zhǔn)確地描述平滑運(yùn)動(dòng)軌跡。實(shí)驗(yàn)已顯示,在隔行掃描B-半幀和隔行掃描B-幀 的宏塊中使用4MV模式,而將4MV模式限于正向和反向預(yù)測(cè)宏塊中是有利的。有利于將4MV 限于正向和反向模式中的另一個(gè)因素是組合4MV與直接或插值模式將導(dǎo)致每種情形中一 共有8個(gè)運(yùn)動(dòng)向量。信號(hào)表示開銷(用于插值模式)和實(shí)現(xiàn)以及關(guān)聯(lián)于8個(gè)運(yùn)動(dòng)向量的解 碼復(fù)雜性通常抵銷了準(zhǔn)確性優(yōu)點(diǎn)。此外,當(dāng)通常在較高質(zhì)量設(shè)置上編碼的(即較不強(qiáng)烈量 化的)P_圖片通??蓛H將一個(gè)或四個(gè)運(yùn)動(dòng)向量用于運(yùn)動(dòng)補(bǔ)償時(shí),用8個(gè)運(yùn)動(dòng)向量來(lái)編碼隔 行掃描B-圖片通常是不實(shí)用的。將4MV限于某些預(yù)測(cè)模式還具有其它優(yōu)點(diǎn)。例如,如果4MV僅限于正向和反向預(yù)測(cè)模式,并且如果正向/非正向模式?jīng)Q定已用信號(hào)表示(例如用諸如在以下XI節(jié)所述的位平面編碼技術(shù)),編碼器無(wú)需發(fā)送任何附加比特來(lái)用信號(hào)表示4MV宏塊的預(yù)測(cè)模式。
以下偽碼可應(yīng)用于隔行掃描B-半幀的宏塊,其中正向/非正向決定是位平面編碼 的,并在任何宏塊級(jí)別信息之前發(fā)送(例如在圖片級(jí)別上發(fā)送)
IfMB是4MV編碼的AND預(yù)測(cè)模式是非正向的then預(yù)測(cè)模式=反向(不發(fā)送任何更多比特來(lái)用信號(hào)表示模式)在一些實(shí)現(xiàn)中,直接/非直接預(yù)測(cè)模式?jīng)Q定在任何宏塊級(jí)別信息之前發(fā)送(例如在圖片級(jí)別上的經(jīng)壓縮位平面中)。(對(duì)于有關(guān)編碼直接/非直接信息的更多信息,參見 序列號(hào)為 10/622,378 的題為"Advanced Bi-Directional Predictive Coding ofVideo Frames”(視頻幀的高級(jí)雙向預(yù)測(cè)編碼)并于2003年7月18日提交的美國(guó)專利申請(qǐng)。)以 下偽碼可應(yīng)用于隔行掃描B-幀的宏塊,其中4MV在這些實(shí)現(xiàn)中受限于正向和反向模式If MB是4MV編碼的AND預(yù)測(cè)模式是非正向的then發(fā)送一附加比特來(lái)用信號(hào)表示預(yù)測(cè)模式(正向或反向)或者,4MV用于不同于或除正向或反向模式之外的預(yù)測(cè)模式、不用于正向模式、不 用于反向模式、或不用于任何預(yù)測(cè)模式。例如,在一些實(shí)現(xiàn)中,4MV用于隔行掃描B-半幀, 但不用于隔行掃描B-幀。在其它可選實(shí)現(xiàn)中,其它代碼或代碼長(zhǎng)度可用于用信號(hào)表示結(jié)合 4MV編碼的預(yù)測(cè)模式。IX.使用分開的正向和反向運(yùn)動(dòng)向量緩沖區(qū)來(lái)預(yù)測(cè)隔行掃描B-圖片中的運(yùn)動(dòng)向隔行掃描B-圖片的運(yùn)動(dòng)向量使用分開的正向和反向運(yùn)動(dòng)向量上下文來(lái)預(yù)測(cè)。一 般而言,正向運(yùn)動(dòng)向量使用存儲(chǔ)在正向運(yùn)動(dòng)向量緩沖區(qū)中的運(yùn)動(dòng)向量來(lái)預(yù)測(cè),而反向運(yùn)動(dòng) 向量使用存儲(chǔ)在反向運(yùn)動(dòng)向量緩沖區(qū)中的運(yùn)動(dòng)向量來(lái)預(yù)測(cè)。然后當(dāng)前宏塊的結(jié)果運(yùn)動(dòng)向量 存儲(chǔ)在適當(dāng)?shù)木彌_區(qū)中,并可用于其它宏塊的后續(xù)運(yùn)動(dòng)向量預(yù)測(cè)值中。通常,正向和反向運(yùn) 動(dòng)向量緩沖區(qū)中的相應(yīng)空間都為每個(gè)宏塊填充,即使給定宏塊僅用正向運(yùn)動(dòng)向量(在正向 預(yù)測(cè)宏塊的情形中)或僅用反向運(yùn)動(dòng)向量(在反向預(yù)測(cè)宏塊的情形中)預(yù)測(cè)。以下各節(jié)描 述用于預(yù)測(cè)隔行掃描B-圖片(如,隔行掃描B-半巾貞,隔行掃描B-幀)中的運(yùn)動(dòng)向量,以及 用于為“遺漏”的正向或反向運(yùn)動(dòng)向量“填充”運(yùn)動(dòng)向量緩沖區(qū)中的相應(yīng)空間的技術(shù)。A.正向和反向緩沖區(qū)當(dāng)預(yù)測(cè)隔行掃描B-圖片的運(yùn)動(dòng)向量時(shí),編碼器/解碼器使用正向運(yùn)動(dòng)向量緩沖區(qū) 和/或反向運(yùn)動(dòng)向量緩沖區(qū)中的先前重構(gòu)的運(yùn)動(dòng)向量。在正向模式中,編碼器/解碼器使 用來(lái)自正向運(yùn)動(dòng)向量緩沖區(qū)的經(jīng)重構(gòu)正向運(yùn)動(dòng)向量,來(lái)預(yù)測(cè)用于正向運(yùn)動(dòng)補(bǔ)償?shù)漠?dāng)前運(yùn)動(dòng) 向量。在反向模式中,編碼器/解碼器使用來(lái)自反向運(yùn)動(dòng)向量緩沖區(qū)的經(jīng)重構(gòu)反向運(yùn)動(dòng)向 量,來(lái)預(yù)測(cè)用于反向運(yùn)動(dòng)補(bǔ)償?shù)漠?dāng)前運(yùn)動(dòng)向量。對(duì)于直接模式或插值模式宏塊,編碼器/解 碼器使用正向運(yùn)動(dòng)向量緩沖區(qū)來(lái)預(yù)測(cè)正向運(yùn)動(dòng)向量分量(或可能多個(gè)正向運(yùn)動(dòng)分量),并 使用反向運(yùn)動(dòng)向量緩沖區(qū)來(lái)預(yù)測(cè)反向運(yùn)動(dòng)向量分量(或可能多個(gè)反向運(yùn)動(dòng)分量)。在重構(gòu)隔行掃描B-圖片的運(yùn)動(dòng)向量之后,編碼器/解碼器將重構(gòu)后的正向運(yùn)動(dòng)向 量緩存在正向運(yùn)動(dòng)向量緩沖區(qū)中,并將重構(gòu)后的反向運(yùn)動(dòng)向量緩存在反向運(yùn)動(dòng)向量緩沖區(qū) 中。在正向模式中,編碼器/解碼器將重構(gòu)后的正向運(yùn)動(dòng)向量存儲(chǔ)在正向運(yùn)動(dòng)向量緩沖區(qū) 中。在反向模式中,編碼器/解碼器將重構(gòu)后的反向運(yùn)動(dòng)向量存儲(chǔ)在反向運(yùn)動(dòng)向量緩沖區(qū) 中。對(duì)于使用直接或插值預(yù)測(cè)模式的宏塊,編碼器/解碼器將(各)正向運(yùn)動(dòng)向量分量存儲(chǔ)在正向運(yùn)動(dòng)向量緩沖區(qū)中,并將(各)反向運(yùn)動(dòng)向量分量存儲(chǔ)在反向運(yùn)動(dòng)向量緩沖區(qū)中。例如,如果編碼器在隔行掃描B-圖片中的宏塊坐標(biāo)位置(12,13)上編碼正向預(yù)測(cè)宏塊時(shí),則編碼器計(jì)算正向運(yùn)動(dòng)向量預(yù)測(cè)值并在比特流中發(fā)送該正向運(yùn)動(dòng)向量的殘差(假 設(shè)該宏塊未被“跳過(guò)”)。解碼器解碼該殘差(即差值),并重構(gòu)運(yùn)動(dòng)向量。編碼器/解碼器 將重構(gòu)后的運(yùn)動(dòng)向量插入正向運(yùn)動(dòng)向量緩沖區(qū)。然后編碼器/解碼器使用運(yùn)動(dòng)向量預(yù)測(cè)邏 輯來(lái)計(jì)算要填充反向運(yùn)動(dòng)向量的反向運(yùn)動(dòng)向量預(yù)測(cè)值,并將反向運(yùn)動(dòng)向量置于反向運(yùn)動(dòng)向 量緩沖區(qū)中的位置(12,13)上。例如,在三者中值的預(yù)測(cè)情形中,編碼器/解碼器可取位置 (11,13)、(12,12)和(13,12)上的緩存反向運(yùn)動(dòng)向量的中值(當(dāng)前正向預(yù)測(cè)宏塊的左、上、 右上鄰居),來(lái)填充(12,13)的反向運(yùn)動(dòng)向量。圖44示出使用正向和/或反向運(yùn)動(dòng)向量緩沖區(qū)來(lái)預(yù)測(cè)隔行掃描B-圖片中當(dāng)前宏 塊的運(yùn)動(dòng)向量的一種技術(shù)4400。在4410,取決于要預(yù)測(cè)的運(yùn)動(dòng)向量是正向還是反向運(yùn)動(dòng)向 量,編碼器/解碼器選擇使用正向還是反向運(yùn)動(dòng)向量緩沖區(qū)。如果當(dāng)前運(yùn)動(dòng)向量是正向運(yùn) 動(dòng)向量,則編碼器/解碼器在4420從正向運(yùn)動(dòng)向量緩沖區(qū)選擇一個(gè)候選運(yùn)動(dòng)向量預(yù)測(cè)值 集。如果當(dāng)前運(yùn)動(dòng)向量是反向運(yùn)動(dòng)向量,則編碼器/解碼器在4430從反向運(yùn)動(dòng)向量緩沖區(qū) 選擇一個(gè)候選運(yùn)動(dòng)向量預(yù)測(cè)值集。在4440,編碼器/解碼器基于候選運(yùn)動(dòng)向量預(yù)測(cè)值集計(jì) 算運(yùn)動(dòng)向量預(yù)測(cè)值。例如,編碼器/解碼器計(jì)算候選運(yùn)動(dòng)向量預(yù)測(cè)值集的中值。在簡(jiǎn)單情形 中,編碼器/解碼器基于都是IMV宏塊的預(yù)測(cè)值計(jì)算IMV當(dāng)前宏塊的運(yùn)動(dòng)向量預(yù)測(cè)值。更 復(fù)雜的變化描述如下,其中當(dāng)前宏塊和/或鄰居宏塊具有不同模式。圖45示出正向運(yùn)動(dòng)向量緩沖區(qū)4510和反向運(yùn)動(dòng)向量緩沖區(qū)4520中的運(yùn)動(dòng)向量。 在圖45所示示例中,對(duì)于重構(gòu)宏塊4530-4570,編碼器/解碼器將正向運(yùn)動(dòng)向量存儲(chǔ)在正向 運(yùn)動(dòng)向量緩沖區(qū)4510中,并將反向運(yùn)動(dòng)向量存儲(chǔ)在反向運(yùn)動(dòng)向量緩沖區(qū)4520中。為了預(yù) 測(cè)當(dāng)前宏塊4580的運(yùn)動(dòng)向量,編碼器/解碼器使用來(lái)自相鄰宏塊的候選預(yù)測(cè)值。例如,如 果當(dāng)前宏塊4580用正向模式預(yù)測(cè),則編碼器使用正向運(yùn)動(dòng)向量緩沖區(qū)中的相鄰正向運(yùn)動(dòng) 向量來(lái)預(yù)測(cè)正向運(yùn)動(dòng)向量(例如使用三者中值預(yù)測(cè)),隨后用重構(gòu)后的運(yùn)動(dòng)向量值填充正 向運(yùn)動(dòng)向量緩沖區(qū)中的當(dāng)前宏塊位置。為了填充反向運(yùn)動(dòng)向量緩沖區(qū)4520中的相應(yīng)當(dāng)前 宏塊位置,編碼器/解碼器可使用反向運(yùn)動(dòng)向量緩沖區(qū)中的相鄰反向運(yùn)動(dòng)向量來(lái)預(yù)測(cè)反向 運(yùn)動(dòng)向量,并將該預(yù)測(cè)值置于反向運(yùn)動(dòng)向量緩沖區(qū)的當(dāng)前宏塊的位置中。B.隔行掃描B-幀中的運(yùn)動(dòng)向量預(yù)測(cè)在一些實(shí)現(xiàn)中,編碼器/解碼器采用以下方案來(lái)預(yù)測(cè)隔行掃描B-幀中宏塊(包括 其不同半幀)的運(yùn)動(dòng)向量,它使用分開的正向和反向運(yùn)動(dòng)向量上下文。圖40A-40B示出從 中收集候選運(yùn)動(dòng)向量的相鄰宏塊。如果IMV宏塊是正向預(yù)測(cè)的,則編碼器/解碼器從正向運(yùn)動(dòng)向量緩沖區(qū)的候選運(yùn) 動(dòng)向量中預(yù)測(cè)其正向運(yùn)動(dòng)向量(例如使用諸如圖40A和40B中或別處示出的三者中值預(yù)測(cè) 和預(yù)測(cè)模式)。編碼器/解碼器(在添加運(yùn)動(dòng)向量預(yù)測(cè)誤差后)將該正向運(yùn)動(dòng)向量存儲(chǔ)在 正向運(yùn)動(dòng)向量緩沖區(qū)中。編碼器/解碼器通過(guò)從反向運(yùn)動(dòng)向量緩沖區(qū)的候選運(yùn)動(dòng)向量中預(yù) 測(cè)反向運(yùn)動(dòng)向量來(lái)填充“空穴”(例如與正向預(yù)測(cè)情形中一樣),并將該反向運(yùn)動(dòng)向量(在 此為預(yù)測(cè)值)存儲(chǔ)在反向運(yùn)動(dòng)向量緩沖區(qū)中。如果IMV宏塊是反向預(yù)測(cè)的,則編碼器/解碼器從反向運(yùn)動(dòng)向量緩沖區(qū)的候選運(yùn) 動(dòng)向量中預(yù)測(cè)其反向運(yùn)動(dòng)向量(例如與正向預(yù)測(cè)情形中一樣)。編碼器/解碼器(在添加預(yù)測(cè)誤差后)將該反向運(yùn)動(dòng)向量存儲(chǔ)在反向運(yùn)動(dòng)向量緩沖區(qū)中。編碼器/解碼器通過(guò)從正 向運(yùn)動(dòng)向量緩沖區(qū)的候選運(yùn)動(dòng)向量中預(yù)測(cè)正向運(yùn)動(dòng)向量來(lái)填充“空穴”,并將該正向運(yùn)動(dòng)向 量(在此為預(yù)測(cè)值)存儲(chǔ)在正向運(yùn)動(dòng)向量緩沖區(qū)中。在正向和反向運(yùn)動(dòng)向量緩沖區(qū)中略去作為幀內(nèi)編碼宏塊的鄰居。各種特定情形確定隔行掃描B-幀中IMV和半幀編碼2MV宏塊的組合。如果當(dāng)前IMV宏塊的位置A、B或C中的相鄰宏塊是半幀編碼的2MV宏塊,則編碼器/解碼器取2MV宏 塊的半幀運(yùn)動(dòng)向量的均值作為該位置的運(yùn)動(dòng)向量預(yù)測(cè)值。對(duì)于正向預(yù)測(cè)的當(dāng)前2半幀MV宏塊,例如對(duì)于兩個(gè)正向預(yù)測(cè)半幀運(yùn)動(dòng)向量的每一 個(gè),來(lái)自鄰居的候選運(yùn)動(dòng)向量從正向運(yùn)動(dòng)向量緩沖區(qū)中收集。編碼器/解碼器基于相鄰宏 塊的編碼模式(例如幀內(nèi)、1MV、2半幀MV)選擇一個(gè)候選運(yùn)動(dòng)向量集,這些相鄰宏塊存儲(chǔ)在 正向運(yùn)動(dòng)向量緩沖區(qū)中。如果相鄰宏塊存在且不是幀內(nèi)編碼的,則編碼器/解碼器注意該 宏塊的運(yùn)動(dòng)向量以添加到候選集中去。在一些實(shí)施例中,編碼器/解碼器繼續(xù)如下動(dòng)作。對(duì) 于上半幀正向運(yùn)動(dòng)向量,如果位置A、B或C中的相鄰宏塊是IMV宏塊,則編碼器將來(lái)自正向 運(yùn)動(dòng)向量緩沖區(qū)的相應(yīng)位置的宏塊的運(yùn)動(dòng)向量添加到候選集中。對(duì)于是2半幀MV宏塊的 位置A、B或C中的相鄰宏塊,編碼器/解碼器將來(lái)自正向運(yùn)動(dòng)向量緩沖區(qū)的相應(yīng)位置的上 半幀MV添加到該集中。對(duì)于下半幀正向運(yùn)動(dòng)向量,如果位置A、B或C中的相鄰宏塊是IMV宏塊,則編碼器 將來(lái)自正向運(yùn)動(dòng)向量緩沖區(qū)的相應(yīng)位置的宏塊的運(yùn)動(dòng)向量添加到候選集中。對(duì)于是2半幀 MV宏塊的位置A、B或C中的相鄰宏塊,編碼器/解碼器將來(lái)自正向運(yùn)動(dòng)向量緩沖區(qū)的相應(yīng) 位置的下半幀MV添加到該集中。為了計(jì)算2半幀MV宏塊的半幀運(yùn)動(dòng)向量的預(yù)測(cè)值,編碼器/解碼器然后計(jì)算候選 集的中值。為了計(jì)算2半幀MV宏塊的反向預(yù)測(cè)運(yùn)動(dòng)向量,邏輯與正向預(yù)測(cè)情形相同,但來(lái)自 鄰居的候選運(yùn)動(dòng)向量是從反向運(yùn)動(dòng)向量緩沖區(qū)中收集的。再一次,對(duì)于運(yùn)動(dòng)向量預(yù)測(cè),略去位置A、B或C中幀內(nèi)編碼的鄰居。在重構(gòu)2半幀MV宏塊的運(yùn)動(dòng)向量之后(例如通過(guò)添加運(yùn)動(dòng)向量差值信息),重構(gòu) 后的實(shí)際運(yùn)動(dòng)向量按適合重構(gòu)后運(yùn)動(dòng)向量的預(yù)測(cè)方向,被置入正向運(yùn)動(dòng)向量緩沖區(qū)或反向 運(yùn)動(dòng)向量緩沖區(qū)。運(yùn)動(dòng)向量緩沖區(qū)的用于缺少方向的相應(yīng)空槽通過(guò)計(jì)算缺少方向的運(yùn)動(dòng)向 量預(yù)測(cè)值并將該運(yùn)動(dòng)向量預(yù)測(cè)值存儲(chǔ)在空槽中來(lái)填充。如果使用預(yù)測(cè)模式切換(參見以上VI節(jié)),一例外牽涉到隔行掃描B-幀內(nèi)半幀編 碼宏塊的空穴填充。在該情形中,給定半幀編碼的2MV宏塊具有一個(gè)正向運(yùn)動(dòng)向量和一個(gè) 反向運(yùn)動(dòng)向量。在重構(gòu)隔行掃描B-幀的半幀編碼宏塊之后,在半幀編碼宏塊在上半幀和下 半幀之間切換預(yù)測(cè)方向時(shí),編碼器/解碼器用正向運(yùn)動(dòng)向量填充正向運(yùn)動(dòng)向量緩沖區(qū)的上 下運(yùn)動(dòng)向量“槽”,并用反向運(yùn)動(dòng)向量填充反向緩沖區(qū)的上下運(yùn)動(dòng)向量槽。盡管正向運(yùn)動(dòng)向 量?jī)H對(duì)一個(gè)半幀(例如上半幀)發(fā)送,編碼器將同一運(yùn)動(dòng)向量置入正向運(yùn)動(dòng)向量緩沖區(qū)的 上下半幀運(yùn)動(dòng)向量槽。類似地,盡管反向運(yùn)動(dòng)向量?jī)H對(duì)下半幀發(fā)送,編碼器將它置入反向運(yùn) 動(dòng)向量緩沖區(qū)的上下半幀槽。例如,圖46示出正向運(yùn)動(dòng)向量緩沖區(qū)4610和反向運(yùn)動(dòng)向量緩沖區(qū)4620中重構(gòu) 宏塊4680的上下半幀的運(yùn)動(dòng)向量。在圖46所示示例中,對(duì)于重構(gòu)宏塊4630-4670,編碼器/解碼器將正向運(yùn)動(dòng)向量存儲(chǔ)在正向運(yùn)動(dòng)向量緩沖區(qū)4610中,并將反向運(yùn)動(dòng)向量存儲(chǔ)在反 向緩沖區(qū)4620中。重構(gòu)宏塊4680是用預(yù)測(cè)切換進(jìn)行半幀編碼的,且其上半幀運(yùn)動(dòng)向量被 存儲(chǔ)在正向或反向運(yùn)動(dòng)向量緩沖區(qū)中(取決于上半幀運(yùn)動(dòng)向量的預(yù)測(cè)方向)的上下位置。 宏塊4680的下半幀運(yùn)動(dòng)向量被存儲(chǔ)在其它運(yùn)動(dòng)向量緩沖區(qū)的上下位置中。在該示例中,重 構(gòu)宏塊4680使用預(yù)測(cè)模式切換。盡管正向運(yùn)動(dòng)向量和方向運(yùn)動(dòng)向量都僅對(duì)一個(gè)半幀發(fā)送, 但編碼器將同一運(yùn)動(dòng)向量置入相應(yīng)正向和反向運(yùn)動(dòng)向量緩沖區(qū)的上下半幀運(yùn)動(dòng)向量槽中。如果當(dāng)前宏塊被插值,則編碼器/解碼器使用正向運(yùn)動(dòng)向量緩沖區(qū)來(lái)預(yù)測(cè)正向運(yùn) 動(dòng)向量(或2半幀MV宏塊的正向運(yùn)動(dòng)向量),使用反向運(yùn)動(dòng)向量緩沖區(qū)來(lái)預(yù)測(cè)反向運(yùn)動(dòng)向量(或2半幀MV宏塊的反向運(yùn)動(dòng)向量),并(在添加了 一計(jì)算好就添加的預(yù)測(cè)誤差之后) 將該正向和反向運(yùn)動(dòng)向量分別存儲(chǔ)在正向和反向運(yùn)動(dòng)向量緩沖區(qū)中。如果宏塊是在隔行掃描B-幀中直接預(yù)測(cè)的,則編碼器/解碼器可使用以上VII節(jié) 描述的技術(shù)。在一些實(shí)現(xiàn)中,IMV宏塊、2半幀MV宏塊和幀內(nèi)宏塊被允許用于隔行掃描B-幀(但 不是其它MV宏塊類型),因?yàn)橹恍枰_定較少的當(dāng)前/鄰居模式組合而簡(jiǎn)化了用于預(yù)測(cè)運(yùn) 動(dòng)向量的邏輯?;蛘撸试S其它和/或附加MV模式,諸如4幀MV宏塊和4半幀MV宏塊。例 如,圖64、69和70中示出的偽碼的一部分可用來(lái)確定隔行掃描B-幀的這種其它組合。C.隔行掃描B-半幀的運(yùn)動(dòng)向量預(yù)測(cè)一般而言,對(duì)于隔行掃描B-半幀,先前重構(gòu)(或?qū)С?的正向半幀運(yùn)動(dòng)向量被用 作當(dāng)前正向半幀運(yùn)動(dòng)向量的預(yù)測(cè)值,且先前重構(gòu)(或?qū)С?的反向半幀運(yùn)動(dòng)向量被用作當(dāng) 前反向半幀運(yùn)動(dòng)向量的預(yù)測(cè)值。在正向或反向模式中,當(dāng)前正向或反向半幀的運(yùn)動(dòng)向量被 添加到適當(dāng)?shù)倪\(yùn)動(dòng)向量緩沖區(qū)中,且另一(缺少)方向的運(yùn)動(dòng)向量(例如正向模式中的反 向方向,或反向模式中的正向方向)被導(dǎo)出用作將來(lái)使用的預(yù)測(cè)值。在一些實(shí)現(xiàn)中,半幀運(yùn)動(dòng)向量預(yù)測(cè)選擇根據(jù)以上III. A. 2節(jié)的詳細(xì)描述和以下 XIV. B. 3節(jié)描述的雙參考半幀運(yùn)動(dòng)向量預(yù)測(cè)邏輯進(jìn)行。例如,圖33A-33F中示出的偽碼用 來(lái)計(jì)算隔行掃描B-半幀的宏塊的兩個(gè)半幀的正向運(yùn)動(dòng)向量預(yù)測(cè)值,且一個(gè)運(yùn)動(dòng)向量預(yù)測(cè) 值被選擇用于重構(gòu)正向半幀的運(yùn)動(dòng)向量。然后將重構(gòu)的運(yùn)動(dòng)向量置于正向運(yùn)動(dòng)向量緩沖區(qū) 中。該偽碼也用來(lái)計(jì)算該宏塊的兩個(gè)半幀的反向運(yùn)動(dòng)向量預(yù)測(cè)值,且一個(gè)預(yù)測(cè)值被選擇用 作反向運(yùn)動(dòng)向量緩沖區(qū)的填充值。對(duì)于隔行掃描B-半幀,為了填充缺少方向的運(yùn)動(dòng)向量緩 沖區(qū)中的“空穴”,編碼器/解碼器在相同極性和相反極性的運(yùn)動(dòng)向量預(yù)測(cè)值之間選擇。這 種極性之間的選擇因?yàn)閮蓚€(gè)預(yù)測(cè)值在給定缺少方向中產(chǎn)生_ 一個(gè)與當(dāng)前半幀極性相同,另 一個(gè)與當(dāng)前半幀極性相反。因此,在一些實(shí)現(xiàn)中,編碼器/解碼器選擇用于缺少方向運(yùn)動(dòng)向 量的主要或“主”極性預(yù)測(cè)值。這樣,正向和方向運(yùn)動(dòng)向量的完整集就被提供用于運(yùn)動(dòng)向量 預(yù)測(cè)。或者,確定主極性、首先進(jìn)行預(yù)測(cè)值選擇、并只計(jì)算選定運(yùn)動(dòng)向量預(yù)測(cè)值。在一實(shí)現(xiàn)中通過(guò)從不同極性的半幀運(yùn)動(dòng)向量預(yù)測(cè)值中選擇來(lái)進(jìn)行實(shí)際值緩存和 空穴填充的過(guò)程如圖47中的偽碼4700所示。偽碼4700示出,在空穴填充預(yù)測(cè)期間,沒(méi)有 實(shí)際運(yùn)動(dòng)向量被提供為缺少方向,因此具有主極性的經(jīng)預(yù)測(cè)的缺少方向運(yùn)動(dòng)向量由編碼器 /解碼器來(lái)選擇。在一些實(shí)現(xiàn)中,隔行掃描B-半幀的運(yùn)動(dòng)向量預(yù)測(cè)的整個(gè)方案如下所述。如果宏塊是正向預(yù)測(cè)的,則編碼器/解碼器從正向運(yùn)動(dòng)向量緩沖區(qū)的候選相同和/或相反極性運(yùn)動(dòng)向量(例如大多數(shù)情形中使用來(lái)自左、上和右上鄰居的三者中值預(yù)測(cè))或 從緩存運(yùn)動(dòng)向量中導(dǎo)出的運(yùn)動(dòng)向量中預(yù)測(cè)其正向運(yùn)動(dòng)向量。編碼器/解碼器將重構(gòu)后的正 向運(yùn)動(dòng)向量存儲(chǔ)在正向運(yùn)動(dòng)向量緩沖區(qū)中,計(jì)算主反向運(yùn)動(dòng)向量預(yù)測(cè)值(類似于用來(lái)自反 向運(yùn)動(dòng)向量緩沖區(qū)的空間鄰域的三者中值預(yù)測(cè)的),并將其存儲(chǔ)在反向運(yùn)動(dòng)向量緩沖區(qū)中 的相應(yīng)位置。如果宏塊是反向預(yù)測(cè)的,則編碼器/解碼器從反向運(yùn)動(dòng)向量緩沖區(qū)的候選相同和/或相反極性運(yùn)動(dòng)向量(例如大多數(shù)情形中使用來(lái)自左、上和右上鄰居的三者中值預(yù)測(cè))或 從緩存運(yùn)動(dòng)向量中導(dǎo)出的運(yùn)動(dòng)向量中預(yù)測(cè)其反向運(yùn)動(dòng)向量。編碼器/解碼器將重構(gòu)后的反 向運(yùn)動(dòng)向量存儲(chǔ)在反向運(yùn)動(dòng)向量緩沖區(qū)中,計(jì)算主正向運(yùn)動(dòng)向量預(yù)測(cè)值(類似于用來(lái)自正 向運(yùn)動(dòng)向量緩沖區(qū)的空間鄰域的三者中值預(yù)測(cè)的),并將其存儲(chǔ)在正向運(yùn)動(dòng)向量緩沖區(qū)中 的相應(yīng)位置。如果該宏塊是插值的,則編碼器/解碼器使用正向運(yùn)動(dòng)向量緩沖區(qū)來(lái)預(yù)測(cè)正向運(yùn) 動(dòng)向量分量,使用反向運(yùn)動(dòng)向量緩沖區(qū)來(lái)預(yù)測(cè)反向運(yùn)動(dòng)向量分量,并(在添加了一計(jì)算好 就添加的預(yù)測(cè)誤差之后)將重構(gòu)后的正向和反向運(yùn)動(dòng)向量分別存儲(chǔ)在正向和反向運(yùn)動(dòng)向 量緩沖區(qū)中。如果宏塊是直接預(yù)測(cè)的,則編碼器/解碼器計(jì)算當(dāng)前半幀的直接模式運(yùn)動(dòng)向量, 并將正向和反向運(yùn)動(dòng)向量分量存儲(chǔ)在相應(yīng)的運(yùn)動(dòng)向量緩沖區(qū)中。在運(yùn)動(dòng)向量預(yù)測(cè)中,略去位置A、B或C中幀內(nèi)編碼的鄰居。各種特定情形確定隔行掃描B-半幀中IMV和4MV宏塊的組合。圖6A-10示出用 于逐行掃描P-幀的運(yùn)動(dòng)向量預(yù)測(cè)的預(yù)測(cè)值模式。這些相同模式示出被視為用于混合MV的 隔行掃描B-半幀的IMV或4MV宏塊的運(yùn)動(dòng)向量的運(yùn)動(dòng)向量預(yù)測(cè)的候選運(yùn)動(dòng)向量的塊或宏 塊的位置。對(duì)于幀是一個(gè)宏塊寬的特定情形,預(yù)測(cè)值總是Predicator A(頂部預(yù)測(cè)值)。各 種其它規(guī)則解決其它特定情形,諸如首行4MV宏塊、首行IMV宏塊、和幀內(nèi)編碼預(yù)測(cè)值。圖6A-10中所示的預(yù)測(cè)值模式用來(lái)使用來(lái)自正向運(yùn)動(dòng)向量緩沖區(qū)中各位置的候 選值進(jìn)行正向預(yù)測(cè),并使用來(lái)自反向運(yùn)動(dòng)向量緩沖區(qū)中位置的候選值進(jìn)行反向預(yù)測(cè)。此外, 圖6A-10中所示的預(yù)測(cè)值模式結(jié)合以上所述的對(duì)隔行掃描B-半幀的雙參考半幀運(yùn)動(dòng)向量 預(yù)測(cè)邏輯來(lái)使用。圖6A和6B示出被視作用于混合MV的隔行掃描B-半幀中的IMV當(dāng)前宏塊的候選 運(yùn)動(dòng)向量預(yù)測(cè)值的塊的位置。相鄰的各個(gè)宏塊可以是IMV或4MV宏塊。圖6A和6B示出假 設(shè)鄰居是4MV的候選運(yùn)動(dòng)向量的位置(即預(yù)測(cè)值A(chǔ)是當(dāng)前宏塊上面的宏塊中塊2的運(yùn)動(dòng)向 量,而預(yù)測(cè)值C是當(dāng)前宏塊左側(cè)緊鄰的宏塊中塊1的運(yùn)動(dòng)向量)。如果鄰居的任一個(gè)是IMV 宏塊,則圖5A和5B中示出的運(yùn)動(dòng)向量預(yù)測(cè)值被視為整個(gè)宏塊的運(yùn)動(dòng)向量預(yù)測(cè)值。如圖6B 所示,如果宏塊是該行中的最后一個(gè)宏塊,則預(yù)測(cè)值B來(lái)自左上方宏塊的塊3而不像其它情 形一樣來(lái)自右上方宏塊的塊2。圖7A-10示出被視作用于混合MV的隔行掃描B-半幀的4MV宏塊中4個(gè)亮度塊的 每一個(gè)的候選運(yùn)動(dòng)向量預(yù)測(cè)值的塊的位置。圖7A和7B是示出被視作用于位置O上一個(gè)塊 的候選運(yùn)動(dòng)向量預(yù)測(cè)值的塊的位置的示圖;圖8A和8B是示出被視作用于位置1上一個(gè)塊 的候選運(yùn)動(dòng)向量預(yù)測(cè)值的塊的位置的示圖;圖9是示出被視作用于位置2上一個(gè)塊的候選 運(yùn)動(dòng)向量預(yù)測(cè)值的塊的位置的示圖;而圖10是示出被視作用于位置3上一個(gè)塊的候選運(yùn)動(dòng)向量預(yù)測(cè)值的塊的位置的示圖。再一次,如果鄰居是IMV宏塊,則該宏塊的運(yùn)動(dòng)向量預(yù)測(cè)值 用于該宏塊的各個(gè)塊。對(duì)于宏塊是行中第一宏塊的情形,塊0的預(yù)測(cè)值B與該行中剩余宏塊的塊0進(jìn)行 不同的處理(參見圖7A和7B)。在該情形中,預(yù)測(cè)值B從當(dāng)前宏塊上面緊鄰宏塊的塊3中 取得,而不像其它情形一樣從當(dāng)前宏塊左上方的宏塊的塊3中取得。類似地,對(duì)于宏塊是行 中最后一個(gè)宏塊的情形,塊1的預(yù)測(cè)值B進(jìn)行不同的處理(參見圖8A和8B)。在該情形中, 預(yù)測(cè)值從當(dāng)前宏塊上面緊鄰宏塊的塊2中取得,而不像其它情形一樣從當(dāng)前宏塊右上方的 宏塊的塊2中取得。一般而言,如果該宏塊在第一宏塊列中,則塊0和2的預(yù)測(cè)值C被設(shè)置 為等于0。再一次,對(duì)于運(yùn)動(dòng)向量預(yù)測(cè),略去位置A、B或C中幀內(nèi)編碼的鄰居。在重構(gòu)4MV宏塊的運(yùn)動(dòng)向量之后(例如通過(guò)添加運(yùn)動(dòng)向量差值信息),重構(gòu)后的實(shí) 際運(yùn)動(dòng)向量按適合重構(gòu)后運(yùn)動(dòng)向量的預(yù)測(cè)方向,被置入正向運(yùn)動(dòng)向量緩沖區(qū)或反向運(yùn)動(dòng)向 量緩沖區(qū)。運(yùn)動(dòng)向量緩沖區(qū)的用于缺少方向的相應(yīng)空槽通過(guò)計(jì)算缺少方向的相同和相反極 性的運(yùn)動(dòng)向量預(yù)測(cè)值、在不同極性運(yùn)動(dòng)向量預(yù)測(cè)值之間選擇、并將該運(yùn)動(dòng)向量預(yù)測(cè)值存儲(chǔ) 在空槽中來(lái)填充。再參看圖34A和34B,對(duì)于運(yùn)動(dòng)向量預(yù)測(cè),編碼器/解碼器使用偽碼3400中所示 的縮放運(yùn)算,將一個(gè)半幀運(yùn)動(dòng)向量預(yù)測(cè)值從另一個(gè)半幀運(yùn)動(dòng)向量預(yù)測(cè)值導(dǎo)出。示出兩個(gè)可 能的值集,其中當(dāng)前半幀是隔行掃描視頻幀中的第一半幀的情形在圖35的表格3500中示 出,而當(dāng)前半幀是隔行掃描視頻幀中的第二半幀的情形在圖36的表格3600中示出。在表 格 3500 和 3600 中,SCALEOPP、SCALESAME1、SCALESAME2、SCALEZ0NE1_X、SCALEZ0NE1_Y、 Z0NE10FFSET_X和Z0NE10FFSET_Y取決于參考幀距離。在一些實(shí)現(xiàn)中,使用分?jǐn)?shù)編碼來(lái)計(jì)算用于隔行掃描B-半幀中的正向和反向參考 的參考幀距離。BFRACTI0N語(yǔ)法元素(它用信號(hào)表示隔行掃描B-半幀的正向或反向預(yù)測(cè)模 式宏塊,而不只是隔行掃描B-幀的直接模式宏塊)用來(lái)導(dǎo)出正向和反向參考圖片距離,如 以下偽碼所示正向參考幀距離(FRFD)=NINT ((BFRACTI0N 分子)/ (BFRACTI0N 分母)* 參考幀距離If (FRFD < 0) then FRFD = 0反向參考幀距離(BRFD)=參考幀距離-FRFD-I (其中NINT是最近整數(shù)操作符)BFRACTI0N分子和分母從BFRACTI0N語(yǔ)法元素中解碼。元素BFRACTION可用來(lái)表 示可在比特流中發(fā)送的不同分?jǐn)?shù)(例如在隔行掃描B-半幀的幀級(jí)別上)。該分?jǐn)?shù)在0和1 之間的有限離散值集中取值,并在通過(guò)其錨形成的間隔內(nèi)標(biāo)示B-圖片的相對(duì)時(shí)間位置。對(duì)于具有隔行掃描B-半幀的幀中的第二半幀的正向預(yù)測(cè)和反向預(yù)測(cè),編碼器/解碼器根據(jù)圖34A和34B中的偽碼3400執(zhí)行運(yùn)動(dòng)向量縮放。然而,在一些實(shí)現(xiàn)中,執(zhí)行第 一半幀的反向運(yùn)動(dòng)向量預(yù)測(cè)的編碼器/解碼器使用如在圖48中所示偽碼4800中定義的 函數(shù) scaleforopposite_x、scaleforopposite_y> scaleforsame_x> scaleforsame_y。在 一實(shí)現(xiàn)中用于第一隔行掃描 B-半幀的 SCALESAME、SCALEOPPU SCALE0PP2、SCALEZ0NE1_X、 SCALEZONE 1_Y>ZONE 10FFSET_X 和 Z0NE10FFSET_Y 在圖 49 的表格 4900 中示出。在表格 4900中,變量N和運(yùn)動(dòng)向量范圍之間的關(guān)系與以上參考圖35和36和表格1所述的關(guān)系相同?;蛘?,參考幀距離用另一種方法計(jì)算,或者縮放根據(jù)不同算法執(zhí)行。例如,縮放與N的值無(wú)關(guān)地執(zhí)行(即N取為1)。X.具有隔行掃描B-半幀的“自參考”幀具有隔行掃描B-半幀的幀被編碼為兩個(gè)獨(dú)立(且某種程度上獨(dú)立編碼的)的半 幀。上半幀由幀的偶光柵行(從行0開始)組成,而下半幀由幀的奇光柵行組成。因?yàn)椤鞍?幀圖片”中的半幀可獨(dú)立解碼,所以它們不需要以任何預(yù)先設(shè)置順序發(fā)送。例如,編碼器可 先發(fā)送下半幀再發(fā)送上半幀,或反之。在有些實(shí)現(xiàn)中,兩個(gè)半幀的順序由“先上半幀”的語(yǔ) 法元素表示,該語(yǔ)法元素取決于解碼幀的兩個(gè)半幀的準(zhǔn)確時(shí)間順序而為真或假?,F(xiàn)有的編碼器和解碼器已將前后錨幀(例如I-或P-幀)或前后錨幀中的半幀用 作“參考”圖片,以執(zhí)行對(duì)當(dāng)前B-圖片的運(yùn)動(dòng)補(bǔ)償?,F(xiàn)有的編碼器和解碼器還限制B-圖片 或其任何部分用作任何圖片的運(yùn)動(dòng)補(bǔ)償參考。然而,在所述技術(shù)和工具的一些實(shí)現(xiàn)中,一種 或多種這些“規(guī)則”被放松。例如,在一些實(shí)現(xiàn)中,第一隔行掃描B-半幀參考來(lái)自前后錨圖片的第一和第二半 幀。第二隔行掃描B-半幀參考作為“相反極性”半幀的來(lái)自當(dāng)前圖片的第一隔行掃描B-半 幀和作為“相同極性”半幀的前一錨幀的相同極性半幀,以及來(lái)自下一錨圖片的第一和第二 半幀。圖50B是示出隔行掃描視頻幀B2中兩個(gè)隔行掃描B-半幀的每一個(gè)的參考半幀的 示圖。在圖50B所示示例中,要解碼的第一 B-半幀(在此為上半幀)被允許參考正向(時(shí) 間上過(guò)去)錨Pl中的兩個(gè)參考半幀和來(lái)自反向(時(shí)間上將來(lái))錨P3中的兩個(gè)參考半幀, 總共為4個(gè)參考半幀。B2的要解碼的第二隔行掃描B-半幀被允許參考來(lái)自同一隔行掃描 視頻幀(因而打破了不允許B-圖片的各部分用作參考的慣例)的第一半幀和來(lái)自前一錨 Pl的一個(gè)參考半幀,以及來(lái)自將來(lái)錨P3的兩個(gè)半幀。為作比較,圖50A示出隔行掃描視頻 幀的隔行掃描P-半幀遵守的慣例。實(shí)現(xiàn)這些隔行掃描B-半幀參考規(guī)則的技術(shù)和工具可提供更好的壓縮。隔行掃描 視頻的半幀編碼對(duì)于編碼高運(yùn)動(dòng)是最為有效的,高運(yùn)動(dòng)即為在上半幀和下半幀之間有相當(dāng) 運(yùn)動(dòng)時(shí)。例如,在該情形中,幀的上(且首先編碼的)半幀對(duì)于同一幀下半幀中的像素將是 比從前一幀中(來(lái)自較遠(yuǎn)的時(shí)間距離)取得的上半幀好得多的預(yù)測(cè)值。由于它們之間較大 的時(shí)間距離,當(dāng)運(yùn)動(dòng)較高時(shí)這些時(shí)間上將來(lái)的預(yù)測(cè)值提供弱得多的預(yù)測(cè)。此外,對(duì)于時(shí)間上 更遠(yuǎn)的預(yù)測(cè)值來(lái)說(shuō)閉塞的可能性放大,這導(dǎo)致更多編碼昂貴的幀內(nèi)編碼宏塊。特別地,實(shí)驗(yàn) 證實(shí)允許幀的第二個(gè)時(shí)間隔行掃描B-半幀參考同一幀的第一時(shí)間隔行掃描B-半幀可產(chǎn)生 顯著的壓縮增益。XI.隔行掃描B-半幀中正向模式的位平面編碼如以上X節(jié)所述,在一些實(shí)現(xiàn)中,當(dāng)前幀的第二已編碼隔行掃描B-半幀可參考當(dāng) 前幀的第一已編碼隔行掃描B-半幀。該“自參考”技術(shù)在具有高運(yùn)動(dòng)的幀的隔行掃描B-半 幀中是有效的,因?yàn)楫?dāng)前幀的時(shí)間上較近的B-半幀常常是比時(shí)間上較遠(yuǎn)的錨半幀更好的 預(yù)測(cè)值。當(dāng)具有隔行掃描B-半幀的幀具有較高運(yùn)動(dòng),且時(shí)間上第二隔行掃描B-半幀首選 時(shí)間上第一隔行掃描B-半幀作為預(yù)測(cè)參考時(shí),第二隔行掃描B-半幀中宏塊的更有效預(yù)測(cè) 模式將常常是“正向”模式。
因?yàn)楦粜袙呙鐱-半幀中的正向模式預(yù)測(cè)是用于降低比特率的有效工具,所以特 別是在低比特率情形中,減少信號(hào)表示開銷以降低用信號(hào)表示正向模式預(yù)測(cè)的整體成本是 有利的。因此,在一些實(shí)施例中,編碼器使用統(tǒng)一的位平面編碼技術(shù)來(lái)編碼正向模式預(yù)測(cè)信 息。例如,編碼器編碼壓縮位平面中的正向模式預(yù)測(cè)信息,其中位平面中的每個(gè)比特關(guān)聯(lián)于 一宏塊,且每個(gè)比特的值用信號(hào)表示該宏塊是用正向模式還是用非正向預(yù)測(cè)模式編碼。經(jīng)壓縮位平面可在幀級(jí)別、半幀級(jí)別或在一些其它級(jí)別上發(fā)送。與用于隔行掃描B-半幀的其它預(yù)測(cè)模式相比,位平面編碼技術(shù)偏向于利用正向模式。例如,如果隔行掃描 B-半幀上的大多數(shù)宏塊使用正向預(yù)測(cè),則編碼器通過(guò)位平面編碼正向/非正向決定,可將 信號(hào)表示開銷降為每個(gè)宏塊小于一個(gè)比特。圖51示出在具有一個(gè)或多個(gè)位平面編碼模式的視頻編碼器中用于編碼隔行掃描 B-半幀的宏塊的正向/非正向預(yù)測(cè)模式?jīng)Q定信息的一種技術(shù)5100。圖52示出用于解碼由 具有一個(gè)或多個(gè)位平面編碼模式的視頻編碼器編碼的正向/非正向預(yù)測(cè)模式?jīng)Q定信息的 相應(yīng)技術(shù)5200。。參照?qǐng)D51,編碼器選擇用于編碼正向/非正向預(yù)測(cè)模式?jīng)Q定信息的位平面編碼模 式(5110)。在選擇編碼模式之后,編碼器用所選模式來(lái)編碼正向/非正向預(yù)測(cè)模式?jīng)Q定信 息(5120)。該編碼器在逐個(gè)半幀基礎(chǔ)上選擇位平面編碼模式?;蛘撸幋a器在一些其它基 礎(chǔ)上(例如在序列級(jí)別)選擇位平面編碼模式?;蛘?,如果只使用一種位平面編碼模式, 則不進(jìn)行位平面編碼模式的選擇。當(dāng)編碼器完成編碼正向/非正向預(yù)測(cè)模式?jīng)Q定信息時(shí) (5130),正向/非正向預(yù)測(cè)模式?jīng)Q定信息的編碼結(jié)束。參照?qǐng)D52,解碼器確定編碼器使用(并用信號(hào)表示)的編碼正向/非正向預(yù)測(cè)模 式?jīng)Q定信息的位平面編碼模式(5210)。然后該解碼器用選定模式解碼正向/非正向預(yù)測(cè)模 式?jīng)Q定信息。該解碼器在逐個(gè)半幀基礎(chǔ)上確定位平面編碼模式?;蛘撸獯a器在一些其它 基礎(chǔ)上(例如在序列級(jí)別)確定位平面編碼模式。或者,如果只有一種位平面編碼模式可 用,則不進(jìn)行位平面編碼模式的選擇。當(dāng)解碼器完成解碼正向/非正向預(yù)測(cè)模式?jīng)Q定信息 時(shí)(5230),正向/非正向預(yù)測(cè)模式?jīng)Q定信息的解碼結(jié)束。對(duì)于有關(guān)根據(jù)若干組合實(shí)現(xiàn)來(lái)用信號(hào)表示和解碼各種位平面編碼模式的其它細(xì) 節(jié),參見以下XIV節(jié)。對(duì)于有關(guān)一般位平面編碼的更多細(xì)節(jié),參見序列號(hào)為10/321,415題 為“Skip Macroblock Coding” (跳過(guò)宏塊編碼)并于2002年12月16日提交的美國(guó)專利 申請(qǐng),其公開內(nèi)容通過(guò)引用結(jié)合在此?;蛘?,表示正向/非正向模式信息的比特可未經(jīng)壓縮 地和/或在一些其它級(jí)別(例如宏塊級(jí)別)上發(fā)送。如果指示的是非正向預(yù)測(cè),則編碼器指定該宏塊的非正向預(yù)測(cè)模式(例如反向模 式、直接模式、插值模式、或幀內(nèi)模式)。在一些實(shí)現(xiàn)中,編碼器在宏塊級(jí)別參照VLC表格編 碼非正向預(yù)測(cè)模式,如以下表格2所示。
表格2.運(yùn)動(dòng)預(yù)測(cè)模式VLC表格在表格2所示示例中,反向模式是較佳的非正向預(yù)測(cè)模式。編碼器用1-比特信號(hào) 表示反向模式,并用2-比特信號(hào)表示直接和插值模式。或者,編碼器使用不同代碼來(lái)表示 不同的預(yù)測(cè)模式和/或首選一種不同的非正向預(yù)測(cè)模式。在一些實(shí)現(xiàn)中,幀內(nèi)模式由特定運(yùn)動(dòng)向量差值來(lái)作信號(hào)表示,該值用預(yù)測(cè)模式是 幀內(nèi)模式的編碼方式來(lái)表示。運(yùn)動(dòng)向量差值因此用來(lái)推斷該宏塊是幀內(nèi)編碼的,但是按照 慣例編碼器將預(yù)測(cè)類型設(shè)置為反向,以便于不會(huì)具有任何未定義預(yù)測(cè)類型。XII.在隔行掃描B-半幀中選擇用于直接模式的共處運(yùn)動(dòng)向量在一些實(shí)現(xiàn)中,半幀編碼B-圖片中宏塊的直接模式運(yùn)動(dòng)向量使用特殊邏輯來(lái)選 擇。對(duì)于隔行掃描B-半幀中的當(dāng)前宏塊,如果下一錨圖片的相應(yīng)半幀的共處宏塊使用4 個(gè)運(yùn)動(dòng)向量進(jìn)行編碼,則該邏輯在該共處宏塊的最多達(dá)四個(gè)運(yùn)動(dòng)向量中偏向更主要的極性 (例如相同或相反)。一旦選擇了用于當(dāng)前宏塊的運(yùn)動(dòng)向量,編碼器/解碼器就可應(yīng)用縮放 運(yùn)算以給出直接模式運(yùn)動(dòng)向量。在一些實(shí)現(xiàn)中,對(duì)于隔行掃描B-半幀的直接模式IMV宏塊,編碼器/解碼器基于 具有相同極性的參考半幀(例如時(shí)間上的下一 P-半幀)內(nèi)共處宏塊的一個(gè)或多個(gè)運(yùn)動(dòng)向 量,計(jì)算用于直接模式縮放的運(yùn)動(dòng)向量。如果參考半幀中的共處宏塊是IMV宏塊,則編碼 器/解碼器使用單個(gè)運(yùn)動(dòng)向量來(lái)導(dǎo)出隔行掃描B-半幀中宏塊的直接模式運(yùn)動(dòng)向量。另一 方面,如果參考半幀中的共處宏塊是4MV宏塊,則編碼器/解碼器在選擇用于導(dǎo)出隔行掃描 B-半幀中宏塊的直接模式運(yùn)動(dòng)向量的運(yùn)動(dòng)向量時(shí)考慮該4個(gè)運(yùn)動(dòng)向量的極性(偏向主要極 性)。在解碼隔行掃描B-半幀期間編碼器/解碼器在需要時(shí)可將該選擇邏輯應(yīng)用于參考半 幀中的4MV宏塊?;蛘?,編碼器/解碼器可在解碼參考半幀之后應(yīng)用該選擇邏輯,然后僅緩 存要在后來(lái)隔行掃描B-半幀解碼中使用的值。例如,對(duì)于參考半幀中的共處4MV宏塊,如果(4者中)來(lái)自相同極性半幀的運(yùn)動(dòng) 向量數(shù)量超過(guò)來(lái)自相反極性半幀的運(yùn)動(dòng)向量數(shù)量,則如果相同極性運(yùn)動(dòng)向量的數(shù)量分別為 4、3、2或1,編碼器/解碼器可使用四者中值、三者中值、二者中值或相同極性半幀運(yùn)動(dòng)向量 的值來(lái)計(jì)算在直接模式隔行掃描B-半幀解碼中使用的運(yùn)動(dòng)向量。否則,如果來(lái)自相反極 性半幀的運(yùn)動(dòng)向量數(shù)量超過(guò)來(lái)自相同極性半幀的運(yùn)動(dòng)向量,則編碼器/解碼器可使用類似 運(yùn)算來(lái)從相反極性半幀的運(yùn)動(dòng)向量中得到代表性的運(yùn)動(dòng)向量,以用于直接模式的隔行掃描 B-半幀解碼。如果共處宏塊的四個(gè)運(yùn)動(dòng)向量的原始集中(不管極性)兩個(gè)以上運(yùn)動(dòng)向量是 幀內(nèi)編碼的,則編碼器/解碼器可將共處代表性運(yùn)動(dòng)向量簡(jiǎn)單地視為是幀內(nèi)編碼的(即(0, 0))。然而,在一些實(shí)現(xiàn)中,隔行掃描B-半幀中的所有幀內(nèi)MB都被編碼為1MV,所以原始的 4個(gè)運(yùn)動(dòng)向量中的兩個(gè)以上為幀內(nèi)編碼的情形導(dǎo)致共處代表性運(yùn)動(dòng)向量被視為是幀內(nèi)編碼 在實(shí)際上不可能。圖53中的偽碼5300示出對(duì)用作隔行掃描B-半幀中直接模式運(yùn)動(dòng)向量的基礎(chǔ)的 運(yùn)動(dòng)向量的選擇過(guò)程。在一些實(shí)現(xiàn)中,該選擇過(guò)程是產(chǎn)生正向和反向指示直接模式運(yùn)動(dòng)向量的縮放運(yùn)算的前身。XIII.隔行掃描視頻幀中的幀內(nèi)編碼B-半幀隔行掃描BI-半幀(或“幀內(nèi)B-半幀”)是與其參考圖片獨(dú)立編碼的半幀。在隔行掃描BI-半幀不可用作預(yù)測(cè)其它圖片的錨的意義上,它們不同于其它幀內(nèi)半幀(例如隔 行掃描I-半幀)。沒(méi)有對(duì)隔行掃描BI-半幀的圖片間依賴性,且它在比特流中的出現(xiàn)不 表示可獨(dú)立解碼分段或圖片組的開始。然而,隔行掃描視頻幀中的第一半幀如果被編碼為 BI-半幀,則可用來(lái)預(yù)測(cè)該幀中可被編碼為隔行掃描B-半幀的第二個(gè)半幀。這種革新還通 過(guò)在許多情形中僅對(duì)幀的一半(第一編碼半幀)使用幀內(nèi)編碼而不將整個(gè)幀編碼為內(nèi)幀或 將兩個(gè)半幀編碼為幀內(nèi)半幀,來(lái)改進(jìn)整體壓縮。在一些實(shí)現(xiàn)中,幀可包括兩個(gè)B-半幀、兩個(gè) BI-半幀、或一個(gè)B-或一個(gè)BI-半幀。使用隔行掃描BI-半幀而不使用隔行掃描I-半幀是有理由的。一個(gè)理由是避免 犧牲時(shí)間可縮放性。例如,當(dāng)解碼器提交數(shù)字視頻且需要立即丟棄一些圖片以跟上處理需 求時(shí),它可尋找它可能丟棄的半幀序列。如果序列中的幀內(nèi)半幀變成關(guān)鍵半幀,則解碼器將 被迫解碼它們以用作其它半幀的參考,并且不能丟棄它們。然而,如果序列中的幀內(nèi)半幀被 編碼為BI-半幀,則解碼器將仍然有丟棄它們的選擇,而不損害后續(xù)運(yùn)動(dòng)補(bǔ)償。在隔行掃描BI-半幀更有效地用信號(hào)表示用于幀內(nèi)編碼和解碼的語(yǔ)法元素的意 義上,隔行掃描BI-半幀不同于具有幀內(nèi)宏塊的隔行掃描B-半幀,因?yàn)锽I-半幀內(nèi)運(yùn)動(dòng)補(bǔ) 償相關(guān)元素(或信號(hào)表示其缺失的元素)可被消除。換言之,當(dāng)在視頻序列中的幀間半幀 預(yù)測(cè)中斷點(diǎn)上(例如因?yàn)閳?chǎng)景變化或復(fù)雜運(yùn)動(dòng))編碼隔行掃描B-半幀時(shí),使用隔行掃描 BI-半幀(而不是常規(guī)B-半幀)的理由產(chǎn)生。常常這種半幀中的大多數(shù)宏塊將需要編碼為 幀內(nèi)宏塊。在該情形中,根據(jù)比特率來(lái)看,要將整個(gè)B-半幀編碼為一個(gè)BI-半幀常常比發(fā) 送該半幀中每個(gè)宏塊的預(yù)測(cè)模式信息要容易。當(dāng)對(duì)隔行掃描B-半幀的較好預(yù)測(cè)或運(yùn)動(dòng)補(bǔ) 償不可能時(shí),它可被編碼為BI-半幀。在一些實(shí)現(xiàn)中,編碼器可用信號(hào)表示比特流中作為圖片類型的可能值之一的 BI-半幀的出現(xiàn)?;蛘?,BI-半幀的出現(xiàn)可用一些其它方法來(lái)指示。XIV.組合實(shí)現(xiàn)現(xiàn)在描述對(duì)比特流語(yǔ)法、語(yǔ)義和解碼器的詳細(xì)組合實(shí)現(xiàn),以及與主要組合實(shí)現(xiàn)有 細(xì)微差異的另一組合實(shí)現(xiàn)。A.比特流語(yǔ)法在各種組合實(shí)現(xiàn)中,用于隔行掃描B-圖片的數(shù)據(jù)以具有多個(gè)層(例如,序列、幀、 半幀、宏塊、塊和/或子塊層)的比特流形式呈現(xiàn)。對(duì)于具有隔行掃描B-半幀和/或BI-半幀的隔行掃描視頻幀,幀級(jí)別比特流元 素如圖54所示。每個(gè)幀的數(shù)據(jù)包括幀頭,隨后是半幀層的數(shù)據(jù)(示為每個(gè)半幀的重復(fù) “FieldPicLayer”元素)。組成隔行掃描B-半幀和BI-半幀的半幀頭的比特流元素分別如 圖55和56所示。組成隔行掃描B-半幀(幀內(nèi)、1MV、或4MV宏塊)和BI-半幀的宏塊層的 比特流元素分別如圖57和58所示。對(duì)于隔行掃描B-幀,幀級(jí)別比特流元素如圖59所示。每個(gè)幀的數(shù)據(jù)包括幀頭,隨 后是宏塊層的數(shù)據(jù)。組成隔行掃描B-幀的宏塊層的比特流元素(幀內(nèi)或各種幀間類型宏 塊)如圖60所示。
以下小節(jié)描述幀、半幀和宏塊層中的選定比特流元素,它們與相關(guān)于雙向預(yù)測(cè)隔 行掃描圖片的信號(hào)表示相關(guān)。盡管選定比特流元素在特定層的上下文中描述,但一些比特 流元素可在一個(gè)以上層中使用。1.選定幀層元素圖54是示出包含隔行掃描B-半幀或BI-半幀(或可能其它類隔行掃描半幀)的 幀的幀級(jí)別比特流語(yǔ)法的示圖。圖59是示出隔行掃描B-幀的幀級(jí)別比特流語(yǔ)法的示圖。 特定的比特流元素如下所述。幀編碼模式(FCM)(可變大小)FCM是用來(lái)表示圖片編碼類型的可變長(zhǎng)度代碼字[“VLC”]。FCM具有如以下表格 3所示的幀編碼模式的值。表格3.幀編碼模式VLC 半幀圖片類型(FPTYPE) (3個(gè)比特)FPTYPE是包括隔行掃描P-半幀、隔行掃描1_半幀、隔行掃描B-半幀和/或隔行 掃描BI半幀的幀的幀頭中提供的3-比特語(yǔ)法元素。FPTYPE具有隔行掃描視頻幀中半幀類 型的不同組合的值,如下表4所示。表格4.半幀圖片類型FLC 參考距離(REFDIST)(可變大小)REFDIST是可變大小的語(yǔ)法元素。該元素表示當(dāng)前幀和參考幀之間幀的數(shù)量。表 格5示出用來(lái)編碼REFDIST值的VLC。表格5. REFDISTVLC 表格 表格5中的最后一行表示用來(lái)表示大于2的參考幀距離的代碼字。這些被編碼為 (二進(jìn)制)11,隨后是N-3 ls,其中N是參考幀距離。代碼字中最后一個(gè)比特為0。例如N = 3, VLC 代碼字=110,VLC 大小=3N = 4,VLC 代碼字=1110,VLC 大小=4N = 5, VLC 代碼字=11110, VLC 大小=5圖片類型(PTYPE)(可變大小)PTYPE是隔行掃描B-幀(或其它類型的隔行掃描幀,諸如隔行掃描1_幀、或隔行 掃描P-幀)的幀頭中提供的可變大小的語(yǔ)法元素。PTYPE具有不同幀類型的值,如以下表 格6所示。表格6.圖片類型VLC 如果PTYPE指示該幀被跳過(guò),則該幀被視為與其參考幀等同的P幀。被跳過(guò)幀的重構(gòu)在概念上等同于復(fù)制該參考幀。被跳過(guò)幀意思是沒(méi)有該幀的其它數(shù)據(jù)被傳送。B-幀直接模式MB比特語(yǔ)法元素(DIRECTMB)(可變大小)DIRECTMB語(yǔ)法元素使用位平面編碼來(lái)表示B圖片(在此為隔行掃描B-幀)中以 直接模式編碼的宏塊。DIRECTMB語(yǔ)法元素還可用信號(hào)表示該直接模式是用原始模式來(lái)作 信號(hào)表示的,在該情形中直接模式在隔行掃描B-幀的宏塊的宏塊級(jí)別上作信號(hào)表示。經(jīng)擴(kuò)展的MV范圍標(biāo)記(MVRANGE)(可變大小)MVRANGE是在序列層EXTENDED_MV比特被設(shè)置為1時(shí)提供的可變大小的語(yǔ)法元素。 MVRANGE VLC表示運(yùn)動(dòng)向量范圍。經(jīng)擴(kuò)展的差值MV范圍標(biāo)記(DMVRANGE)(可變大小)DMVRANGE是如果序列層語(yǔ)法元素EXTENDED_DMV = 1時(shí)提供的可變大小的語(yǔ)法元素,該DMVRANGE VLC表示運(yùn)動(dòng)向量差值范圍。宏塊模式表格(MBM0DETAB) (2或3個(gè)比特)MBM0DETAB語(yǔ)法元素是固定長(zhǎng)度的字段。對(duì)于隔行掃描P_半幀,MBM0DETAB是3 比特值,表示8個(gè)哈夫曼表格的哪一個(gè)用來(lái)解碼宏塊層中的宏塊模式語(yǔ)法元素(MBMODE)。運(yùn)動(dòng)向量表格(MVTAB) (2或3個(gè)比特)MVTAB語(yǔ)法元素是2或3個(gè)比特的值。對(duì)于NUMREF = 1的隔行掃描P-半幀,MVTAB 是表示8個(gè)隔行掃描哈夫曼表格的哪一個(gè)用來(lái)解碼運(yùn)動(dòng)向量的數(shù)據(jù)的3比特語(yǔ)法元素。2MV塊模式表格(2MVBPTAB) (2個(gè)比特)2MVBPTAB語(yǔ)法元素是2個(gè)比特的值,它表示4個(gè)哈夫曼表格的哪一個(gè)用來(lái)解碼 2MV半幀宏塊中2MV塊模式(2MVBP)語(yǔ)法元素。4MV塊模式表格(4MVBPTAB) (2個(gè)比特)4MVBPTAB語(yǔ)法元素是2個(gè)比特的值,它表示4個(gè)哈夫曼表格的哪一個(gè)用來(lái)解碼 4MV半幀宏塊中4MV塊模式(4MVBP)語(yǔ)法元素。在另一組合實(shí)現(xiàn)中,圖片類型信息在隔行掃描B-半幀的半幀級(jí)別的開始處,而不 是在包括隔行掃描B-半幀的隔行掃描視頻幀的幀級(jí)別上用信號(hào)表示,并可略去參考距離。2.選定半幀層元素圖55是示出組合實(shí)現(xiàn)中隔行掃描B-半幀的半幀級(jí)別比特流語(yǔ)法的示圖。特定比 特流元素如下所述。運(yùn)動(dòng)向量模式(MVMODE)(可變大小或1比特)MVMODE語(yǔ)法元素用信號(hào)表示4種運(yùn)動(dòng)向量編碼模式之一,或一種亮度補(bǔ)償模式 (還有某些圖片類型的較少可能)。若干后續(xù)元素提供附加運(yùn)動(dòng)向量模式和/或亮度補(bǔ)償 fn息οB-半幀正向模式MB比特語(yǔ)法元素(F0RWARDMB)(可變大小)FORffARDMB語(yǔ)法元素將位平面編碼用來(lái)表示用正向模式編碼的B-半幀中宏塊。FORWARDMB語(yǔ)法元素還用信號(hào)表示,正向模式用原始模式來(lái)作信號(hào)表示,在該情形中正向/ 非正向模式?jīng)Q定在宏塊級(jí)別上作信號(hào)表示。圖56是示出組合實(shí)現(xiàn)中隔行掃描B-半幀的半幀級(jí)別比特流語(yǔ)法的示圖。在該組 合實(shí)現(xiàn)中,隔行掃描BI-半幀的半幀級(jí)別比特流語(yǔ)法使用與隔行掃描I-半幀一樣的語(yǔ)法元素。3.選定宏塊層元素圖57是示出組合實(shí)現(xiàn)中隔行掃描B-半幀的宏塊的宏塊級(jí)別比特流語(yǔ)法的示圖。 圖60是示出組合實(shí)現(xiàn)中隔行掃描B-幀的宏塊的宏塊級(jí)別比特流語(yǔ)法的示圖。特定比特流 元素如下所述。宏塊的數(shù)據(jù)包括宏塊頭,隨后是塊層數(shù)據(jù)。宏塊模式(MBMODE)(可變大小)MBMODE語(yǔ)法元素指示宏塊類型(例如隔行掃描B-半幀的1MV、4MV或幀內(nèi)),以及 CBP標(biāo)記和運(yùn)動(dòng)向量數(shù)據(jù)的出現(xiàn)。正向B半幀編碼模式(F0RWARDBIT) (1比特)FORffARDBIT是如果半幀級(jí)別語(yǔ)法元素FORWARDMB表示使用了原始模式時(shí)在隔行 掃描B-半幀宏塊中提供的1-比特語(yǔ)法元素。如果F0RWARDBIT = 1,則宏塊使用正向模式編碼。B宏塊運(yùn)動(dòng)預(yù)測(cè)類型(BMVTYPE)(可變大小)BMVTYPE是隔行掃描B-幀宏塊和隔行掃描B-半幀宏塊中提供的可變大小語(yǔ)法元 素,它表示該宏塊使用正向、反向還是插值預(yù)測(cè)。如表格7所示,對(duì)于隔行掃描B-幀的宏塊, BFRACTION以及BMVTYPE的值確定使用哪一種類型。 在隔行掃描B-半幀中,如果宏塊模式不是正向(由FORWARDMB或F0RWARDBIT語(yǔ) 法元素所示)且不使用4MV,則發(fā)送BMVTYPE。在該情形中,BMVTYPE用于用信號(hào)表示該B宏 塊是反向、直接、還是插值的。這是簡(jiǎn)單的VLC,其中反向=0,直接=10,插值=11。在宏 塊模式不是正向且使用4MV的情形中,BMVTYPE是反向的,因?yàn)橹挥姓蚝头聪蚰J奖辉试S 用于4MV。插值MV 提供(INTERPMVP) (1 比特)INTERPMVP是如果半幀級(jí)別語(yǔ)法元素BMVTYPE表示該宏塊類型為插值時(shí)在B-半幀 中提供的1-比特語(yǔ)法元素。如果INTERPMVP = 1,則插值MV出現(xiàn),否則它不出現(xiàn)。B宏塊運(yùn)動(dòng)向量1 (BMVl)(可變大小)BMVl是差分編碼宏塊的第一運(yùn)動(dòng)向量的可變大小的語(yǔ)法元素。B宏塊運(yùn)動(dòng)向量2 (BMV2)(可變大小)BMV2是如果使用插值模式時(shí)隔行掃描B-幀宏塊和隔行掃描B-半幀宏塊中提供的 可變大小的語(yǔ)法元素。該語(yǔ)法元素差分地編碼宏塊的第二運(yùn)動(dòng)向量。
4MV 塊模式(4MVBP) (4 個(gè)比特)該4MVBP語(yǔ)法元素指示4個(gè)亮度塊的哪一個(gè)包含非零運(yùn)動(dòng)向量差值,它的使用在 下面詳細(xì)描述。 塊級(jí)別運(yùn)動(dòng)向量數(shù)據(jù)(BLKMVDATA)(可變大小)BLKMVDATA是包含該塊的運(yùn)動(dòng)信息并在4MV宏塊中提供的可變大小的語(yǔ)法元素。半幀變換標(biāo)記(FIELDTX) (1比特)FIELDTX是在隔行掃描B-幀的幀內(nèi)編碼宏塊中提供的1比特語(yǔ)法。該語(yǔ)法元素指 示宏塊是幀編碼還是半幀編碼(基本上是宏塊的內(nèi)部組織)。FIELDTX = 1指示該宏塊是 半幀編碼的。否則,宏塊是幀編碼的。在幀間編碼宏塊中,該語(yǔ)法元素可從MBMODE推斷。直接B幀編碼模式(DIRECTBBIT) (1比特)DIRECTBBIT是如果幀級(jí)別語(yǔ)法元素DIRECTMB表示使用原始模式時(shí)在隔行掃描 B-幀宏塊中提供的1-比特語(yǔ)法元素。如果DIRECTBBIT = 1,則宏塊使用直接模式編碼。B 幀 MV 切換(MVSW) (1 比特)MVSff是如果MB為半幀模式以及如果BMVTYPE為正向或反向時(shí)在隔行掃描B-幀宏塊中提供的1-比特語(yǔ)法元素。如果MVSW = 1,則MV類型和預(yù)測(cè)類型在從上半幀去到下半 幀時(shí)從正向變成反向(或者從反向變成正向)。兩運(yùn)動(dòng)向量塊模式(2MVBP)(可變大小)2MVBP是在隔行掃描B-幀宏塊中提供的可變大小語(yǔ)法元素。如果MBMODE語(yǔ)法元 素指示該宏塊包含一個(gè)運(yùn)動(dòng)向量,并且如果該宏塊是插值宏塊,則提供該語(yǔ)法元素。在該情 形中,2MVBP指示提供兩個(gè)運(yùn)動(dòng)向量(正向和反向運(yùn)動(dòng)向量)的哪一個(gè)。 運(yùn)動(dòng)向量數(shù)據(jù)(MVDATA)(可變大小)MVDATA是編碼宏塊的運(yùn)動(dòng)向量差值的可變大小語(yǔ)法元素,它的解碼在下面詳細(xì)描 述。圖58是示出組合實(shí)現(xiàn)中隔行掃描BI-半幀的宏塊級(jí)別比特流語(yǔ)法的示圖。在組 合實(shí)現(xiàn)中,隔行掃描BI-半幀的宏塊級(jí)別比特流語(yǔ)法使用與隔行掃描I-半幀的相同語(yǔ)法元B.解碼隔行掃描的B-半幀以下各節(jié)描述用于解碼組合實(shí)現(xiàn)中隔行掃描B-半幀的過(guò)程。1.幀/半幀層解碼隔行掃描B-半幀可以是兩種類型之一 IMV或混合MV。在IMV隔行掃描B-半幀中,取決于宏塊的預(yù)測(cè)類型(BMVTYPE),用0、1或2個(gè)運(yùn)動(dòng) 向量來(lái)表示各預(yù)測(cè)塊的位移。當(dāng)BMVTYPE等于DIRECT(直接)時(shí),推斷出正向和反向運(yùn)動(dòng) 向量,并且不顯式地用信號(hào)表示其它的運(yùn)動(dòng)向量。當(dāng)BMVTYPE是INTERPOLATED (插值)時(shí), 解碼兩個(gè)運(yùn)動(dòng)向量正向和反向。在正向和反向情形中,只解碼一個(gè)運(yùn)動(dòng)向量。IMV模式通 過(guò)MVMODE圖片層語(yǔ)法元素來(lái)用信號(hào)表示。在混合MV隔行掃描B-半幀中,每個(gè)宏塊可被編碼為IMV或4MV宏塊。在4MV宏 塊中,4個(gè)亮度塊的每一個(gè)都具有與之相關(guān)聯(lián)的運(yùn)動(dòng)向量。此外,4MV宏塊只可關(guān)聯(lián)于隔行 掃描B-半幀中的正向或反向預(yù)測(cè)類型(BMVTYPE)。每個(gè)宏塊的IMV或4MV模式通過(guò)每個(gè)宏 塊上的MBMODE語(yǔ)法元素來(lái)指示。混合MV模式通過(guò)MVMODE圖片層語(yǔ)法元素來(lái)用信號(hào)表示。
2.宏塊層解碼隔行掃描B-半幀中的宏塊可以是三種可能類型之一 1MV、4MV和幀內(nèi)。此外,宏塊可以是四種預(yù)測(cè)類型(BMVTYPE)之一正向、反向、直接或插值。宏塊類型通過(guò)宏塊層中的 MBMODE語(yǔ)法元素用信號(hào)表示。預(yù)測(cè)類型通過(guò)幀級(jí)別位平面F0RWARDMB和宏塊級(jí)別BMVTYPE 語(yǔ)法元素的組合用信號(hào)表示,其中幀級(jí)別位平面F0RWARDMB用信號(hào)表示每個(gè)宏塊的正向/ 非正向,而宏塊級(jí)別BMVTYPE語(yǔ)法元素則在預(yù)測(cè)類型為非正向的情形中用信號(hào)表示。以下各節(jié)描述IMV和4MV類型、以及如何用信號(hào)表示它們。隔行掃描B-半幀中的IMV宏塊IMV宏塊可出現(xiàn)在IMV和混合MV隔行掃描B-半幀中。在IMV宏塊中,單個(gè)運(yùn)動(dòng)向 量表示宏塊中全部6個(gè)塊的當(dāng)前和參考圖片之間的位移。對(duì)于IMV宏塊,宏塊層中的MBMODE 語(yǔ)法元素表示三點(diǎn)1)該宏塊類型為IMV2)是否出現(xiàn)CBPCY語(yǔ)法元素3)是否出現(xiàn)BMVl語(yǔ)法元素如果MBMODE語(yǔ)法元素表示BMVl語(yǔ)法元素出現(xiàn),則BMVl語(yǔ)法元素出現(xiàn)在相應(yīng)位置 的宏塊層中。BMVl語(yǔ)法元素編碼運(yùn)動(dòng)向量差值。運(yùn)動(dòng)向量差值與運(yùn)動(dòng)向量預(yù)測(cè)值相組合, 以重構(gòu)運(yùn)動(dòng)向量。如果MBMODE語(yǔ)法元素表示BMVl語(yǔ)法元素未出現(xiàn),則運(yùn)動(dòng)向量差值被取 為0且因此運(yùn)動(dòng)向量等于運(yùn)動(dòng)向量預(yù)測(cè)值。如果MBMODE語(yǔ)法元素表示CBCPY語(yǔ)法元素出現(xiàn),則CBCPY語(yǔ)法元素出現(xiàn)在相應(yīng)位 置的宏塊層中。CBCPY語(yǔ)法元素表示6個(gè)塊的哪一個(gè)在塊層上編碼。如果MBMODE語(yǔ)法元素 表示CBCPY語(yǔ)法元素未出現(xiàn),則CBCPY被取為等于0且對(duì)宏塊中6個(gè)塊的任一個(gè)都不出現(xiàn) 塊數(shù)據(jù)。此外,如果宏塊類型為IMV且宏塊的預(yù)測(cè)類型是插值,則編碼器使用INTERPMVP語(yǔ) 法元素來(lái)用信號(hào)表示是否出現(xiàn)第二個(gè)運(yùn)動(dòng)向量差值BMV2。如果出現(xiàn),則解碼器在BMVl之后 立即解碼BMV2。否則,BMV2的運(yùn)動(dòng)向量差值被取為0,而第二個(gè)運(yùn)動(dòng)向量等于運(yùn)動(dòng)向量預(yù) 測(cè)值。當(dāng)預(yù)測(cè)類型是插值時(shí),BMVl對(duì)應(yīng)于正向運(yùn)動(dòng)向量而BMV2對(duì)應(yīng)于反向運(yùn)動(dòng)向量。隔行掃描B-半幀中的4MV宏塊4MV宏塊僅可出現(xiàn)在混合MVB-半幀圖片中,且限于正向和反向預(yù)測(cè)類型。在4MV 宏塊中,4個(gè)亮度塊的每一個(gè)都具有關(guān)聯(lián)運(yùn)動(dòng)向量。色度塊的位移從4個(gè)亮度運(yùn)動(dòng)向量中導(dǎo) 出。在混合MV隔行掃描B-半幀中,4MV宏塊僅可關(guān)聯(lián)于正向和反向預(yù)測(cè)類型。對(duì)于4MV宏塊,宏塊層中的MBMODE語(yǔ)法元素表示三點(diǎn)1)該宏塊類型為4MV2)是否出現(xiàn)CBPCY語(yǔ)法元素3)是否出現(xiàn)4MVBP語(yǔ)法元素4MVBP語(yǔ)法元素表示4個(gè)亮度塊的哪一個(gè)包含非零運(yùn)動(dòng)向量差值。該4MVBP語(yǔ)法元 素解碼到0到15的值。對(duì)于4MVBP中4個(gè)比特位置的每一個(gè),值0表示未出現(xiàn)該塊的運(yùn)動(dòng) 向量差值(BLKMVDATA)且運(yùn)動(dòng)向量差值取為0。值1表示該塊的運(yùn)動(dòng)向量差值(BLKMVDATA) 出現(xiàn)在相應(yīng)位置中。例如,如果4MVBP解碼為值100 ( 二進(jìn)制),則比特流包含塊0和1的blkmvdata并且未出現(xiàn)塊2禾π 3的blkmvdata。如果mbmode語(yǔ)法元素表示4mvbp語(yǔ)法元素未出現(xiàn),則假設(shè)出現(xiàn)全部4個(gè)亮度塊的 運(yùn)動(dòng)向量差值數(shù)據(jù)(blkmvdata)。取決于mvmode語(yǔ)法元素是表示混合mv還是全_1mv,mbmode如下用信號(hào)表示信 息。以下表格8示出mbmode元素如何用信號(hào)表示有關(guān)全-imv圖片中宏塊的信息。表格8.全-imv圖片中的宏塊模式 以下表格9示出mbmode元素如何用信號(hào)表示有關(guān)混合mv圖片中宏塊的信息。表格9.混合imv圖片中的宏塊模式 8個(gè)編碼表格之一用于用信號(hào)表示mbm0de。所用特定表格通過(guò)mbm0detab語(yǔ)法元素用信號(hào)表示。以下各節(jié)描述預(yù)測(cè)類型解碼和直接模式運(yùn)動(dòng)向量的解碼。隔行掃描B-半幀中的預(yù)測(cè)類型解碼(BMVTYPE)預(yù)測(cè)類型根據(jù)以下規(guī)則進(jìn)行解碼。如果圖片級(jí)別位平面F0RWARDMB表示宏塊是正 向類型,則該宏塊的預(yù)測(cè)類型被設(shè)置為正向。如果F0RWARDMB元素被編碼為原始,則編碼器 /解碼器在宏塊級(jí)別上使用一附加比特F0RWARDBIT,來(lái)判定預(yù)測(cè)類型是否為正向。如果預(yù)測(cè)類型為非正向,且如MBMODE語(yǔ)法元素用信號(hào)表示的該宏塊使用4MV (僅 在混合MV B圖片中可能),則解碼器可直接推斷預(yù)測(cè)類型為反向,因?yàn)橹挥姓蚝头聪蝾?型可與4MV模式相關(guān)聯(lián)。否則,解碼器顯式地解碼BMVTYPE語(yǔ)法元素。解碼隔行掃描B-半幀中的直接模式運(yùn)動(dòng)向量為了解碼隔行掃描B-半幀中的直接模式運(yùn)動(dòng)向量,解碼器首先緩存來(lái)自先前解 碼(即時(shí)間上在將來(lái))的錨(I或P)圖片的運(yùn)動(dòng)向量。這樣,解碼器將所緩存的對(duì)應(yīng)于上 半幀的運(yùn)動(dòng)向量用作預(yù)測(cè)值,以便于計(jì)算上部B-半幀的直接模式運(yùn)動(dòng)向量,并使用對(duì)應(yīng)于 下半幀的運(yùn)動(dòng)向量計(jì)算下部B-半幀的運(yùn)動(dòng)向量。例如,半幀z(z =上/下)中的宏塊(X, y)將參考從先前解碼I或P半幀ζ (即與當(dāng)前半幀相同極性的錨半幀中的共處宏塊)的宏 塊(x,y)中緩存的運(yùn)動(dòng)向量。如果所緩存的來(lái)自錨圖片的運(yùn)動(dòng)向量為幀內(nèi)運(yùn)動(dòng)向量(諸如當(dāng)先前解碼半幀ζ是 I-半幀時(shí)),或者如果錨圖片是P-半幀但宏塊(X,y)是幀內(nèi)編碼的,則解碼器將經(jīng)緩存的 運(yùn)動(dòng)向量視為(0,0)。如果共處宏塊為1MV,則解碼器使用該運(yùn)動(dòng)向量。如果共處宏塊為 4MV,則解碼器將圖53中偽碼5300所述的邏輯用來(lái)計(jì)算運(yùn)動(dòng)向量預(yù)測(cè)值。在偽碼5300 中,SelectDirectModeMVFromColocatedMB 導(dǎo)出在直接模式計(jì)算中 使用的運(yùn)動(dòng)向量預(yù)測(cè)值。解碼器可緩存來(lái)自先前解碼的錨圖片的所有運(yùn)動(dòng)向量,并在解碼 B-半幀期間應(yīng)用以上直接模式,或者解碼器在解碼錨半幀的同時(shí)可應(yīng)用以上直接模式規(guī)貝U,并緩存用于B-半幀的結(jié)果運(yùn)動(dòng)向量。使用以上獲得的運(yùn)動(dòng)向量,解碼器應(yīng)用縮放邏輯(圖19中的SCale_DireCt_MV)。 Scale_Direct_MV獲得正向和反向指示運(yùn)動(dòng)向量。Scale_Direct_MV可導(dǎo)致指向上下半幀 的正向和反向運(yùn)動(dòng)向量。這是有效的,因?yàn)橹苯舆\(yùn)動(dòng)向量由編碼器評(píng)估并僅在它們給出好 預(yù)測(cè)時(shí)選擇,還因?yàn)楦粜袙呙鐱-半幀在正向和反向方向上都使用兩個(gè)參考半幀。在另一實(shí)現(xiàn)中,可使用產(chǎn)生以直接模式縮放的運(yùn)動(dòng)向量的任何其它過(guò)程,包括不 涉及任何緩存的過(guò)程,它在存儲(chǔ)器受限設(shè)備中會(huì)有用(例如使用隨機(jī)數(shù)發(fā)生器來(lái)模擬偏零 拉普拉斯分布)。這種過(guò)程仍將起作用,因?yàn)楹玫木幋a器將丟棄對(duì)直接模式運(yùn)動(dòng)向量的較差 推測(cè),而在比特流中保留更為準(zhǔn)確的推測(cè)。3.運(yùn)動(dòng)向量解碼過(guò)程以下各節(jié)描述組合實(shí)現(xiàn)中隔行掃描B-半幀的塊和宏塊的運(yùn)動(dòng)向量解碼過(guò)程。填充正向和反向預(yù)測(cè)上下文正向和反向運(yùn)動(dòng)向量被分開緩存,并分別用來(lái)預(yù)測(cè)正向和反向運(yùn)動(dòng)向量。例如在 以上X節(jié)描述了單獨(dú)緩沖區(qū)在正向和反向上下文中的使用。用于選擇運(yùn)動(dòng)向量預(yù)測(cè)值的技 術(shù)在III節(jié)背景技術(shù)、III節(jié)詳細(xì)說(shuō)明、以及說(shuō)明書的其它部分中描述。在解碼正向運(yùn)動(dòng)向量期間用預(yù)測(cè)運(yùn)動(dòng)向量填充反向緩沖區(qū)(“缺少方向”緩沖區(qū))時(shí)(或在解碼反向運(yùn)動(dòng)向量期間填充正向緩沖區(qū)時(shí)),要添加另外兩個(gè)細(xì)節(jié)。通常,編碼器 /解碼器可使用運(yùn)動(dòng)向量類型信息(例如IMV等)、以及先前解碼的運(yùn)動(dòng)向量的極性來(lái)形成 預(yù)測(cè)。然而,在“空穴填充”情形中,因?yàn)榫幋a器/解碼器實(shí)際上并不解碼缺少方向類型的 運(yùn)動(dòng)向量,編碼器/解碼器并不具有運(yùn)動(dòng)向量類型信息或極性信息(例如相同極性或相反 極性)。在該組合實(shí)現(xiàn)中,編碼器/解碼器將運(yùn)動(dòng)向量類型設(shè)置為1MV,并將主半幀運(yùn)動(dòng)向 量選為預(yù)測(cè)值。圖47中的偽碼4700描述該組合實(shí)現(xiàn)中的極性選擇過(guò)程。對(duì)于幀內(nèi)編碼宏塊,“幀內(nèi)運(yùn)動(dòng)向量”用來(lái)填充正向和反向運(yùn)動(dòng)預(yù)測(cè)平面?!皫瑑?nèi)運(yùn)動(dòng)向量”的任何一致表示可由解碼器實(shí)現(xiàn)來(lái)選擇。例如,如果運(yùn)動(dòng)向量被存儲(chǔ)在2-字節(jié)短 數(shù)組中,則“幀內(nèi)運(yùn)動(dòng)向量”可被表示為唯一的大常數(shù),它被填充到運(yùn)動(dòng)向量數(shù)組中來(lái)表示 該宏塊被編碼為幀內(nèi)宏塊。B-半幀中的正向運(yùn)動(dòng)向量預(yù)測(cè)正向參考幀距離從BFRACTI0N語(yǔ)法元素和REFDIST語(yǔ)法元素中計(jì)算。正向運(yùn)動(dòng)向 量預(yù)測(cè)如以上χ節(jié)所述地進(jìn)行。B-半幀中的反向運(yùn)動(dòng)向量預(yù)測(cè)正向參考幀距離從BFRACTI0N語(yǔ)法元素和REFDIST語(yǔ)法元素中計(jì)算。正向運(yùn)動(dòng)向 量預(yù)測(cè)如以上χ節(jié)所述地進(jìn)行。解碼運(yùn)動(dòng)向量差值BMVl、BMV2或BLKMVDATA語(yǔ)法元素編碼宏塊或宏塊中各塊的運(yùn)動(dòng)信息。IMV宏塊 具有BMVl和BMV2語(yǔ)法元素,且4MV宏塊可具有0到4個(gè)之間的BLKMVDATA元素。當(dāng)預(yù)測(cè)類型(BMVTYPE)為插值時(shí),BMVl對(duì)應(yīng)于正向而BMV2對(duì)應(yīng)于反向運(yùn)動(dòng)向量殘差。以下各節(jié)描述對(duì)于應(yīng)用于B-圖片的雙參考情形如何計(jì)算運(yùn)動(dòng)向量差值。雙參考半幀圖片中的運(yùn)動(dòng)向量差值雙參考半幀圖片在使用半幀圖片對(duì)隔行掃描幀的編碼中出現(xiàn)。序列的每個(gè)幀都被 分成兩個(gè)半幀,且每個(gè)半幀使用實(shí)際上逐行掃描代碼路徑來(lái)編碼。在具有兩個(gè)參考半幀的半幀圖片中(諸如具有隔行掃描B-半幀的圖片),宏塊層 中的每個(gè)MVDATA或BLKMVDATA語(yǔ)法元素聯(lián)合編碼三種信息1)水平運(yùn)動(dòng)向量差值分量,2) 垂直運(yùn)動(dòng)向量差值分量,3)使用主還是非主預(yù)測(cè)值,即兩個(gè)半幀的哪一個(gè)被運(yùn)動(dòng)向量參考。MVDATA或BLKMVDATA語(yǔ)法元素是可變長(zhǎng)度的哈夫曼代碼字,然后是一固定長(zhǎng)度代 碼字。哈夫曼代碼字的值確定固定長(zhǎng)度代碼字的大小。圖片層中的MVTAB語(yǔ)法元素指定用 來(lái)解碼可變大小代碼字的哈夫曼表格。圖61A中的偽碼6100示出如何解碼運(yùn)動(dòng)向量差值 和主/非主預(yù)測(cè)值信息。值predictor_flag、dmv_x 和 dmv_y 在圖 61A 中的偽碼 6100 中計(jì)算。偽碼 6100 中的各個(gè)值定義如下dmv_x 運(yùn)動(dòng)向量水平差值分量,dmv_y 運(yùn)動(dòng)向量垂直差值分量,k_x, k_y 長(zhǎng)運(yùn)動(dòng)向量的固定長(zhǎng)度,k_x和k_y取決于由MVRANGE符號(hào)定義的運(yùn)動(dòng)向量范圍。
表格 10.由 MVRANGE 指定的 k_x 和 k_y
extend_x 水平運(yùn)動(dòng)向量差值的擴(kuò)展范圍,extend_y 垂直運(yùn)動(dòng)向量差值的擴(kuò)展范圍,extend_x和extend_y從DMVRANGE圖片半幀語(yǔ)法元素中導(dǎo)出。如果DMVRANGE表示 使用水平分量的擴(kuò)展范圍,則extend_x = 1。否則,extend_x = 0。類似地,如果DMVRANGE 表示使用垂直分量的擴(kuò)展范圍,則eXtend_y = 1。否則,extend_y = 0。變量prediCt0r_flag是表示使用主還是非主運(yùn)動(dòng)向量預(yù)測(cè)值的二進(jìn)制標(biāo)記(0 = 使用主預(yù)測(cè)值,1 =使用非主預(yù)測(cè)值)。Offsetjable和Sizejable數(shù)組被定義為如圖61A 所示。圖61B中的偽碼6110示出在另一組合實(shí)現(xiàn)中如何解碼雙參考半幀的運(yùn)動(dòng)向量差 值。偽碼6110用不同方法解碼運(yùn)動(dòng)向量差值。例如,偽碼6110略去經(jīng)擴(kuò)展運(yùn)動(dòng)向量差值 范圍的處理。運(yùn)動(dòng)向量預(yù)測(cè)值運(yùn)動(dòng)向量通過(guò)將前面部分中計(jì)算的運(yùn)動(dòng)向量差值添加到運(yùn)動(dòng)向量預(yù)測(cè)值中來(lái)計(jì) 算。以下各節(jié)描述在該組合實(shí)現(xiàn)中如何計(jì)算IMV-和混合MV隔行掃描B-半幀中宏塊的運(yùn) 動(dòng)向量預(yù)測(cè)值。IMV隔行掃描B-半幀中的運(yùn)動(dòng)向量預(yù)測(cè)值圖5A和5B是示出被視作用于IMV宏塊的候選運(yùn)動(dòng)向量預(yù)測(cè)值的宏塊的位置的示 圖。候選預(yù)測(cè)值從左邊、上方和右上方宏塊中取得,除了宏塊是行中最后一個(gè)宏塊的情形。 在該情形中,預(yù)測(cè)值B從左上方宏塊而不是從右上方中取得。對(duì)于幀為一個(gè)宏塊寬的特定 情形,預(yù)測(cè)值總是預(yù)測(cè)值A(chǔ)(頂部預(yù)測(cè)值)。當(dāng)前宏塊在首行中的特定情形(沒(méi)有A或B預(yù) 測(cè)值、或者根本沒(méi)有預(yù)測(cè)值)在以上參照?qǐng)D33A-33F以及在以下參照?qǐng)D62A-62F解決?;旌螹V隔行掃描B-半幀中的運(yùn)動(dòng)向量預(yù)測(cè)值圖6A-10示出被視作用于混合MV隔行掃描B-半幀中的IMV或4MV宏塊的運(yùn)動(dòng)向 量的候選運(yùn)動(dòng)向量的塊或宏塊的位置。隔行掃描B-半幀中的主和非主MV預(yù)測(cè)值對(duì)于每個(gè)幀間編碼的宏塊,導(dǎo)出兩個(gè)運(yùn)動(dòng)向量預(yù)測(cè)值。一個(gè)來(lái)自主半幀而另一個(gè) 來(lái)自非主半幀。主半幀被視為包含鄰域中候選運(yùn)動(dòng)向量預(yù)測(cè)值的大部分實(shí)際值的半幀。在 不分上下的情形中,相反半幀的運(yùn)動(dòng)向量預(yù)測(cè)值被視為是主預(yù)測(cè)值(因?yàn)樗跁r(shí)間上較為 接近)。幀內(nèi)編碼宏塊在主/非主預(yù)測(cè)值的計(jì)算中不作考慮。如果全部候選預(yù)測(cè)值宏塊都是幀內(nèi)編碼的,則主和非主運(yùn)動(dòng)向量預(yù)測(cè)值都被設(shè)置為O且主預(yù)測(cè)值被視為來(lái)自相反半幀。計(jì)算隔行掃描B-半幀中的運(yùn)動(dòng)向量預(yù)測(cè)值對(duì)塊或宏塊的每個(gè)運(yùn)動(dòng)向量計(jì)算兩個(gè)運(yùn)動(dòng)向量預(yù)測(cè)值-每個(gè)參考一個(gè)。圖62A-62F中的偽碼6200描述在組合實(shí)現(xiàn)中如何對(duì)雙參考情形計(jì)算運(yùn)動(dòng)向量預(yù)測(cè)值。(圖 33A-33F中的偽碼3300描述在另一實(shí)現(xiàn)中如何對(duì)雙參考情形計(jì)算運(yùn)動(dòng)向量預(yù)測(cè)值。)在雙 參考圖片中,當(dāng)前半幀可參考兩個(gè)最新半幀。一個(gè)預(yù)測(cè)值用于相同極性的參考半幀,而另一 個(gè)用于相反極性的參考半幀。重構(gòu)隔行掃描B-半幀中的運(yùn)動(dòng)向量以下各節(jié)描述如何重構(gòu)IMV和4MV宏塊的亮度和色度運(yùn)動(dòng)向量。在重構(gòu)運(yùn)動(dòng)向量 之后,它隨后可用作鄰域運(yùn)動(dòng)向量以預(yù)測(cè)相鄰宏塊的運(yùn)動(dòng)向量。該運(yùn)動(dòng)向量將具有“相同” 或“相反”的關(guān)聯(lián)極性,并可用來(lái)導(dǎo)出另一半幀極性的運(yùn)動(dòng)向量預(yù)測(cè)值,用于運(yùn)動(dòng)向量預(yù)測(cè)。隔行掃描B-半幀中的亮度運(yùn)動(dòng)向量重構(gòu)在所有情形(1MV和4MV宏塊)中,亮度運(yùn)動(dòng)向量通過(guò)如下將差值添加到預(yù)測(cè)值來(lái) 重構(gòu)mv_x = (dmv_x+predictor_x)smod range_xmv_y = (dmv_y+predictor_y)smod range_y模運(yùn)算“smod”是定義如下的有符號(hào)模A smod b = ((A+b) % (2*b)) _b這確保重構(gòu)向量是有效的。(A smod b)位于_b和b_l之間。range_x和range_ y取決于MVRANGE。因?yàn)楦粜袙呙鐱-半幀圖片使用兩個(gè)參考圖片,在解碼運(yùn)動(dòng)向量差值之后導(dǎo)出的 predictor_flag與從運(yùn)動(dòng)向量預(yù)測(cè)導(dǎo)出的dominantpredictor值相組合,以確定哪個(gè)半幀 被用作參考。圖63中的偽碼6300描述如何確定參考半幀。在IMV宏塊中,對(duì)于組成宏塊的亮度分量的4個(gè)塊將有單個(gè)運(yùn)動(dòng)向量。如果MBMODE 語(yǔ)法元素表示沒(méi)有MV數(shù)據(jù)在宏塊層中出現(xiàn),則dmv_x = 0且dmv_y = 0 (mv_x = predictor, χ 禾口 mv_y = predictor_y)。在4MV宏塊中,宏塊中每個(gè)幀間編碼亮度塊將具有它自己的運(yùn)動(dòng)向量。因此在每 個(gè)4MV宏塊中將有0到4個(gè)亮度運(yùn)動(dòng)向量。如果4MVBP語(yǔ)法元素表示未出現(xiàn)塊的運(yùn)動(dòng)向量 信息,貝1Ji亥塊的 dmv_x = 0 且 dmv_y = 0 (mv_x = predictor_x 禾口 mv_y = predictor_y)。色度運(yùn)動(dòng)向量重構(gòu)色度運(yùn)動(dòng)向量從亮度運(yùn)動(dòng)向量中導(dǎo)出。此外,對(duì)于4MV宏塊,對(duì)要將色度塊編碼為 幀間塊還是幀內(nèi)塊的決定是基于亮度塊或半幀的狀態(tài)作出的。C.解碼隔行掃描P-幀在描述組合實(shí)現(xiàn)中用于解碼隔行掃描B-幀的過(guò)程之前,描述用于解碼隔行掃描 P"幀的過(guò)程。描述用于解碼隔行掃描B-幀的過(guò)程的小節(jié)將參照本節(jié)中討論的各個(gè)概念進(jìn) 行。1.隔行掃描P-幀的宏塊層解碼在隔行掃描P-幀中,每個(gè)宏塊可用使用一個(gè)或四個(gè)運(yùn)動(dòng)向量的幀模式、或使用兩 個(gè)或四個(gè)運(yùn)動(dòng)向量的半幀模式作運(yùn)動(dòng)補(bǔ)償。幀間編碼的宏塊不包含任何幀內(nèi)塊。此外,運(yùn)動(dòng)補(bǔ)償之后的殘差可用幀變換模式或半幀變換模式來(lái)編碼。更具體地,如果用半幀變換模 式編碼殘差,則殘差的亮度分量根據(jù)各個(gè)半幀來(lái)重新排列,而在幀變換模式中當(dāng)色度分量 保持不變時(shí)殘差保持不變。宏塊也可被編碼為幀內(nèi)宏塊。運(yùn)動(dòng)補(bǔ)償可被限制為不包括四個(gè)運(yùn)動(dòng)向量(半幀/幀),并且它通過(guò)4MVSWITCH用 信號(hào)表示。每個(gè)宏塊的運(yùn)動(dòng)補(bǔ)償和殘差編碼的類型通過(guò)MBMODE和SKIPMB聯(lián)合表示。MBMODE 根據(jù)4MVSWITCH采用不同的表格集。隔行掃描P-幀中的各個(gè)宏塊被分成5種類型1MV、2半幀MV、4幀MV、4半幀MV和 幀內(nèi)。前四類宏塊是幀間編碼的,而最后一類表示該宏塊是幀內(nèi)編碼的。宏塊類型由宏塊 層中的MBMODE語(yǔ)法元素以及跳過(guò)比特用信號(hào)表示。MBMODE對(duì)不同類型的宏塊共同編碼宏 塊類型以及有關(guān)該宏塊的各條信息。用信號(hào)表示跳過(guò)的宏塊SKIPMB字段表示宏塊的跳過(guò)條件。如果SKIPMB字段為1,則表示要跳過(guò)當(dāng)前宏 塊,并且在SKIPMB字段之后沒(méi)有發(fā)送其它信息。該跳過(guò)條件暗示當(dāng)前宏塊是具有0差值運(yùn) 動(dòng)向量的1MV(即,該宏塊是使用其IMV運(yùn)動(dòng)預(yù)測(cè)值做運(yùn)動(dòng)補(bǔ)償?shù)?,并且沒(méi)有經(jīng)編碼的塊 (CBP = 0)。另一方面,如果SKIPMB字段不是1,則MBMODE半幀被解碼為表示宏塊的類型和有 關(guān)當(dāng)前宏塊的其它信息,諸如以下小節(jié)中描述的信息。用信號(hào)表示宏塊模式有15種通過(guò)MBMODE表示的可能事件;MBMODE共同指定宏塊的類型(1MV、4幀MV、 2半幀MV、4半幀MV、或幀內(nèi))、幀間編碼宏塊的變換類型(即半幀或幀或未編碼的塊)、以 及是否有IMV宏塊的運(yùn)動(dòng)向量差值。設(shè)<MVP>表示用信號(hào)表示是否有非零IMV運(yùn)動(dòng)向量差值的二進(jìn)制事件。設(shè)〈Field/ Frame transform〉(〈半幀/幀變換 >)表示用信號(hào)表示宏塊的殘差是幀變換編碼、半幀變換 編碼、還是零編碼塊(即CBP = 0)的三元事件。MBMODE共同用信號(hào)表示以下事件集MBMODE = {<1MV,MVP,半幀/幀變換>,<2半幀MV,半幀/幀變換>,<4中貞MV,半 幀/幀變換>,<4半幀MV,半幀/幀變換 >,〈幀內(nèi)>} ;<1MV,MVP = 0,CBP = 0>的事件除外,它通過(guò)跳過(guò)條件用信號(hào)表示。對(duì)于幀間編碼宏塊,當(dāng)MBMODE中的半幀/幀變換事件表示無(wú)編碼塊時(shí),不解碼 CBPCY語(yǔ)法元素。另一方面,如果MBMODE中的半幀/幀變換事件表示半幀或幀變換時(shí),則解 碼CBPCY。所解碼事件〈半幀/幀變換〉被用來(lái)設(shè)置標(biāo)記FIELDTX。如果該事件表示宏塊是 半幀變換編碼的,則FIELDTX被設(shè)置為1。如果該事件表示宏塊是幀變換編碼的,則FIELDTX 被設(shè)置為0。如果該事件表示0編碼塊,則FIELDTX被設(shè)置為與運(yùn)動(dòng)向量相同的類型,即如 果它是FIELDMV則FIELDTX被設(shè)置為1,且如果它是FRAMEMV則被設(shè)置為0。對(duì)于非IMV的幀間編碼宏塊,發(fā)送表示零差值運(yùn)動(dòng)向量事件的另一字段。在2半 幀MV宏塊的情形中,發(fā)送表示兩個(gè)運(yùn)動(dòng)向量的哪一個(gè)包含非零運(yùn)動(dòng)向量差值的2MVBP字 段。類似地,發(fā)送表示四個(gè)運(yùn)動(dòng)向量的哪一個(gè)包含非零運(yùn)動(dòng)向量差值的4MVBP字段。對(duì)于幀內(nèi)編碼宏塊,半幀/幀變換和零編碼塊在各個(gè)字段中編碼。2.對(duì)隔行掃描P-幀的運(yùn)動(dòng)向量解碼隔行掃描P-幀的運(yùn)動(dòng)向量預(yù)測(cè)值
計(jì)算當(dāng)前宏塊的運(yùn)動(dòng)向量預(yù)測(cè)值的過(guò)程包括兩個(gè)步驟。首先,當(dāng)前宏塊的三個(gè)候選運(yùn)動(dòng)向量從其相鄰宏塊中收集。其次,當(dāng)前宏塊的運(yùn)動(dòng)向量預(yù)測(cè)值從候選運(yùn)動(dòng)向量集中 計(jì)算。圖40A-40B示出從中收集候選運(yùn)動(dòng)向量的相鄰宏塊。候選運(yùn)動(dòng)向量的收集順序是重 要的。在該組合實(shí)現(xiàn)中,收集順序總是從A開始、繼續(xù)到B、并在C結(jié)束。注意,如果相應(yīng)塊 在幀邊界之外或者相應(yīng)塊是不同片的一部分,則候選預(yù)測(cè)值被視為不存在。因而,不跨片邊 界執(zhí)行運(yùn)動(dòng)向量預(yù)測(cè)。以下各節(jié)描述是否收集不同類型宏塊的候選運(yùn)動(dòng)向量,以及如何計(jì)算運(yùn)動(dòng)向量預(yù) 測(cè)值。IMV候選運(yùn)動(dòng)向量在該組合實(shí)現(xiàn)中,圖64中的偽碼6400被用來(lái)收集該運(yùn)動(dòng)向量的最多三個(gè)候選運(yùn)
動(dòng)向量。4幀MV候選運(yùn)動(dòng)向量對(duì)于4幀MV宏塊,對(duì)于當(dāng)前宏塊中四個(gè)幀塊運(yùn)動(dòng)向量的每一個(gè),收集來(lái)自相鄰塊 的候選運(yùn)動(dòng)向量。在該組合實(shí)現(xiàn)中,圖65中的偽碼6500用來(lái)收集左上幀塊運(yùn)動(dòng)向量的最 多三個(gè)候選運(yùn)動(dòng)向量。圖66中的偽碼6600用來(lái)收集右上幀塊運(yùn)動(dòng)向量的最多三個(gè)候選運(yùn) 動(dòng)向量。圖67中的偽碼6700用來(lái)收集左下幀塊運(yùn)動(dòng)向量的最多三個(gè)候選運(yùn)動(dòng)向量。圖68 中的偽碼6800用來(lái)收集右下幀塊運(yùn)動(dòng)向量的最多三個(gè)運(yùn)動(dòng)向量。2半幀MV候選運(yùn)動(dòng)向量的導(dǎo)出對(duì)于2半幀MV宏塊,對(duì)于當(dāng)前宏塊中兩個(gè)幀運(yùn)動(dòng)向量的每一個(gè),收集來(lái)自相鄰塊 的候選運(yùn)動(dòng)向量。圖69中的偽碼6900用來(lái)收集上半幀運(yùn)動(dòng)向量的最多三個(gè)候選運(yùn)動(dòng)向量。 圖70中的偽碼7000用來(lái)收集下半幀運(yùn)動(dòng)向量的最多三個(gè)候選運(yùn)動(dòng)向量。4半幀MV候選運(yùn)動(dòng)向量的導(dǎo)出對(duì)于4半幀MV宏塊,對(duì)于當(dāng)前宏塊中四個(gè)半幀塊的每一個(gè),收集來(lái)自相鄰塊的候 選運(yùn)動(dòng)向量。圖71中的偽碼7100用來(lái)收集左上半幀塊運(yùn)動(dòng)向量的最多三個(gè)候選運(yùn)動(dòng)向量。 圖72中的偽碼7200用來(lái)收集右上半幀塊運(yùn)動(dòng)向量的最多三個(gè)候選運(yùn)動(dòng)向量。圖73中的 偽碼7300用來(lái)收集左下半幀塊運(yùn)動(dòng)向量的最多三個(gè)候選運(yùn)動(dòng)向量。圖74中的偽碼7400 用來(lái)收集右下半幀塊運(yùn)動(dòng)向量的最多三個(gè)候選運(yùn)動(dòng)向量。平均半幀運(yùn)動(dòng)向量給定兩個(gè)半幀運(yùn)動(dòng)向量(MVX1, MVY1)和(MVX2,MVY2),用來(lái)形成候選運(yùn)動(dòng)向量 (MVXa, MVYa)的平均運(yùn)算是MVXa = (MVX^MVX2+!) >> 1 ;MVXa = (MVY^MVY2+!) >> 1 ;從候選運(yùn)動(dòng)向量中計(jì)算幀的MV預(yù)測(cè)值本節(jié)描述給定一個(gè)候選運(yùn)動(dòng)向量集如何計(jì)算幀運(yùn)動(dòng)向量的運(yùn)動(dòng)向量預(yù)測(cè)值。在 該組合實(shí)現(xiàn)中,運(yùn)算對(duì)計(jì)算4幀MV宏塊中4幀塊運(yùn)動(dòng)向量的每一個(gè)的預(yù)測(cè)值相同。圖75中的偽碼7500描述如何計(jì)算幀運(yùn)動(dòng)向量的運(yùn)動(dòng)向量預(yù)測(cè)值(PMVx,PMVy)。 在偽碼7500中,TotalValidMV表示候選運(yùn)動(dòng)向量集中運(yùn)動(dòng)向量的總數(shù)(TotalValidMV = 0,1,2或3),且ValidMV數(shù)組表示候選運(yùn)動(dòng)向量集中的運(yùn)動(dòng)向量。從候選運(yùn)動(dòng)向量中計(jì)算半幀的MV預(yù)測(cè)值
本節(jié)描述給定一個(gè)候選運(yùn)動(dòng)向量集如何計(jì)算半幀運(yùn)動(dòng)向量的運(yùn)動(dòng)向量預(yù)測(cè)值。 運(yùn)算對(duì)計(jì)算2半幀MV宏塊中2個(gè)半幀運(yùn)動(dòng)向量的每一個(gè)、或4半幀MV宏塊中4個(gè)半幀塊 運(yùn)動(dòng)向量的每一個(gè)的預(yù)測(cè)值相同。首先,候選運(yùn)動(dòng)向量被分成兩個(gè)集,其中一個(gè)集只包含指向與當(dāng)前半幀相同的半幀的候選運(yùn)動(dòng)向量,而另一個(gè)集包含指向相反半幀的候選運(yùn)動(dòng)向量。假設(shè)候選運(yùn)動(dòng)向量在 1/4像素單元中表示,編碼器或解碼器可通過(guò)對(duì)其y_分量的以下檢查,來(lái)檢查候選運(yùn)動(dòng)向 量是否指向相同半幀if (ValidMVyM) {ValidMV指向相反半幀。}else{ValidMV指向相同半幀。}圖76中的偽碼7600描述如何計(jì)算半幀運(yùn)動(dòng)向量的運(yùn)動(dòng)向量預(yù)測(cè)值(PMVx,PMVy)。 在偽碼7600中,SameFieldMV和OppFieldMV表示兩個(gè)候選運(yùn)動(dòng)向量集,而NumSameFieldMV 和NumOppFieldMV表示屬于每個(gè)集的候選運(yùn)動(dòng)向量的數(shù)量。每個(gè)集中的候選運(yùn)動(dòng)向量的順 序從候選A (如果它存在)開始,然后是候選B (如果它存在),再后是候選C (如果它存在)。 例如,如果SameFieldMV候選運(yùn)動(dòng)向量集只包含候選B和候選C,則SameFieldMV
是候選 B0解碼運(yùn)動(dòng)向量差值MVDATA語(yǔ)法元素包含宏塊的運(yùn)動(dòng)向量差值信息。取決于運(yùn)動(dòng)補(bǔ)償?shù)念愋秃兔總€(gè)宏塊上用信號(hào)表示的運(yùn)動(dòng)向量塊模式,每個(gè)宏塊最多可有四個(gè)MVDATA語(yǔ)法元素。更具體地,·對(duì)于IMV宏塊,取決于MBMODE中的MVP字段可出現(xiàn)0或1個(gè)MVDATA語(yǔ)法元素。·對(duì)于2半幀MV宏塊,取決于2MVBP可出現(xiàn)0、1、或2個(gè)MVDATA語(yǔ)法元素。 對(duì)于4幀/半幀MV宏塊,取決于4MVBP可出現(xiàn)0、1、2、3或4個(gè)MVDATA語(yǔ)法元在該組合實(shí)現(xiàn)中,運(yùn)動(dòng)向量差值用與隔行掃描P-半幀的單參考半幀運(yùn)動(dòng)向量差 值相同的方法來(lái)解碼。(圖77A中的偽碼7700示出如何解碼單參考半幀的運(yùn)動(dòng)向量差值。 圖77B中的偽碼7710示出在另一組合實(shí)現(xiàn)中如何解碼單參考半幀的運(yùn)動(dòng)向量差值。偽碼 7710用一種不同方法解碼運(yùn)動(dòng)向量差值。例如,偽碼7710略去對(duì)經(jīng)擴(kuò)展的運(yùn)動(dòng)向量差值范 圍的處理。)重構(gòu)運(yùn)動(dòng)向量給出運(yùn)動(dòng)向量差值dmv,亮度運(yùn)動(dòng)向量通過(guò)如以上XV. B. 3節(jié)中所述的將差值添加 到預(yù)測(cè)值中來(lái)重構(gòu)。給定亮度幀或半幀運(yùn)動(dòng)向量,導(dǎo)出相應(yīng)的色度幀或半幀運(yùn)動(dòng)向量來(lái)補(bǔ) 償Cb/Cr塊的一部分或全部。圖78中的偽碼7800描述色度運(yùn)動(dòng)向量CMV如何從隔行掃描 P-幀中的亮度運(yùn)動(dòng)向量LMV中導(dǎo)出。D.解碼隔行掃描B-幀本節(jié)參照前一節(jié)中討論的概念描述組合實(shí)現(xiàn)中用于解碼隔行掃描B-幀的過(guò)程。1.隔行掃描B-幀的宏塊級(jí)別解碼在宏塊級(jí)別上,隔行掃描B-幀語(yǔ)法類似于上述隔行掃描P-幀。隔行掃描B-幀中的宏塊被分成三種類型1MV、2半幀MV、和幀內(nèi)。在本組合實(shí)現(xiàn)中4幀MV和4半幀MV模式不被允許用于隔行掃描B-幀。這三種模式像在隔行掃描P-幀中一樣,與MBMODE語(yǔ)法元素 共同編碼。每個(gè)宏塊也被預(yù)測(cè)為正向、反向、直接或插值(使用DIRECTMB和BMVTYPE語(yǔ)法 元素)如果IMV宏塊是正向或反向,則它使用單個(gè)運(yùn)動(dòng)向量。如果它是IMV但是直接或插 值的,則它使用兩個(gè)運(yùn)動(dòng)向量。如果它是2半幀MV類型并是正向或反向預(yù)測(cè)的,則它使用 兩個(gè)運(yùn)動(dòng)向量。如果它是2半幀MV類型并是直接或插值的,則它使用四個(gè)運(yùn)動(dòng)向量。以下各節(jié)描述隔行掃描B-幀中不同幀間編碼的宏塊類型的特征。隔行掃描B-幀中的IMV宏塊在隔行掃描B-幀中的IMV宏塊中,亮度塊的位移在預(yù)測(cè)類型是正向或反向時(shí)由單 個(gè)運(yùn)動(dòng)向量表示,而在類型是直接或插值時(shí)由兩個(gè)運(yùn)動(dòng)向量表示。在每一情形中導(dǎo)出相應(yīng) 的色度向量。在插值和直接預(yù)測(cè)的情形中,平均來(lái)自正向和反向參考圖片的運(yùn)動(dòng)補(bǔ)償像素 以形成最終預(yù)測(cè)。 隔行掃描B-幀中的2半幀MV宏塊在隔行掃描B-幀中的2半幀MV宏塊中,亮度塊的每個(gè)半幀的位移由一不同運(yùn)動(dòng) 向量描述,如圖37所示。此外,在從上半幀去到下半幀時(shí)該預(yù)測(cè)類型被允許從正向切換到 反向,或反之,從而使上半幀從一參考圖片中得到運(yùn)動(dòng)補(bǔ)償,而下半幀從另一參考圖片中得 到運(yùn)動(dòng)補(bǔ)償,如在以上VII節(jié)中所述的。隔行掃描B-幀中的2MVBP、4MVBP的解釋和運(yùn)動(dòng)向量順序在IMV宏塊中,編碼器用插值模式使用2MVBP語(yǔ)法元素,以表示出現(xiàn)兩個(gè)運(yùn)動(dòng)向量 的哪一個(gè)。比特1對(duì)應(yīng)于正向運(yùn)動(dòng)向量,而比特0對(duì)應(yīng)于反向運(yùn)動(dòng)向量。在2半幀MV宏塊中,編碼器用正向和反向模式使用2MVBP語(yǔ)法元素,來(lái)表示出現(xiàn) 兩個(gè)半幀的運(yùn)動(dòng)向量的哪一個(gè)。比特1對(duì)應(yīng)于上半幀運(yùn)動(dòng)向量而比特0對(duì)應(yīng)于下半幀運(yùn)動(dòng) 向量。當(dāng)MVSW語(yǔ)法元素用來(lái)從用于上半幀的正向預(yù)測(cè)切換到用于下半幀的反向預(yù)測(cè)或反 之時(shí),編碼器使用相同的上/下信號(hào)表示。編碼器用插值模式使用4MVBP語(yǔ)法元素,來(lái)表示 出現(xiàn)四個(gè)運(yùn)動(dòng)向量的哪一個(gè)。比特3對(duì)應(yīng)于上半幀正向運(yùn)動(dòng)向量,比特2對(duì)應(yīng)于上半幀反 向運(yùn)動(dòng)向量,比特1對(duì)應(yīng)于下半幀正向運(yùn)動(dòng)向量,而比特0對(duì)應(yīng)于下半幀反向運(yùn)動(dòng)向量。設(shè)置為‘1’的2MVBP和4MVBP的比特表示出現(xiàn)相應(yīng)運(yùn)動(dòng)向量差值,同時(shí)設(shè)置為‘0, 的比特表示相應(yīng)運(yùn)動(dòng)向量等于所預(yù)測(cè)的運(yùn)動(dòng)向量,即未出現(xiàn)相應(yīng)的運(yùn)動(dòng)向量差值。經(jīng)實(shí)際 解碼的運(yùn)動(dòng)向量用與2MVBP或4MVBP中各比特相同的順序發(fā)送。例如,在使用差值模式的2 半幀MV宏塊中,要由解碼器接收的第一運(yùn)動(dòng)向量是上半幀正向運(yùn)動(dòng)向量,而要接收的最后 (即第四)運(yùn)動(dòng)向量是下半幀反向運(yùn)動(dòng)向量。用信號(hào)表示跳過(guò)的宏塊被跳過(guò)的宏塊以與P幀相同的方式用信號(hào)表示。然而,隔行掃描B-幀中的被跳過(guò) 宏塊限于IMV幀類型,即不允許半幀類型。運(yùn)動(dòng)向量用零差值運(yùn)動(dòng)向量編碼(即宏塊是使 用其IMV運(yùn)動(dòng)補(bǔ)償值進(jìn)行運(yùn)動(dòng)補(bǔ)償?shù)?且沒(méi)有已編碼塊(CBP = 0)。如果宏塊被跳過(guò),則 編碼器僅發(fā)送該宏塊的BMVTYPE信息,從而運(yùn)動(dòng)向量可被準(zhǔn)確預(yù)測(cè)為正向、反向、直接或插值。用信號(hào)表示宏塊模式用信號(hào)表示宏塊模式用與隔行掃描P-幀相同的方法執(zhí)行,如以上XV. C.節(jié)中所述。 預(yù)測(cè)類型解碼(BMVTYPE和MVSW)隔行掃描B-幀的預(yù)測(cè)類型根據(jù)以下規(guī)則解碼。如果圖片層位平面DIRECTMB表示 宏塊是直接類型,則該宏塊的預(yù)測(cè)類型被設(shè)置成直接。如果直接/非直接決定用原始模式 編碼,則編碼器使用宏塊級(jí)別上的附加比特DIRECTBBIT,來(lái)表示預(yù)測(cè)類型是否是直接。如果預(yù)測(cè)類型是非直接的,則解碼器解碼BMVTYPE語(yǔ)法元素。如果宏塊模式是 “ 2MV半幀編碼”,且如果BMVTYPE是正向或反向的,則解碼器還解碼MVSW比特來(lái)判定從該宏 塊的上半幀去到下半幀時(shí)預(yù)測(cè)類型是否將改變(即,從正向變?yōu)榉聪?,或反?。解碼直接模式運(yùn)動(dòng)向量為了解碼直接模式運(yùn)動(dòng)向量,解碼器首先緩存來(lái)自先前解碼錨幀的運(yùn)動(dòng)向量。具 體地,對(duì)于先前解碼的將來(lái)P-幀,解碼器緩存來(lái)自將來(lái)P-幀的經(jīng)解碼亮度運(yùn)動(dòng)向量的最大 可能數(shù)量的一半(即(2*Number0fMB)個(gè)運(yùn)動(dòng)向量)。選擇要緩存的來(lái)自錨幀的這些運(yùn)動(dòng)向 量的方法在以上XIII節(jié)中描述。使用以上所獲得的運(yùn)動(dòng)向量,解碼器應(yīng)用圖19中偽碼1900示出的SCale_DireCt_ MV中的縮放邏輯,來(lái)獲得正向和反向指示運(yùn)動(dòng)向量,而無(wú)需回拉運(yùn)動(dòng)向量。在本組合實(shí)現(xiàn)中,不計(jì)算其中不使用諸如正向和反向預(yù)測(cè)宏塊的直接模式預(yù)測(cè)的 宏塊的直接模式運(yùn)動(dòng)向量。相反,非直接宏塊的運(yùn)動(dòng)向量基于正向或反向運(yùn)動(dòng)向量緩沖區(qū) 來(lái)預(yù)測(cè)。2.對(duì)隔行掃描B-幀的運(yùn)動(dòng)向量解碼隔行掃描B-幀的運(yùn)動(dòng)向量預(yù)測(cè)值與隔行掃描P-幀一樣,計(jì)算隔行掃描B-幀的當(dāng)前宏塊的運(yùn)動(dòng)向量預(yù)測(cè)值的過(guò)程 包括,從當(dāng)前宏塊的相鄰宏塊中收集其候選運(yùn)動(dòng)向量,并且從候選運(yùn)動(dòng)向量集中計(jì)算當(dāng)前 宏塊的運(yùn)動(dòng)向量預(yù)測(cè)值。圖40A-40B示出從中收集候選運(yùn)動(dòng)向量的相鄰宏塊。在該組合實(shí) 現(xiàn)中,隔行掃描B-幀的運(yùn)動(dòng)向量預(yù)測(cè)值根據(jù)以上XV. C.節(jié)所述的用于隔行掃描P-幀的規(guī) 則來(lái)從候選集中選擇。不同的預(yù)測(cè)上下文被用于正向和反向模式運(yùn)動(dòng)向量。解碼器使用正向預(yù)測(cè)上下文 來(lái)預(yù)測(cè)正向運(yùn)動(dòng)向量,并使用反向預(yù)測(cè)上下文來(lái)預(yù)測(cè)反向運(yùn)動(dòng)向量。填充隔行掃描B-幀中的正向和反向預(yù)測(cè)上下文解碼器分開緩存正向和反向運(yùn)動(dòng)向量,并分別用它們來(lái)預(yù)測(cè)正向和反向運(yùn)動(dòng)向 量。對(duì)于插值宏塊,解碼器使用正向預(yù)測(cè)緩沖區(qū)來(lái)預(yù)測(cè)正向運(yùn)動(dòng)向量(第一個(gè)經(jīng)解碼的 MVDATA元素),并使用反向緩沖區(qū)來(lái)預(yù)測(cè)反向運(yùn)動(dòng)向量(第二個(gè)經(jīng)解碼的MVDATA元素)。 當(dāng)宏塊是直接或插值,則解碼器將正向MV分量緩存在正向緩沖區(qū)中,并將反向MV分量緩存 在反向緩沖區(qū)中。每種情形中(例如1MV宏塊、2半幀MV宏塊等)用于從一個(gè)候選集中選 擇運(yùn)動(dòng)向量預(yù)測(cè)值的實(shí)際預(yù)測(cè)邏輯如以上XV. C.節(jié)中所述。用于填充正向和反向運(yùn)動(dòng)向量緩沖區(qū)、并從這些緩沖區(qū)的運(yùn)動(dòng)向量中預(yù)測(cè)運(yùn)動(dòng)向 量的方案如以上X.C.節(jié)中所述。解碼隔行掃描B-幀中的運(yùn)動(dòng)向量差值隔行掃描B-幀中的運(yùn)動(dòng)向量差值根據(jù)圖77A和77B中的偽碼7700和7710解碼, 如以上XV. C. 2節(jié)中所述。
重構(gòu)隔行掃描B-幀中的運(yùn)動(dòng)向量隔行掃描B-幀中的運(yùn)動(dòng)向量根據(jù)圖78中的偽碼7800并如以上XV. B. 3和XV. C. 2 節(jié)中所述地解碼。E.位平面編碼宏塊特定的二進(jìn)制信息可用每個(gè)宏塊一個(gè)二進(jìn)制符號(hào)來(lái)編碼,這些二進(jìn)制信息諸 如(1)隔行掃描B-半幀的宏塊的正向/非正向決定(即F0RWARDMB標(biāo)記),以及⑵隔行 掃描B-半幀的宏塊的直接/非直接決定(即DIRECTMB標(biāo)記)。例如,隔行掃描B-半幀的 宏塊是否用正向模式(與諸如反向、直接或插值的另一模式相對(duì))作運(yùn)動(dòng)補(bǔ)償可用1個(gè)比 特作信號(hào)表示。在這些情形中,半幀或幀中全部宏塊的狀態(tài)可被編碼為位平面并在半幀或 幀頭中傳送。該規(guī)則的一個(gè)例外是如果位平面編碼模式被設(shè)置成原始模式時(shí),在該情形中 每個(gè)宏塊的狀態(tài)被編碼為每個(gè)符號(hào)1個(gè)比特,并在宏塊級(jí)別上與其它宏塊級(jí)別語(yǔ)法元素一 起傳送。半幀/幀級(jí)別位平面編碼被用來(lái)編碼兩維二進(jìn)制數(shù)組。每個(gè)數(shù)組的大小是rowMB x colMB,其中rowMB和colMB分別是討論中半幀或幀中宏塊行和列的數(shù)量。在比特流內(nèi), 每個(gè)數(shù)組被編碼為一個(gè)連續(xù)比特集。七種模式之一被用來(lái)編碼每個(gè)數(shù)組。該七種模式是1.原始模式-編碼為每個(gè)符號(hào)1個(gè)比特并作為MB級(jí)別語(yǔ)法的一部分傳送的信息;2.正常-2 (Norm-2)模式-共同編碼的兩個(gè)符號(hào);3.差值-2(Diff_2)模式-位平面的差值編碼,隨后是共同編碼兩個(gè)殘差符號(hào);4.正常-6 (Norm-6)模式-共同編碼的六個(gè)符號(hào);5.差值-6(Diff_6)模式-位平面的差值編碼,隨后是共同編碼六個(gè)殘差符號(hào);6. rowskip (跳行)模式-用信號(hào)表示跳過(guò)沒(méi)有設(shè)置比特的行的一個(gè)比特;以及7. columnskip (跳列)模式-用信號(hào)表示跳過(guò)沒(méi)有設(shè)置比特的列的一個(gè)比特。半幀或幀級(jí)別上位平面的語(yǔ)法元素順序如下INVERT、IM0DE和DATABITS。逆轉(zhuǎn)標(biāo)記(INVERT)INVERT語(yǔ)法元素是1-比特值,如果設(shè)置則表示該位平面具有比0比特更多的設(shè) 置比特。取決于INVERT和模式,解碼器將逆轉(zhuǎn)所解釋的位平面以重新創(chuàng)建原始位平面。注 意,當(dāng)使用原始模式時(shí),將忽略該比特的值。以下提供對(duì)解碼位平面時(shí)如何使用INVERT值 的描述。編碼模式(IM0DE)IM0DE語(yǔ)法元素是指示用來(lái)編碼位平面的編碼模式的可變長(zhǎng)度值。表格11示出用 來(lái)編碼IM0DE語(yǔ)法元素的代碼表。以下提供對(duì)解碼位平面時(shí)如何使用IM0DE值的描述。表格11. IM0DE VLC 代碼表 位平面編碼比特(DATABITS)DATABITS語(yǔ)法元素是編碼位平面的符號(hào)流的可變大小語(yǔ)法元素。用來(lái)編碼位平面 的方法根據(jù)IM0DE的值來(lái)確定。七種編碼模式在以下各節(jié)中描述。原始模式在該模式中,位平面被編碼為每個(gè)以宏塊的光柵掃描順序掃描的符號(hào)1個(gè)比特, 并作為宏塊層的一部分發(fā)送?;蛘?,該信息在半幀或幀級(jí)別上以原始模式編碼,且DATABITS 在長(zhǎng)度上為rowMB x co 1MB比特。Norm-2 模式如果rowMB x colMB為奇數(shù),則第一個(gè)符號(hào)被編碼為原始。后續(xù)符號(hào)成對(duì)地用自 然掃描順序編碼。表格12中的二進(jìn)制VLC表格被用來(lái)編碼符號(hào)對(duì)。表格1. Norm-2/Diff-2 代碼表 Diff-2 模式Norm-2模式用來(lái)如上所述地產(chǎn)生位平面,然后Diff—1運(yùn)算如下所述地應(yīng)用于位平Norm-6 模式在Norm-6和Diff_6模式中,位平面分6個(gè)像素的組進(jìn)行編碼。這些像素被分成 2x3或3x2的塊。位平面使用一系列規(guī)則來(lái)最大程度地平鋪,且剩余像素使用跳行和跳列模 式的變體進(jìn)行編碼。如果且僅當(dāng)rowMB是3的倍數(shù)而colMB不是,則使用2x3“豎直”塊。否 則,使用3x2“水平”塊。圖79A示出2x3“豎直”塊的簡(jiǎn)化示例。圖79B和79C示出3x2“水 平”±夬,對(duì)這些塊細(xì)長(zhǎng)的黑色矩形為1個(gè)像素寬并使用跳行和跳列編碼進(jìn)行編碼。對(duì)于如圖79C所示平鋪的平面,在圖片的上邊緣和左邊緣使用線性塊,這些塊的編碼順序符合以下模 式。先編碼6-元素塊,然后是跳列和跳行編碼的線性塊。如果數(shù)組大小是2x3或3x2的倍 數(shù),則后面的線性塊不存在,且位平面被完美平鋪。該6-元素矩形塊使用不完整的哈夫曼代碼編碼,即不將所有端點(diǎn)用于編碼的哈 夫曼代碼。設(shè)N是塊中設(shè)置比特的數(shù)量,即0彡N彡6。對(duì)于N<3,使用VLC來(lái)編碼該塊。 對(duì)于N = 3,固定長(zhǎng)度的轉(zhuǎn)義碼之后為5比特固定長(zhǎng)度代碼,對(duì)于N > 3,固定長(zhǎng)度轉(zhuǎn)義碼之 后為該塊的補(bǔ)碼。該矩形塊包含6個(gè)比特的信息。設(shè)k為關(guān)聯(lián)于塊的代碼,其中k = b^Sb,為該塊 內(nèi)自然掃描順序中第i個(gè)比特的二進(jìn)制值。因此,0彡k < 64。VLC、轉(zhuǎn)義碼、加上固定長(zhǎng)度 代碼被用來(lái)用信號(hào)表示k。Diff-6 模式Norm-6模式用來(lái)如上所述地產(chǎn)生位平面,然后DifT1運(yùn)算如下所述地應(yīng)用于位平跳行模式在跳行編碼模式中,用1個(gè)比特的開銷跳過(guò)所有零行。語(yǔ)法如下對(duì)于每一行,單 個(gè)R0WSKIP比特表示是否跳過(guò)該行;如果跳過(guò)該行,則接著是下一行的R0WSKIP比特;否則 (未跳過(guò)該行),則接著是R0WBITS比特(該行中每個(gè)宏塊的比特)。因而,如果整行為零, 則零比特被發(fā)送為R0WSKIP符號(hào),并跳過(guò)R0WBITS。如果在該行中有一設(shè)置比特,R0WSKIP 被設(shè)置為1,且整個(gè)行被發(fā)送為原始(R0WBITS)。各行從半幀或幀的頂部掃描到底部。跳列模式跳列是跳行的轉(zhuǎn)置。各列從半幀或幀的頂部掃描到底部。Diff—1 逆向差值解碼在使用任一差值模式(Diff-2或Diff-6)時(shí),“差值比特”的位平面首先使用相應(yīng) 的正常模式(Norm-2或Norm-6)解碼。差值比特被用來(lái)重新產(chǎn)生原始位平面。重新產(chǎn)生過(guò) 程是二進(jìn)制字母表上的2-D DPCM。為了在位置(i,j)上重新產(chǎn)生比特,預(yù)測(cè)值bp(i,j)如 下產(chǎn)生(從位置(i,j)上的比特b(i,j))
否則對(duì)于差值編碼模式,不執(zhí)行基于INVERT的逐個(gè)比特逆轉(zhuǎn)過(guò)程。然而,INVERT標(biāo)記 以不同容量用來(lái)表示符號(hào)A的值,用于導(dǎo)出所示預(yù)測(cè)值。更具體地,如果INVERT等于0則A 等于0,且如果INVERT等于1則A等于1。位平面的實(shí)際值通過(guò)異或預(yù)測(cè)值和經(jīng)解碼的差 值比特值來(lái)獲取。在以上公式中,b(i,j)是在最終解碼之后(即進(jìn)行Norm-2或Norm-6,然 后是與其預(yù)測(cè)值的差值異或之后)第(i,j)位置上的比特。已經(jīng)參照各個(gè)實(shí)施例描述和示出了本發(fā)明的各個(gè)原理,可以理解各個(gè)實(shí)施例可在 排列和細(xì)節(jié)中進(jìn)行更改而不背離這些原理。應(yīng)當(dāng)理解,在此所述的程序、過(guò)程或方法并不相 關(guān)于或限于任何特定類型的計(jì)算環(huán)境,除非另有所示。各種類型的通用或?qū)S糜?jì)算環(huán)境可 根據(jù)在此所述的教授內(nèi)容使用或執(zhí)行操作。在軟件中示出的各個(gè)實(shí)施例的元素可用硬件實(shí)現(xiàn),反之亦然。 根據(jù)本發(fā)明各原理可應(yīng)用其中的許多可能實(shí)施例,我們將本發(fā)明解釋為可在以下 權(quán)利要求及其等效方案的范圍和精神內(nèi)的所有這些實(shí)施例。
權(quán)利要求
一種使用視頻解碼器來(lái)解碼已編碼視頻的方法,所述包括用所述視頻解碼器接收比特流中的已編碼數(shù)據(jù);以及使用所述已編碼數(shù)據(jù)來(lái)解碼隔行掃描B-半幀,包括,對(duì)于所述隔行掃描B-半幀中的宏塊,所述宏塊具有第一預(yù)測(cè)方向的重構(gòu)后第一運(yùn)動(dòng)向量并且僅在所述第一預(yù)測(cè)方向上使用運(yùn)動(dòng)補(bǔ)償將所述重構(gòu)后第一運(yùn)動(dòng)向量存儲(chǔ)在用于所述第一預(yù)測(cè)方向的第一運(yùn)動(dòng)向量緩沖區(qū)中以供在后續(xù)的運(yùn)動(dòng)向量預(yù)測(cè)中使用;計(jì)算用于與所述第一預(yù)測(cè)方向相反的第二預(yù)測(cè)方向的運(yùn)動(dòng)向量預(yù)測(cè)值,其中所述運(yùn)動(dòng)向量預(yù)測(cè)值至少部分地基于來(lái)自用于所述第二預(yù)測(cè)方向的第二運(yùn)動(dòng)向量緩沖區(qū)的一個(gè)或多個(gè)候選運(yùn)動(dòng)向量預(yù)測(cè)值,其中所述運(yùn)動(dòng)向量預(yù)測(cè)值是所述第二運(yùn)動(dòng)預(yù)測(cè)方向上的填充第二運(yùn)動(dòng)向量的預(yù)測(cè)的值,并且其中,計(jì)算用于所述第二預(yù)測(cè)方向的運(yùn)動(dòng)向量預(yù)測(cè)值包括,至少部分地基于來(lái)自所述第二運(yùn)動(dòng)向量緩沖區(qū)的所述一個(gè)或多個(gè)候選運(yùn)動(dòng)向量預(yù)測(cè)值的極性信息,在以下兩者之間選擇在所述第二預(yù)測(cè)方向上使用引用所述隔行掃描B-半幀的第一參考半幀的相同極性運(yùn)動(dòng)向量預(yù)測(cè)值作為所述運(yùn)動(dòng)向量預(yù)測(cè)值,所述第一參考半幀具有與所述隔行掃描B-半幀相同的極性,或者在所述第二運(yùn)動(dòng)方向上使用引用所述隔行掃描B-半幀的第二參考半幀的相反極性運(yùn)動(dòng)向量預(yù)測(cè)值作為所述運(yùn)動(dòng)向量預(yù)測(cè)值,所述第二參考半幀具有與所述隔行掃描B-半幀相反的極性;以及將所述運(yùn)動(dòng)向量預(yù)測(cè)值作為所述填充第二運(yùn)動(dòng)向量存儲(chǔ)在所述第二運(yùn)動(dòng)向量緩沖區(qū)中以供在后續(xù)的運(yùn)動(dòng)向量預(yù)測(cè)中使用。
2.如權(quán)利要求1所述的方法,其特征在于,所述極性信息包括主極性的指示,且其中計(jì) 算用于所述第二預(yù)測(cè)方向的運(yùn)動(dòng)向量預(yù)測(cè)值包括選擇所述相同極性運(yùn)動(dòng)向量預(yù)測(cè)值或所 述相反極性運(yùn)動(dòng)向量預(yù)測(cè)值作為候選主極性預(yù)測(cè)值。
3.如權(quán)利要求1所述的方法,其特征在于,所述第一預(yù)測(cè)方向?yàn)檎蚨龅诙A(yù)測(cè) 方向?yàn)榉聪颉?br>
4.如權(quán)利要求1所述的方法,其特征在于,所述第一預(yù)測(cè)方向?yàn)榉聪蚨龅诙A(yù)測(cè) 方向?yàn)檎颉?br>
5.如權(quán)利要求1所述的方法,其特征在于,重構(gòu)所述第一運(yùn)動(dòng)向量包括至少部分地基于來(lái)自第一運(yùn)動(dòng)向量緩沖區(qū)的一個(gè)或多個(gè)候選運(yùn)動(dòng)向量預(yù)測(cè)值,計(jì)算用 于所述第一預(yù)測(cè)方向的運(yùn)動(dòng)向量預(yù)測(cè)值;以及組合用于所述第一預(yù)測(cè)方向的運(yùn)動(dòng)向量預(yù)測(cè)值與運(yùn)動(dòng)向量差值信息。
6.如權(quán)利要求1所述的方法,其特征在于,所述隔行掃描B-半幀中的宏塊是IMV宏塊, 且其中具有所述第一和第二運(yùn)動(dòng)向量緩沖區(qū)中的運(yùn)動(dòng)向量的至少一個(gè)宏塊是4MV宏塊。
7.如權(quán)利要求1所述的方法,其特征在于,所述隔行掃描B-半幀中的宏塊是4MV宏塊, 且其中具有所述第一和第二運(yùn)動(dòng)向量緩沖區(qū)中的運(yùn)動(dòng)向量的至少一個(gè)宏塊是IMV宏塊。
8.一種使用視頻解碼器來(lái)解碼已編碼視頻的方法,所述方法包括用所述視頻解碼器接收比特流中的已編碼數(shù)據(jù);以及使用所述已編碼數(shù)據(jù)來(lái)解碼隔行掃描B-半幀,包括將第一運(yùn)動(dòng)向量存儲(chǔ)在用于第一預(yù)測(cè)方向的第一運(yùn)動(dòng)向量緩沖區(qū)中,其中所述第一運(yùn) 動(dòng)向量用于所述隔行掃描B-半幀中的宏塊,所述宏塊僅在所述第一預(yù)測(cè)方向上使用運(yùn)動(dòng) 補(bǔ)償;計(jì)算用于與所述第一預(yù)測(cè)方向相反的第二預(yù)測(cè)方向的主極性運(yùn)動(dòng)向量預(yù)測(cè)值,其中所 述主極性運(yùn)動(dòng)向量預(yù)測(cè)值是所述第二預(yù)測(cè)方向上的填充第二運(yùn)動(dòng)向量的預(yù)測(cè)的值,并且其 中,所述計(jì)算主極性運(yùn)動(dòng)向量預(yù)測(cè)值包括,至少部分地基于關(guān)于來(lái)自用于所述第二預(yù)測(cè)方 向的第二運(yùn)動(dòng)向量緩沖區(qū)的一個(gè)或多個(gè)候選運(yùn)動(dòng)向量預(yù)測(cè)值的極性信息,在以下兩者之間 選擇在所述第二預(yù)測(cè)方向上使用引用所述隔行掃描B-半幀的第一參考半幀的相同極性 運(yùn)動(dòng)向量預(yù)測(cè)值作為所述主極性運(yùn)動(dòng)向量預(yù)測(cè)值,所述第一參考半幀具有與所述隔行掃描 B-半幀相同的極性;在所述第二預(yù)測(cè)方向上使用引用所述隔行掃描B-半幀的第二參考半幀的相反極性 運(yùn)動(dòng)向量預(yù)測(cè)值作為所述主極性運(yùn)動(dòng)向量預(yù)測(cè)值,所述第二參考半幀具有與所述隔行掃描 B-半幀相反的極性;以及將所述主極性運(yùn)動(dòng)向量預(yù)測(cè)值作為所述填充第二運(yùn)動(dòng)向量存儲(chǔ)在所述第二運(yùn)動(dòng)向量 緩沖區(qū)中。
9.如權(quán)利要求8所述的方法,其特征在于,所述第一預(yù)測(cè)方向?yàn)檎蚨龅诙A(yù)測(cè) 方向?yàn)榉聪?,或者所述第一預(yù)測(cè)方向?yàn)榉聪蚨龅诙A(yù)測(cè)方向?yàn)檎颉?br>
10.如權(quán)利要求8所述的方法,其特征在于,所述隔行掃描B-半幀中的宏塊是IMV或 4MV宏塊。
11.一種使用視頻編碼器來(lái)編碼視頻的方法,所述方法包括用所述視頻編碼器對(duì)隔行掃描B-半幀進(jìn)行編碼,包括,對(duì)于所述隔行掃描B-半幀中的宏塊,所述宏塊具 有第一預(yù)測(cè)方向上的第一運(yùn)動(dòng)向量并僅在所述第一預(yù)測(cè)方向上使用運(yùn)動(dòng)補(bǔ)償將所述第一運(yùn)動(dòng)向量存儲(chǔ)在用于所述第一預(yù)測(cè)方向的第一運(yùn)動(dòng)向量緩沖區(qū)中以供在 后續(xù)的運(yùn)動(dòng)向量預(yù)測(cè)中使用;計(jì)算用于與所述第一預(yù)測(cè)方向相反的第二預(yù)測(cè)方向的運(yùn)動(dòng)向量預(yù)測(cè)值,其中所述運(yùn)動(dòng) 向量預(yù)測(cè)值至少部分地基于來(lái)自用于所述第二預(yù)測(cè)方向的第二運(yùn)動(dòng)向量緩沖區(qū)的一個(gè)或 多個(gè)候選運(yùn)動(dòng)向量預(yù)測(cè)值,其中所述運(yùn)動(dòng)向量預(yù)測(cè)值是所述第二方向上的填充第二運(yùn)動(dòng)向 量的預(yù)測(cè)的值,并且其中計(jì)算用于所述第二預(yù)測(cè)方向的運(yùn)動(dòng)向量預(yù)測(cè)值包括,至少部分地 基于關(guān)于來(lái)自所述第二運(yùn)動(dòng)向量緩沖區(qū)的一個(gè)或多個(gè)候選運(yùn)動(dòng)向量預(yù)測(cè)值的極性信息,在 以下兩者之間選擇在所述第二預(yù)測(cè)方向上使用引用所述隔行掃描B-半幀的第一參考半幀的相同極性 運(yùn)動(dòng)向量預(yù)測(cè)值作為所述主極性運(yùn)動(dòng)向量預(yù)測(cè)值,所述第一參考半幀具有與所述隔行掃描 B-半幀相同的極性;在所述第二預(yù)測(cè)方向上使用引用所述隔行掃描B-半幀的第二參考半幀的相反極性 運(yùn)動(dòng)向量預(yù)測(cè)值作為所述主極性運(yùn)動(dòng)向量預(yù)測(cè)值,所述第二參考半幀具有與所述隔行掃描B-半幀相反的極性;以及將所述運(yùn)動(dòng)向量預(yù)測(cè)值作為所述填充第二運(yùn)動(dòng)向量存儲(chǔ)在所述第二運(yùn)動(dòng)向量緩沖區(qū) 中以供在后續(xù)的運(yùn)動(dòng)向量預(yù)測(cè)中使用;以及在比特流中輸出所述隔行掃描B-半幀的已編碼數(shù)據(jù)。
12.如權(quán)利要求11所述的方法,其特征在于,所述極性信息包括主極性的指示,且其中 計(jì)算用于所述第二預(yù)測(cè)方向的運(yùn)動(dòng)向量預(yù)測(cè)值包括選擇所述相同極性運(yùn)動(dòng)向量預(yù)測(cè)值或 所述相反極性運(yùn)動(dòng)向量預(yù)測(cè)值作為候選主極性預(yù)測(cè)值。
13.如權(quán)利要求11所述的方法,其特征在于,所述第一預(yù)測(cè)方向?yàn)檎蚨龅诙A(yù) 測(cè)方向?yàn)榉聪颉?br>
14.如權(quán)利要求11所述的方法,其特征在于,所述第一預(yù)測(cè)方向?yàn)榉聪蚨龅诙A(yù) 測(cè)方向?yàn)檎颉?br>
15.如權(quán)利要求11所述的方法,其特征在于,重構(gòu)所述第一運(yùn)動(dòng)向量包括至少部分地基于來(lái)自第一運(yùn)動(dòng)向量緩沖區(qū)的一個(gè)或多個(gè)候選運(yùn)動(dòng)向量預(yù)測(cè)值,計(jì)算用 于所述第一預(yù)測(cè)方向的運(yùn)動(dòng)向量預(yù)測(cè)值;以及組合用于所述第一預(yù)測(cè)方向的運(yùn)動(dòng)向量預(yù)測(cè)值與運(yùn)動(dòng)向量差值信息。
16.如權(quán)利要求11所述的方法,其特征在于,所述隔行掃描B-半幀中的宏塊是IMV宏 塊,且其中具有所述第一和第二運(yùn)動(dòng)向量緩沖區(qū)中的運(yùn)動(dòng)向量的至少一個(gè)宏塊是4MV宏 塊。
17.如權(quán)利要求11所述的方法,其特征在于,所述隔行掃描B-半幀中的宏塊是4MV宏 塊,且其中具有所述第一和第二運(yùn)動(dòng)向量緩沖區(qū)中的運(yùn)動(dòng)向量的至少一個(gè)宏塊是IMV宏 塊。
18.一種使用視頻解碼器來(lái)解碼已編碼視頻的方法,所述方法包括 用所述視頻解碼器接收比特流中的已編碼數(shù)據(jù);以及使用所述已編碼數(shù)據(jù)來(lái)解碼隔行掃描B-半幀,其中所述隔行掃描B-半幀具有一個(gè)或 多個(gè)正向宏塊以及一個(gè)或多個(gè)反向宏塊,并且其中所述解碼包括 對(duì)于所述一個(gè)或多個(gè)正向宏塊中的每一個(gè) 重構(gòu)用于該宏塊的正向運(yùn)動(dòng)向量;將所重構(gòu)的正向運(yùn)動(dòng)向量存儲(chǔ)在正向運(yùn)動(dòng)向量緩沖區(qū)中用于該宏塊的對(duì)應(yīng)位置中; 使用來(lái)自反向運(yùn)動(dòng)向量緩沖區(qū)的一個(gè)或多個(gè)候選運(yùn)動(dòng)向量預(yù)測(cè)值,并且還使用關(guān)于來(lái) 自所述反向運(yùn)動(dòng)向量緩沖區(qū)的一個(gè)或多個(gè)候選運(yùn)動(dòng)向量預(yù)測(cè)值的極性信息,預(yù)測(cè)反向運(yùn)動(dòng) 向量,包括在以下兩者之間選擇使用引用所述隔行掃描B-半幀的第一參考半幀的相同極性反向運(yùn)動(dòng)向量預(yù)測(cè)值作為 所預(yù)測(cè)的反向運(yùn)動(dòng)向量,所述第一參考半幀具有與所述隔行掃描B-半幀相同的極性;或者 使用引用所述隔行掃描B-半幀的第二參考半幀的相反極性反向運(yùn)動(dòng)向量預(yù)測(cè)值作為 所預(yù)測(cè)的反向運(yùn)動(dòng)向量,所述第二參考半幀具有與所述隔行掃描B-半幀相反的極性;以及 將所預(yù)測(cè)的反向運(yùn)動(dòng)向量存儲(chǔ)在所述反向運(yùn)動(dòng)向量緩沖區(qū)中用于該宏塊的對(duì)應(yīng)位置 中;以及對(duì)所述一個(gè)或多個(gè)反向宏塊中的每一個(gè)重構(gòu)用于該宏塊的反向運(yùn)動(dòng)向量;將所重構(gòu)的反向運(yùn)動(dòng)向量存儲(chǔ)在所述反向運(yùn)動(dòng)向量緩沖區(qū)中用于該宏塊的對(duì)應(yīng)位置中;使用來(lái)自所述正向運(yùn)動(dòng)向量緩沖區(qū)的一個(gè)或多個(gè)候選運(yùn)動(dòng)向量預(yù)測(cè)值,并且還使用關(guān) 于來(lái)自所述正向運(yùn)動(dòng)向量緩沖區(qū)的一個(gè)或多個(gè)候選運(yùn)動(dòng)向量預(yù)測(cè)值的極性信息,預(yù)測(cè)正向 運(yùn)動(dòng)向量,包括在以下兩者之間選擇使用引用所述隔行掃描B-半幀的第三參考半幀的相同極性正向運(yùn)動(dòng)向量預(yù)測(cè)值作為 所預(yù)測(cè)的正向運(yùn)動(dòng)向量,所述第三參考半幀具有與所述隔行掃描B-半幀相同的極性;或者 使用引用所述隔行掃描B-半幀的第四參考半幀的相反極性正向運(yùn)動(dòng)向量預(yù)測(cè)值作為 所預(yù)測(cè)的正向運(yùn)動(dòng)向量,所述第四參考半幀具有與所述隔行掃描B-半幀相反的極性;以及 將所預(yù)測(cè)的正向運(yùn)動(dòng)向量存儲(chǔ)在所述正向運(yùn)動(dòng)向量緩沖區(qū)中用于該宏塊的對(duì)應(yīng)位置中。
19.如權(quán)利要求1所述的方法,其特征在于,所述選擇包括對(duì)來(lái)自所述第二運(yùn)動(dòng)向量緩 沖區(qū)的一個(gè)或多個(gè)候選運(yùn)動(dòng)向量預(yù)測(cè)值中有多少是相反極性運(yùn)動(dòng)向量進(jìn)行計(jì)數(shù),和/或?qū)?來(lái)自所述第二運(yùn)動(dòng)向量緩沖區(qū)的一個(gè)或多個(gè)候選運(yùn)動(dòng)向量預(yù)測(cè)值中有多少是相同極性運(yùn) 動(dòng)向量進(jìn)行計(jì)數(shù)。
20.如權(quán)利要求11所述的方法,其特征在于,所述選擇包括對(duì)來(lái)自所述第二運(yùn)動(dòng)向量 緩沖區(qū)的一個(gè)或多個(gè)候選運(yùn)動(dòng)向量預(yù)測(cè)值中有多少是相反極性運(yùn)動(dòng)向量進(jìn)行計(jì)數(shù),和/或 對(duì)來(lái)自所述第二運(yùn)動(dòng)向量緩沖區(qū)的一個(gè)或多個(gè)候選運(yùn)動(dòng)向量預(yù)測(cè)值中有多少是相同極性 運(yùn)動(dòng)向量進(jìn)行計(jì)數(shù)。
全文摘要
對(duì)于隔行掃描B-半幀或隔行掃描B-幀,正向運(yùn)動(dòng)向量使用來(lái)自正向運(yùn)動(dòng)向量緩沖區(qū)的正向運(yùn)動(dòng)向量由編碼器/解碼器預(yù)測(cè),而反向運(yùn)動(dòng)向量使用來(lái)自反向運(yùn)動(dòng)向量緩沖區(qū)的反向運(yùn)動(dòng)向量由編碼器/解碼器預(yù)測(cè)。結(jié)果的運(yùn)動(dòng)向量被添加到相應(yīng)的緩沖區(qū)中。運(yùn)動(dòng)向量緩沖區(qū)中的空穴可用所估計(jì)的運(yùn)動(dòng)向量值填充。編碼器/解碼器在隔行掃描B-幀的半幀編碼宏塊中的半幀之間切換預(yù)測(cè)模式。對(duì)于隔行掃描B-半幀或隔行掃描B-幀,編碼器/解碼器計(jì)算直接模式運(yùn)動(dòng)向量。對(duì)于隔行掃描B-半幀或隔行掃描B-幀,編碼器/解碼器使用4MV編碼。編碼器/解碼器使用“自參考”B-幀。編碼器發(fā)送二進(jìn)制信息,表示對(duì)隔行掃描B-半幀的一個(gè)或多個(gè)宏塊的預(yù)測(cè)模式是正向還是非正向的。編碼器/解碼器使用幀內(nèi)編碼的B-半幀[“BI-半幀”]。
文檔編號(hào)H04NGK101841718SQ20101016982
公開日2010年9月22日 申請(qǐng)日期2004年9月3日 優(yōu)先權(quán)日2003年9月7日
發(fā)明者K·慕克吉, T·W·赫爾科比 申請(qǐng)人:微軟公司