999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于多核處理器的SVC高清實時編碼

2013-07-20 02:50:44黃亮
計算機工程與應用 2013年13期

黃亮

浙江大學 數字技術及儀器研究所,杭州 310027

基于多核處理器的SVC高清實時編碼

黃亮

浙江大學 數字技術及儀器研究所,杭州 310027

1 引言

隨著視頻應用的發展,高壓縮率的H.264/AVC視頻編碼標準取得了非常廣泛的應用[1-2]。針對不同處理器能力的計算平臺、顯示設備,不同視頻質量需求的終端用戶,需要不同特性的視頻碼流的問題[3],JVC(Joint Video Coding)增加了H.264/AVC視頻標準附錄[4],命名為SVC。SVC[5](可伸縮視頻編碼)具有時域、空域、質量3個層次上的分級特性,比H.264/AVC具有更好的網絡環境及終端適應性,可廣泛用于視頻會議、視頻網站無縫切換服務等。

雖然SVC的多層結構能很好地解決如上所述問題,但是伴隨層數的增加,編碼器的復雜度也大幅增加。文獻[6]以x264為基礎,僅僅實現了時域可伸縮的編碼方案,也只能支持最大分辨率QVGA的實時編碼,在高清視頻方面,SVC的實時應用方案較少。多核技術的飛速發展,為高復雜度的SVC視頻編碼提供了強有力的平臺支撐。TileraGx36處理器集成了36個核心,每個核都是一個通用處理器,可獨立搭載一個Linux操作系統,其64位的CPU架構及SIMD處理指令對高運算復雜度的多媒體應用是極大的支持,并且該平臺提供多核處理的硬件同步,編程性較好。

目前,SVC相關的實時并行編碼方案較少,工程上主要集中在小分辨率及FPGA上的實現。文獻[7]從減少層間采樣的內存帶寬方面對SVC進行優化;文獻[8]對SVC在CIF分辨率下3個層間預測工具進行了全面的性能評估;文獻[9-10]從并行濾波的角度提高SVC算法運算速度;文獻[11]實現了Intel處理器上的并行編碼,但僅限于質量和時間的可伸縮性。本文在分析SVC視頻編碼算法的基礎上,結合JSVM9.18模型,以x264為基礎添加SVC的相關功能,充分利用Tilera多核處理器的平臺特性,對SVC核心模塊進行了SIMD匯編優化,指令cache優化,內存優化等,并結合SVC算法及平臺的靈活性,提出了一種多層次的并行編碼方式,包括時間層對齊的空間層級并行編碼,動態Slice大小編碼,多核并行濾波,動態核數分配編碼。

圖1 SVC編碼結構圖

2 SVC算法結構

SVC編碼算法具有時域、空域、質量3個層次上的可伸縮性質。空域可伸縮(Spatial Scalability,D層)指將原始圖像通過下采樣生成兩幅或多幅空間分辨率不同的圖像,然后將各個圖像壓縮成一個空間分辨率較低的基本層和數個空間分辨率較高的增強層。在相同分辨率下,可以包含多種不同質量的碼流即質量可伸縮(Quality scalability,Q層),它通過選用不同的量化等級或者將編碼后的殘差系數分配到不同的片中(MGS Vector),使碼流中能包括不同質量等級的碼流。時域可伸縮(Temporal Scalability,T層)指將不同幀率的圖像壓縮成一個幀率最低的基本層和多個幀率較高的增強層,可通過丟棄碼流中的某些幀達到改變幀率的目的。圖1所示為SVC空域可伸縮編碼框架。

在基本的H264混合編碼結構之上,為了充分消除層間冗余信息,SVC提供三種層間預測方式:層間幀內預測;層間運動預測;層間殘差預測。當基本層參考宏塊采用幀內預測編碼時,增強層對應宏塊可采用層間幀內預測,以基本層宏塊的重建數據作為增強層當前宏塊的預測數據。采用層間運動預測方式,可利用基本層參考宏塊的分割形式、參考索引、運動矢量來預測增強層的宏塊運動信息。層間殘差預測方式利用了層間紋理及運動信息高度相關的特點,增強層可利用基本層重建殘差數據在DCT之前減去基本層重建殘差,并允許在頻域進一步減小殘差。三種層間預測方式在分辨率不同的層之間,均需要進行必要的上采樣操作。

