程棟彬,高志勇,張小云
(上海交通大學 電子工程系 圖像通信與網絡工程研究所,上海200240)
基于信息復用的多路x265視頻編碼系統設計
程棟彬,高志勇,張小云
(上海交通大學 電子工程系 圖像通信與網絡工程研究所,上海200240)
為了滿足不同網絡環境下的用戶需求,視頻節目往往需要經過多次編碼以產生不同碼率的多個碼流。這種多次獨立編碼方式存在計算資源消耗大和效率低等問題,利用視頻在不同碼率編碼時存在的編碼信息相關性,設計了基于編碼信息復用的多路x265視頻編碼系統,使多個從編碼器復用主編碼器產生的編碼信息,如編碼單元(CU)的層次劃分信息、預測單元(PU)的模式判別信息以及運動估計參考幀信息等,從而大幅提高多路編碼效率。該系統支持單路視頻輸入,進行基于信息復用的多路編碼后,同時輸出不同碼流的多路碼流。實驗結果表明,與傳統的多次獨立x265編碼相比,該系統在保證視頻質量的前提下,對高清1080p和準高清720p視頻分別節省了43.32%和52.79%的編碼時間。
視頻編碼;HEVC;x265;編碼信息復用;多路編碼;多線程
視頻內容從發送源端到終端,用戶往往需要應對各種不同的網絡傳輸環境和終端設備類型等應用因素,包括網絡類型、網絡帶寬、設備顯示屏大小等,因此對于同一視頻內容,視頻服務提供商往往需要對其進行多次編碼以得到多種碼率的視頻以滿足各種用戶需求。另一方面,在視頻編碼領域,目前廣泛使用的H.264/AVC[1]標準正逐漸被新一代高效率視頻編碼標準HEVC(High Efficiency Video Coding)[2]取代,HEVC相比H.264能提高1倍左右的視頻壓縮率,但也引入了3~10倍的編碼復雜度。基于HEVC標準的x265[3]是一款面向實用的高效視頻編碼器,它通過多線程機制支持幀級并行和行級并行編碼,并集成了大量的算法優化、匯編加速、單指令多數據實現等,從而極大地提高了編碼速度。然而,在Intel的高性能8核處理器上,x265編碼器仍無法實現高清視頻的實時編碼,在更多核的服務器上運行時x265仍面臨并行效率和處理器使用率較低的問題。因此,利用新一代HEVC高效編碼技術對同一視頻進行多次獨立編碼以產生不同碼率的多路碼流,面臨著計算復雜度極高、資源消耗大、編碼效率低等問題。
基于上述現狀,本文利用視頻在不同碼率編碼時存在的編碼信息相關性,設計了基于編碼信息復用的多路x265視頻編碼系統,使多個從編碼器復用單個主編碼器產生的編碼信息,如編碼單元(CU)的層次劃分信息、預測單元(PU)的模式判別信息以及運動估計參考幀信息等,從而大幅提高多路編碼效率。另外,通過多路x265編碼器的并行執行,本系統提高了并行效率和處理器使用率,進一步降低了總編碼時間。
1.1 系統框架
多路x265視頻編碼系統結構框圖如圖1所示,系統輸入原始的YUV格式視頻,經過多路編碼器輸出該視頻的多種碼率碼流。系統中的多路編碼器分為兩類,分別是x265主編碼器和x265從編碼器。主編碼器在編碼的同時保存并輸出編碼信息,從編碼器則獲取主編碼器輸出的編碼器信息,并利用它們簡化自身的編碼運算。整個系統由一個主編碼器和若干個從編碼器組成,一路輸入視頻通過包含1個主編碼器和N個從編碼器的x265多路編碼系統,一次性編碼輸出N+1路不同碼率的視頻碼流。

