• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于CUDA平臺(tái)的AVS視頻編碼應(yīng)用

      2015-11-23 03:12:28顏海峰劉憶寧
      大眾科技 2015年2期
      關(guān)鍵詞:電子科技線程編碼器

      黃 海 鐘 婍 顏海峰 劉憶寧

      (桂林電子科技大學(xué)數(shù)學(xué)與計(jì)算科學(xué)學(xué)院,廣西 桂林 541004)

      基于CUDA平臺(tái)的AVS視頻編碼應(yīng)用

      黃 海 鐘 婍 顏海峰 劉憶寧

      (桂林電子科技大學(xué)數(shù)學(xué)與計(jì)算科學(xué)學(xué)院,廣西 桂林 541004)

      文章通過研究AVS視頻編碼在可編程圖形處理器上實(shí)現(xiàn),充分利用圖形處理器的高性能并行運(yùn)算能力和浮點(diǎn)計(jì)算能力加快編碼的處理程。實(shí)驗(yàn)結(jié)果表明,在保證視頻質(zhì)量的同時(shí),大大提升了AVS視頻編碼的速度。

      GPU;視頻編碼;GOP級(jí)的并行編碼;CUDA

      1 引言

      AVS(Audio Video coding Standard,音視頻編碼標(biāo)準(zhǔn))是由我國(guó)自主制定的、享有自主知識(shí)產(chǎn)權(quán)的第二代信源編碼技術(shù)標(biāo)準(zhǔn)。2006年2月,國(guó)家標(biāo)準(zhǔn)化管理委員會(huì)正式批準(zhǔn)AVS的第二部分(AVS1-P2)即視頻部分為國(guó)家標(biāo)準(zhǔn)。AVS視頻標(biāo)準(zhǔn)的編碼效率比以前的MPEG4等視頻編碼標(biāo)準(zhǔn)的編碼效率高。

      H.264/AVC視頻編碼標(biāo)準(zhǔn)的壓縮效率非常高,但是H.264/AVC的這種高壓縮效率的獲得卻是以較高的計(jì)算時(shí)間復(fù)雜度為代價(jià)的,而且H.264編碼算法在CPU上展開了大量的優(yōu)化策略,技術(shù)上也已經(jīng)非常成熟,因此,研究人員開始探索其他一些能提高壓縮編碼效率的方式。近些年來,由于圖形硬件的飛速發(fā)展和更新,GPU(Graphic Processing Unit,圖形處理器)的計(jì)算速度也在不斷地提高,此外它還擁有非常強(qiáng)大的并行計(jì)算能力與浮點(diǎn)運(yùn)算能力。2007年6月,NVIDIA公司推出了CUDA(Compute Unified Device Architecture,統(tǒng)一計(jì)算設(shè)備架構(gòu))編程模型,該模型在利用GPU的通用計(jì)算資源上更加地充分合理[1]。而目前的PC機(jī)在實(shí)時(shí)編解碼高清晰視頻時(shí),其處理器要承擔(dān)的壓力非常大。因此研究以CUDA為基礎(chǔ)的視頻編解碼,對(duì)于編解碼時(shí)計(jì)算時(shí)間的減少、整個(gè)編碼性能的提高等方面都有著非常重要的現(xiàn)實(shí)意義。

      2 解決方案

      無論是音視頻編碼技術(shù)自身還是該產(chǎn)業(yè)的應(yīng)用背景在經(jīng)過了十幾年的發(fā)展之后,都有了許多明顯變化,很多新的方法相繼提出。目前音視頻產(chǎn)業(yè)領(lǐng)域有四個(gè)信源編碼標(biāo)準(zhǔn)可供選擇,它們分別是:MPEG-2、MPEG-4、MPEG-4 AVC(簡(jiǎn)稱 AVC,也稱JVT、H.264)、AVS。按制訂者來劃分,前三個(gè)標(biāo)準(zhǔn)是由MPEG專家組發(fā)展制訂的,第四個(gè)標(biāo)準(zhǔn)是我國(guó)自主制訂的。按發(fā)展階段劃分,第一個(gè)標(biāo)準(zhǔn)屬于第一代信源標(biāo)準(zhǔn),其余三個(gè)標(biāo)準(zhǔn)皆為第二代信源標(biāo)準(zhǔn)。按編碼效率這一主要技術(shù)指標(biāo)進(jìn)行比較:MPEG-4的編碼效率是MPEG-2編碼效率的1.4倍,AVS和AVC的編碼效率相差無幾,都是MPEG-2編碼效率的兩倍多[2]。

      隨著顯卡的進(jìn)一步發(fā)展以及越來越多的開發(fā)人員參與到GPU的并行計(jì)算開發(fā)中來,GPU的并行計(jì)算能力和訪存帶寬的速度都有了很大的提高,而且在顯示圖像時(shí)GPU還做一些了優(yōu)化處理,它的計(jì)算能力實(shí)際上已經(jīng)超越了通用的 CPU[3]。如此強(qiáng)大的芯片如果只是拿來作顯卡的話未免太過大材小用了。因此,NVIDIA公司推出了CUDA架構(gòu),它使顯卡除了用于圖像計(jì)算以外還有其他的功能。GPU的專長(zhǎng)在于密集型數(shù)據(jù)的處理和并行計(jì)算,所以在需要大規(guī)模并行計(jì)算的領(lǐng)域里CUDA可以大顯身手。通用GPU已經(jīng)能夠達(dá)到十萬的線程數(shù)量級(jí),因而,提高GPU的并行計(jì)算效率對(duì)于提升GOP級(jí)的并行計(jì)算能力意義重大。

      3 實(shí)現(xiàn)方案

      3.1 ASV原理分析

      如圖1所示AVS編碼器的系統(tǒng)結(jié)構(gòu)。不難發(fā)現(xiàn),AVS使用的是一種混合編碼框架,其中結(jié)合了預(yù)測(cè)和變換技術(shù),這與H.264的編碼結(jié)構(gòu)非常相似。圖像類型定義為 I幀、P幀、B幀三種,其中I幀的編碼模式只能是幀內(nèi)編碼,P幀和B幀的編碼模式可以是幀間編碼模式和幀內(nèi)編碼模式,兩者區(qū)別在于P幀是前向預(yù)測(cè)編碼幀,而B幀是雙向預(yù)測(cè)編碼幀。碼流結(jié)構(gòu)從高到低的語(yǔ)法層次依次為:序列、圖像、條帶、宏塊、塊[4]。在這方面上,AVS與 MPEG2 較為類似。AVS1-P2中,塊的尺寸大小為 8×8。原始的視頻信號(hào)在進(jìn)入編碼器后,編碼器將根據(jù)配置參數(shù)對(duì)當(dāng)前幀是進(jìn)行I幀、P幀還是B幀的編碼做出判斷。若當(dāng)前幀是I幀,則只能選擇幀內(nèi)編碼模式。幀內(nèi)編碼只需要參考當(dāng)前幀中重構(gòu)后的宏塊信息而不需要其他幀的已編碼信息作為參考。進(jìn)入編碼器的一個(gè)新的塊和經(jīng)過幀內(nèi)預(yù)測(cè)出來的預(yù)測(cè)塊做減法運(yùn)算得到殘差,再進(jìn)行變換、量化過程將殘差變?yōu)榱炕禂?shù),該量化系數(shù)再通過zig-zag掃描成為一維量化系數(shù),最后經(jīng)過熵編碼就能得到編碼了的碼流。此外,在熵編碼前,通過反量化和反變換等過程,就能使得已經(jīng)量化了的信息得以重構(gòu)這個(gè)塊,并在緩存中存儲(chǔ)作為后續(xù)圖像或塊編碼的參考幀[5]。如果是 P幀,則可以有三種編碼模式:SKIP模式、幀內(nèi)模式和幀間模式。官方參考模型是讓P幀遍歷以上三種模式,通過計(jì)算率失真代價(jià),得到一種最優(yōu)的編碼模式。與I幀相同,P幀的幀內(nèi)模式也是以視頻序列時(shí)間上的相關(guān)性為基礎(chǔ)的,通過參考最近解碼后的I幀或P幀使當(dāng)前待編碼宏塊得到殘差,再經(jīng)過變換、量化和熵編碼步驟得到碼流。 AVS中P幀數(shù)量的最大參考值為2。P幀中塊在 SKIP 模式下編碼后的殘差為 0,因此只需傳輸代表SKIP模式的信息,就可以得出預(yù)測(cè)的運(yùn)動(dòng)矢量。AVS中的B幀一樣有以上三種編碼模式:SKIP模式、幀內(nèi)模式和幀間模式。但B幀的幀間預(yù)測(cè)模式是雙向的,包含有對(duì)稱模式(symmetric mode)和直接模式(direct mode)兩種,這是B幀與P幀的不同之處。

      圖1 ASV原理

      3.2 GOP級(jí)并行編碼算法

      圖像群組(Group of pictures,GOP)是一組連續(xù)圖像,這些圖像來源于以MPEG編碼的影片或者視訊串流內(nèi)部。

      圖像群組可包含的圖像類型如下:

      ● I-圖像/畫格(intra coded picture,節(jié)點(diǎn)編碼圖像)參考圖像,與一個(gè)固定影像類似,并且與其它的圖像類型相獨(dú)立。每個(gè)圖像群組以此類型的圖像作為開始。

      ● P-圖像/畫格(predictive coded picture,預(yù)測(cè)編碼圖像)包含來自之前的 I-畫格或 P-畫格的差異資訊。

      ● B-圖像/畫格(bidirectionally predictive coded pictures,前后預(yù)測(cè)編碼圖像)包含來自之前和/或者之后的I-畫格或P-畫格的差異資訊。

      ● D-圖像/畫格(DC direct coded picture,指示編碼圖像)用于快速進(jìn)帶。

      假設(shè)有兩個(gè)B幀,每個(gè)GOP可排成IBBPBBP…序列,且一直到視頻結(jié)束都將會(huì)保持這一排列順序。IDR圖像是GOP的第一個(gè)圖像,且都是I圖像,一個(gè)GOP只能有一個(gè)IDR圖像,而IDR圖像以后的圖像在進(jìn)行解碼時(shí)決不會(huì)引用IDR圖像之前的圖像數(shù)據(jù),這就使得GOP之間的并行有了可能。

      編碼效果的好壞與GOP的長(zhǎng)度大小相關(guān)。一定的范圍內(nèi),GOP的長(zhǎng)度值越大,每個(gè)圖像組中能有更多的B幀和P幀,因而壓縮編碼效率也越高。但是GOP的值也不能取過大,因?yàn)闀?huì)導(dǎo)致編碼質(zhì)量不高,特別是對(duì)于場(chǎng)景切換或運(yùn)動(dòng)較為劇烈的視頻序列的情況。此外,一個(gè)GOP中如果出現(xiàn)了嚴(yán)重的丟包現(xiàn)象或者是由其他原因?qū)е碌臄?shù)據(jù)錯(cuò)位問題,為減少誤碼的發(fā)生,只有通過獲得重新同步,因此要折中考慮GOP的長(zhǎng)度值。

      GOP的優(yōu)點(diǎn):

      ①可擴(kuò)展性強(qiáng):能根據(jù)硬件情況適當(dāng)調(diào)整并行線程數(shù)。

      ②線程開銷?。赫麄€(gè)并行程序的運(yùn)行過程只需進(jìn)行一次Fork,由頻繁派生、合并線程導(dǎo)致的性能損失在很大程度上得到了減少。

      ③加速比高:如果各個(gè)線程的負(fù)載能夠平衡,那么加速比會(huì)比較高。

      ④易于實(shí)現(xiàn):每個(gè)線程都有比較大的任務(wù)量,線程間無需頻繁的進(jìn)行數(shù)據(jù)同步,程序?qū)崿F(xiàn)較為容易。

      圖2 GOP級(jí)并行編碼

      在開始編碼視頻序列前,要將其分為多個(gè)GOP,且每個(gè)GOP都要分配一個(gè)線程進(jìn)行編碼。編碼完成后回到主線程,再完成數(shù)據(jù)同步并且輸出AVS碼流。對(duì)于非實(shí)時(shí)編碼來說,最好的選擇是GOP級(jí)并行,一方面因?yàn)镚OP級(jí)并行對(duì)目標(biāo)碼流的PSNR、碼率等各項(xiàng)指標(biāo)不會(huì)造成影響,另一方面由于GOP之間沒有相關(guān)性,且編碼器能對(duì)序列中的任意幀進(jìn)行隨機(jī)訪問,因此在編碼前對(duì)幀序列的劃分可根據(jù)GOP長(zhǎng)度大小。劃分幀序列后,依據(jù)GOP的多少來設(shè)置線程的數(shù)量。而要實(shí)現(xiàn)GOP級(jí)并行,編碼過程必須要在原始圖像序列數(shù)滿足GOP的長(zhǎng)度后才能進(jìn)行,所以在對(duì)實(shí)時(shí)性有很高要求的應(yīng)用場(chǎng)合,比如在遠(yuǎn)程機(jī)器人控制、視頻會(huì)議系統(tǒng)等情況下,GOP級(jí)并行顯然無法滿足要求。

      3.3 GPU并行計(jì)算模塊實(shí)現(xiàn)原理

      原有的變換編碼采用了整數(shù)DCT變換,根據(jù)之前確定的實(shí)現(xiàn)方案,筆者方案的具體實(shí)現(xiàn)按照如下的流程圖進(jìn)行,如圖 3所示:

      圖3 變換編碼并行實(shí)現(xiàn)

      主機(jī)端在運(yùn)行函數(shù)后得到關(guān)于當(dāng)前塊的殘差宏塊矩陣。然后程序?qū)z測(cè)GPU加速是否已由該編碼器幵啟,或者該客戶端是否有可編程 GPU。如果得到檢測(cè)結(jié)果為編碼器沒有開啟 GPU加速,或者無可編程GPU,則編碼流程將按照常規(guī)的步驟進(jìn)行串行編碼,然后得到--個(gè)返回值dc[6],即為變換后的8x8矩陣。如果檢測(cè)結(jié)果是編碼器己經(jīng)幵啟了GPU加速并且該客戶端有可編程GPU,則將進(jìn)行Device端編碼,也即GPU編碼。該編碼流程主要分為以下幾個(gè)步驟:(1)在主機(jī)端的內(nèi)存上為8x8矩陣分配空間;(2)將主機(jī)端的代碼復(fù)制到設(shè)備端GPU的顯存上:這樣我們就在設(shè)備端GPU上得到了大小為8x8的Md矩陣,也即殘差宏塊矩陣;(3)分配Grid和線程Thread,該部分是在主機(jī)端分配的,也即指令流需要由CPU產(chǎn)生,然后來操作GPU的行為;(4)核心計(jì)算Kernel代碼;(5)將計(jì)算的結(jié)果返回。

      而在設(shè)備端GPU上,也存在正變換和反變換兩次變換。對(duì)于設(shè)備端GPU的變換代碼,有以下流程,設(shè)備端變換編碼并行實(shí)現(xiàn)流程圖如圖4:

      圖4 變換編碼并行實(shí)現(xiàn)設(shè)備

      由圖4,當(dāng)設(shè)備端GPU收到開始計(jì)算的指令后,首先做準(zhǔn)備工作,即聲明常數(shù)變量DCT[6],用來存放整數(shù)變換核;之后進(jìn)行如下的計(jì)算工作。該步驟的意義在于每一次的計(jì)算過程中整數(shù)變換核會(huì)被調(diào)用,存有常數(shù)變量則可減少數(shù)據(jù)的流量和調(diào)用的次數(shù),為GPU與CPU的交換省下了帶寬。

      4 測(cè)試結(jié)果及分析

      系統(tǒng)設(shè)計(jì)流程圖如圖5所示:

      圖5 系統(tǒng)流程圖

      測(cè)試環(huán)境為:

      操作系統(tǒng) Windows 7 Professional(64bit)

      處理器 Intel(R) Xeon(R) CPU E5504 @ 2.00GHz×8

      內(nèi)存 12GB

      顯卡 NVIDIA Tesla C1060×2;NVIDIA Quadro FX380×1

      編譯器 Microsoft Visual Studio 2008

      調(diào)試器 Parallel Nsight

      表1給出了本文方案與CPU方案的在性能上的對(duì)比,不難發(fā)現(xiàn),本文方案的編碼速率相比CPU方案有了很大的提升,同時(shí),編碼質(zhì)量也比較好,從而實(shí)現(xiàn)了高清視頻編碼的效果。

      AVS video coding applications based on CUDA platform

      This paper studies the AVS video coding in programmable graphics processor to take full advantage of the graphics processor, high-performance parallel computing power and floating-point computing power to speed up the process of coding process. Experimental results show that the video quality, greatly enhance the speed of the AVS video coding.

      GPU; video coding ;GOP level parallelism coding; CUDA

      TN76

      A

      1008-1151(2015)02-0013-03

      2015-01-12

      2014年全國(guó)大學(xué)生創(chuàng)新創(chuàng)業(yè)訓(xùn)練計(jì)劃(XY290398)。

      黃海,男,廣西玉林人,桂林電子科技大學(xué)數(shù)學(xué)與計(jì)算科學(xué)學(xué)院信息計(jì)算專業(yè)學(xué)生;鐘婍,女,江西贛州人,桂林電子科技大學(xué)數(shù)學(xué)與計(jì)算科學(xué)學(xué)院碩士生,研究方向?yàn)樾畔踩?;顏海峰,男,廣西全州人,桂林電子科技大學(xué)數(shù)學(xué)與計(jì)算科學(xué)學(xué)院教師,研究方向?yàn)樾畔⑾到y(tǒng)安全;劉憶寧,男,河南鞏義人,桂林電子科技大學(xué)數(shù)學(xué)與計(jì)算科學(xué)學(xué)院副教授,博士后,研究方向?yàn)閼?yīng)用密碼學(xué)與信息安全。

      猜你喜歡
      電子科技線程編碼器
      西安展天電子科技有限公司
      寶雞市普瑞思電子科技有限公司
      2S1廣州弘傲電子科技有限公司
      213B廣州市碼尼電子科技有限公司
      基于FPGA的同步機(jī)軸角編碼器
      淺談linux多線程協(xié)作
      基于PRBS檢測(cè)的8B/IOB編碼器設(shè)計(jì)
      JESD204B接口協(xié)議中的8B10B編碼器設(shè)計(jì)
      電子器件(2015年5期)2015-12-29 08:42:24
      多總線式光電編碼器的設(shè)計(jì)與應(yīng)用
      Linux線程實(shí)現(xiàn)技術(shù)研究
      兴义市| 团风县| 宁都县| 永安市| 泽库县| 深圳市| 武山县| 鄄城县| 苍南县| 永德县| 二连浩特市| 章丘市| 且末县| 枝江市| 杭锦旗| 化德县| 花莲县| 肥乡县| 邮箱| 镇江市| 宣汉县| 莲花县| 香格里拉县| 永修县| 龙州县| 乐东| 奇台县| 彝良县| 开鲁县| 常熟市| 乐山市| 东乌珠穆沁旗| 界首市| 营山县| 金溪县| 安义县| 井冈山市| 余姚市| 晋宁县| 彭山县| 丹阳市|