一種基于多gpu的圖像解碼拼控算法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種基于多GPU的圖像解碼拼控算法及實(shí)現(xiàn)該方法的裝置。
【背景技術(shù)】
[0002]隨著計(jì)算機(jī)視覺技術(shù)的不斷發(fā)展,計(jì)算機(jī)數(shù)字視頻采集已經(jīng)從最早的10萬像素發(fā)展到100萬,200萬甚至800萬像素的清晰度,編解碼技術(shù)也從以前的Mot1n-JPEG,到MPEG,MPEG2,MPEG4,H.264發(fā)展到如今最新的HEVC編碼。視頻技術(shù)的發(fā)展不斷的給傳統(tǒng)計(jì)算機(jī)的計(jì)算架構(gòu)以及處理能力提出新的挑戰(zhàn)。而如果單純的利用提高傳統(tǒng)計(jì)算機(jī)硬件計(jì)算能力的方法來處理現(xiàn)代高清視頻數(shù)據(jù),將會(huì)顯得非常的笨拙,并且還會(huì)極大的提高視頻系統(tǒng)的建設(shè)和使用成本。
[0003]以上提到的這些技術(shù)的目標(biāo),都是使視頻數(shù)據(jù)在具有越來越高信息量的同時(shí),占用更低的帶寬和存儲(chǔ)空間。但是不管視頻清晰度和編碼技術(shù)如何發(fā)展,這些視頻圖像始終還是要能夠完美的呈現(xiàn)和展示在用戶眼前才能夠體現(xiàn)出他們的價(jià)值,而人們?yōu)榱说玫礁玫囊曨l觀看體驗(yàn),也在不斷的提升視頻顯示設(shè)備的尺寸和清晰度,目前在諸多的顯示技術(shù)里,最為主流和成熟的技術(shù)包括:液晶面板顯示技術(shù),LED大屏顯示技術(shù),以及投影顯示技術(shù)。而在其中,單位清晰度最高,安裝和部署最為靈活的就是液晶面板顯示技術(shù),因此它在大屏顯示領(lǐng)域被廣泛的使用。
[0004]液晶面板雖然在清晰度和安裝部署上具備優(yōu)勢(shì),但是當(dāng)用戶需要顯示巨幅畫面時(shí),液晶面板顯示技術(shù)就不如其他兩種技術(shù)了,但是隨著技術(shù)的發(fā)展,也出現(xiàn)了很多大屏的拼接控制器,可以利用圖像分割和融合技術(shù)把多個(gè)液晶面板仿真成一個(gè)由M*N個(gè)液晶面板組成的巨幅顯示器。在高清視頻越來越成為主流的幾天,這種拼接顯示的視覺效果在一定的觀測(cè)距離下將大大優(yōu)于獨(dú)立監(jiān)視器顯示的高清圖像。
[0005]要實(shí)現(xiàn)液晶面板的拼接控制,必須使用到解碼器、矩陣、拼接控制器三種形態(tài)的產(chǎn)品的串聯(lián),首先解碼器實(shí)現(xiàn)各種解碼格式的解碼,最終轉(zhuǎn)換成VGA/DVI/HDMI等模擬或數(shù)字信號(hào),矩陣實(shí)現(xiàn)視頻開關(guān)的作用,通過矩陣將需要拼接的視頻切換到需要顯示的接口上,最終由拼接控制器完成圖像的拼接并輸出到監(jiān)視器上。
[0006]視頻解碼器完成了編碼視頻到位圖視頻的轉(zhuǎn)換,轉(zhuǎn)換后的視頻數(shù)據(jù)具有非常高的帶寬速率,因此,傳統(tǒng)的液晶面板拼接技術(shù)往往多是采用FPGA現(xiàn)場(chǎng)可編程邏輯來實(shí)現(xiàn),這類拼接矩陣往往具備M進(jìn)N出的視頻接口,可以將M進(jìn)中的任一路視頻,輸出顯示到N出中的任一監(jiān)視器上,也能將M進(jìn)中的任一路視頻,輸出顯示到N出中任意X*Y的邏輯屏幕上,如果是在帶有開窗漫游的功能的拼接矩陣上,還可以在N個(gè)輸出中的任意矩形位置中開出邏輯窗口。采用FPGA硬件方案實(shí)現(xiàn)此功能具有兩個(gè)缺點(diǎn),第一,采用FPGA實(shí)現(xiàn)的系統(tǒng)的價(jià)格比ASIC芯片方案的要高出不少,第二,在實(shí)現(xiàn)相同功能的情況下,F(xiàn)PGA的功耗往往也更尚O
[0007]除了采用FPGA方式實(shí)現(xiàn)外,最常見的方式便是采用具有多個(gè)視頻輸出接口的工控電腦,并附帶拼接控制軟件來實(shí)現(xiàn),此類方案的特點(diǎn)是利用高性能通用硬件堆砌來達(dá)到用戶要求,這樣往往也會(huì)帶來成本過高的問題。
[0008]GPU,全名Graphic Process Unit,即圖像處理單元,與之概念對(duì)應(yīng)的還有CPU,Central Process Unit,及中央處理單元。與CPU面向通用計(jì)算的設(shè)計(jì)不同,GPU由于最初設(shè)計(jì)就是針對(duì)圖形圖像數(shù)據(jù)處理的,因此它在處理圖像或視頻數(shù)據(jù)時(shí),在軟硬件架構(gòu)上都具備天生優(yōu)勢(shì)。因此,我們可以利用GPU來進(jìn)行視頻數(shù)據(jù)的解碼,矩陣交換,融合拼接等處理。因?yàn)镚PU作為大量使用的通用半導(dǎo)體芯片,因此具有低廉的價(jià)格,同時(shí)只要通過合理的軟件調(diào)度和結(jié)合,完全可以實(shí)現(xiàn)以往需要專用硬件才能夠?qū)崿F(xiàn)的性能和功能,特別適合處理解碼拼接等視頻應(yīng)用。
[0009]通過以上的分析可知,通過GPU實(shí)現(xiàn)可以的解碼拼接系統(tǒng)可以完全代替?zhèn)鹘y(tǒng)的解碼/矩陣/拼接融合的專用硬件系統(tǒng),在提供更高性能的前提下,還能大幅降低實(shí)現(xiàn)成本,和運(yùn)行功耗。
【發(fā)明內(nèi)容】
[0010]本發(fā)明的目的在于克服上述缺陷,提供一種實(shí)施方便且可實(shí)現(xiàn)高效處理的基于多GPU的圖像解碼拼控算法。
[0011]一種基于多GPU的圖像解碼拼控算法,包括以下步驟:
(1)將編碼數(shù)據(jù)從網(wǎng)絡(luò)或者磁盤文件搬運(yùn)至GT系列GPU的專用顯存中;
(2)GT系列GPU對(duì)專用顯存中的編碼數(shù)據(jù)進(jìn)行解碼,得到一幀完整的視頻圖像數(shù)據(jù);
(3)利用GT系列GPU中的VPP硬件邏輯對(duì)視頻圖像數(shù)據(jù)進(jìn)行以下處理:視頻去隔行處理、主動(dòng)降噪、銳化以及亮度/對(duì)比度/色度調(diào)整;
(4)數(shù)據(jù)分發(fā):將視頻圖像數(shù)據(jù)分發(fā)至若干外圍GPU;
(5)拼接顯示融合:將分發(fā)好的視頻圖像數(shù)據(jù)放入到指定的外圍GPU的指定數(shù)據(jù)接口上顯示。
[0012]進(jìn)一步的,所述步驟(I)中所述編碼數(shù)據(jù)首先被保存至系統(tǒng)內(nèi)存中,然后再搬運(yùn)至GT系列GPU的專用顯存中。
[0013]進(jìn)一步的,所述步驟(2)中關(guān)鍵幀的解碼,包括以下步驟=ZigZag重新排布、反量化、反DCT變換、重構(gòu);非關(guān)鍵幀的解碼包括以下步驟:重構(gòu)及運(yùn)動(dòng)矢量復(fù)原
進(jìn)一步的,所述步驟(2)中GT系列GPU中的各種硬件資源并發(fā)工作。
[0014]進(jìn)一步的,所述GT系列GPU中還包括有針對(duì)視頻編解碼進(jìn)行加速的硬件編解碼單元,所述硬件編解碼單元內(nèi)部用于實(shí)現(xiàn)宏塊分割、幀類型確定、反量化、反DCT變換、運(yùn)動(dòng)矢量的復(fù)原、CABAC熵解碼的運(yùn)算。
[0015]進(jìn)一步的,所述步驟(3)和所述步驟(4)之間還包括步驟:變換處理,所述變換處理對(duì)視頻圖像數(shù)據(jù)進(jìn)行大小變換/裁剪,以及色域時(shí)空轉(zhuǎn)換。
[0016]進(jìn)一步的,所述步驟(4)中數(shù)據(jù)分發(fā)采用按頁對(duì)齊進(jìn)行搬移。
[0017]進(jìn)一步的,所述步驟(5)的具體方式如下:
(51)將分發(fā)好的視頻圖像數(shù)據(jù)傳入各外圍GPU的顯示接口的指定區(qū)域所對(duì)應(yīng)的Off-Screen存儲(chǔ)區(qū),此時(shí)不能直接顯示,而需要等到同步信令;
(52)待所有數(shù)據(jù)都傳送到各外圍GPU后,向各個(gè)外圍GPU發(fā)送顯示信令;
(53)各外圍GPU將Off-Screen的數(shù)據(jù)調(diào)入到On-Screen數(shù)據(jù)完成指定接口的指定區(qū)域的視頻顯示;
(54)發(fā)送顯示完成信號(hào)給GT系列GPU,以便GT系列GPU能夠調(diào)度下一幀的視頻數(shù)據(jù),重復(fù)以上過程直至視頻結(jié)束或用戶終止。
[0018]與現(xiàn)有技術(shù)相比,本發(fā)明具有以下有益效果:
本發(fā)明采用排布流水線的方法,利用多個(gè)獨(dú)立的硬件模塊并發(fā)工作,用最為高效的方式完成一幀視頻的處理,并且利用軟硬件同步策略,以確保最終用戶得到一個(gè)理想的視覺效果。
【具體實(shí)施方式】
[0019]下面結(jié)合實(shí)施例對(duì)本發(fā)明作進(jìn)一步說明,本發(fā)明的實(shí)施方式包括但不限于下列實(shí)施例。
[0020]本實(shí)施例提供了一種基于多GPU的圖像解碼拼控算法,該算法基于以下硬件系統(tǒng)實(shí)現(xiàn):CPU主機(jī)系統(tǒng),GT系列GPU,外圍獨(dú)立GPU,獨(dú)立顯示接口和拼接電視墻顯示部分組成。在系統(tǒng)中,視頻編碼數(shù)據(jù)從網(wǎng)絡(luò)或者存儲(chǔ)載體上載入到系統(tǒng)內(nèi)存中,然后通過GT系列GPU調(diào)入專用存儲(chǔ)區(qū)進(jìn)行解碼等后續(xù)操作。以下是對(duì)系統(tǒng)中各部分的詳細(xì)說明:
視頻數(shù)據(jù)載體:網(wǎng)絡(luò)高清攝像機(jī)的網(wǎng)絡(luò)流媒體視頻編碼數(shù)據(jù),或者是光盤,硬盤等永久存儲(chǔ)之上的視頻編碼數(shù)據(jù)。
[0021]CPU主機(jī)系統(tǒng):這里主要是指?jìng)鹘y(tǒng)的計(jì)算機(jī)系統(tǒng),主要由CPU,內(nèi)存,主機(jī)板卡,機(jī)箱和電源等部分組成,其中還包含多種可擴(kuò)展接口如PCIe,PCI, USB,并串口等。在本系統(tǒng)中,主要關(guān)注通過PCIe接口擴(kuò)展的多個(gè)外圍GPU模塊,PCIe接口具有高帶寬,多擴(kuò)展的特點(diǎn),每個(gè)通過PCIe接口擴(kuò)展的外圍GPU模塊都可以附帶多個(gè)獨(dú)立的顯示接口,且每個(gè)顯示接口都具有獨(dú)立的異步顯示的功能。
[0022]GT系列GPU:GT系列GPU是Intel最新一代的CPU中集成的GPU模塊,此模塊除了具備GPU傳統(tǒng)意義上的的2D/3D渲染顯示功能外,還提供了專用的進(jìn)行視頻編解碼,視頻后處理,以及各種圖形變換所需要的硬件模塊,在本系統(tǒng)中,將充分利用到GT系列GPU的視頻和圖像處理能力。
[0023]外圍GPU:外圍GPU主要是指通過PCIe接口擴(kuò)展出來的通用GPU模塊,每個(gè)通過PCIe接口擴(kuò)展的外圍GPU模塊都可以附帶多個(gè)獨(dú)立的顯示接口,且每個(gè)顯示接口都具有獨(dú)立的異步顯示的功能。
[0024]基于上述硬件系統(tǒng),本發(fā)明主要包括以下步驟:
一、將編碼數(shù)據(jù)從網(wǎng)絡(luò)或者磁盤文件搬運(yùn)至GT系列GPU的專用顯存中編碼數(shù)據(jù)的來源往往是網(wǎng)絡(luò)實(shí)時(shí)視頻流或者是磁盤存儲(chǔ)的永久保存視頻文件,而GT系列GPU的解碼過程是在GPU內(nèi)完成的,而GPU不能直接訪問系統(tǒng)內(nèi)存,因?yàn)樗麄兊脑L問、對(duì)齊和緩存的機(jī)制都是完全不同的;因此,在GPU能夠進(jìn)行解碼之前,必須將編碼數(shù)據(jù)從網(wǎng)絡(luò)或者磁盤文件搬運(yùn)至GT系列GPU的專用顯存中去。
[0025]值得注意的是,搬運(yùn)的過程需要注意從網(wǎng)絡(luò)實(shí)時(shí)視頻流或者磁盤視頻文件中讀取數(shù)據(jù)的方式和寫入GT系列GPU專用顯存的方式的區(qū)別,不能按照不同的數(shù)據(jù)拷貝方法進(jìn)行,否則將帶來數(shù)據(jù)對(duì)其和緩存錯(cuò)誤。
[0026]因此,網(wǎng)絡(luò)實(shí)時(shí)流的數(shù)據(jù)首先會(huì)被保存至系統(tǒng)內(nèi)存,而系統(tǒng)內(nèi)存并沒有特別的對(duì)其要求,只要按照字節(jié)對(duì)齊即可;磁盤文件數(shù)據(jù)首先也會(huì)被保存至系統(tǒng)內(nèi)存,因此對(duì)它的讀取跟網(wǎng)絡(luò)實(shí)時(shí)流保存的系統(tǒng)內(nèi)存方式一致。
[0027]二、GT系列GPU對(duì)專用顯存中的編碼數(shù)據(jù)進(jìn)行解