圖1 多路x265視頻轉碼系統框架示意圖
多路x265視頻編碼器系統有兩大核心機制,首先是主編碼器到從編碼器的信息復用機制,該機制有效地降低了從編碼器的編碼復雜度;其次是多線程實現的多路編碼器機制,該機制使得這些編碼器在并行多路編碼的同時又能夠實現信息交互。本系統中復用的編碼信息包括編碼單元(CU)層次劃分、預測單元(PU)的模式判別,以及運動估計參考幀[2],這些模塊都是編碼過程中計算復雜度很高的環節,復用這些模塊的信息能最大程度地減少編碼時間。
主編碼器產生盡可能準確的編碼信息,因此主編碼器設置的碼率應適當偏大,使生成的信息更準確有效。同時,為了盡可能讓從編碼器與主編碼器相關性最大,應使主編碼器設置的碼率接近所有碼率的中間值。綜上,在固定碼率編碼時,一般將主編碼器的碼率設為中等偏大;在固定量化參數(QP) 編碼時,一般將主編碼器的量化參數設為中等偏小。
1.2 主從編碼器信息復用控制
x265編碼器的重要特性之一就是多線程并行編碼,具體地分為多幀并行和WPP(Wavefront Parallel Processing)行級并行[3]。多幀并行指的是x265主線程開啟多個幀級線程,每個幀級線程編碼一幀。具體地,每個幀級線程開啟多個行級線程,每個行級線程編碼一個CTU[2]行。在多核處理器環境下,x265編碼器同時存在多個線程在并行編碼多個幀中的多個CTU行,這是下述的信息復用控制機制的設計基礎。
主從編碼器通過內存作為編碼信息的傳遞渠道,其信息傳遞機制類似于多線程并發問題中的生產者-消費者模型。考慮到單個x265編碼器的并行性,因此該模型中無論是生產者還是消費者的數目都不唯一,而且它們訪問內存進行讀寫的時間順序無法確定。為了保證編碼信息傳遞的正確性和高效性,在主編碼器產生編碼信息時,應當對其按照圖像序列號(POC)[4]和編碼樹單元(CTU)的位置進行標記,從編碼器讀取信息時,則按照當前編碼單元所在的POC和CTU位置坐標去內存中相應位置取得相應數據。
如圖2為本系統設計的主從編碼信息傳遞機制示意圖,中間立體多幀結構表示編碼復用信息緩沖區,每個正方形區域用于存儲一個CTU的所有復用信息,左下角編號i用于標記存儲的圖像序列號POC,陰影部分表示主編碼器已經使用的空間,從編碼器按照圖像序列號i和CTU的坐標(x,y)從中讀取。值得強調的是,由于主從編碼器對復用信息緩沖區的讀寫實際上是多線程間同步問題和臨界資源的訪問問題,因此需要對其中的CTU復用信息用線程鎖加以保護,確保同一時間只有單個線程對其進行操作。

圖2 主從編碼器信息傳遞示意圖
圖3為主從編碼器信息傳遞流程圖,圖3a為主編碼器輸出信息到CTU信息緩沖區流程圖,主要過程是將復用的編碼信息按照當前POC以及CTU的坐標放到緩沖區的特定位置中,然后呼叫并喚醒可能在等待該信息的從編碼器。圖3b為從編碼器從CTU信息緩沖區中獲取編碼器信息流程圖,主要過程是按照POC以及CTU坐標在緩沖區中找到特定位置后,如果信息已經就緒則直接讀取,否則進入睡眠狀態等待主編碼器的呼叫。另外,讀取過程中需要統計每個位置中CTU信息的讀取次數,當該次數等于從編碼器個數時,則刷新該部分空間以便重用。