本設計采用4層時間層,2層空間層,2層質量層的結構,可提供16種不同的碼率。D0層為640×352,D1層為1 280×720,Q0層QP為34,Q1層QP為28。為減小編碼延遲,采取零延遲的分級P幀[12]的時間分層方式,結構如圖2所示。

圖2 分級P幀時間分層結構圖

3 多核并行編碼算法

3.1 時間層對齊的空間層級并行

在本文的SVC算法結構中,由于D1Q0層(1 280×720分辨率的質量基本層)需要對D0Q1(640×352分辨率的質量增強層)進行層間上采樣的工作,且模式選擇上需要綜合考慮本層運動搜索和層間預測的結果,運算量非常大,使其成為整個并行算法的瓶頸。按照本文的算法,Q1層的模式選擇部分直接取自Q0,運算量較小,因此采用基于空間層的層間并行算法,即D0Q0+D0Q1與D1Q0+D1Q1并行編碼,以達到取長補短的效果。

由于同一時間點上的D1層在空間上直接依賴D0層,D0和D1的并行化可通過錯幀方式實現,通常的做法是D0層的第1幀首先編碼,隨后D0的第2幀與D1層的第1幀并行編碼,以此類推。考慮到SVC的時間可伸縮結構,各個時間層的參考幀與編碼幀的時間相關性各不相同,導致編碼效率也不盡相同,總體來說,編碼效率上滿足T3>T2>T1>T0,加之T3層的幀不作為參考幀,并不需要去方塊濾波,這種差異更加明顯。但若采用GOP級的并行[13]方案,勢必增加延時,不利于實時應用。綜合考慮,為了減小兩空間層中不同時間層編碼性能不均衡性,如圖3所示,采取在T3時間層上對齊的方式進行并行編碼,有效地均衡兩個空間層編碼時間,獲得了較高的并行效率。

圖3 時間層對齊的空間層級并行方案

圖3中的數字代表幀序號,啟動階段D0層獨自編碼兩幀,流水線階段D0層的第3幀與D1層的第1幀同時編碼,以此類推,圖3以D1層為例闡述了編碼過程:

(1)Slice初始化。包括Q0及Q1層的參考幀管理,Slice頭部初始化,碼流緩沖區初始化,cabac初始化等。

(2)宏塊級編碼。對Q0及Q1層的宏塊輪流進行編碼,且所有層間預測均按宏塊級進行,如Q0層宏塊依次為A,B,C,…,Q1層宏塊為a,b,c,…,則編碼順序為A,a,B,b,C,c,…,這樣在編碼宏塊a時可直接利用宏塊A的殘差或者重建數據,從而避免了整幀殘差或重建數據的存儲與拷貝。一個宏塊的編碼過程可分為層間運動上采樣,層間幀內上采樣,層間殘差上采樣,標準H.264幀內預測,層間幀內預測,運動搜索,帶殘差預測的運動搜索,層間運動預測,運動補償,模式仲裁,DCT,量化,Z掃描及熵編碼,反量化,IDCT,殘差/幀內重建數據拷貝(以備層間預測使用)和宏塊語素修正(如cbp為0時transform_8×8等需要修正)。

(3)去塊濾波。依次對Q0、Q1層進行濾波,濾波模塊包括標準H.264的LPF以及需要進行層間幀內上采樣宏塊的LPF。

(4)碼流拼接。由于各個Slice并行編碼,最后需要將各個Slice的碼流拼接在一起。

3.2 基于時間層的動態Slice劃分

在同一幅圖像上,不同的區域的復雜度也可能各不相同,這種內容上的差異使得各個Slice的編碼時間各不相同,也直接導致了整個編碼器的均衡程度降低。另一方面,在去方塊濾波開始之前,各個核必須完成對應Slice的編碼,因此各個Slice必須在并行濾波之前進行同步,同步的時間開銷直接取決于各個核對Slice編碼的均衡程度。

