亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

H.264編碼中運動補(bǔ)償插值的并行加速方法及裝置的制作方法

文檔序號:8001045閱讀:618來源:國知局
專利名稱:H.264編碼中運動補(bǔ)償插值的并行加速方法及裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明屬于視頻編碼技術(shù)領(lǐng)域,更具體地,在一些異構(gòu)多核系統(tǒng)中實現(xiàn)對視頻編碼過程中的運動補(bǔ)償插值并行加速的方法及裝置。
背景技術(shù)
H. 264視頻編碼為了消除視頻數(shù)據(jù)的冗余,采用了幀內(nèi)預(yù)測、幀間預(yù)測運動估計、 運動補(bǔ)償、熵編碼等方法。其中,H. 264中使用了 1/4像素精度的運動補(bǔ)償,這是相對于之前的編碼器能夠提高編解碼性能的原因之一。1/4像素精度的運動補(bǔ)償相對于在H. 263/ MPEG2中僅適用1/2像素精度來說可以使編碼想能提高2dB,而1/8像素精度對后被H. 264 舍去了的原因是它只能在性能上提升IdB而需要以更加高昂的計算復(fù)雜度來換取。由于在H. 264中采用了樹狀結(jié)構(gòu)的運動補(bǔ)償,即將一個16X16的宏塊分割成 16X8,8X16,8X8,8X4,4X8,4X4的子塊,在幀間預(yù)測時,這些不同大小的塊都是從參考幀中相同大小分割的塊來預(yù)測得到,并且預(yù)測得到的運動矢量可以是非整像素點的,從而提高預(yù)測的精度。但是參考幀沒有分像素點,所以必須通過對周邊整像素點的上采樣插值來獲得1/2像素和1/4像素。由于幀間預(yù)測是在一幀圖像內(nèi)進(jìn)行的,需要對整幀圖像的整像素點進(jìn)行插值得出對應(yīng)的分像素點,所以需要進(jìn)行大量重復(fù)的插值操作。在H. 264中分為1/2像素和1/4像素插值兩部分,具體分布如圖1所示。H. 264標(biāo)準(zhǔn)里,半像素插值使用一個六抽頭的濾波器,其系數(shù)為(1,-5,20, _5,1), 例如圖1中b、h、m、s所對應(yīng)的水平和垂直半像素點首先需要使用六抽頭濾波器通過整像素點來計算出中間值bl、hl、ml、sl,然后將他們截斷到W 255]的范圍內(nèi)的到相應(yīng)的b、 h、m、s
bl = E-5 XF+20 XG+20 XH-5 X I+J
hi = A-5 X C+20 X G+20 X M-5 X R+T
ml = B-5 X D+20 X H+20 X N-5 X S+U
si = K-5 X L+20 X M+20 X N-5 X P+Q
b = Clip((bl+16) >> 5)
h = Clip((hl+16) >> 5)
m = Clip((ml+16) >> 5)
s = Clip((sl+16) >> 5)
其中Clip(*)是將*截斷至W 255]的范圍內(nèi)。
在圖1中aa、bb、cc、dd、ee、ff、gg、hh也是通過上述方法獲得。
類似的,中心半像素點j可以通過以下的方式得到
j = Clip (((cc-5X dd+20Xhl+20Xml-5X ee+ff) +512) >> 10)
或者
j = Cl ip (((aa-5 X bb+20 X b 1+20 X s 1-5 X gg+hh) +512) >> 10)
另外,1/4像素插值使用的是二值線性濾波器,例如圖1中a、c、d、n、f、i、k、q、e、g、P、r所對應(yīng)的1/4像素點由下式獲得a =(.:.(G+b+1)>>1)
C =Clip(H+b+1)>>1)
d =Clip(G+h+1)>>1)
η =Clip(M+h+1)>>1)
f =Clip(b+j+1)>>1)
i =Clip(h+j+1)>>1)
k =Clip(j+m+1)>>1)
q =Clip(j+s+1)>>1)
eClip(b+h+1)>>1)
...=Clip(b+m+1)>>1)
P =Clip(h+s+1)>>1)
rClip(m+s+1)>>1)其中Clip㈩是將*截斷至W 255]的范圍內(nèi)??梢钥闯觯琀. 264運動補(bǔ)償插值需要很大的計算量,每個整像素點都要計算出其相應(yīng)的1/2像素點和1/4像素點,其中1/2像素點有3個,1/4像素點有12個。如此高的計算復(fù)雜度嚴(yán)重限制了 H. 264對高清視頻以及超高清視頻的實時編碼,所以有必要探尋一種能夠有效加快運動補(bǔ)償插插值計算的方法以加速分像素點的計算。傳統(tǒng)的H. 264編碼器如JM模型和X264編碼器在運動補(bǔ)償插值中都是使用的串行的方式進(jìn)行的,即以光柵掃描的方式首先進(jìn)行1/2像素的計算,然后再進(jìn)行1/4的計算。 即使在X264編碼其中已經(jīng)使用了像MMX (Multi Media Extension多媒體增強(qiáng)指令集)、 SSE (StreamingSIMD Extensions 單指令多數(shù)據(jù)流擴(kuò)展)這些 SIMD (Single Instruction Multiple Data單指令多數(shù)據(jù))指令集優(yōu)化,有了一定的并發(fā)能力,但是對于高清視頻巨大的計算強(qiáng)度仍然顯得有些吃力,畢竟CPU的架構(gòu)主要是針對串行的應(yīng)用程序進(jìn)行設(shè)計的。 隨著GPGPU的不斷發(fā)展,越來越多的PC機(jī)都有獨立的GPU,同時像CUDA (Compute Unified Device Architecture統(tǒng)一計算設(shè)備架構(gòu))一系列的GPU平臺不斷推出,這使得大規(guī)模數(shù)據(jù)的并行計算成為可能。H. 264運動補(bǔ)償插值的過程中數(shù)據(jù)量很龐大,但是數(shù)據(jù)計算過程中的耦合性不是很強(qiáng),所以比較容易實現(xiàn)大量數(shù)據(jù)的并行化,完全可以利用GPU來取代CPU實現(xiàn)運動補(bǔ)償插值的計算。