圖3 主從編碼器讀寫CTU信息傳遞流程圖
上述的主從編碼器復用信息傳遞機制充分地考慮了x265編碼器的并行性,以CTU信息為基本復用單元,對其標記圖像序列號POC以及CTU的坐標,準確和高效地實現了信息傳遞。此外,通過對從編碼器讀取信息次數進行統計,保證了每個從編碼器都能獲得正確的編碼信息。
HEVC是為高清、超高清視頻序列而設計的編碼標準,相比H.264/AVC的16×16像素大小的分塊方式[1],HEVC編碼樹單元CTU達到64×64像素大小。同時,它引入了更為靈活的像素塊劃分結構,包括編碼單元(CU)、預測單元(PU)、變換單元(TU)[2]等。這些基于四叉樹結構的編碼方式能得到更準確的劃分模式,然而在遞歸地劃分和搜索最佳模式時,每種可能的CU、PU、TU模式都需要進行RDO(Rate-Distortion Optimization)[2]的計算,因此引入了極為龐大的計算量。正因為HEVC編碼器中上述過程占據相當部分的計算量,于是本系統對CU層次劃分信息、PU模式判別信息、運動估計參考幀信息進行了復用。
2.1 CU層次劃分信息

(1)
本系統中首先在主編碼器中針對該CTU執行完整的劃分過程,并將劃分結果輸出,從編碼器得到主編碼器該CTU的CU層次劃分結果后,將其作為自身CU劃分的參考。考慮到在x265編碼器中,同一個CTU內部不同子CU的量化參數(QP)保持不變,因此復用算法將QP作為衡量指標,其核心思想如式(1)所示。設主編碼器的某個CU層次劃分結果為Depth主,從編碼器的對應CU層次劃分結果為Depth從。記從編碼器當前CTU的量化參數為QP從,主編碼器的為QP主,若QP從
2.2 PU模式判別信息
將正方形的CU經過橫向或者縱向的劃分后得到的矩形像素塊被稱為預測單元(PU),PU的預測方式可分為四類,即Intra(幀內預測)、Inter(幀間預測)、Merge(合并相鄰PU模式)、Skip(無殘差模式)[5]這4種模式,對于每個PU,編碼器需要依據RDO性能最佳的準則進行模式選擇,該過程被稱為PU模式判別。
本系統中首先由主編碼器完成PU的模式判別過程,選出最佳模式并輸出該信息,從編碼器獲知主編碼器的PU模式判別結果后,按表1所示原則只對表中選中的模式進行判別和選擇。例如,如果主編碼器該PU的最佳模式是Intra,則從編碼器的PU需要在Intra、Inter、Merge和Skip所有四種模式中進行判別和選擇;如果主編碼器選中了Merge模式,則從編碼器只需要在Merge和Skip這兩種模式中選擇。簡而言之,PU模式判別的四種模式從殘差數據最多的Intra模式到無殘差的Skip模式,它們所占用的碼率開銷依次降低,表1中的準則概括來說就是從編碼器只在開銷小于或等于主編碼器的模式中進行判別和選擇。
2.3 運動估計參考幀信息
對于預測單元PU的幀間預測模式(Inter),需要從參考幀中搜索找出同樣大小的像素塊作為當前塊的預測值,使得真實值與預測值的殘差最小,該過程被稱為運動估計。運動估計往往選取多個參考幀進行搜索以達到最優,HEVC標準規定可以多達16個參考幀,實際應用中為降低計算復雜度通常設為3~5個,這些參考幀組成參考幀列表。PU的運動估計需要在參考幀中找到最佳匹配的像素塊,該像素塊所在的參考幀為最佳參考幀。而雙向預測模式的B幀,則存在兩個參考幀列表,并需要找出兩個最佳參考幀[5]。
表1 PU模式判別復用算法的從編碼器模式判別準則