可定義編碼均衡度為:公式中,B代表編碼均衡度,Ti、Tj分別表示第i個和第j個Slice的編碼時間,n表示總Slice數。公式(1)反映了Slice間編碼的整體均衡度,各個Slice編碼時間相差越明顯,B的值越小,而理想情況下,若各Slice編碼時間完全相同,則編碼均衡度B為100%。動態Slice劃分目的就是提高編碼均衡度。

根據圖1的編碼結構,每個Slice的編碼過程可以劃分為兩個階段:

(1)獨立編碼(包括層間幀內、運動、殘差上采樣、模式選擇、變換量化、熵編碼等);

(2)濾波(包括LPF和INTRA濾波)。

動態Slice劃分針對第一個階段,在層級并行的基礎上,動態調整各個Slice的大小。本設計采用了基于PID控制(比例積分微分控制,是控制系統中常用的一種方法)的Slice大小動態劃分的策略,即在Slice個數一定的前提下,根據已編碼幀的即時統計信息決定當前幀的各個Slice中宏塊的個數??紤]到SVC的時間分層結構,為了避免不同時間層之間因參考關系不同造成的編碼效率差異,本文算法針對每個時間層單獨控制。設每個時間層Slice數為n,整幀總宏塊數為frame_mb_count,首先設定一個控制目標值target,控制流程如下所示。

(1)首先初始化各Slice中宏塊個數:

(2)對各個Slice并行編碼,統計執行時間Ti;

(3)計算實際值與目標值的誤差error及累積誤差error_sum:

(4)根據同一時間層中前一幀的誤差、當前的誤差,以及累積誤差計算新的Slice宏塊數:

以上式中,target代表理想情況下每個Slice的編碼時間占整幀編碼時間的比例,target=1/n;Ti為第i個Slice的編碼時間;error為目標值target與實際值的誤差,例如當某一Slice編碼時間超過平均值,error的值為負,將起到減小mb_num的作用;error_sum為累積誤差;pre_error為前一次的誤差;K、I、D分別為比例、積分、微分調節系數;K×error即時成比例地反應控制系統的偏差error,偏差一旦產生,調節器立即產生控制作用;I×error_sum主要用于消除系統靜態誤差;D×(error-pre_error)能反應偏差信號的變化速率,并能在偏差信號的值變得太大之前,在系統中引入一個有效的早期修正信號,從而加快系統的響應速度,減小調節時間;常量C,用以調節宏塊增加或減少的程度。實驗中K=0.7,I=0.2,D=0.1,C=256。

3.3 去方塊濾波的并行化

去方塊濾波是SVC算法中關鍵的一個模塊,它能有效地降低重建圖像的塊效應。但是宏塊在濾波順序[14]上存在嚴格的依賴關系,即當前宏塊的去方塊濾波必須在其上邊宏塊、右上宏塊以及左邊宏塊去方塊濾波之后進行。由于這種限制,如果各個Slice編碼完成之后由一個核串行地對整幀圖像執行濾波操作,而其他核處于空閑狀態,整個濾波過程會非常漫長,核的利用率也比較低。本文采用一種多核并行濾波方案,將整幀的濾波工作分配成多個核進行,每個核負責一個“豎條”的濾波工作。圖4顯示了640×352分辨率圖像的濾波過程。

圖4 并行濾波方案

圖4中,數字序號代表宏塊序號。按照這種方式濾波,Core 1首先依次對10個宏塊濾波,然后Core 1繼續對下一行10個宏塊濾波,同時Core 2開始對第一行10個宏塊濾波,依此類推,“豎條”邊緣的宏塊濾波前需要同步,如宏塊60,需要判斷宏塊21是否已經濾波完成,宏塊61需要判斷宏塊60是否完成濾波。各個核濾波的列數可按如下公式迭代算出:

其中,RoundDown()為向下取整函數,M為一幀的宏塊列數,N為所使用的核數,Ki為第i個核需要濾波的列數。i從1開始,按照公式迭代計算出K1,K2,…,KN,這樣可以保證M不是N的整數倍時仍能將所有列分配到各個核上。