發(fā)明內(nèi)容
本發(fā)明引入了異構(gòu)多核系統(tǒng),針對數(shù)據(jù)間的依賴性進(jìn)行去耦合分析,提出了對運動補(bǔ)償插值進(jìn)行并行化的方法,充分發(fā)揮了異構(gòu)多核系統(tǒng)中GPU的大規(guī)模數(shù)據(jù)并行計算能力,在完全不影響圖像質(zhì)量的前提下,降低了 CPU利用率,同時加快了高清視頻的編碼速度,特別適用于高清視頻實時編碼的需求。為了實現(xiàn)上述目標(biāo),本發(fā)明提供一種異構(gòu)多核的并行化計算方法,其整體框架如圖2所示。整個系統(tǒng)是由主處理器CPU和協(xié)處理器GPU組成的。主處理器CPU負(fù)責(zé)編碼任務(wù)的控制、各路視頻數(shù)據(jù)的編碼(除運動補(bǔ)償插值等外)、多路編碼重建幀數(shù)據(jù)的同步、向協(xié)處理器GPU傳送重建幀數(shù)據(jù)(待插值)、接受協(xié)處理器GPU傳送回來的插值后數(shù)據(jù)、將插值后數(shù)據(jù)進(jìn)行分離移交各路編碼、視頻輸出。協(xié)處理器GPU負(fù)責(zé)編碼任務(wù)中接受CPU傳輸過來的待插值數(shù)據(jù)、對待插值數(shù)據(jù)進(jìn)行并行化插值計算、將插值計算結(jié)果送回主處理器CPU以進(jìn)行下一步的編碼過程。圖2中編碼任務(wù)路數(shù)可以僅為一路視頻編碼,也可以是多路視頻編碼。多路數(shù)據(jù)整合單元的作用是將各路視頻編碼同步,使每路編碼都同步到獲得重建幀,等待運動補(bǔ)償插值的地方。然后將每路編碼視頻的重建幀數(shù)據(jù)集中并傳送至協(xié)處理器GPU,以此提高數(shù)據(jù)吞吐量,減少總的數(shù)據(jù)傳輸時間。同理,數(shù)據(jù)分離單元是指主處理器CPU將協(xié)處理器GPU傳送回來的插值后數(shù)據(jù)分離為每路視頻編碼對應(yīng)的數(shù)據(jù),以繼續(xù)每一路視頻的編碼。圖2中主處理器CPU中的請求控制單元的作用是通過計算視頻編碼任務(wù)需要的資源和協(xié)處理器GPU上的剩余計算資源,來決定視頻編碼任務(wù)的分配,即是否將新視頻編碼任務(wù)添加到當(dāng)前多路視頻編碼隊列中,請求控制單元的處理流程如圖3所示。請求控制單元獲得新的一路視頻編碼請求后,經(jīng)過四個步驟對該請求做出響應(yīng)步驟1 計算該路請求需占用GPU資源數(shù)目。每路視頻編碼占用GPU上的資源由該路編碼視頻的視頻屬性和編碼算法屬性決定。視頻屬性是指視頻的分辨率,不同的分辨率的視頻所需的運算量不同,在GPU上所占用的資源數(shù)目也不同。編碼算法屬性是指編碼算法中運動補(bǔ)償插值所要達(dá)到的分?jǐn)?shù)像素精度和插值時所用的濾波器性質(zhì)等。有的編碼算法只要達(dá)到1/2像素精度,而有的算法要求為1/4甚至是1/8像素精度,在H. ^4/AVC編碼中,運動補(bǔ)償?shù)木葹?/4像素精度。不同分?jǐn)?shù)像素精度所要求的計算量隨像素精度的提高以指數(shù)形式遞增,所以不同分?jǐn)?shù)像素精度在GPU上要求的資源數(shù)目也不同。濾波器性質(zhì)是指編碼算法中所用的濾波器的維度、階數(shù)、濾波系數(shù)等等,不同性質(zhì)的濾波器所要求的計算資源也不同。步驟2 查看當(dāng)前多路視頻編碼已經(jīng)占用的GPU資源。當(dāng)前多路視頻編碼已經(jīng)占用的GPU上的資源為當(dāng)前多路視頻編碼隊列中每路視頻編碼所占用的GPU資源總和。步驟3 計算當(dāng)前GPU剩余資源,當(dāng)前GPU剩余資源為GPU上最大資源數(shù)目減去當(dāng)前多路視頻編碼占用的GPU資源數(shù)目。GPU上最大資源數(shù)是指在協(xié)處理器GPU上能夠開辟的最大線程thread數(shù)目,最大線程數(shù)目等于在GPU上所能開辟的最多的塊block數(shù)目乘以塊中能開辟的最大線程thread數(shù)目。步驟4 比較當(dāng)前GPU剩余資源數(shù)目和新的一路視頻編碼請求所需資源數(shù)目。如果 GPU剩余資源數(shù)目大于新的一路視頻編碼請求所需資源數(shù)目,則請求成功,并將該路視頻編碼添加至當(dāng)前多路視頻編碼隊列中;否則請求失敗,取消該路視頻編碼請求。圖1所示的協(xié)處理器GPU中視頻編碼任務(wù)的運動補(bǔ)償插值并行計算,其步驟分為五步,具體如圖4所示步驟一接受CPU傳輸過來的重建幀數(shù)據(jù),該數(shù)據(jù)為待插值數(shù)據(jù);步驟二以并行的方式執(zhí)行預(yù)定規(guī)則中的步驟1 ;步驟三以并行的方式執(zhí)行預(yù)定規(guī)則中的步驟2 ;步驟四以并行的方式執(zhí)行預(yù)定規(guī)則中的步驟3 ;步驟五將插值計算的結(jié)果傳回主處理器CPU以進(jìn)行各路視頻的編碼的后續(xù)部分。
在整個插值的過程中,像素精度為1/4像素,需要對整數(shù)像素進(jìn)行插值得到1/2像素和1/4像素,其中1/2像素可以分為水平方向1/2像素、垂直方向1/2像素和中心1/2像素。水平方向1/2像素和垂直方向1/2像素可以直接由整數(shù)像素通過六抽頭濾波器進(jìn)行插值得到,濾波器系數(shù)為(1,-5,20,20,-5,1);中心1/2像素由水平方向1/2像素或者垂直方向1/2像素通過六抽頭濾波器進(jìn)行插值得到,濾波器系數(shù)也為(1,-5,20,20,-5,1) ;1/4像素由整數(shù)像素和多有1/2像素通過線性維納濾波器進(jìn)行插值得到,濾波系數(shù)為(1,1)。所以分?jǐn)?shù)像素的計算存在數(shù)據(jù)依賴關(guān)系,不同類型的分像素計算需分先后,在協(xié)處理器GPU進(jìn)行分像素插值操作時,可以設(shè)置三種預(yù)定規(guī)則預(yù)定規(guī)則1 步驟1 在GPU上由一幀圖像的整數(shù)像素點通過六抽頭濾波器獲得水平方向像素點和垂直方向像素點;步驟2 在GPU上由一幀圖像的整數(shù)像素點和步驟1中獲得的水平方向1/2像素點或者垂直方向1/2像素點通過六抽頭濾波器獲得中心 1/2像素點;步驟3 在GPU上由一幀圖像的整數(shù)像素點、步驟1中獲得的水平方向1/2像素點、步驟1中獲得的垂直方向1/2像素點、步驟2中獲得的中心1/2像素點通過線性維納濾波器獲得所有的1/4像素點。預(yù)定規(guī)則2 步驟1 在GPU上由一幀圖像的整數(shù)像素點通過六抽頭濾波器獲得水平方向1/2像素點;步驟2 在GPU上由一幀圖像的整數(shù)像素點通過六抽頭濾波器獲得垂直方向1/2像素點,由一幀圖像的整數(shù)像素點和步驟1中獲得的水平方向1/2像素點通過六抽頭濾波器獲得中心像素點;步驟3 在GPU上由一幀圖像的整數(shù)像素點、步驟1中獲得的水平方向1/2像素點、步驟2中獲得的垂直方向1/2像素點和中心1/2像素點通過線性維納濾波器獲得所有的1/4像素點。預(yù)定規(guī)則3 步驟1 在GPU上由一幀圖像的整數(shù)像素點通過六抽頭濾波器獲得垂直方向1/2像素點;步驟2 在GPU上由一幀圖像的整數(shù)像素點通過六抽頭濾波器獲得水平方向1/2像素點,由一幀圖像的整數(shù)像素點和步驟1中獲得的垂直方向1/2像素點通過六抽頭濾波器獲得中心像素點;步驟3 在GPU上由一幀圖像的整數(shù)像素點、步驟1中獲得的垂直方向1/2像素點、步驟2中獲得的水平方向1/2像素點和中心1/2像素點通過線性維納濾波器獲得所有的1/4像素點。在預(yù)定規(guī)則的三個步驟中,為每個水平方向1/2像素點和垂直方向1/2像素點、中心1/2像素點和每個1/4像素點的計算都分配一個線程;在每個步驟中,所有的計算都是以 GPU核為單位的并行和GPU核內(nèi)部的流處理器的并發(fā)的方式進(jìn)行。三個預(yù)定規(guī)則的第三個步驟都是一樣的,而第一步和第二步存在著差別。具體來說,預(yù)定規(guī)則1中步驟1計算水平方向和垂直方向1/2像素,而預(yù)定規(guī)則2和預(yù)定規(guī)則3則分別把垂直方向1/2像素和水平方向1/2像素的計算放到步驟2中。這樣可以靈活選取預(yù)定規(guī)則來適應(yīng)不同的硬件系統(tǒng),以達(dá)到最高的硬件使用效率。比如在以CUDA架構(gòu)為基礎(chǔ)的系統(tǒng)中,由于在使用共享緩存時可能會出現(xiàn)沖突bank conflict,則預(yù)定規(guī)則2和預(yù)定規(guī)則3相對于預(yù)定規(guī)則1會是更好的選擇。預(yù)定規(guī)則中每個步驟所要求的GPU上的資源數(shù)目是不同的,這意味著當(dāng)前多路編碼所占用的GPU資源為預(yù)定規(guī)則三個步驟中所占最多資源的步驟決定。