主編碼器從編碼器IntraInterMergeSkipIntra√√√√Inter—√√√Merge——√√Skip———√
本系統的運動估計參考幀復用算法,首先主編碼器對每個Inter模式的PU執行完整的運動估計,并將所有PU的最佳參考幀的幀號輸出。從編碼器在執行當前PU塊的運動估計時,獲取主編碼器相應位置中所有PU的最佳參考幀(PU個數可能不唯一,因此最佳參考幀個數不唯一),并只在上述最佳參考幀列表中進行運動搜索匹配。對于雙向預測的B幀,由于主從編碼器幀結構相同,從編碼器的當前幀同樣是B幀,于是在前向和后向參考幀列表中,各自獨立地選出最佳參考幀列表,然后完成前向和后向運動估計。該算法避免了從編碼器在那些未被選中的參考幀中進行運動搜索,減少了搜索幀數,從而節省了運動估計的計算時間。
本系統基于Intel多核處理器平臺,中央處理器為Intel(R) Xeon(R) CPU E5-2697 v2 @2.7 GHz x24,Windows7操作系統。本系統基于x265開源代碼的1.8版本進行開發,并調用其應用程序編程接口(API)得到兩種功能的編碼器,即x265主編碼器和x265從編碼器。多路編碼系統支持x265的3種碼率控制模式即固定量化參數(CQP)模式、固定碼率(CBR)模式和固定質量(CRF)模式[3],為了評估本系統多路編碼性能,測試時對每個測試序列使用1個主編碼器、3個從編碼器的結構,分別對應固定量化參數QP為22、27、32、37,以QP=27作為主編碼器,并求出各自的平均碼率、編碼時間和處理器平均使用率。本系統的對照組為單路編碼的原始x265編碼器,對每個測試序列,同樣分別采用上述4個量化參數進行4次編碼,每次編碼獨立運行,并統計相應數據,所用的視頻質量衡量指標為BDBR[6-7]。
表2給出了視頻測試序列BasketballDrive在無復用的x265單路編碼器多次編碼的視頻質量與時間結果。表3給出了BasketballDrive序列在本文的多路x265視頻編碼單次編碼的多路輸出結果。通過表2和表3中的結果計算可知,多路x265視頻編碼系統相比多次x265編碼的BDBR僅為1.005%,即同等視頻質量下碼率僅增加1%,而全局編碼時間節省為41.94%,與此同時,處理器平均使用率從66%增加到了79%。
表2 BasketballDrive測試序列在無復用的多次x265編碼中的視頻質量與時間性能

QP碼率/(kbit·s-1)Avg-PSNR/dBY-PSNR/dBU-PSNR/dBV-PSNR/dB總編碼時間/s處理器平均使用率/%2215914.2240.7739.5543.7845.03276282.3138.9737.7542.3342.90323136.8537.2335.9541.0541.11371675.0735.3433.8240.0439.7941.1166
表3 BasketballDrive測試序列在多路x265視頻編碼器中的視頻質量與時間性能

QP碼率/(kbit·s-1)Avg-PSNR/dBY-PSNR/dBU-PSNR/dBV-PSNR/dB總編碼時間/s處理器平均使用率/%2216214.4940.8139.5743.9145.17276353.2139.0437.8042.4943.08323243.6237.2335.9741.0341.03371719.8435.2833.8839.7039.2425.6179
本系統共選取了5個分辨率為1 920×1 080和3個1 280×720的測試序列,測試結果如表4所示。無論是對1080p還是對720p測試序列,多路編碼系統的平均BDBR都在0.5%左右,可認為同等碼率下視頻質量下降極其微小。此外,多路編碼系統對兩類序列均能提高處理器使用率,且對于更小的分辨率視頻,該項提升更加顯著。對于全局編碼時間,1080p序列平均節省了43.32%,而720p序列平均則平均節省了52.79%。
表4 多路x265編碼系統在不同序列下性能結果

