專利名稱:用于視頻壓縮的并行處理裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及視頻壓縮領(lǐng)域。更具體地,本發(fā)明涉及利用并行處理器的 視頻壓縮。
背景技術(shù):
視頻序列包括多個圖像,這些圖像通常稱作幀。連續(xù)的幀十分類似, 因此從一幀到下一幀包含大量冗余信息。在經(jīng)由信道被有效傳輸或者被存 儲在存儲器中之前,視頻數(shù)據(jù)被壓縮以節(jié)約帶寬和存儲器二者。目的在于 去除冗余信息以得到更好的壓縮比。第一種視頻壓縮方法是從給定幀中減 去基準(zhǔn)幀以生成相對差。壓縮后的幀包含比基準(zhǔn)幀更少的信息??梢砸愿?低的比特率來編碼相對差而質(zhì)量不變。解碼器通過將相對差與基準(zhǔn)幀相加 來重構(gòu)原始幀。
一種更復(fù)雜的方法是逼近視頻序列的整個場景(scene)和對象的運 動。通過以比特流的方式進行編碼的參數(shù)來描述運動。通過經(jīng)適當(dāng)變換的 基準(zhǔn)幀像素來逼近所預(yù)測幀的像素。該方法提供了一種與簡單減法相比有 所改進的預(yù)測能力。然而,由運動模型參數(shù)所占用的比特率不能過大。
通常,根據(jù)許多標(biāo)準(zhǔn)來執(zhí)行視頻壓縮,包括諸如MPEG-l、 MPEG-2 和MPEG-4之類的運動圖像專家組(MPEG)中的用于音頻和視頻壓縮的 一個或多個標(biāo)準(zhǔn)。作為MPEG-4的第10部分標(biāo)準(zhǔn)(也稱作H.264或者AVC (高級視頻編碼))的一部分,已經(jīng)作出了附加的增強。根據(jù)MPEG 標(biāo)準(zhǔn),首先對視頻數(shù)據(jù)進行編碼(例如,進行壓縮),然后將其存儲在視 頻系統(tǒng)的編碼器一側(cè)上的編碼緩沖器中。隨后,將經(jīng)編碼的數(shù)據(jù)傳輸?shù)揭?頻系統(tǒng)的解碼器一側(cè),在此,在對其進行解碼以使得相應(yīng)圖像可以被査看 之前將其存儲在解碼緩沖器中。
H.264/AVC項目致力于開發(fā)這樣一種標(biāo)準(zhǔn),該標(biāo)準(zhǔn)能夠以比先前標(biāo)準(zhǔn) (例如,MPEG-2 、 H.263或者MPEG-4的第2部分)所需的比特率低得 多的比特率來提供良好的視頻質(zhì)量。此外,希望作出這些改進而不會因復(fù) 雜度的大幅增加致使設(shè)計不能實際地實現(xiàn)。 一個附加目的是以靈活的方式 來作出這些改變,該靈活的方式將使得標(biāo)準(zhǔn)能夠廣泛應(yīng)用于各種應(yīng)用,從 而使得標(biāo)準(zhǔn)能夠既用于低比特率又用于高比特率,并且能夠既用于低分辨 率視頻又用于高分辨率視頻。另一 目的是它能夠良好地工作于各種網(wǎng)絡(luò)和 系統(tǒng)上。
H.264/AVC/MPEG-4的第10部分包含許多新特征,這些新特征使其 能夠比舊標(biāo)準(zhǔn)更高效地對視頻進行壓縮,并且能夠為各種網(wǎng)絡(luò)環(huán)境提供更 高的應(yīng)用靈活性。 一些關(guān)鍵特征包括將先前已編碼的圖像用作基準(zhǔn)的多 圖像運動補償,具有大到16X16的像素塊以及小到4X4的像素塊的可變 分塊運動補償(VBSMC),用于導(dǎo)出半像素亮度樣本預(yù)測的六角(six-tap) 濾波,宏塊對結(jié)構(gòu),用于運動補償?shù)乃姆种幌袼鼐?,加?quán)預(yù)測, 環(huán)路去塊濾波器,精確匹配整數(shù)4X4像素空間塊變換,對主要空間變換 的"DC"系數(shù)執(zhí)行的二次Hadamard變換(其中Hadamard變換類似于快 速傅立葉變換),根據(jù)用于"幀內(nèi)"編碼的相鄰塊邊緣的空間預(yù)測,基于 上下文的自適應(yīng)二進制算術(shù)編碼(CABAC),基于上下文的自適應(yīng)可變 長編碼(CAVLC),被稱作指數(shù)哥倫布編碼的、用于多個未經(jīng)CABAC或 CAVLC編碼的語法元素(syntax element)的簡單且高度結(jié)構(gòu)化的可變長 編碼(VLC),網(wǎng)絡(luò)抽象層(NAL)定義,切換條帶(switching slice), 靈活的宏塊排序,冗余條帶(RS),附加增強信息(SEI)和視頻可用信 息(VUI),輔助圖像,幀編號和圖像順序計數(shù)。這些技術(shù)以及一些其他 技術(shù)使得H.264能夠在更多情況下并且在更多環(huán)境中明顯優(yōu)于現(xiàn)有標(biāo)準(zhǔn)地
6完成任務(wù)。通過以一半的比特率或者甚至更少的比特率獲得相同的質(zhì)量,
H.264通常比MPEG-2視頻更好地完成任務(wù)。
MPEG用于對運動圖像和相關(guān)聯(lián)的音頻進行一般編碼,并且產(chǎn)生由一 系列三種類型的編碼數(shù)據(jù)幀構(gòu)成的經(jīng)壓縮視頻比特流。這三種類型的數(shù)據(jù) 幀是幀內(nèi)編碼幀(稱作I幀或I圖像),雙向預(yù)測幀(稱作B幀或B圖 像),和前向預(yù)測幀(稱作P幀或P圖像)。這三種類型的幀可以按指定 順序(稱作GOP (圖像組)結(jié)構(gòu))排列。I幀包含需要用于重構(gòu)圖像的所 有信息。將I幀作為正常圖像來編碼而不需要運動補償。另一方面,P幀 使用在前幀的信息來重構(gòu)圖像,并且B幀使用在前幀、后續(xù)幀或二者的信 息來重構(gòu)圖像。具體地,從前一個I幀或者緊接著的前一個P幀來預(yù)測P 幀。
也可以從緊接著的后續(xù)幀來預(yù)測幀。為了以這種方式來利用后續(xù)幀, 后續(xù)幀必須在所預(yù)測的幀之前被編碼。因此,編碼順序不一定與實際的幀 順序相匹配。通常從兩個方向來預(yù)測這樣的幀,例如從緊接在所預(yù)測幀之 前的I幀或P幀,或者緊接在所預(yù)測幀之后的P幀來預(yù)測。這些雙向預(yù)測 幀稱作B幀。
存在多種可能的GOP結(jié)構(gòu)。常見的GOP結(jié)構(gòu)為15幀長,并且具有序 列I_BB_P_BB_P_BB_P_BB—P—BB—。類似的12幀序列也很常見。I幀針 對空間冗余進行編碼,P幀和B幀針對時間冗余和空間冗余二者進行編 碼。因為視頻流中的相鄰幀通常良好相關(guān),所以P幀和B幀僅是I幀大小 的很小的百分比。然而,在一幀所能壓縮到的大小與編碼這樣的壓縮幀所 需的處理時間和資源之間存在折衷。雖然GOP結(jié)構(gòu)中的I幀、P幀和B幀 的比是由視頻流的性質(zhì)和輸出流的帶寬約束所決定的,但是編碼時間也可 能是個問題。因為與僅是I幀的文件相比,包含多個B幀的流可能花費更 長的時間用于編碼,所以在實時傳輸時以及在具有有限計算資源的實時環(huán) 境中,這一點尤其突出。
B幀和P幀需要較少的比特用于存儲圖像數(shù)據(jù),所述比特一般包含針 對當(dāng)前幀與前一幀、后一幀或二者之間的差的差比特。B幀和P幀因此用 于減少幀之間所包含的冗余信息。操作中,解碼器接收經(jīng)編碼的B幀或經(jīng)幀來重構(gòu)原始幀。當(dāng)連續(xù)幀基本類似 時,因為幀中的差很小,所以該過程更容易并且產(chǎn)生更平滑的場景過渡。
每個視頻圖像被分離到一個亮度(Y)信道和兩個色度信道中(也稱 作色差信號Cb和Cr)。亮度和色度陣列的塊被組織到"宏塊"中,宏塊 是在幀內(nèi)進行編碼的基本單元。
在I幀的情況下,實際圖像數(shù)據(jù)被通過編碼過程傳遞。然而,P幀和 B幀首先經(jīng)過"運動補償"過程。運動補償是一種根據(jù)前一幀的每個宏塊 移動到了何處來描述連續(xù)幀之間的差的方法。這種技術(shù)通常用于減少用于 視頻壓縮的視頻序列的時間冗余。如編碼器使用"運動向量"所選擇的, P幀或B幀中的每個宏塊與良好相關(guān)的前一圖像或下一圖像中的區(qū)域相關(guān) 聯(lián)。將宏塊映射到其相關(guān)區(qū)域的運動向量被編碼,然后兩個區(qū)域之間的差 通過編碼過程被傳遞。
傳統(tǒng)視頻編解碼器將經(jīng)運動補償?shù)念A(yù)測用于對原始輸入視頻流進行高 效編碼。從先前幀中己移位的宏塊來預(yù)測當(dāng)前幀中的宏塊。原始宏塊及其 預(yù)測之間的差被壓縮并且與移位(運動)向量一起被發(fā)送。該技術(shù)稱作幀 間編碼,是在MPEG標(biāo)準(zhǔn)中使用的方法。
編碼過程中最耗時的成分之一是運動估計。運動估計用于通過與預(yù)測 誤差的變換編碼相結(jié)合地實現(xiàn)運動補償預(yù)測,來減小視頻信號的比特率。 與運動補償有關(guān)的混疊(aliasing)不能夠通過使用幀間像素運動補償來避 免,并且混疊使預(yù)測效率惡化。為了解決惡化的問題,半像素內(nèi)插和四分 之一像素內(nèi)插被用于降低混疊的影響。為了以四分之一像素精度來估計運 動向量,通常使用三個步驟的搜索。在第一個步驟中,在指定搜索范圍內(nèi) 將運動估計應(yīng)用于每個整數(shù)像素來找到最佳匹配。然后,在第二個步驟 中,檢査在所選出的整數(shù)像素運動向量周圍的八個半像素點來找到最佳的 半像素匹配點。最后,在第三個步驟中,檢查在所選出的半像素運動向量 周圍的八個四分之一像素點,然后將最佳匹配點選作最終的運動向量。考 慮到運動估計的復(fù)雜度,如果將完全搜索(foil-search)用于整數(shù)像素運動 估計,那么整數(shù)像素運動估計將占運動估計的主要部分。然而,如果利用 快速整數(shù)運動估計算法,那么整數(shù)像素運動向量能夠通過檢査少于十個的搜索點而被找到。因此,搜索半像素運動向量和四分之一像素運動向量的 計算復(fù)雜度變?yōu)橹饕糠帧?br>
由于不斷減小晶體管尺寸以使得增大用于實現(xiàn)更多功能的硅空間的半 導(dǎo)體技術(shù)的進步,以及致使嚴(yán)重的熱耗散的物理限制,處理器制造商開始 引入多核或多處理器系統(tǒng)。視頻壓縮處理需要處理器功率并且嘗試?yán)貌?存處理器所能提供的計算能力。然而,許多視頻壓縮方法或者是按順序定
義的或者是相鄰視頻對象之間存在相關(guān)性(dependence),因此很難在同 時并行的計算系統(tǒng)上開發(fā)用于視頻壓縮過程的線程級并行(thread level parallelism)。用于在視頻壓縮應(yīng)用中開發(fā)并行處理能力的方法之一是將 視頻序列中的圖像水平地分割為多個部分,稱作條帶。因為在多條帶的條 帶之間不存在語義相關(guān)性,所以這適用于多處理系統(tǒng)中的視頻壓縮。
然而,某些視頻壓縮應(yīng)用要求單條帶方法(每個圖像一個條帶)。就 單條帶方法而言,在塊邊界周圍的單個條帶語法和語義中存在許多相關(guān)性 問題,尤其是在高級視頻編碼(AVC)規(guī)范的情況下。
一種通過單條帶方法在多處理系統(tǒng)上并行處理視頻壓縮的方法是,將 圖像水平地劃分為頂部一半和底部一半。 一個線程處理圖像的頂部一半并 且另一線程處理底部一半。兩個線程處理同一圖像。底部線程忽略邊界周 圍的相關(guān)性,并且還處理邊界周圍的語法一致性。當(dāng)?shù)撞烤€程處理第一宏 塊(MB)行時,它選擇獨立于其上部MB的MB模式。然而,與標(biāo)準(zhǔn)單 條帶光柵掃描方法相比,這種一般的方法使得壓縮效率更低。
另一種視頻壓縮的并行處理方法是將圖像水平地分割為多個部分。這 些經(jīng)水平分離的部分稱作條帶。視頻壓縮系統(tǒng)然后以并行處理的方式對這 些條帶進行編碼。該方法產(chǎn)生多個條帶結(jié)果。
然而,多條帶方法存在許多問題。多個條帶的經(jīng)編碼結(jié)果與單條帶不 同,因為多個條帶的經(jīng)編碼結(jié)果在語意上彼此獨立。因此,多個條帶很難 或者不可能確認(rèn)多條帶的并行處理方法的正確性。視頻質(zhì)量在條帶邊界處 降低。使用水平多條帶編碼的視頻壓縮在視頻內(nèi)容的復(fù)雜度隨條帶的不同 而不同的情況下,存在工作負(fù)荷失衡的問題。水平多條帶編碼的各條帶的 結(jié)果需要被連接起來以形成單個結(jié)果。這是在單條帶編碼中不存在的額外
9工作。
發(fā)明內(nèi)容
在此描述了一種用于并行處理視頻壓縮的方法和裝置。圖像被垂直地
劃分為N個區(qū)(zone),并且垂直分割并行(Vertical Split Parallelism, VSP)調(diào)配N+1個過程用于N個區(qū)中的一般宏塊編碼的N個M編碼過 程和用于熵編碼的一個E編碼過程。通過將宏塊編碼過程劃分為M編碼 過程和E編碼過程,多個M編碼線程和一個E編碼線程能夠通過線程之 間適當(dāng)同步而同時進行處理。因為每個宏塊編碼過程的M編碼過程的工作 負(fù)荷大于E編碼的,所以能夠?qū)蓚€內(nèi)核指定給兩個M編碼過程。因為E 編碼的工作負(fù)荷較輕,所以能夠?qū)⑺鰞?nèi)核的任一個指定給E編碼過程。 因此,VSP有效地利用了并行處理計算能力。
在一個方面中, 一種用于對視頻進行壓縮的裝置包括多個處理內(nèi)核和 用于使多個處理內(nèi)核處理N個M編碼過程和一個E編碼過程的程序。N 等于多個處理內(nèi)核中的處理內(nèi)核的個數(shù)。E編碼過程由從多個處理內(nèi)核中 選出的可用處理內(nèi)核來處理??捎锰幚韮?nèi)核是自動選出的。N個M編碼過 程包括模式判決、變換和均衡,并且E編碼過程包括熵編碼。N個M編碼 過程是并行處理的。N個M編碼過程是同時處理的。N個M編碼過程的 每個都與垂直區(qū)相對應(yīng)。N個M編碼過程的每個都與經(jīng)分割平移的(split-shifted) 垂直區(qū)相對應(yīng)。N個M編碼過程的每個都與對角區(qū)(diagonal zone)相對應(yīng)。多個處理內(nèi)核用于在對前一宏塊進行的M編碼完成之 后,對當(dāng)前宏塊進行M編碼;在對當(dāng)前宏塊進行的M編碼完成之后,對 當(dāng)前宏塊進行E編碼;以及在對前一宏塊進行的E編碼完成之后,對當(dāng)前 宏塊進行E編碼。多個處理內(nèi)核用于在宏塊不處于第一宏塊行中的情況 下,在對右上方宏塊進行的E編碼完成之后,對該宏塊進行M編碼。多 個處理內(nèi)核用于在宏塊是宏塊行中的最后一個宏塊的情況下,在對上方宏 塊進行的E編碼完成之后,對該宏塊進行M編碼。
在另一方面中, 一種用于對視頻進行壓縮的裝置包括第一處理內(nèi)核, 其用于處理第一 M編碼線程;以及第二處理內(nèi)核,其耦合到第一處理內(nèi)核,用于處理第二M編碼線程;其中,E編碼線程由從第一處理內(nèi)核和第
二處理內(nèi)核中選出的可用處理內(nèi)核來處理。第一 M編碼線程和第二 M編 碼線程包括模式判決、變換和均衡,并且E編碼線程包括熵編碼??捎锰?理內(nèi)核是自動選出的。第一 M編碼線程和第二 M編碼線程是并行處理 的。第一M編碼線程和第二M編碼線程是同時處理的。第一M編碼線程 與第一垂直區(qū)相對應(yīng),并且第二 M編碼線程與第二垂直區(qū)相對應(yīng)。第一 M編碼線程與第一經(jīng)分割平移的垂直區(qū)相對應(yīng),并且第二 M編碼線程與 第二經(jīng)分割平移的垂直區(qū)相對應(yīng)。第一 M編碼線程與第一對角區(qū)相對應(yīng), 并且第二 M編碼線程與第二對角區(qū)相對應(yīng)。
在另一方面中, 一種用于對視頻進行壓縮的方法包括以下步驟將圖 像垂直地劃分為N個區(qū);調(diào)配N+1個過程,其中,N個過程是M編碼并 且一個過程是E編碼;利用多個處理內(nèi)核來并行地處理N個M編碼過 程;利用多個處理內(nèi)核的可用處理內(nèi)核來處理E編碼過程;并且使這N+1 個過程同步。N個M編碼過程包括在對前一宏塊進行的M編碼完成之 后,對當(dāng)前宏塊進行M編碼。E編碼過程包括在對當(dāng)前宏塊進行的M編 碼完成之后,對該當(dāng)前宏塊進行E編碼。處理E編碼過程的步驟包括在對 前一宏塊進行的E編碼完成之后,對當(dāng)前宏塊進行E編碼。該方法還包 括在對前一宏塊進行的M編碼完成之后,對當(dāng)前宏塊進行M編碼;在 對當(dāng)前宏塊進行的M編碼完成之后,對當(dāng)前宏塊進行E編碼;以及在對 前一宏塊進行的E編碼完成之后,對當(dāng)前宏塊進行E編碼。該方法還包括 在宏塊不處于第一宏塊行中的情況下,在對右上方宏塊進行的E編碼完成 之后,對該宏塊進行M編碼。該方法還包括在宏塊是宏塊行中的最后一個 宏塊的情況下,在對上方宏塊進行的E編碼完成之后,對該宏塊進行M 編碼。
圖1A到圖1C示出用于視頻壓縮的并行處理裝置的實施例的框圖。 圖2示出垂直分割并行的過程的流程圖。 圖3示出對圖像的示例性垂直分割。
ii圖4A示出平移分割的圖形表示。
圖4B示出待壓縮的圖像。
圖5示出具有兩種類型邊界的線程的圖形表示。
具體實施例方式
視頻序列包括圖像的序列。每個圖像還被劃分為多個宏塊。傳統(tǒng)的編 碼過程按光柵掃描順序逐個地對宏塊進行編碼。通常,每個宏塊的編碼過 程包括宏塊類型選擇,運動估計和補償?shù)那捌陔A段,變換和均衡的中期階 段和熵編碼的后期階段。
垂直分割并行(VSP)將傳統(tǒng)的視頻壓縮過程分為兩部分M編碼和 E編碼。M編碼代表沒有熵編碼過程的一般宏塊編碼過程。E編碼代表熵 編碼過程。圖像被垂直地劃分,其中每個垂直劃分出的部分圖像表示一個 區(qū)。因此,圖像包括多個區(qū)。每個區(qū)首先經(jīng)過M編碼處理。宏塊單元中每 個區(qū)的M編碼的輸出進一步經(jīng)過E編碼處理。VSP的特征在于對每個宏 塊的M編碼和E編碼的相關(guān)性進行解耦,因此并不是緊接在宏塊的M編 碼之后處理其自身的E編碼。此外,每個宏塊并不依賴于對光柵掃描順序 中在它之前的宏塊進行的E編碼的完成。
一般地,如果圖像被垂直地劃分為N個區(qū),那么VSP調(diào)配N+l個過 程針對N個區(qū)的N個M編碼過程和用于熵編碼的一個E編碼過程。例 如,如果圖像被垂直地劃分為兩個區(qū),那么VSP調(diào)配三個過程針對兩個 區(qū)的兩個M編碼過程和用于熵編碼的一個E編碼過程。
通過將宏塊編碼過程劃分為M編碼過程和E編碼過程,多個M編碼 線程和一個E編碼線程能夠通過線程之間的適當(dāng)同步而同時進行。M編碼 包括模式判決、變換和均衡。與E編碼的熵編碼任務(wù)相比,這些M編碼 階段是較重工作負(fù)荷的任務(wù)。因為每個宏塊編碼過程的M編碼過程的工作 負(fù)荷大于E編碼的,所以能夠?qū)?nèi)核指定給每個M編碼過程。例如,如 果設(shè)備或系統(tǒng)中有兩個內(nèi)核,那么將使用兩個M編碼過程,其中向每個內(nèi) 核發(fā)送一個過程。即使兩個M編碼過程能夠并行運行,某些AVC語法相 關(guān)性問題也仍存在,例如A-QP和宏塊(MB)跳躍運行。通過引入獨立的E線程能夠解決這些問題。由于E編碼的工作負(fù)荷較輕,所以兩個內(nèi)核的 任一個能夠處理E編碼過程。因此,VSP有效地利用了并行處理計算能 力。
VSP克服了當(dāng)以并行處理方式對多個條帶進行編碼時所遇到的問題。 視頻壓縮的VSP并行處理產(chǎn)生了對單條帶進行順序處理的相同結(jié)果。因 此,通過比較VSP并行處理結(jié)果和單條帶的順序處理結(jié)果的等價性,很容 易確定VSP并行處理的正確性。因為VSP并行處理結(jié)果和單條帶的順序 處理結(jié)果相同,所以確保了視頻質(zhì)量相同。通過垂直地劃分圖像,VSP的 每個區(qū)一般具有相等的視頻內(nèi)容復(fù)雜度。因此,每個內(nèi)核的預(yù)定義個體工 作負(fù)荷差不多相等。此外,如果存在工作負(fù)荷失衡,那么通過VSP的熵編 碼過程來消除該失衡。因此,VSP并行處理的工作負(fù)荷被自動地平衡。 VSP的熵編碼過程產(chǎn)生與單個條帶編碼相同的單個結(jié)果。因此,不存在對 多條帶并行處理的部分結(jié)果進行的、額外階段的連接工作。
優(yōu)選地,在作為多處理器計算機架構(gòu)的對稱多處理(SMP)機器上運 行實現(xiàn)了 VSP的視頻壓縮軟件,在該多處理器計算機架構(gòu)中,由于通過對 共享存儲器進行讀取和寫入來實現(xiàn)多過程(線程)的同步,所以兩個或多
個相同的處理器或內(nèi)核耦合到單個的共享主存儲器。
可以經(jīng)由軟件、硬件或軟件和硬件的組合來實現(xiàn)VSP。分割圖像的優(yōu) 選方法是垂直地分割;然而,在替代實施例中,可以對角地分割圖像。
通過增大并行地處理的視頻壓縮量并且使順序處理最小化,視頻壓縮 性能得到改善。
VSP支持圖像速率控制,宏塊量子化加權(quán)宏塊速率控制(MQW MBRC),圖像再編碼,MB再編碼,CAVLC禾卩CABAC熵編碼,幀和場 輸入格式和去塊開啟/關(guān)閉。
VSP解決了許多問題。解決了 SYNC的邊界限制。通過在實際的MB 編碼之前預(yù)先算出所有的量化參數(shù)(QP)或者通過改變?nèi)コ钭髠?cè)MB與 最右側(cè)MB的相關(guān)性的算法,解決了 QP的邊界限制。通過兩個階段的算 法解決了 QP變化量(delta)相關(guān)性問題。由于存在與光柵掃描順序中的 前一 QP的相關(guān)性以及與光柵掃描順序中的前一 SKIP MB的相關(guān)性,所以存在QP變化量相關(guān)性問題。通過VSP,編碼被分離為兩個階段,其中M 編碼并行地運行并且E編碼按光柵掃描的順序順序地運行。因此,在雙核 系統(tǒng)中存在顯著的加速。
并行方法能夠通過任務(wù)或數(shù)據(jù)分解(decompose)被分類。在任務(wù)分 解中,在功能層面上,JvtEncoder (Jvt編碼器)能夠被分解為流水線方式 的多個過程。每個過程被作為獨立的功能執(zhí)行并且輸出能夠是下一過程的 輸入。如果在每個過程中解決了負(fù)荷平衡和數(shù)據(jù)相關(guān)性,那么能夠?qū)崿F(xiàn)并 行。目前每個過程的編碼計算負(fù)荷失衡。JvtCodingProcess (Jvt編碼過 程)與其他過程相比,是負(fù)荷最重的功能。
在數(shù)據(jù)分解中,在幀層面上,每個圖像能夠被分解為兩個半個的圖 像,用于在不同的時間幀中同時進行編碼。PaleMoonA算法實現(xiàn)了該方 法。在條帶層面上,每個圖像被編碼為多個不同的條帶以實現(xiàn)并行。在一 個圖像內(nèi)進行處理的情況下,在時域中不會出現(xiàn)基準(zhǔn)幀。在MB層面上, 每個MB是并行的處理單元。由于數(shù)據(jù)與相鄰MB的相關(guān)性在AVC編碼 器中是普遍的,所以數(shù)據(jù)同步是要處理的關(guān)鍵問題。VSP采用該方法。在 塊層面上,并行能夠在MB內(nèi)完成。避免在MB層面中發(fā)生的數(shù)據(jù)同步問 題是個十分低級的算法。在混合分解中,包括任務(wù)和數(shù)據(jù)分解二者。
圖1A到圖1C示出用于視頻壓縮的并行處理裝置的實施例的框圖。在 圖1A到圖1C的每個中,計算設(shè)備包含具有一個或多個內(nèi)核的一個或多個 處理器。處理器和內(nèi)核的任何組合都是可以的,只要總共存在至少兩個內(nèi) 核即可。
圖1A示出具有兩個處理器(第一處理器2和第二處理器4)的計算設(shè) 備1,每個處理器分別具有一個內(nèi)核3, 5。圖1B示出具有一個包含雙核 3'的處理器2'的計算設(shè)備l'。圖1C示出具有兩個處理器(第一處理器2, 和第二處理器4')的計算設(shè)備l",每個處理器分別包含雙核3', 5'。每個 計算設(shè)備具有至少兩個內(nèi)核,這些內(nèi)核或者在同一處理器中或者在多個處 理器中。此外,如圖1C所示,多于兩個的內(nèi)核能夠使用。能夠使用任何 數(shù)目的處理器和內(nèi)核,只要內(nèi)核的總數(shù)多于兩個即可。計算設(shè)備是任何的 數(shù)字設(shè)備,包括但并不局限于可攜式攝像機、數(shù)字相機、手機、個人數(shù)
14字助理(PDA)或計算機。
通過使用多個內(nèi)核,用于視頻壓縮的并行處理裝置能夠通過利用并行 處理來加快視頻壓縮過程。如在此所描述的,在圖像被垂直地劃分為N個 區(qū)之后,N+l個過程被調(diào)配N個M編碼過程和一個用于熵編碼的E編碼 過程。因為M編碼過程的工作負(fù)荷比E編碼過程的更重,所以能夠針對 每個M編碼過程來指定內(nèi)核。例如,現(xiàn)參考圖1A,第一M編碼過程被發(fā) 送到第一處理器2中的內(nèi)核3,并且第二 M編碼過程被發(fā)送到第二處理器 4內(nèi)的內(nèi)核5,因此每個M編碼過程被分開處理。然后,內(nèi)核3或5的任 一個能夠用于E編碼過程,因為針對該過程的處理負(fù)荷相對較輕。因此, 用于視頻壓縮的并行處理裝置高效地利用了并行處理計算能力。
圖2示出垂直分割并行(VSP)的一個實施例的流程圖。在步驟 200,將圖像劃分為N個區(qū),其中N大于或等于2。 一般地,對圖像進行 劃分以使得區(qū)個數(shù)等于可用于處理的內(nèi)核個數(shù)。在步驟202,調(diào)配N+1個 過程。存在N個M編碼過程和一個E編碼過程。在步驟204,并行地處理 N個M編碼過程。然后在步驟206,利用任一個可用內(nèi)核來處理E編碼過 程。然后,在步驟208,對這些過程進行同步。
圖3示出將具有128X96個像素(8X6個MB)的圖像垂直分割為兩 個區(qū)區(qū)—a (左側(cè)部分)和區(qū)—b (右側(cè)部分)。每個垂直區(qū),在此即區(qū)—a 和區(qū)一b,作為獨立的線程由獨立的內(nèi)核來處理。對于MB級的編碼,僅垂 直區(qū)之間的區(qū)邊界需要主同步(major synchronization)。另一獨立線程用 于熵編碼。每個MB通過"M編碼"即宏塊層編碼和"E編碼"即熵編碼 而被編碼。對于M編碼,每個區(qū)由一個線程來處理。例如,由一個線程來 對區(qū)—a進行M編碼,并且由另一線程來對區(qū)—b進行M編碼。 一個獨立的 線程執(zhí)行"E編碼"。因此,如果圖像被分割為兩個垂直區(qū),那么總共存 在三個運行的線程。
為了確保有效地執(zhí)行編碼,存在多個同步規(guī)則或要求。當(dāng)完成了對前 一宏塊進行的M編碼時,對當(dāng)前宏塊進行的M編碼開始。例如,現(xiàn)參考 圖3,僅當(dāng)完成了 MB 0a時,MB la才能夠開始。然后,僅當(dāng)完成了 MB lb時,MB 2b才能夠開始,并且MB lb在其能夠開始之前必須等待直到
15MB0a完成為止。僅當(dāng)完成了對其自身MB的M編碼時,對MB的E編碼 才能夠開始。此外,僅當(dāng)完成了對其前一個MB的E編碼時,對該MB的 E編碼才能夠開始。
除了上述一般的同步外,還存在取決于所使用的數(shù)據(jù)結(jié)構(gòu)的設(shè)計的規(guī) 則,這是因為對重復(fù)的數(shù)據(jù)結(jié)構(gòu)的設(shè)計與同步算法之間關(guān)系緊密。以下描 述取決于對重復(fù)的數(shù)據(jù)結(jié)構(gòu)的設(shè)計的同步算法的實現(xiàn)方式。對于每一列宏 塊,存在兩組數(shù)據(jù)。例如,對于8X6像素塊的MB圖像,存在8X2組數(shù) 據(jù)16組相鄰宏塊信息(AdjacentMblnfo),用于算術(shù)編碼的先前 CABAC信息(PrcvCabacInfoSet),宏塊編碼(MbCoding),宏塊編碼, 制作(authoring)編碼模式(MbCodingAE)和宏塊編碼模式判決
(ModeDedsion)。對于每一列宏塊,存在兩組熵函數(shù)調(diào)用記錄緩沖器。 每個MB緩沖器能夠記錄至多32個函數(shù)調(diào)用。例如,對于8X6像素塊的 MB圖像,VspSims[8X2][32]是熵函數(shù)調(diào)用記錄緩沖器。對于不在第一 MB行中的MB,僅當(dāng)完成了對其右上方MB進行的E編碼時,M編碼才 能夠開始。如果MB是MB行中最后一個MB,那么僅當(dāng)完成了對其上方 MB進行的E編碼時,M編碼才能夠開始。例如,現(xiàn)參考圖3,僅當(dāng)完成 了對MB e03進行的E編碼時,對MB e10進行的M編碼才能夠開始。然 后,MB e10再使用與MB e02相同的一組數(shù)據(jù),因為MB e10和MB e02 在相同的MB列中。
用于視頻壓縮的并行處理裝置的另一改進涉及使用垂直區(qū)而非水平 區(qū)。除上述的那些優(yōu)點之外,垂直區(qū)具有優(yōu)于水平區(qū)的其他優(yōu)點。 一般 地,垂直方向上的像素比水平方向上的更少,因此如果列數(shù)或行數(shù)不是偶 數(shù),那么垂直方向上的不一致性比水平方向上的更小。因此, 一個處理器 的工作負(fù)荷不會明顯地大于其他的。垂直分區(qū)的另一優(yōu)點是,當(dāng)列數(shù)是如 圖4A所示的奇數(shù)時,能夠垂直地進行平移分割(shift-splitting)。平移分 割是這樣的,其中在圖像中的一點處修改垂直分割以使得區(qū)的大小相等。 現(xiàn)參考圖4A,例如,當(dāng)生成兩個區(qū)(第一區(qū)400和第二區(qū)402)時,在存 在奇數(shù)個列的情況下,分割404在圖像的中央點406處平移了一列,這使 得兩個區(qū)大小相等。垂直分區(qū)的另一個優(yōu)點是對于許多圖像而言,在圖像中存在靜態(tài)成分,例如圖像頂部處的藍天或圖像底部處的水。例如,與圖
4B所示的圖像相類似的, 一幅圖像包含在圖像頂部處的藍天和在圖像的較
低部分處的房屋、樹和人。如果該圖像被水平地分割,那么對藍天進行的 處理需要較少的處理功率用于壓縮,因為它是相對靜態(tài)的,而具有房屋、 樹和人的部分則需要很多的處理,因此會不平衡。然而,如果圖像被垂直 地分割,那么兩側(cè)都將具有一半的天空和一半的房屋、樹和人,從而提供 更好的平衡的處理方案。
使用VSP提供了優(yōu)于其他壓縮實現(xiàn)方式的多個優(yōu)點。關(guān)于負(fù)荷平衡, 對于每個較重工作負(fù)荷的線程,存在幾乎相等個數(shù)的MB。所有的MB在 同一幀內(nèi)得到處理。垂直地進行劃分實現(xiàn)了平衡的負(fù)荷。就可擴展性而 言,很容易調(diào)節(jié)線程個數(shù)。關(guān)于同步,需要同步的項數(shù)被最小化。僅與區(qū) 邊界相鄰的、區(qū)中的第一列MB需要主同步。數(shù)據(jù)相關(guān)性映射能夠用于同 步。同步的"OkToGo (可以繼續(xù))"結(jié)果的概率是很高的,而 "NotOkToGo (不可繼續(xù))"到"OkToGo"的等待時間是短暫的。大部 分基準(zhǔn)MB存在于同一本地高速緩存中。x86雙核處理器具有兩個L2高速 緩存。CELL具有用于每個SPE的本地存儲器??缭竭吔绲腞ef MB不需 要被傳送。x86使用預(yù)取(pre-fetch)技術(shù)來傳送Ref MB。 CELL使用 DMA來進行傳送。每個較重工作負(fù)荷的線程僅處理幀的一部分。由每個 較重工作負(fù)荷的線程來完成每個垂直區(qū)域。
如果在多內(nèi)核機器上的多個較重工作負(fù)荷線程(M編碼)之間存在任 何工作負(fù)荷失衡,那么獨立的較輕工作負(fù)荷線程(E編碼)能夠填充間 隙。因此,多內(nèi)核的工作負(fù)荷被自動地平衡。通過在此描述的實現(xiàn)方式, 雙核機器上的處理器利用率在大部分時間內(nèi)高于90%。 VSP使存儲器利用 率略微地增大了約2.3%。
速率控制算法能夠解決MQW MBRC算法以外的一般速率控制算法的 QP相關(guān)性問題。第一線程500和第二線程502在圖5中被示出為具有兩種 類型的邊界。SYNC邊界504由幀內(nèi)預(yù)測需求決定。MB[1]與MB[H]相關(guān) (例如,直到完成了 MB[H] , MB[1]才能夠開始)。MB[P]與MB[1]相關(guān) (例如,直到完成了 MB[l] , MB[P]才能夠開始)。QP邊界506由速率控制算法決定。MB[I]與MB[8]相關(guān)(例如,在決定了 MB[8]的QP之后決 定MB[I]的QP) 。 MB[Q]與MB[16]相關(guān)(例如,在決定了 MB[16]的QP 之后決定MB[Q]的QP)。
消除了 QP邊界問題的算法改變獨立于最右側(cè)MB來決定最左側(cè)MB 的QP,并且MB之間的其余的QP相關(guān)性(例如,除最左側(cè)MB與最右側(cè) MB的相關(guān)性之外的、MB對光柵掃描順序中的前一 MB的所有其他相關(guān) 性)不受影響(例如,在MB編碼期間針對每個MB來改變QP)。因 此,VSP能夠克服MB之間相關(guān)性的弱點。MB[9]的QP能夠或者與MB[8] 的QP相關(guān)或者與MB[P]的QP相關(guān)。新的速率控制算法將經(jīng)分割的圖像 視為兩個圖像(針對按兩個光柵掃描順序的QP相關(guān)性的左側(cè)一半圖像和 右側(cè)一半圖像)。最左側(cè)MB和最右側(cè)MB之間沒有關(guān)聯(lián),并且QP邊界 相關(guān)性能夠被去除。
在操作中,用于視頻壓縮的并行處理裝置使用多個內(nèi)核的并行處理能 力以加快視頻壓縮。因為許多設(shè)備和系統(tǒng)包括多個內(nèi)核(或者在一個處理 器中或者在多個處理器中),所以出于效率的目的,視頻壓縮使用多個內(nèi) 核是必要的。雖然在利用多個內(nèi)核方面作出了其他嘗試,但是它們具有使 其效率降低的固有缺點。VSP將每個圖像分離為N個垂直區(qū),其中這些區(qū) 的大小通常相同。除一個E編碼過程之外,針對每個區(qū)生成M編碼過 程。因為每個M編碼過程具有近似的復(fù)雜度,所以每個內(nèi)核將花費近似相 同的時間量來處理它們。此外,E編碼過程具有很小的工作負(fù)荷,因此它 能夠由任一個可用內(nèi)核來處理。然后,這些過程被同步。
如所描述的,設(shè)備通過將圖像分離為垂直區(qū)并且然后將每個相應(yīng)過程 發(fā)送到獨立內(nèi)核以進行處理,來使用垂直分割并行。此外,熵編碼過程被 發(fā)送到可用內(nèi)核。此后,使這些過程同步,然后獲得經(jīng)快速壓縮的視頻。 能夠以硬件、軟件或二者的組合來實現(xiàn)垂直分割并行。
垂直分割并行能夠用于多種應(yīng)用中,包括但并不局限于視頻編輯、存 儲、廣播和通信。
已經(jīng)根據(jù)具體實施例描述了本發(fā)明,這些具體實施例包括用于幫助理 解本發(fā)明的構(gòu)造和操作原理的許多細(xì)節(jié)。在此提到的具體實施例及其細(xì)節(jié)并非意欲將本發(fā)明的范圍局限于此。本領(lǐng)域中的技術(shù)人員應(yīng)容易理解,可 以在被選出用于進行說明的實施例中做出其他各種修改而不會脫離如權(quán)利 要求書所定義的本發(fā)明的精神和范圍。
權(quán)利要求
1. 一種用于對視頻進行壓縮的裝置,包括a. 多個處理內(nèi)核;以及b. 用于使所述多個處理內(nèi)核處理N個M編碼過程和一個E編碼過程的程序。
2. 如權(quán)利要求1所述的裝置,其中,N等于所述多個處理內(nèi)核中的處 理內(nèi)核的個數(shù)。
3. 如權(quán)利要求l所述的裝置,其中,所述E編碼過程由從所述多個處 理內(nèi)核中選出的可用處理內(nèi)核來處理。
4. 如權(quán)利要求3所述的裝置,其中,所述可用處理內(nèi)核是自動選出的。
5. 如權(quán)利要求1所述的裝置,其中,所述N個M編碼過程包括模式 判決、變換和均衡,并且所述E編碼過程包括熵編碼。
6. 如權(quán)利要求1所述的裝置,其中,所述N個M編碼過程是并行處 理的。
7. 如權(quán)利要求6所述的裝置,其中,所述N個M編碼過程是同時處 理的。
8. 如權(quán)利要求1所述的裝置,其中,所述N個M編碼過程各自對應(yīng) 于一垂直區(qū)。
9. 如權(quán)利要求1所述的裝置,其中,所述N個M編碼過程各自對應(yīng) 于一經(jīng)分割平移的垂直區(qū)。
10. 如權(quán)利要求l所述的裝置,其中,所述N個M編碼過程各自對應(yīng) 于一對角區(qū)。
11. 如權(quán)利要求l所述的裝置,其中,所述多個處理內(nèi)核用于a. 在對前一宏塊進行的M編碼完成之后,對當(dāng)前宏塊進行M編 碼;b. 在對所述當(dāng)前宏塊進行的M編碼完成之后,對所述當(dāng)前宏塊進 行E編碼;以及c. 在對所述前一宏塊進行的E編碼完成之后,對所述當(dāng)前宏塊進 行E編碼。
12. 如權(quán)利要求1所述的裝置,其中,所述多個處理內(nèi)核用于在宏塊 不處于第一宏塊行中的情況下,在對右上方宏塊進行的E編碼完成之后, 對所述宏塊進行M編碼。
13. 如權(quán)利要求1所述的裝置,其中,所述多個處理內(nèi)核用于在宏塊 是宏塊行中的最后一個宏塊的情況下,在對上方宏塊進行的E編碼完成之 后,對所述宏塊進行M編碼。
14. 一種用于對視頻進行壓縮的裝置,包括-a. 第一處理內(nèi)核,其用于處理第一M編碼線程;以及b. 第二處理內(nèi)核,其耦合到所述第一處理內(nèi)核,用于處理第二 M 編碼線程;其中,E編碼線程由從所述第一處理內(nèi)核和所述第二處理內(nèi)核中選出 的可用處理內(nèi)核來處理。
15. 如權(quán)利要求14所述的裝置,其中,所述第一M編碼線程和所述第 二 M編碼線程包括模式判決、變換和均衡,并且所述E編碼線程包括熵 編碼。
16. 如權(quán)利要求14所述的裝置,其中,所述可用處理內(nèi)核是自動選出的。
17. 如權(quán)利要求14所述的裝置,其中,所述第一M編碼線程和所述第 二M編碼線程是并行處理的。
18. 如權(quán)利要求17所述的裝置,其中,所述第一M編碼線程和所述第 二M編碼線程是同時處理的。
19. 如權(quán)利要求14所述的裝置,其中,所述第一M編碼線程與第一垂 直區(qū)相對應(yīng),并且所述第二M編碼線程與第二垂直區(qū)相對應(yīng)。
20. 如權(quán)利要求14所述的裝置,其中,所述第一M編碼線程與第一經(jīng) 分割平移的垂直區(qū)相對應(yīng),并且所述第二 M編碼線程與第二經(jīng)分割平移的 垂直區(qū)相對應(yīng)。
21. 如權(quán)利要求14所述的裝置,其中,所述第一M編碼線程與第一對角區(qū)相對應(yīng),并且所述第二M編碼線程與第二對角區(qū)相對應(yīng)。
22. —種用于對視頻進行壓縮的方法,包括以下步驟a. 將圖像垂直地劃分為N個區(qū);b. 調(diào)配N+l個過程,其中,N個過程是M編碼并且一個過程是E 編碼;c. 利用多個處理內(nèi)核來并行地處理所述N個M編碼過程;d. 利用所述多個處理內(nèi)核中的可用處理內(nèi)核來處理所述E編碼過 程;并且e. 使所述N+1個過程同步。
23. 如權(quán)利要求22所述的方法,其中,處理所述N個M編碼過程的 步驟包括在對前一宏塊進行的M編碼完成之后,對當(dāng)前宏塊進行M編 碼。
24. 如權(quán)利要求22所述的方法,其中,處理所述E編碼過程的步驟包 括在對當(dāng)前宏塊進行的M編碼完成之后,對所述當(dāng)前宏塊進行E編碼。
25. 如權(quán)利要求22所述的方法,其中,處理所述E編碼過程的步驟包 括在對前一宏塊進行的E編碼完成之后,對當(dāng)前宏塊進行E編碼。
26. 如權(quán)利要求22所述的方法,還包括a. 在對前一宏塊進行的M編碼完成之后,對當(dāng)前宏塊進行M編 碼;b. 在對所述當(dāng)前宏塊進行的M編碼完成之后,對所述當(dāng)前宏塊進 行E編碼;以及c. 在對所述前一宏塊進行的E編碼完成之后,對所述當(dāng)前宏塊進 行E編碼。
27. 如權(quán)利要求22所述的方法,還包括在宏塊不處于第一宏塊行中的 情況下,在對右上方宏塊進行的E編碼完成之后,對所述宏塊進行M編 碼。
28. 如權(quán)利要求22所述的方法,還包括在宏塊是宏塊行中的最后一個 宏塊的情況下,在對上方宏塊進行的E編碼完成之后,對所述宏塊進行M 編碼。
全文摘要
在此描述了一種用于并行處理視頻壓縮的方法和裝置。圖像被垂直地劃分為N個區(qū),并且垂直分割并行(VSP)調(diào)配N+1個過程用于N個區(qū)中的一般宏塊編碼的N個M編碼過程和用于熵編碼的一個E編碼過程。通過將宏塊編碼過程劃分為M編碼過程和E編碼過程,多個M編碼線程和一個E編碼線程能夠通過線程之間適當(dāng)同步而同時進行處理。因為每個宏塊編碼過程的M編碼過程的工作負(fù)荷大于E編碼的,所以能夠?qū)蓚€內(nèi)核指定給兩個M編碼過程。因為E編碼的工作負(fù)荷較輕,所以能夠?qū)⑺鰞?nèi)核的任一個指定給E編碼過程。因此,VSP高效地利用了并行處理計算能力。
文檔編號H04B1/66GK101490968SQ200780027016
公開日2009年7月22日 申請日期2007年7月12日 優(yōu)先權(quán)日2006年7月17日
發(fā)明者喬納森·健彰·黃, 再發(fā)·尤, 貴-崇(拉里)·杜 申請人:索尼株式會社;索尼電子有限公司