圖11/4像素插值像素分布2H. 264編碼中運動補(bǔ)償插值的并行加速示意3主處理器CPU中的請求控制單元的處理流程4協(xié)處理器GPU中的并行插值流程5運動補(bǔ)償插值優(yōu)化的系統(tǒng)框架6運動補(bǔ)償插值中數(shù)據(jù)依賴關(guān)系Level one圖7運動補(bǔ)償插值中數(shù)據(jù)依賴關(guān)系Level two圖8運動補(bǔ)償插值中數(shù)據(jù)依賴關(guān)系Level three圖9并行化運動補(bǔ)償?shù)木唧w實現(xiàn)示意圖
具體實施例方式以下結(jié)合附圖和具體的實施用例來對本發(fā)明進(jìn)一步額詳細(xì)說明在H. 264視頻編碼中,使用運動估計和運動補(bǔ)償來進(jìn)行幀間預(yù)測,從而達(dá)到了大大提高了編碼壓縮效率、降低碼流的效果。運動估計和運動補(bǔ)償獲得相應(yīng)塊的運動矢量,該運動矢量為1/4像素精度。由于原始圖像只有整像素點,沒有1/2和1/4分像素點,所以需要對整幀的圖像進(jìn)行內(nèi)插來獲得這些分像素點。通過對內(nèi)插后的圖像進(jìn)行具有分像素精度的運動矢量搜索。運動搜索的1/4像素精度是H. 264編碼圖像質(zhì)量比以往H. 26x系列視頻編解碼標(biāo)準(zhǔn)更好的重要因素。運動補(bǔ)償插值用了一個六抽頭的濾波器(濾波系數(shù)1,_5, 20,20, -5,1)來對圖像內(nèi)插,1/4像素精度的插值提高了圖像重建的精度,但需要對原始圖像每個整像素點都要內(nèi)插得到3個1/2像素點和12個1/4像素點,從而大大增加了實現(xiàn)的復(fù)雜度?,F(xiàn)有的H. 264編碼器都是使用串行的方式對進(jìn)行運動補(bǔ)償插值,即使是使用了諸如MMX、SSE等指令集優(yōu)化的策略,其并行程度也比較有限。隨著現(xiàn)有GPGPU的快速發(fā)展,其計算能力特別是并行計算能力得到了飛速的提升。像NVIDIA公司的CUDA就是提供了并行環(huán)境開發(fā)的平臺,該平臺不但可以充分利用GPU的大規(guī)模數(shù)據(jù)并行能力,還提供了友好的編程環(huán)境。 本發(fā)明旨在提升H. 264編碼器的編碼速度,采用了 CPU+GPU的異構(gòu)多核架構(gòu),通過將編碼模塊中運動補(bǔ)償插值模塊移植到GPU上并行實現(xiàn),通過充分發(fā)揮CPU和GPU各自的優(yōu)勢,實現(xiàn)編碼速度的提升。需要指出的是GPU雖然有大規(guī)模并行計算的能力,但是由于缺少足夠的緩存,對于一些分支判斷比較復(fù)雜的應(yīng)用其性能會急劇下降。H. 264編碼器中存在著大量的分支預(yù)測,并不是所有的編碼模塊都適合移植到GPU上實現(xiàn)并行計算的。另一方面,CPU上有著大量的cache存儲器,其目的就是為了適應(yīng)一些高復(fù)雜度判斷以及有著大量分支預(yù)測的應(yīng)用程序,所以可以通過將需要較高的計算量但是分支預(yù)測不是很多的模塊放在GPU上運行, 將分支預(yù)測較高的模塊放在CPU上運行可以充分利用GPU和CPU各自的優(yōu)點,避開其缺點, 從而提高系統(tǒng)的效率。本發(fā)明針對在運動補(bǔ)償插值中分?jǐn)?shù)像素點的計算之間數(shù)據(jù)耦合度較低,將除運動補(bǔ)償插值以外的模塊保留在CPU上運行,而僅將運動補(bǔ)償插值放在GPU上進(jìn)行計算,整個流程框架如圖5所示。
為了能夠讓插值部分更有效地移植到GPU上,我們需要對插值計算的數(shù)據(jù)進(jìn)行去耦合,從而可以讓插值操作在使用SIMD的GPU上更大程度的實現(xiàn)數(shù)據(jù)的并行操作。H. 264編碼運動補(bǔ)償插值中存在三個層次的依賴關(guān)系。Level one 水平方向1/2像素點和垂直方向1/2像素點都是使用六抽頭濾波器通過整像素點獲得,而這兩類1/2像素點之間沒有任何的數(shù)據(jù)依賴關(guān)系。Level two 中心1/2像素不是通過整像素點獲得,而是使用六抽頭濾波器通過在 level one中得到的水平方向1/2像素點或者垂直方向1/2像素點獲得。圖7顯示了中心 1/2像素需要在水平1/2像素或者垂直1/2像素點計算可得后便可以計算獲得。Level three :1/4像素點使用線性維納濾波器通過整像素點和1/2像素點來獲得。圖8(a)中的1/4像素點通過一個整像素點和水平方向1/2像素點得到,圖8(b)中的 1/4像素點全部由1/2像素點來得到。圖8表明了 1/4像素點的插值必須要在所有1/2像素點插值完成后才可進(jìn)行。插值計算的依賴關(guān)系決定了各個分像素點計算的先后順序。前面提及的三個 level,它們的計算是有先后順序的,level two在level one之后,而level three在level two之后。在每個level中的計算卻是沒有任何相互的依賴關(guān)系,所以在每個level中的操作都可以同時進(jìn)行。由于同一個level中的每個像素的操作都是相同的,所以完全可以利用SIMD技術(shù)將其在GPU上并行處理,從而實現(xiàn)加速。通過前面依賴關(guān)系的討論,下面就以基于的CUDA架構(gòu)的單路視頻編碼運動補(bǔ)償插值并行優(yōu)化的方案為例,進(jìn)一步說明本發(fā)明提出的一種H. 264編碼中運動補(bǔ)償插值的并行優(yōu)化方法的實現(xiàn)過程,如圖9所示。步驟1,將原始整像素點值從CPU傳給GPU,GPU對這些整像素點值以并行的方式進(jìn)行插值。步驟2,在GPU上,對整像素點進(jìn)行縱向插值,獲得垂直方向1/2像素點,如圖9第二步所示。步驟3,在GPU上,對整像素點進(jìn)行橫向插值,獲得水平方向1/2像素點;同時對步驟二中獲得的垂直方向1/2像素點進(jìn)行橫向插值,獲得中心1/2像素點。計算水平方向1/2 像素點和中心1/2像素點所需要的整像素點和垂直方向1/2像素點之間沒有任何數(shù)據(jù)耦合,所以可以將垂直方向1/2像素點和中心1/2像素點通過并行計算獲得。至此,所有1/2 像素點計算完成。步驟4,使用整像素點和步驟2、步驟3中計算得到的1/2像素點計算1/4像素點。 至此,所有1/2像素點和1/4像素點全部計算完成。步驟五,將經(jīng)過插值得到的所有分像素點值傳回GPU以繼續(xù)插值之后的編碼操作。需要指出的是,這里我們采用了預(yù)定規(guī)則3而不是預(yù)定規(guī)則1進(jìn)行插值的計算,采用該規(guī)則的原因是在具體的實現(xiàn)方案中選擇了 CUDA作為平臺,這樣做更好的減少CUDA中共享內(nèi)存的bank conflict。在CUDA編程中,為了能夠提高數(shù)據(jù)的讀取速度,需要把數(shù)據(jù)放入shared memory,而在進(jìn)行并行化實現(xiàn)時,如果同一個half warp中的線程去讀取同一個bank中的數(shù)據(jù),則會出現(xiàn)bank conflict。在圖6中我們可以看到,如果在level one中的水平方向1/2像素點和垂直方向1/2像素點同時在CUDA上同時計算,那么他們需要同時去讀取最左上方的整像素點,由于這些整像素點存放在shared memory中,而計算水平方向 1/2像素點和垂直方向1/2像素點由不同的線程完成,從而會產(chǎn)生bank conflict,使得讀取該點的操作變成串行而不是并行,降低了并行性能。通過將水平方向的像素點的計算放在步驟3可以避免這一問題。當(dāng)然這樣做是因為CUDA本身的硬件架構(gòu)的限制,在其他的硬件架構(gòu)中,可能使用其他預(yù)定規(guī)則可以更加高效?;谏厦娴姆桨福靡韵颅h(huán)境對該方案進(jìn)行了測試GeForce 9800GT PCIe顯卡 (擁有14個SM,總共112個SP) ,Intel四核CPU Q8300,2G DDR2內(nèi)存。運行環(huán)境為Linux OpenSuse 11. 1,CUDA toolkit and SDK 2.3。對似64編碼器僅僅使用CPU進(jìn)行編碼和使用 CPU+GPU的架構(gòu)進(jìn)行編碼得到了測試數(shù)據(jù),如表1所示表1 CPU和GPU運動補(bǔ)償插值編碼測試
權(quán)利要求
1.H. 264編碼中運動補(bǔ)償插值的并行加速方法及裝置,其特征在于(1)主處理器CPU(Central Processor Unit中央處理單元)根據(jù)待運行的視頻編碼任務(wù)需要的資源和協(xié)處理器GPU (Graphic Processor Unit圖形處理單元)上的剩余計算資源,決定新增視頻編碼任務(wù)的分配;(2)協(xié)處理器GPU根據(jù)插值操作的分?jǐn)?shù)像素類型和數(shù)據(jù)依賴關(guān)系,將分?jǐn)?shù)像素插值運算操作按預(yù)定規(guī)則處理。
2.根據(jù)權(quán)利要求1所述的H.264編碼中運動補(bǔ)償插值的并行加速方法及裝置,其特征在于所述待運行的視頻編碼任務(wù)利用主處理器CPU和協(xié)處理器GPU構(gòu)成的異構(gòu)多核系統(tǒng), 實現(xiàn)視頻編碼的并行加速;待運行的視頻編碼任務(wù)可以是一路視頻編碼任務(wù),也可以是多路視頻編碼任務(wù)。
3.根據(jù)權(quán)利要求1所述的H.264編碼中運動補(bǔ)償插值的并行加速方法及裝置,其特征在于所述視頻編碼任務(wù)所需要的資源,是指視頻編碼任務(wù)中移植到協(xié)處理器GPU進(jìn)行計算的部分所需要占用GPU的資源;這些資源的大小由被編碼的視頻屬性和編碼算法的屬性決定,視頻屬性指視頻的分辨率等,編碼算法的屬性指編碼時插值所要達(dá)到的分像素精度、 插值時所用濾波器的計算復(fù)雜度等。
4.根據(jù)權(quán)利要求1所述的H.264編碼中運動補(bǔ)償插值的并行加速方法及裝置,其特征在于所述協(xié)處理器GPU上的剩余計算資源,是指協(xié)處理器GPU所能提供的最大資源數(shù)減去當(dāng)前正在執(zhí)行的視頻編碼任務(wù)占用的資源數(shù)所得到的資源數(shù),GPU上所能提供的最大資源數(shù)是指在協(xié)處理器GPU上能夠開辟的最大線程thread數(shù)目,最大線程數(shù)目等于在GPU上所能開辟的最多的塊block數(shù)目乘以每個塊中能開辟的最大線程數(shù)目;另外,由于具體的系統(tǒng)實時性需求不同,根據(jù)不同的系統(tǒng)實際需求,對應(yīng)的GPU最大資源數(shù)目還受限于GPU實際運行時所能夠真正達(dá)到并行化線程數(shù)目的最大值,從而相應(yīng)的剩余資源數(shù)也會發(fā)生改變;
5.根據(jù)權(quán)利要求1所述的H.264編碼中運動補(bǔ)償插值的并行加速方法及裝置,其特征在于所述主處理器CPU決定視頻編碼任務(wù)的分配,是指CPU根據(jù)待編碼視頻任務(wù)的視頻屬性和編碼算法屬性,計算出其中一路視頻編碼任務(wù)要占用協(xié)處理器GPU上所需資源數(shù)目, 如果該所需資源數(shù)大于當(dāng)前GPU上的剩余資源,則CPU取消增加該路視頻編碼任務(wù)請求;如果該所需資源數(shù)小于等于當(dāng)前GPU上的剩余資源,則CPU執(zhí)行增加一路視頻編碼任務(wù),以此類推,直至CPU分配完待編碼視頻任務(wù)或者因GPU剩余資源不足而取消增加編碼視頻任務(wù)為止。
6.根據(jù)權(quán)利要求1中所述的H.264編碼中運動補(bǔ)償插值的并行加速方法和裝置中的預(yù)定規(guī)則,其特征在于所述插值操作的分?jǐn)?shù)像素類型,是指在插值過程中,需要插值生成不同位置和不同精度的分?jǐn)?shù)像素;分?jǐn)?shù)像素根據(jù)位置和精度分為水平方向1/2像素、垂直方向1/2像素、中心1/2像素、1/4像素。
7.根據(jù)權(quán)利要求1中所述的H.264編碼中運動補(bǔ)償插值的一種并行加速方法和裝置中的預(yù)定規(guī)則,其特征在于所述插值操作中數(shù)據(jù)的依賴關(guān)系,是指在插值過程中,中心1/2 像素由水平方向1/2像素或者垂直方向1/2像素計算得到,1/4像素由所有1/2像素計算得到,所以水平方向1/2像素或者垂直方向1/2像素必須在中心1/2像素和1/4像素之前計算獲得,中心1/2像素需要在1/4像素之前計算獲得。
8.根據(jù)權(quán)利要求1中所述的H.264編碼中運動補(bǔ)償插值的并行加速方法和裝置中的預(yù)定規(guī)則,其特征在于根據(jù)插值過程中數(shù)據(jù)的依賴關(guān)系,在協(xié)處理器GPU上需要分步驟進(jìn)行分?jǐn)?shù)像素的插值操作,可以設(shè)置3種預(yù)定規(guī)則預(yù)定規(guī)則1、預(yù)定規(guī)則2和預(yù)定規(guī)則3,具體如下預(yù)定規(guī)則1 步驟1 在GPU上由一幀圖像的整數(shù)像素點通過六抽頭濾波器獲得水平方向1/2像素點和垂直方向1/2像素點;步驟2 在GPU上由一幀圖像的整數(shù)像素點和步驟1 中獲得的水平方向1/2像素點或者垂直方向1/2像素點通過六抽頭濾波器獲得中心1/2像素點;步驟3 在GPU上由一幀圖像的整數(shù)像素點、步驟1中獲得的水平方向1/2像素點、步驟1中獲得的垂直方向1/2像素點、步驟2中獲得的中心1/2像素點通過線性維納濾波器獲得所有的1/4像素點;預(yù)定規(guī)則2 步驟1 在GPU上由一幀圖像的整數(shù)像素點通過六抽頭濾波器獲得水平方向1/2像素點;步驟2 在GPU上由一幀圖像的整數(shù)像素點通過六抽頭濾波器獲得垂直方向 1/2像素點,由一幀圖像的整數(shù)像素點和步驟1中獲得的水平方向1/2像素點通過六抽頭濾波器獲得中心1/2像素點;步驟3 在GPU上由一幀圖像的整數(shù)像素點、步驟1中獲得的水平方向1/2像素點、步驟2中獲得的垂直方向1/2像素點和中心1/2像素點通過線性維納濾波器獲得所有的1/4像素點;預(yù)定規(guī)則3 步驟1 在GPU上由一幀圖像的整數(shù)像素點通過六抽頭濾波器獲得垂直方向1/2像素點;步驟2 在GPU上由一幀圖像的整數(shù)像素點通過六抽頭濾波器獲得水平方向 1/2像素點,由一幀圖像的整數(shù)像素點和步驟1中獲得的垂直方向1/2像素點通過六抽頭濾波器獲得中心1/2像素點;步驟3 在GPU上由一幀圖像的整數(shù)像素點、步驟1中獲得的垂直方向1/2像素點、步驟2中獲得的水平方向1/2像素點和中心1/2像素點通過線性維納濾波器獲得所有的1/4像素點。
9.根據(jù)權(quán)利要求4所述編碼所需資源的計算、權(quán)利要求8中所述的預(yù)定規(guī)則,其特征在于所述預(yù)定規(guī)則的三個步驟中,為每個水平方向1/2像素點和垂直方向1/2像素點、中心1/2像素點和每個1/4像素點的計算都分配一個線程;在每個步驟中,所有的計算都是以 GPU核為單位的并行和GPU核內(nèi)部的流處理器的并發(fā)的方式進(jìn)行;編碼所需的資源數(shù)由各預(yù)定規(guī)則中三個步驟中所需最多資源的步驟決定。
10.H. 264編碼中運動補(bǔ)償插值的并行加速裝置,其特征在于,包括主處理器CPU和協(xié)處理器GPU,主處理器用于適合CPU架構(gòu)的視頻編碼操作、待編碼視頻任務(wù)的分配以及將計算獲得的中間結(jié)果(如重建幀數(shù)據(jù))傳送給協(xié)處理器GPU ;協(xié)處理器用于適合GPU架構(gòu)的視頻編碼模塊,采用并行優(yōu)化進(jìn)行加速,并將計算的結(jié)果傳回主處理器;所述適合主處理器CPU架構(gòu)的模塊主要是分支判斷、數(shù)據(jù)耦合度高的操作所屬的模塊;所述適合協(xié)處理器GPU架構(gòu)的模塊主要是計算量及數(shù)據(jù)量較大,但計算指令單一,數(shù)據(jù)耦合度較小的操作,如運動補(bǔ)償插值等。
全文摘要
本發(fā)明公開了一種H.264編碼中運動補(bǔ)償插值的并行加速方法及裝置,所述的方法包括為主處理器根據(jù)待運行的視頻編碼任務(wù)需要的資源和協(xié)處理器GPU上的剩余計算資源,決定新增視頻編碼任務(wù)的分配;協(xié)處理器GPU根據(jù)插值操作的分?jǐn)?shù)像素類型和數(shù)據(jù)依賴關(guān)系,將分?jǐn)?shù)像素插值運算操作按預(yù)定規(guī)則處理。引入了異構(gòu)多核系統(tǒng),針對數(shù)據(jù)間的依賴性進(jìn)行去耦合分析,提出了對運動補(bǔ)償插值進(jìn)行并行化的方法,充分發(fā)揮了異構(gòu)多核系統(tǒng)中GPU的大規(guī)模數(shù)據(jù)并行計算能力,在完全不影響圖像質(zhì)量的前提下,降低了CPU利用率,滿足了多路、高清視頻編碼的實時性需求。
文檔編號H04N7/50GK102497550SQ201110398920
公開日2012年6月13日 申請日期2011年12月5日 優(yōu)先權(quán)日2011年12月5日
發(fā)明者孟念鵬, 季曉勇, 張李曄, 楊杭軍, 王健 申請人:南京大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1