欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于gpu的hevc并行解碼方法

文檔序號:7808650閱讀:296來源:國知局
一種基于gpu的hevc并行解碼方法
【專利摘要】本發(fā)明公開了一種基于GPU的HEVC并行解碼方法,包括:GPU對讀取的碼流文件進(jìn)行熵解碼、重排序和反量化,從而得到變換系數(shù)矩陣,同時GPU對獲取的碼流文件進(jìn)行解析,從而得到運(yùn)動矢量以及參考幀;GPU采用HEVC反變換并行算法對變換系數(shù)矩陣進(jìn)行處理,從而得到圖像的殘差數(shù)據(jù),同時GPU采用HEVC運(yùn)動補(bǔ)償并行算法,根據(jù)運(yùn)動矢量指向的參考幀位置求取圖像的預(yù)測像素值;GPU將圖像的殘差數(shù)據(jù)與圖像的預(yù)測像素值依次進(jìn)行求和、去方塊濾波和樣本自適應(yīng)補(bǔ)償處理,從而得到重建圖像,并將重建圖像的像素值拷貝到CPU的內(nèi)存中。本發(fā)明有效提高了解碼速度和解碼效率,可廣泛應(yīng)用于視頻編解碼領(lǐng)域。
【專利說明】-種基于GPU的HEVC并行解碼方法

【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及視頻編解碼領(lǐng)域,尤其是一種基于GPU的HEVC并行解碼方法。

【背景技術(shù)】
[0002] 隨著互聯(lián)網(wǎng)和移動通信技術(shù)的快速發(fā)展,數(shù)字視頻正朝著高清晰度、高幀率、高壓 縮率的方向邁進(jìn),視頻的格式從720P發(fā)展到1080P,在某些場合甚至出現(xiàn)了 4Kx2K、8Kx4K 的超高清晰數(shù)字視頻。在視頻應(yīng)用中,傳輸帶寬和存儲空間無疑是最核心的資源,如何在 有限的空間實(shí)現(xiàn)高清晰視頻的存儲,在帶寬有瓶頸的網(wǎng)絡(luò)環(huán)境中實(shí)現(xiàn)良好傳輸,是一個大 的難題。高清晰度的視頻可以給帶來更高的生活質(zhì)量,但這樣一來必然會有龐大的數(shù)據(jù) 量。舉個例子,1080Ρ高清晰視頻,像素為1920X1080,4:2:0的格式,其一幀圖像的數(shù)據(jù)量為 24.88Mbit。這樣高清晰度的視頻產(chǎn)生了一個難題,那就是視頻碼率大幅度的升高。視頻編 碼就是要用盡量少的比特?cái)?shù)來表征視頻信息,而當(dāng)今廣泛應(yīng)用的H. 264編碼標(biāo)準(zhǔn)的壓縮效 率仍然無法充分滿足超高清視頻的應(yīng)用需求。
[0003] HEVC (High Efficiency Video Coding)高效率視頻編碼是由 ISO 的 MPEG 和 ITU-T 的VCEG共同制定的下一代新的視頻壓縮編碼方案。HEVC標(biāo)準(zhǔn)是繼承了了現(xiàn)有的視頻編碼 方案H. 264的編碼理念,沿用了其中的一些編碼技術(shù),并且改進(jìn)了相關(guān)技術(shù),編碼單元尺寸 更大、基于塊的幀間/幀內(nèi)預(yù)測選擇方式更加多樣化、更加復(fù)雜的內(nèi)插濾波器等。HEVC對比 之前的視頻編碼技術(shù),有壓縮效率更高、視頻質(zhì)量更好、健壯性更好、錯誤恢復(fù)能力更強(qiáng)、更 適合在IP網(wǎng)絡(luò)中傳輸?shù)葍?yōu)點(diǎn)。HEVC對比H. 264/AVC編碼標(biāo)準(zhǔn),在對高清晰度以及高保真的 視頻圖像進(jìn)行編碼時,壓縮效率提高了一倍,這樣在解碼后得到重建的圖像質(zhì)量相同的情 況下,視頻流的碼率減少50 %。
[0004] 但是,碼率的下降是以編解碼軟件的復(fù)雜度的增加作為前提的,在采用了更復(fù)雜、 更靈活的編碼技術(shù)后,HEVC編解碼軟件的復(fù)雜度也大大增加,使得對高清晰視頻進(jìn)行壓縮 和解壓縮所花費(fèi)的時間也隨之增加,無法滿足視頻會議和可視電話等應(yīng)用領(lǐng)域的高實(shí)時解 碼播放要求。
[0005] 在高清晰視頻成為主流的情況下,單純地依靠CPU顯然不能很好地實(shí)現(xiàn)高清晰視 頻的實(shí)時解碼。GPU具有優(yōu)異的浮點(diǎn)計(jì)算能力和強(qiáng)大的并行計(jì)算能力,如果將解碼算法中 運(yùn)算量巨大,復(fù)雜度較高的模塊轉(zhuǎn)移到GPU上實(shí)現(xiàn),則能夠有效解決實(shí)時解碼這個難題。然 而,目前業(yè)內(nèi)還未有基于GPU的HEVC視頻編解碼方案出現(xiàn)。