測試序列時間節省/%視頻質量BDBR/%處理器平均使用率/%原始x265多路編碼1080p序列BasketballDrive41.94 1.0056679BQTerrace42.88 0.4896475Cactus43.50 1.3586378Kimono146.13 0.0277082ParkScene42.13-0.8165977平均值43.32 0.4136478720p序列FourPeople50.13 0.5564369Johnny53.68 0.1164468KristenAndSara54.57 0.8654871平均值52.79 0.5124570
本文提出了基于主從編碼器之間信息復用的多路x265視頻編碼系統,首先從系統框架、主從編碼器信息復用控制等方面講述了系統上層架構,闡述了上述結構的必要性和優越性;其次說明了包括CU層次劃分、PU模式選擇和運動估計參考幀等信息在內的編碼信息復用算法,解釋了主從編碼器間信息復用算法的原理與過程。最后通過仿真與測試,給出了多路x265編碼系統相比原始的多次x265編碼的視頻質量BDBR值、時間節省百分數、處理器使用率的變化等。
總之,多路x265視頻編碼系統利用主從編碼器間編碼信息的相似性,通過復用部分主編碼器的編碼信息,降低了從編碼器的時間復雜度,提高了多核處理器使用率,成功地在視頻質量幾乎沒有下降的情形下節省了一半左右的全局編碼時間。
[1] POURZZAD M T, DOUTRE C, AZIMI M, et al. HEVC: the new gold standard for video compression: how does HEVC compare with H.264/AVC?[J]. IEEE transactions on consumer electronics magazine, 2012, 1(3):36-46.
[2] MCCANN K. High efficiency video coding (HEVC) test model 12 (HM 12) encoder description[S]. 2013.
[3] MulticoreWare Inc. x265 documentation[EB/OL].[2016-05-12]. http://x265.readthedocs.io/en/default/api.html.
[4] 畢厚杰. 新一代視頻壓縮編碼標準——H.264/AVC[M].2版.北京:人民郵電出版社,2009,181-185.
[5] SULLIVAN G J, OHM J R, HAN W J, et al. Overview of the high efficiency video coding (HEVC) standard[J]. IEEE transactions on circuits and systems for video technology, 2012,22(12): 1649-1668.
[6] BJONTEGAARD G. Improvements of the BD-PSNR model [EB/OL].[2016-05-20]. http://www. researchgate. net/publ:catim/284626 737_Improvements-of-the-BD-PSNR-model.
[7] PATEUX S JUNG J. An excel add-in for computing Bjontegaard metric and its evolution[C]// Proc. of VCEG Meeting. Marrakech, MA:Citeseer, 2007:112-116.
[8] 姚佳,高志勇,張小云. 基于眾核平臺的多路超高清視頻編碼系統設計[J]. 電視技術, 2016, 40(4):7-11.
程棟彬,碩士生,主研視頻編解碼、視頻轉碼等;
高志勇,博士生導師,主要研究高速圖像與視頻處理、數字電視等;
張小云,碩士生導師,主要研究視頻編解碼、高速視頻處理等。
責任編輯:薛 京
Implementation and design of multi-channel x265 video encoding system based on encoding units’ information reusing
CHENG Dongbin, GAO Zhiyong, ZHANG Xiaoyun
(ImageCommunicationandNetworkEngineeringInstitute,ElectronicEngineering,ShanghaiJiaoTongUniversity,Shanghai200240,China)
To meet the demands of all consumers in different network conditions, the same video may need to be encoded for many times to produce different bitrate streams by video manufacturers. This kind of several times independent encoding leads to heavy computation expense and low encoding efficiency. In this paper, a multi-channel x265 video encoding system based on the similarity of encoding units’ information between different encoders is proposed. In the proposed system, number optional slave encoders reuse the encoding units’ information produced by one master encoder to substantially increase the multi-channel encoding efficiency, and these information mainly includes the following contents: the depth decision results of the coding units(CUs), the mode partition result of the prediction units(PUs), and the motion estimation reference frames for prediction units. This system has one raw video file as input, and result in multi encoded video streams of different bitrates at one time after information reusing encoding. Experimental results show that our system can separately save 43.32% and 52.79% encoding time for 1080P and 720P video sequences comparing with traditional several independent x265 encoders, while keeping the video quality almost not decreased.
video encoding; HEVC; x265; encoding information reusing; multi-channel encoding; multi-thread
程棟彬,高志勇,張小云.基于信息復用的多路x265視頻編碼系統設計[J]. 電視技術,2017,41(1):1-5. CHENG D B, GAO Z Y, ZHANG X Y.Implementation and design of multi-channel x265 video encoding system based on encoding units’ information reusing[J]. Video engineering,2017,41(1):1-5.
TN949.292
A
10.16280/j.videoe.2017.01.001
國家自然科學基金項目(61301116)
2016-06-07