3.4 動態核數分配方案

視頻序列內容豐富多變,實際應用中,視頻序列的紋理復雜度隨時間波動,導致編碼器性能不穩定。表1為采用固定核數對各個序列進行編碼的性能統計。

表1 固定核數編碼性能統計

表1中,視頻會議錄像Gman序列耗時最短,馬拉松比賽人群奔跑場景的Crowd run耗時最長,兩者相差接近7 Mcycles,變化幅度達到21%??梢?,不同場景的視頻對編碼器性能的要求不同,如果僅用滿足最低要求的核數來編碼,在遇到復雜場景時會達不到實時的幀率;反之,若按照最復雜場景來分配核數,在遇到低復雜度視頻時會浪費核數,整個系統能耗比降低;再者,視頻場景的變化是必然的,也很難預估恰好合適的核數。因此,本文采用動態核數分配方案,使整個系統始終保持較高的能耗比。其基本做法是以前一秒已編碼幀的統計信息為依據,預估下一秒應分配的核數。核數調整公式為:

其中,t為初始設定的一個目標幀率,c為當前階段的實際幀率,m為當前所使用的核數,n為下一秒需要的核數,RoundDown()為向下取整函數。當實際編碼幀率高于目標幀率即c>t時,n的值相應減小,由于一個核負責兩個Slice(Q0+Q1)的編碼,所以對應的Slice個數相應減小,反之亦然。當核數發生變化時,Slice大小重新平均分配。核數調節之后,空閑的核可用做系統其他用途或者進入睡眠等待。

4 實驗結果與分析

在TILERA公司的TileraGx36平臺上(1GHz主頻,36核處理器),對上述方案進行了測試,選取的序列為Rush hour、Pair、Crowd run、Gman,結果如下:

(1)動態Slice大小劃分方案實驗結果

圖5、圖6是對CrowdRun序列D0層4組Slice的編碼時間統計。測試序列特點是圖像上半部分是天空,下半部分是人群奔跑的場景,如圖5,整體編碼性能在34 Mcycles上下擺動,各Slice編碼時間差異明顯,按照公式(1),整體均衡度只有56.47%。由圖6可見,采用動態Slice大小劃分方式后,從第2幀開始,各個Slice編碼時間逐漸達到均衡,最終穩定在32 Mcycles上下,相比固定Slice劃分,平均執行時間降低了5.89%,整體性能得到了提高,編碼均衡度達到97.33%,比固定Slice劃分提高了40.86%。

圖5 固定Slice大小劃分編碼時間

圖6 動態Slice大小劃分編碼時間

(2)去方塊濾波的并行化方案實驗結果

圖7所示為4核濾波結果,相比串行濾波,并行濾波的執行時間減少了56.44%,加速比平均達到了2.3。

圖7 串行與并行濾波性能比較(D0Q0層)

(3)動態核數分配方案實驗結果

為顯著起見,將4個序列按照復雜度從低到高拼接起來,依次為Gman、Pair、Rush hour、Crowd run,如圖8所示,隨著視頻復雜度的增加,所用核數動態跟隨性較好,能較快地使編碼性能穩定在所設定的目標值附近。相比表1固定核數的編碼方式,動態核數分配方式將編碼器性能波動控制在2.4%之內,使SVC編碼器自適應地響應不同復雜度的場景。

圖8 動態核數分配方案性能統計

(4)串行最優與并行方案性能比較

如圖9,基于x264的經過優化的串行算法雖然比JSVM9.18開源版本快了不少,在TileraGx36平臺上也只能達到1.5幀/s左右,而并行算法的幀率穩定在30幀/s左右,滿足了實時應用的要求。各個序列加速比分別為19.87、19.66、21.82、19.16,均在19以上,相比文獻[15]中的并行方案提高了10.5。

圖9 串行與并行總體性能比較

5 結束語

