777精品久无码人妻蜜桃-欧美在线观看视频一区-99精品网-伊人网中文字幕-99福利网-国产精品99久久久久久武松影视-日本黄色片免费看-免费观看高清在线观看-人妻少妇被粗大爽9797pw-日韩国产在线播放-国产日产成人免费视频在线观看-一区二区人妻-午夜看毛片-国产精品s-午夜免费av-国产精品色情国产三级在-国产精品资源在线

如何基于CUDA的H.264視頻實現(xiàn)編碼

來源:期刊VIP網(wǎng)所屬分類:計算機應用時間:瀏覽:次

  摘要:CUDA(Compute Unified Device Architecture)是一種由NVIDIA推出的通用并行計算架構,可進行大規(guī)模并行計算和處理密集型數(shù)據(jù)。系統(tǒng)地分析H.264編碼器各模塊的編碼性能及復雜性,基于CUDA研究H.264標準編碼在可編程圖形處理器上的實現(xiàn),充分利用CUDA存儲器資源與并行計算能力可加速編碼的各關鍵模塊處理過程,可提高H.264的編碼速度。

  關鍵詞:H.264視頻編碼,CUDA,并行框架

  中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2011)20-4966-02

  H.264是由ITU-T VCEG和ISO/IEC MPEG聯(lián)合推出的國際視頻編碼標準,具有較高的視頻編碼壓縮率和網(wǎng)絡適應性。由于H.264的高效率編碼主要來自于新的關鍵技術,而每一個新的關鍵技術都會造成計算復雜度的提升,因而導致H.264視頻編碼在編解碼時計算量顯著增加。故H.264的高效壓縮編碼性能是以增加編解碼時間為代價的,如何降低H.264的計算復雜度,有效的提高H.264的編碼速度是一個重要的研究課題。

  1 H.264編碼器中各模塊的編碼性能

  H.264的主要編碼流程包括:幀內(nèi)預測、運動估計/運動補償、整數(shù)變換/量化、熵編碼、去塊效應濾波。分析H.264編碼器的典型運行周期,采用JVT的JM軟件,在Pentium Dual-Core 2.93GHz,內(nèi)存4GB的平臺下運行,對三個不同分辨率大小的視頻序列suzie_qcif 176×144,news_cif 352×288,soccer 704×576測試各個模塊的時間比例,可知三個視頻序列各個模塊的平均時間比例如表1所示。

  在H.264編碼過程中,復雜度最高、耗時最長的是運動估計/補償部分,占81.73%;其次是幀內(nèi)預測和整數(shù)變換/量化部分,分別占5.84%和5.46%,熵編碼、濾波和其它占6.97%。為了提高整體的編碼速度,滿足系統(tǒng)實時性要求,非常有必要降低各個模塊尤其是運動估計、幀內(nèi)預測和整數(shù)變換/量化部分的計算時間。

  2 基于CUDA的H.264視頻編碼并行框架

  NVIDIA推出了支持CUDA的GPU架構,既采用了統(tǒng)一處理架構,又引入了片內(nèi)共享存儲器,支持隨機寫入和線程間通信。為了充分利用CUDA存儲器資源與并行計算能力,考慮關鍵模塊的數(shù)據(jù)相關性與可并行性,提出一個基于CUDA的H.264視頻編碼的并行框架,如圖1所示。把運動估計/運動補償、幀內(nèi)預測、整數(shù)變換及量化、去方塊濾波 、熵編碼放入GPU內(nèi)完成,CPU端只負責視頻數(shù)據(jù)和碼流的傳輸,最大程度發(fā)揮GPU的并行度。

  運動估計/運動補償在H.264視頻編碼中是計算密度最大的部分,用CUDA實現(xiàn)運動估計對提高整體編碼速度起著相當重要的作用。本框架充分利用資源的并行度,幀間預測使用整幀圖像中宏塊與宏塊之間進行并行計算的策略,大大減少視頻編碼的時間;并使用可變尺寸塊的全搜索運動估計算法,合理地分配線程,盡可能多的利用共享存儲器以減少對全局存儲器的訪問,高效地實現(xiàn)了全搜索運動估計算法在CUDA架構下的并行過程。

  幀內(nèi)預測在H.264視頻編碼中是一個耗時的模塊。本框架采用一種塊級并行的幀內(nèi)模式選擇方法,即改進原有的塊內(nèi)并行方法,使用基于宏塊之間的并行實現(xiàn)。該方法打破了原來塊與塊之間像素的依賴關系,用原始塊像素代替重構像素來預測當前塊的像素值以便達到塊級之間并行,用CUDA并行執(zhí)行,可加快編碼的速度。

  H.264視頻編碼中整數(shù)變換是針對4×4大小的殘差塊進行的一種變換,殘差塊之間的數(shù)據(jù)是相互獨立的,每一塊的像素都執(zhí)行相同的變換操作,非常適合并行計算。本框架通過優(yōu)化的整數(shù)DCT變換采用宏塊間并行實現(xiàn)對殘差數(shù)據(jù)的變換及量化,這樣便能充分利用CUDA的并行計算能力,提高并行度。

  量化后的系數(shù)矩陣要進行Zigzag排序與熵編碼。本框架可采用霍夫曼編碼代替CAVLC熵編碼。在熵編碼之前先進行zigzag掃描,把一個宏塊劃分為一個線程塊,這樣,一個宏塊包括16個線程,用一個線程對4×4的塊進行掃描、編碼。使用CUDA實現(xiàn)編碼時,數(shù)據(jù)操作過程的控制方式如下:

  dim3 blocksize(16,16);

  dim3 gridsize((NX/blocksize.x,NY/blocksize.y);

  kernel_function<<>>();

  其中kernel_function為實現(xiàn)各環(huán)節(jié)的核函數(shù)。此外,在GPU端還需要聲明一些 __device__ 類型的函數(shù)用于實現(xiàn)核函數(shù)的子過程。

  通過對H.264視頻編碼各個關鍵模塊的CUDA實現(xiàn),基本建立起一個基于CUDA編程模型的H.264標準并行框架,下面通過具體的實驗來分析,基于CUDA的H.264并行框架在具體的編碼過程中的編碼速度與普通的CPU編碼速度相比所產(chǎn)生的加速效果。

  3 實驗分析

  應用基于CUDA的H.264視頻編碼并行框架進行程序?qū)崿F(xiàn)與實驗測試,在JVT提供的JM16.1參考軟件做測試平臺下,對三個不同分辨率大小的視頻序列suzie_qcif 176×144,news_cif 352×288,soccer 704×576測試進行測試:各測試序列取50幀,搜索范圍為16×16,運動估計采用全搜索算法,參考幀數(shù)量為3幀。視頻編碼的各個模塊在CPU和GPU上分別運行的整個編碼時間如表2(時間單位為秒)所示。

  實驗可知,對不同分辨率大小的視頻序列進行視頻編碼過程,在GPU上運行的時間比CPU明顯降低,各個分辨率大小的加速比為兩倍左右,充分體現(xiàn)了GPU強大的并行計算能力,但是由于各個模塊之間的參數(shù)需要來回拷貝,花費大量的時間,從而整體加速比CPU的編碼速度只提高了兩倍左右;從分辨率大小為176×144、352×288、704×576的加速比來看,其加速比例一直在提升,可見在一定范圍內(nèi),數(shù)據(jù)越密集,數(shù)據(jù)量越大,越有利于CUDA的加速。

  4 結(jié)論

  系統(tǒng)地分析H.264編碼器各模塊的編碼性能及復雜性,對H.264視頻編碼的各個關鍵模塊進行CUDA實現(xiàn):幀內(nèi)預測使用原始像素代替重構像素來預測當前塊的像素值以便達到塊級之間并行;幀間預測則通過改進原有的塊內(nèi)并行方法,使用基于宏塊之間的并行實現(xiàn);然后通過優(yōu)化的整數(shù)DCT變換采用宏塊之間并行實現(xiàn)對殘差數(shù)據(jù)的變換及量化;最后對量化后的系數(shù)矩陣完成Zigzag排序與熵編碼?;窘⒘艘粋€基于CUDA的H.264視頻編碼并行框架。并用程序?qū)崿F(xiàn)前面研究的并行模塊,在CPU和GPU上測試不同分辨率的視頻序列,對整個編碼時間進行比較。通過實驗結(jié)果的分析得出結(jié)論,基于CUDA的H.264視頻編碼并行框架的編碼過程與普通的CPU編碼相比有兩倍左右的加速效果。

  參考文獻:

  [1] 畢厚杰.新一代視頻壓縮編碼標準[M].北京:人民郵電出版社,2005:105-289.

  [2] 張舒,褚艷利.GPU高性能運算之CUDA[M].北京:中國水利水電出版社,2009:2-141.

娱乐| 奉化市| 太原市| 金门县| 长宁县| 永平县| 巴东县| 马龙县| 同德县| 八宿县| 同仁县| 商洛市| 宽城| 金平| 和硕县| 东乡县| 汽车| 行唐县| 兖州市| 汝阳县| 三穗县| 广丰县| 灯塔市| 霍山县| 汝南县| 封丘县| 张北县| 仙桃市| 青川县| 新化县| 宾川县| 拉萨市| 广安市| 赣州市| 韩城市| 乌兰察布市| 拉孜县| 都兰县| 光山县| 尼勒克县| 石家庄市|