【發(fā)明內(nèi)容】

[0006] 為了解決上述技術(shù)問題,本發(fā)明的目的是:提供一種解碼速度快和效率高的,基于 GPU的HEVC并行解碼方法。
[0007] 本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是:一種基于GPU的HEVC并行解碼方 法,包括:
[0008] A、GPU對讀取的碼流文件進(jìn)行熵解碼、重排序和反量化,從而得到變換系數(shù)矩陣, 同時GPU對獲取的碼流文件進(jìn)行解析,從而得到運(yùn)動矢量以及參考幀;
[0009] B、GPU采用HEVC反變換并行算法對變換系數(shù)矩陣進(jìn)行處理,從而得到圖像的殘差 數(shù)據(jù),同時GPU采用HEVC運(yùn)動補(bǔ)償并行算法,根據(jù)運(yùn)動矢量指向的參考幀位置求取圖像的 預(yù)測像素值;
[0010] C、GPU將圖像的殘差數(shù)據(jù)與圖像的預(yù)測像素值依次進(jìn)行求和、去方塊濾波和樣本 自適應(yīng)補(bǔ)償處理,從而得到重建圖像,并將重建圖像的像素值拷貝到CPU的內(nèi)存中。
[0011] 進(jìn)一步,所述步驟B中GPU采用HEVC反變換并行算法對變換系數(shù)矩陣進(jìn)行處理這 一步驟,其包括:
[0012] B11、初始化GPU,在GPU上申請用于存儲變換系數(shù)矩陣和殘差數(shù)據(jù)的設(shè)備端全局 內(nèi)存;
[0013] B12、對線程的網(wǎng)格大小和線程塊的大小進(jìn)行設(shè)定,并根據(jù)變換單元的大小為每個 變換單元分配相應(yīng)數(shù)量的線程及相應(yīng)的線程ID號;
[0014] B13、讀取設(shè)備端全局內(nèi)存上各個變換單元所對應(yīng)的變換系數(shù)矩陣,然后根據(jù)線程 ID號對每個變換系數(shù)矩陣依次進(jìn)行列并行一維IDCT反變換和行并行一維IDCT反變換,從 而得到整個圖像塊的殘差數(shù)據(jù);
[0015] B14、將計(jì)算的各個圖像塊的殘差數(shù)據(jù)拷貝回CPU內(nèi)存,得到整個圖像的殘差數(shù) 據(jù),然后釋放設(shè)備端全局內(nèi)存空間。
[0016] 進(jìn)一步,所述步驟B13,其包括:
[0017] B131、讀取設(shè)備端全局內(nèi)存上各個變換單元所對應(yīng)的變換系數(shù)矩陣;
[0018] B132、根據(jù)線程ID號對每個變換系數(shù)矩陣的各列同時進(jìn)行一維IDCT反變換,得到 變換后的系數(shù)矩陣并將變換的結(jié)果暫存在線程塊的共享內(nèi)存中;
[0019] B133、根據(jù)線程ID號對共享內(nèi)存中變換后的系數(shù)矩陣的每一行同時進(jìn)行一維 IDCT反變換,得到殘差數(shù)據(jù)矩陣,并根據(jù)殘差數(shù)據(jù)矩陣計(jì)算整個圖像塊的殘差數(shù)據(jù)。
[0020] 進(jìn)一步,所述步驟B中GPU采用HEVC運(yùn)動補(bǔ)償并行算法,根據(jù)運(yùn)動矢量指向的參 考幀位置求取圖像的預(yù)測像素值這一步驟,其包括:
[0021] S1、初始化GPU,在GPU中申請用來存儲幀間預(yù)測模式每個像素點(diǎn)對應(yīng)的運(yùn)動矢 量、參考幀和預(yù)測像素值的存儲空間;
[0022] S2、將運(yùn)動矢量和相應(yīng)的參考幀圖像拷貝到設(shè)備端,同時將參考幀綁定到紋理存 儲器上;
[0023] S3、進(jìn)行線程配置,為每個預(yù)測像素值的處理分配一個線程ID號,在設(shè)備端開辟 用來存儲預(yù)測像素值的全局內(nèi)存空間;
[0024] S4、各個線程根據(jù)自身的線程ID號和運(yùn)動矢量指向參考幀的位置同時進(jìn)行直接 紋理讀取或插值濾波處理,從而得到各個線程的像素預(yù)測值;
[0025] S5、將各個線程的像素預(yù)測值拷貝回CPU內(nèi)存,然后釋放設(shè)備端的全局內(nèi)存空間。
[0026] 進(jìn)一步,所述步驟S4,其具體為:
[0027] 每個線程根據(jù)自身的線程ID號和運(yùn)動矢量指向參考幀的位置同時進(jìn)行直接讀取 或插值濾波處理:若該線程的運(yùn)動矢量指向的是整像素值位置,則直接讀取紋理存儲器中 該運(yùn)動矢量所指向的參考幀位置上的像素值,并以讀取的像素值作為該線程的像素預(yù)測 值;若該線程的運(yùn)動矢量指向的是分像素位置,則根據(jù)分像素點(diǎn)的位置選擇相應(yīng)的亮度或 色度分像素插值濾波公式進(jìn)行計(jì)算,從而得到該線程的像素預(yù)測值。
[0028] 進(jìn)一步,所述亮度分像素插值濾波公式為8點(diǎn)插值濾波公式,所述度分像素插值 濾波公式為4點(diǎn)插值濾波公式。
[0029] 本發(fā)明的有益效果是:構(gòu)建了由CPU和GPU組成的解碼架構(gòu),將解碼復(fù)雜度較高的 反變換處理和運(yùn)動補(bǔ)償處理轉(zhuǎn)移到GPU上實(shí)現(xiàn),并設(shè)計(jì)了基于GPU的HEVC反變換并行算法 和HEVC運(yùn)動補(bǔ)償并行算法,有效提高了解碼速度和解碼效率。