本文在分析SVC編碼算法的基礎上,以可移植性較好的x264開源代碼為基礎添加SVC的功能,針對SVC編碼算法的特點,提出了時間層對齊的空間層級并行編碼方案,采用了直接根據編碼時間來動態調整Slice宏塊個數的方案,各個核的均衡程度得到了提高。本文還針對任務依賴性比較強的去塊濾波模塊提出了并行化濾波方案,有效地提高了并行加速比。此外,結合平臺特性,對編碼核數采取動態調整策略,使有限的資源得到合理的利用。整個編碼方案實現了720P高清視頻的SVC實時編碼,具有較高的工程實用性。

[1]李占林,林其偉.H.264可分級編碼技術的研究[J].微計算機信息,2007,23(12):300-302.

[2]任宏.H.264擴展標準-可伸縮視頻編碼(SVC)及其中精細可伸縮編碼的研究[D].成都:成都電子科技大學,2009.

[3]劉娜.可伸縮視頻編碼算法研究與優化[D].北京:北京郵電大學,2010.

[4]Wiegand T.Draft ITU-T recommendation and final draft international standard of joint video specification,Technical Report JVT-G050[R].2003.

[5]駱政崎,余松煜,宋利,等.H.264可分級擴展技術的介紹和分析[J].中國圖象圖形學報,2006(11):1578-1583.

[6]孔群娥,曾學文.基于x264實現H.264的時域可伸縮編碼[J].微計算機應用,2011,32(3).

[7]Su Y,Tsai S,Chuang T.Mapping scalable video coding decoder on multi-core stream processors[C]//Proceedings of the Picture Coding Symposium,2009.

[8]Li X,Amon P,Hutter A.Performance analysis of inter-layer prediction in scalable video coding extension of H.264/AVC[J]. IEEE Transactions on Brodcasting,2011,57(1).

[9]Cervero T,Otero A,López S.A novel scalable Deblocking Filter architecture for H.264/AVC and SVC video codecs[C]//Proceedings of the IEEE International Conference on Multimedia and Expo,2011.

[10]Yan C,Dai F,Zhang Y.Parallel deblocking filter for H.264/AVC on the TILERA many-core systems[C]//Proceedings of the 17th International Multimedia Modeling Conference(MMM 2011),2011,6523:51-61.

[11]Yao K,Sun J,Liu J.A novel parallel encoding framework for scalable video coding[C]//Proceedings of the IEEE Visual Communications and Image Processing(VCIP 2011),2011.

[12]畢厚杰,王健.新一代視頻壓縮編碼標準——H.264/AVC[M]. 2版.北京:人民郵電出版社,2009-11.

[13]Vander E B,Jaspers E G T,Gelderblom R H.Mapping of H.264decodingonamultiprocessorarchitecture[C]//Proceedings of the SPIE Conf on Image and Video Communications and Processing,2003:707-718.

[14]Reichel J,Schwarz H,Wien M.Scalable video coding:working draft 1[C]//Proceedings of the Joint Video Team(JVT)14th Meeting,Hong Kong,China,17-21 January,2005.

[15]Huang Y,Shen Y,Wu J.Scalable computation for spatially scalable video coding using NVIDIA CUDA and multi-core CPU[C]//Proceedings of the 2009 ACM Multimedia Conference,with Colocated Workshops and Symposiums MM’09,2009:361-370.

HUANG Liang

Institute of Advanced Digital Technology and Instrument,Zhejiang University,Hangzhou 310027,China

Due to the complexity of Scalable Video Coding(SVC)algorithm,a TileraGx36-oriented SVC parallel coding algorithm for HD video is proposed.This algorithm implements temporal layer aligned parallel coding in spatial level.Within a layer, due to the diversity of images,a dynamic Slice partition based on statistics is proposed to achieve dynamic coding balance among Slices,and for the high dependence of LPF module,a parallel loop filter method is proposed.A dynamic core allocation scheme is proposed considering the platform features.Experimental results show that the whole solution speeds up the encoding process by more than 19 times and implements real time encoding for 720P high definition sequences.

Scalable Video Coding(SVC)algorithm;multi-core processor;temporal layer aligned spatial level parallel coding; dynamic Slice partition;parallel loop filter;dynamic core allocation