【專利附圖】

【附圖說明】
[0030] 下面結(jié)合附圖和實(shí)施例對本發(fā)明作進(jìn)一步說明。
[0031] 圖1為本發(fā)明一種基于GPU的HEVC并行解碼方法的步驟流程圖;
[0032] 圖2為本發(fā)明步驟B中GPU采用HEVC反變換并行算法對變換系數(shù)矩陣進(jìn)行處理 的流程圖;
[0033] 圖3為本發(fā)明步驟B13的流程圖;
[0034] 圖4為本發(fā)明步驟B中GPU采用HEVC運(yùn)動補(bǔ)償并行算法,根據(jù)運(yùn)動矢量指向的參 考幀位置求取圖像的預(yù)測像素值的流程圖;
[0035] 圖5為本發(fā)明實(shí)施例一的HEVC解碼框架圖;
[0036] 圖6為本發(fā)明亮度的分像素內(nèi)插示意圖。

【具體實(shí)施方式】
[0037] 參照圖1,一種基于GPU的HEVC并行解碼方法,包括:
[0038] A、GPU對讀取的碼流文件進(jìn)行熵解碼、重排序和反量化,從而得到變換系數(shù)矩陣, 同時GPU對獲取的碼流文件進(jìn)行解析,從而得到運(yùn)動矢量以及參考幀;
[0039] B、GPU采用HEVC反變換并行算法對變換系數(shù)矩陣進(jìn)行處理,從而得到圖像的殘差 數(shù)據(jù),同時GPU采用HEVC運(yùn)動補(bǔ)償并行算法,根據(jù)運(yùn)動矢量指向的參考幀位置求取圖像的 預(yù)測像素值;
[0040] C、GPU將圖像的殘差數(shù)據(jù)與圖像的預(yù)測像素值依次進(jìn)行求和、去方塊濾波和樣本 自適應(yīng)補(bǔ)償處理,從而得到重建圖像,并將重建圖像的像素值拷貝到CPU的內(nèi)存中。
[0041] 參照圖2,進(jìn)一步作為優(yōu)選的實(shí)施方式,所述步驟B中GPU采用HEVC反變換并行算 法對變換系數(shù)矩陣進(jìn)行處理這一步驟,其包括:
[0042] B11、初始化GPU,在GPU上申請用于存儲變換系數(shù)矩陣和殘差數(shù)據(jù)的設(shè)備端全局 內(nèi)存;
[0043] B12、對線程的網(wǎng)格大小和線程塊的大小進(jìn)行設(shè)定,并根據(jù)變換單元的大小為每個 變換單元分配相應(yīng)數(shù)量的線程及相應(yīng)的線程ID號;
[0044] B13、讀取設(shè)備端全局內(nèi)存上各個變換單元所對應(yīng)的變換系數(shù)矩陣,然后根據(jù)線程 ID號對每個變換系數(shù)矩陣依次進(jìn)行列并行一維IDCT反變換和行并行一維IDCT反變換,從 而得到整個圖像塊的殘差數(shù)據(jù);
[0045] B14、將計(jì)算的各個圖像塊的殘差數(shù)據(jù)拷貝回CPU內(nèi)存,得到整個圖像的殘差數(shù) 據(jù),然后釋放設(shè)備端全局內(nèi)存空間。
[0046] 其中,線程的網(wǎng)格大小設(shè)定為Grid(4, 4, 1),線程塊的大小設(shè)定為 Block (16, 16, 1),即一個Grid分配16個Block,每個Block分配256個線程。而線程的數(shù) 量則根據(jù)變換單元的大小相應(yīng)地進(jìn)行分配。圖像塊由至少一個變換單元組成,而圖像則由 至少一個圖像塊組成。
[0047] 參照圖3,進(jìn)一步作為優(yōu)選的實(shí)施方式,所述步驟B13,其包括:
[0048] B131、讀取設(shè)備端全局內(nèi)存上各個變換單元所對應(yīng)的變換系數(shù)矩陣;
[0049] B132、根據(jù)線程ID號對每個變換系數(shù)矩陣的各列同時進(jìn)行一維IDCT反變換,得到 變換后的系數(shù)矩陣并將變換的結(jié)果暫存在線程塊的共享內(nèi)存中;
[0050] B133、根據(jù)線程ID號對共享內(nèi)存中變換后的系數(shù)矩陣的每一行同時進(jìn)行一維 IDCT反變換,得到殘差數(shù)據(jù)矩陣,并根據(jù)殘差數(shù)據(jù)矩陣計(jì)算整個圖像塊的殘差數(shù)據(jù)。
[0051] 參照圖4,進(jìn)一步作為優(yōu)選的實(shí)施方式,所述步驟B中GPU采用HEVC運(yùn)動補(bǔ)償并行 算法,根據(jù)運(yùn)動矢量指向的參考幀位置求取圖像的預(yù)測像素值這一步驟,其包括:
[0052] S1、初始化GPU,在GPU中申請用來存儲幀間預(yù)測模式每個像素點(diǎn)對應(yīng)的運(yùn)動矢 量、參考幀和預(yù)測像素值的存儲空間;
[0053] S2、將運(yùn)動矢量和相應(yīng)的參考幀圖像拷貝到設(shè)備端,同時將參考幀綁定到紋理存 儲器上;
[0054] S3、進(jìn)行線程配置,為每個預(yù)測像素值的處理分配一個線程ID號,在設(shè)備端開辟 用來存儲預(yù)測像素值的全局內(nèi)存空間;
[0055] S4、各個線程根據(jù)自身的線程ID號和運(yùn)動矢量指向參考幀的位置同時進(jìn)行直接 紋理讀取或插值濾波處理,從而得到各個線程的像素預(yù)測值;
[0056] S5、將各個線程的像素預(yù)測值拷貝回CPU內(nèi)存,然后釋放設(shè)備端的全局內(nèi)存空間。
[0057] 進(jìn)一步作為優(yōu)選的實(shí)施方式,所述步驟S4,其具體為:
[0058] 每個線程根據(jù)自身的線程ID號和運(yùn)動矢量指向參考幀的位置同時進(jìn)行直接讀取 或插值濾波處理:若該線程的運(yùn)動矢量指向的是整像素值位置,則直接讀取紋理存儲器中 該運(yùn)動矢量所指向的參考幀位置上的像素值,并以讀取的像素值作為該線程的像素預(yù)測 值;若該線程的運(yùn)動矢量指向的是分像素位置,則根據(jù)分像素點(diǎn)的位置選擇相應(yīng)的亮度或 色度分像素插值濾波公式進(jìn)行計(jì)算,從而得到該線程的像素預(yù)測值。
[0059] 其中,讀取紋理存儲器中該運(yùn)動矢量所指向的參考幀位置上的像素值,通過調(diào)用 紋理提取函數(shù)tex2D〇函數(shù)來實(shí)現(xiàn)。
[0060] 進(jìn)一步作為優(yōu)選的實(shí)施方式,所述亮度分像素插值濾波公式為8點(diǎn)插值濾波公 式,所述度分像素插值濾波公式為4點(diǎn)插值濾波公式。
[0061] 下面結(jié)合具體的實(shí)施例對本發(fā)明作進(jìn)一步詳細(xì)說明。
[0062] 實(shí)施例一
[0063] 參照圖5,本發(fā)明的第一實(shí)施例:
[0064] HEVC解碼框架如圖5所示。HEVC解碼過程就是編碼過程的逆向化,解碼器讀取碼 流文件,從NAL(網(wǎng)絡(luò)抽象層)中獲得比特流,解碼是按一幀一幀順序進(jìn)行的,一幀圖像劃 分成若干個最大編碼單元LCU,以光柵掃描的順序,以LCU為基本單位進(jìn)行熵解碼,然后進(jìn) 行重排序,從而得到相應(yīng)編碼單元的殘差系數(shù);接著對殘差系數(shù)進(jìn)行反量化和反變換,從而 得到圖像殘差數(shù)據(jù)。與此同時,解碼器根據(jù)從碼流中解碼得到的頭信息生成預(yù)測塊:若是幀 間預(yù)測模式,則根據(jù)運(yùn)動矢量和參考幀生成相應(yīng)的一個預(yù)測塊;若是幀內(nèi)預(yù)測模式,則從相 鄰的預(yù)測單元生成一個預(yù)測塊。接著,預(yù)測塊數(shù)據(jù)與殘差塊數(shù)據(jù)求和得到重構(gòu)的圖像塊數(shù) 據(jù),最后圖像塊數(shù)據(jù)通過去方塊濾波和樣本自適應(yīng)補(bǔ)償處理后得到重建圖像并輸出。
[0065] 運(yùn)動補(bǔ)償描述了編碼關(guān)系上相鄰幀的差別,也就是說描述了前面參考幀的宏塊如 何移動到當(dāng)前幀中的某個位置上去,根據(jù)運(yùn)動矢量指向的參考幀的等大小預(yù)測塊的值和殘 差值相加得到重建值。這種方法經(jīng)常被視頻編解碼器用來減少視頻序列中的時域冗余。運(yùn) 動補(bǔ)償用于圖像重建,是視頻編編解碼中必不可少的關(guān)鍵模塊。
[0066] 運(yùn)動補(bǔ)償就是一幀圖像根據(jù)圖像紋理劃分為大小不等的編碼單元,在編碼單元的 基礎(chǔ)上劃分預(yù)測單元,預(yù)測單元包括一個亮度塊和兩個色度塊,幀間編碼宏塊的每個宏塊 就是從參考圖像的某一相同大小的宏塊預(yù)測得到的。運(yùn)動補(bǔ)償精度由運(yùn)動矢量的精度決 定,其直接關(guān)系到重建圖像質(zhì)量以及碼流的大小。運(yùn)動矢量是預(yù)測的過程中平移的大小,是 在對編碼端運(yùn)動進(jìn)行估計(jì)而得出的。運(yùn)動矢量的精度越高,運(yùn)動補(bǔ)償?shù)木_度越高。插值 濾波則是運(yùn)動補(bǔ)償中是一個非常關(guān)鍵的技術(shù),H. 264標(biāo)準(zhǔn)采用的是六抽頭的維納濾波器,其 運(yùn)動補(bǔ)償精度為1/4像素精度。而HEVC采用了更加先進(jìn)高效的插值濾波器,也就是基于離 散余弦變換的插值濾波器。相比之下,HEVC標(biāo)準(zhǔn)中亞像素的生成更加簡潔高效,只需要一個 濾波公式,進(jìn)行一次濾波處理就可以了。亮度信號使用的是基于DCT離散余弦變換的8點(diǎn) 插值濾波器,而色度信號使用的是基于DCT離散余弦變換的4點(diǎn)插值濾波器,進(jìn)行像素的內(nèi) 插。但大量的插值計(jì)算導(dǎo)致復(fù)雜度相應(yīng)提高,編碼效率會較低。參考幀中分像素位置的亮 度和色度像素實(shí)際上是不存在的,因此需要通過插值濾波算法進(jìn)行像素內(nèi)插得到分像素位 置的像素值,這種運(yùn)動補(bǔ)償屬于亞像素精度的運(yùn)動補(bǔ)償。
[0067] 實(shí)施例二
[0068] 本實(shí)施例對本發(fā)明的HEVC反變換并行算法過程進(jìn)行說明。
[0069] 反變換模塊是將當(dāng)前塊的變換系數(shù)矩陣轉(zhuǎn)換為殘差樣值矩陣的一個過程,并為后 續(xù)的重構(gòu)做好準(zhǔn)備。反變換是在反量化處理后進(jìn)行的,同樣是以TU變換單元為基本單位進(jìn) 行處理的,其所用的源數(shù)據(jù)就是反量化的結(jié)果。本發(fā)明的HEVC解碼器進(jìn)行二維IDCT反變 換時,首先進(jìn)行水平方向上的一維IDCT反離散余弦變換,然后進(jìn)行垂直方向上的一維IDCT 反離散余弦變換,最后再通過矩陣相乘,將變換系數(shù)矩陣轉(zhuǎn)換成同樣大小的殘差數(shù)據(jù)矩陣, 從而完成頻域到時域的變換。
[0070] -幀圖像中不同變換塊的IDCT運(yùn)算是相互獨(dú)立的,而同一變換單元上的變換系 數(shù)矩陣進(jìn)行水平方向上的一維IDCT變換時,各列是相互獨(dú)立的,因此可以實(shí)現(xiàn)各列的并行 計(jì)算。同樣地,進(jìn)行垂直方向上的一維IDCT反變換時,各行之間并不存在數(shù)據(jù)的相關(guān)性,因 此能夠?qū)崿F(xiàn)并行計(jì)算。本發(fā)明根據(jù)變換系數(shù)矩陣的大小分配相應(yīng)的線程數(shù)進(jìn)行處理,每一 列分配一個線程同時進(jìn)行處理,各列同時進(jìn)行一維IDCT反變換,處理完畢后,每一行分配 一個線程同時進(jìn)行一維IDCT反變換計(jì)算,完成后即實(shí)現(xiàn)了對變換系數(shù)矩陣的二維IDCT反 變換并行處理。
[0071] 由于HEVC變換單元的大小為4x4, 8x8, 16x16或32x32。變換單元越大,則并行程 度越高,加速效果越明顯。例如,對32x32變換單元對應(yīng)的變換系數(shù)矩陣,首先可以同時進(jìn) 行32列的一維IDCT反變換,完成后調(diào)用syncthreads ()函數(shù)進(jìn)行同步,然后再同時進(jìn)行32 行的一維IDCT反變換。此外,還可以對各個變換單元對應(yīng)的變換系數(shù)矩陣同時進(jìn)行IDCT 反變換。為了得到更好的加速效果,本發(fā)明直接利用反量化并行處理后得到的在全局內(nèi)存 空間的變換系數(shù)。變換單元包括一個亮度變換塊和兩個色度變換塊,因此,需要分別進(jìn)行亮 度和色度的反變換,二者的步驟是相同的。
[0072] 本發(fā)明基于GPU的反變換算法包括:
[0073] (1)解碼開始階段,初始化GPU,在GPU上申請用于存儲經(jīng)過反變換后得到的殘差數(shù) 據(jù)的全局內(nèi)存空間,同時直接從全局內(nèi)存空間讀取在GTO上進(jìn)行反量化后得到的變換系數(shù)。
[0074] (2)進(jìn)行線程數(shù)量的配置,配置線程網(wǎng)格大小為Grid(4, 4, 1),線程塊大小為 Block (16, 16, 1),即一個Grid分配16個Block,每個Block分配256個線程,接著根據(jù)變 換單元的大小相應(yīng)分配線程數(shù)量。
[0075] (3)為一個變換單元對應(yīng)的變換系數(shù)矩陣分配給一個線程塊進(jìn)行反變換處理:首 先每個線程依據(jù)自身的線程ID號對變換系數(shù)矩陣的每一列對應(yīng)進(jìn)行一維IDCT反變換,各 列同時進(jìn)行,并且調(diào)用syncthreads ()函數(shù)進(jìn)行同步,所得到的結(jié)果暫存在線程塊中的共 享內(nèi)存中;然后對共享內(nèi)存中系數(shù)矩陣中的每一行同時進(jìn)行一維IDCT反變換,為一行分配 一個線程進(jìn)行處理,從而完成了對變換系數(shù)的二維IDCT反變換,并得到殘差數(shù)據(jù)矩陣。對 各個變換單元對應(yīng)的變換系數(shù)矩陣同時進(jìn)行反變換處理,得到的就是整個圖像塊的殘差數(shù) 據(jù)。
[0076] (4)將計(jì)算得到的各個圖像塊的殘差數(shù)據(jù)從GPU全局內(nèi)存空間復(fù)制到CPU的內(nèi)存 中,從而得到整個圖像的殘差數(shù)據(jù)。
[0077] (5)釋放解碼過程中分配的全局內(nèi)存空間。
[0078] 實(shí)施例三
[0079] 本實(shí)施例對本發(fā)明的HEVC運(yùn)動補(bǔ)償并行算法過程進(jìn)行說明。
[0080] 幀間運(yùn)動補(bǔ)償?shù)膶?shí)現(xiàn)原理,簡單地說,就是通過碼流解析得到的運(yùn)動矢量,根據(jù)在 參考幀上指向的位置求得預(yù)測值,指向的是參考幀的整像素點(diǎn)位置則直接讀取,若是分像 素點(diǎn)位置則需要經(jīng)過像素內(nèi)插得到分像素預(yù)測值,然后將預(yù)測值和經(jīng)過反量化、反變換得 到的圖像殘差值相加即得到圖像重建值。運(yùn)動補(bǔ)償模塊中,對像素插值濾波的計(jì)算大概占 據(jù)了 70%的運(yùn)算量。所以本發(fā)明的運(yùn)動補(bǔ)償在GPU上的實(shí)現(xiàn)主要是進(jìn)行像素內(nèi)插。運(yùn)動矢 量本來是連續(xù)的,但進(jìn)行幀間預(yù)測運(yùn)動補(bǔ)償時,為了提高編碼過程中視頻圖像幀間預(yù)測的 準(zhǔn)確度,在搜索匹配塊時,運(yùn)動矢量是分像素精度的,亮度運(yùn)動矢量的精度為1/4像素,而 色度運(yùn)動矢量則為1/8像素精度。因此,當(dāng)運(yùn)動矢量指向?yàn)閰⒖紟姆窒袼匚恢脮r,需要根 據(jù)周邊像素值進(jìn)行內(nèi)插得到對應(yīng)位置的像素值。
[0081] 其中,亮度分像素進(jìn)行插值濾波所用到的系數(shù)如表1所示。
[0082] 表1亮度像素插值濾波所用到的系數(shù)
[0083]