針對SVC(Scalable Video Coding)視頻編碼算法的高復雜度,提出了一種面向TileraGx36多核平臺的針對高清視頻的SVC并行編碼算法。在層間,提出基于時間層對齊的空間層級并行編碼;在層內,針對圖像變化的多樣性,為實現Slice間編碼性能的動態均衡,提出了直接根據統計時間的Slice級動態分割方法,并針對依賴性較強的去方塊濾波模塊實現了多核并行濾波方案。結合平臺特點,實現了多核處理器核數的動態分配方案。實驗結果表明,整個方案并行加速比超過19,實現了最大分辨率720P視頻序列的實時編碼。

可伸縮視頻編碼(SVC)算法;多核處理器;時間層對齊的空間層級并行;動態Slice劃分;并行濾波;動態核數分配

A

TP391.41

10.3778/j.issn.1002-8331.1211-0174

HUANG Liang.High definition real time SVC encoding based on multi-core processor.Computer Engineering and Applications,2013,49(13):170-174.

國家自然科學基金儀器專項(No.40927001)。

黃亮(1987—),男,碩士研究生,主要研究方向:基于嵌入式平臺的多媒體應用。E-mail:huangliangzju@sina.com

2012-11-15

2013-02-28

1002-8331(2013)13-0170-05

主站蜘蛛池模板: 97在线观看视频免费| 一级成人欧美一区在线观看| 欧美成人精品在线| 国产精品页| 精品無碼一區在線觀看 | 亚洲美女久久| 99国产精品国产| 日韩欧美中文亚洲高清在线| 亚洲综合中文字幕国产精品欧美| 制服丝袜一区| 婷婷综合亚洲| 久久精品66| 都市激情亚洲综合久久| 亚洲国产精品人久久电影| 国产一区在线视频观看| 国产精品va免费视频| 日韩123欧美字幕| 亚洲国产日韩视频观看| 国产小视频在线高清播放| 欧美、日韩、国产综合一区| 五月天综合婷婷| 亚洲欧美在线精品一区二区| 国产成人AV大片大片在线播放 | 国产精品福利导航| 欧美中文字幕在线视频| 亚洲欧洲日韩久久狠狠爱| 欧美国产日本高清不卡| 97超级碰碰碰碰精品| 国产黄色片在线看| 午夜一级做a爰片久久毛片| 亚洲精品图区| 亚洲人成电影在线播放| 无码专区国产精品第一页| 久久99热66这里只有精品一| 久久大香香蕉国产免费网站 | 国产va在线观看免费| 3344在线观看无码| 她的性爱视频| 国产亚洲美日韩AV中文字幕无码成人 | 国产精品亚洲五月天高清| 试看120秒男女啪啪免费| 素人激情视频福利| 国产人妖视频一区在线观看| 91啪在线| 精品久久综合1区2区3区激情| 久久这里只有精品23| 亚洲欧美一区二区三区图片| 91口爆吞精国产对白第三集| aⅴ免费在线观看| 亚洲性一区| 久久青草热| 国产在线观看一区精品| 一级香蕉人体视频| 1024国产在线| 欧美亚洲第一页| 久久a毛片| 国产福利拍拍拍| 99国产精品一区二区| 成人在线亚洲| 制服丝袜国产精品| 日韩色图在线观看| 最新日韩AV网址在线观看| 伊人久久精品亚洲午夜| 91精品国产一区自在线拍| 亚洲综合欧美在线一区在线播放| 亚洲最黄视频| 国产成人无码AV在线播放动漫| 综合色在线| 午夜电影在线观看国产1区 | 免费人成网站在线高清| 婷婷综合缴情亚洲五月伊| 毛片大全免费观看| 亚洲第一视频网| 免费看av在线网站网址| 亚洲精品不卡午夜精品| 六月婷婷精品视频在线观看| 精品五夜婷香蕉国产线看观看| 四虎AV麻豆| 亚洲精品第一页不卡| 久久网欧美| 精品久久久久久成人AV| 99久久精品美女高潮喷水|