【權(quán)利要求】
1. 一種基于GPU的HEVC并行解碼方法,其特征在于:包括: A、 GPU對讀取的碼流文件進(jìn)行熵解碼、重排序和反量化,從而得到變換系數(shù)矩陣,同時 對獲取的碼流文件進(jìn)行解析,從而得到運(yùn)動矢量以及參考幀; B、 GPU采用HEVC反變換并行算法對變換系數(shù)矩陣進(jìn)行處理,從而得到圖像的殘差數(shù) 據(jù),同時GPU采用HEVC運(yùn)動補(bǔ)償并行算法,根據(jù)運(yùn)動矢量指向的參考幀位置求取圖像的預(yù) 測像素值; C、 GPU將圖像的殘差數(shù)據(jù)與圖像的預(yù)測像素值依次進(jìn)行求和、去方塊濾波和樣本自適 應(yīng)補(bǔ)償處理,從而得到重建圖像,并將重建圖像的像素值拷貝到CPU的內(nèi)存中。
2. 根據(jù)權(quán)利要求1所述的一種基于GPU的HEVC并行解碼方法,其特征在于:所述步驟 B中GPU采用HEVC反變換并行算法對變換系數(shù)矩陣進(jìn)行處理這一步驟,其包括: B11、初始化GPU,在GPU上申請用于存儲變換系數(shù)矩陣和殘差數(shù)據(jù)的設(shè)備端全局內(nèi)存; B12、對線程的網(wǎng)格大小和線程塊的大小進(jìn)行設(shè)定,并根據(jù)變換單元的大小為每個變換 單元分配相應(yīng)數(shù)量的線程及相應(yīng)的線程ID號; B13、讀取設(shè)備端全局內(nèi)存上各個變換單元所對應(yīng)的變換系數(shù)矩陣,然后根據(jù)線程ID 號對每個變換系數(shù)矩陣依次進(jìn)行列并行一維IDCT反變換和行并行一維IDCT反變換,從而 得到整個圖像塊的殘差數(shù)據(jù); B14、將計(jì)算的各個圖像塊的殘差數(shù)據(jù)拷貝回CPU內(nèi)存,得到整個圖像的殘差數(shù)據(jù),然 后釋放設(shè)備端全局內(nèi)存空間。
3. 根據(jù)權(quán)利要求2所述的一種基于GPU的HEVC并行解碼方法,其特征在于:所述步驟 B13,其包括: B131、讀取設(shè)備端全局內(nèi)存上各個變換單元所對應(yīng)的變換系數(shù)矩陣; B132、根據(jù)線程ID號對每個變換系數(shù)矩陣的各列同時進(jìn)行一維IDCT反變換,得到變換 后的系數(shù)矩陣并將變換的結(jié)果暫存在線程塊的共享內(nèi)存中; B133、根據(jù)線程ID號對共享內(nèi)存中變換后的系數(shù)矩陣的每一行同時進(jìn)行一維IDCT反 變換,得到殘差數(shù)據(jù)矩陣,并根據(jù)殘差數(shù)據(jù)矩陣計(jì)算整個圖像塊的殘差數(shù)據(jù)。
4. 根據(jù)權(quán)利要求1所述的一種基于GPU的HEVC并行解碼方法,其特征在于:所述步驟 B中GPU采用HEVC運(yùn)動補(bǔ)償并行算法,根據(jù)運(yùn)動矢量指向的參考幀位置求取圖像的預(yù)測像 素值這一步驟,其包括: 51、 初始化GPU,在GPU中申請用來存儲幀間預(yù)測模式每個像素點(diǎn)對應(yīng)的運(yùn)動矢量、參 考幀和預(yù)測像素值的存儲空間; 52、 將運(yùn)動矢量和相應(yīng)的參考幀圖像拷貝到設(shè)備端,同時將參考幀綁定到紋理存儲器 上; 53、 進(jìn)行線程配置,為每個預(yù)測像素值的處理分配一個線程ID號,在設(shè)備端開辟用來 存儲預(yù)測像素值的全局內(nèi)存空間; 54、 各個線程根據(jù)自身的線程ID號和運(yùn)動矢量指向參考幀的位置同時進(jìn)行直接紋理 讀取或插值濾波處理,從而得到各個線程的像素預(yù)測值; 55、 將各個線程的像素預(yù)測值拷貝回CPU內(nèi)存,然后釋放設(shè)備端的全局內(nèi)存空間。
5. 根據(jù)權(quán)利要求4所述的一種基于GPU的HEVC并行解碼方法,其特征在于:所述步驟 S4,其具體為: 每個線程根據(jù)自身的線程ID號和運(yùn)動矢量指向參考幀的位置同時進(jìn)行直接讀取或插 值濾波處理:若該線程的運(yùn)動矢量指向的是整像素值位置,則直接讀取紋理存儲器中該運(yùn) 動矢量所指向的參考幀位置上的像素值,并以讀取的像素值作為該線程的像素預(yù)測值;若 該線程的運(yùn)動矢量指向的是分像素位置,則根據(jù)分像素點(diǎn)的位置選擇相應(yīng)的亮度或色度分 像素插值濾波公式進(jìn)行計(jì)算,從而得到該線程的像素預(yù)測值。
6.根據(jù)權(quán)利要求5所述的一種基于GPU的HEVC并行解碼方法,其特征在于:所述亮度 分像素插值濾波公式為8點(diǎn)插值濾波公式,所述度分像素插值濾波公式為4點(diǎn)插值濾波公 式。
【文檔編號】H04N19/44GK104125466SQ201410328646
【公開日】2014年10月29日 申請日期:2014年7月10日 優(yōu)先權(quán)日:2014年7月10日
【發(fā)明者】梁凡, 羅林 申請人:中山大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
徐闻县| 林州市| 鄯善县| 曲靖市| 台南县| 永胜县| 彩票| 丽江市| 安乡县| 石家庄市| 白玉县| 清原| 木里| 灌阳县| 普宁市| 乐至县| 巴东县| 辽宁省| 聂荣县| 石阡县| 临安市| 大余县| 罗甸县| 包头市| 寿阳县| 廉江市| 琼结县| 安西县| 大庆市| 即墨市| 灵璧县| 泰和县| 徐州市| 庄河市| 丹江口市| 大名县| 蒙阴县| 三亚市| 蒙山县| 湖南省| 黑水县|