李毅航 張寬 尹雅君 唐俊龍 唐立軍
關(guān)鍵詞: 超高清視頻; 4K視頻流; HEVC編解碼傳輸; 異構(gòu)多核; 視頻分辨率; 編碼速率
中圖分類號(hào): TN919.3?34; TP302.1 ? ? ? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼: A ? ? ? ? ? ? ? ? ? ?文章編號(hào): 1004?373X(2019)06?0121?05
Abstract: The HEVC video codec standard is commonly used to compress and decompress high?definition video data, but for the ultra?high definition video data of 4K and above, the traditional video stream codec transmission method is difficult to achieve high?efficient video compression ratio and compression speed. Therefore, a heterogeneous multi?core video stream transmission method based on ARM+FPGA is proposed in this paper for the HEVC codec of ultra?high definition video stream. The Linux system is built by using the ARM, so as to realize multi?tasking processing and real?time monitoring. The FPGA is used to realize hardware acceleration, so as to receive, convert, process, encode, decode, output and display video streams. The HEVC codec transmission test was conducted on the Zynq UltraScale+MPSOC all programmable platform for the 4K video with a resolution of 3 840×2 160, frame rate of 30 f/s, pixel format of YUV420, color depth of 8 bits, and time duration of 120 s. The test results show that the time duration of the encoding is only 71s, and the compression rate of video data is as high as 6.19%, which can satisfy the codec transmission requirement of the 4K video.
Keywords: ultra?high definition video; 4K video stream; HEVC codec transmission; heterogeneous multi?core; video resolution; encoding rate
隨著4K超高清視頻(分辨率3 840×2 160)不斷的推廣和應(yīng)用,由于圖像清晰度的大幅提高,導(dǎo)致視頻流數(shù)據(jù)量的劇增,因此,迫切需要使用HEVC/H.265高效的視頻編解碼標(biāo)準(zhǔn),以解決海量的視頻圖像傳輸以及儲(chǔ)存的問(wèn)題[1]。而HEVC的編碼復(fù)雜度高,傳統(tǒng)的嵌入式方案很難滿足4K視頻流穩(wěn)定快速的傳輸,保障HEVC編解碼高效壓縮以及提高編解碼速率[2]。
本文采用Zynq UltraScale+MPSOC全可編程平臺(tái),利用軟硬件協(xié)同的機(jī)制,構(gòu)建異構(gòu)多核的軟硬件系統(tǒng)構(gòu)架,探索一種高效的視頻流編解碼傳輸方法。針對(duì)4K視頻流龐大的數(shù)據(jù)量傳輸問(wèn)題,對(duì)視頻直接內(nèi)存存取進(jìn)行研究,以減少數(shù)據(jù)搬運(yùn)過(guò)程中資源的占用;對(duì)視頻流數(shù)據(jù)類型分析,對(duì)不同的視頻數(shù)據(jù)進(jìn)行轉(zhuǎn)換處理研究,來(lái)適配編解碼器需求的格式。根據(jù)編解碼器對(duì)數(shù)據(jù)的吞吐量,研究視頻流傳輸通路的帶寬、時(shí)鐘以及延遲等,來(lái)保證編解碼高效運(yùn)行[3]。
通常采用PC機(jī)進(jìn)行4K視頻HEVC編解碼,但由于自身體積較大,不便集成和小型化,而ARM往往受限于自身的性能不足,難以進(jìn)行HEVC編解碼運(yùn)算,單純的FPGA因?yàn)殚_發(fā)周期過(guò)長(zhǎng),且應(yīng)用形式單一,不能快速適應(yīng)視頻分辨率改變和視頻流格式變化。本文主要探討異構(gòu)多核的視頻流傳輸方法,利用FPGA硬件加速的特性來(lái)設(shè)計(jì)視頻流編解碼傳輸通路,利用ARM多任務(wù)處理與實(shí)時(shí)監(jiān)控的特點(diǎn)來(lái)改變傳輸通路性能參數(shù),高效靈活的方式保證4K視頻流從接收、轉(zhuǎn)移、處理、編解碼和輸出過(guò)程中穩(wěn)定傳輸。傳輸通路總體結(jié)構(gòu)如圖1所示。
1.1 傳輸通路構(gòu)架與速率要求
若以4K圖像30 f/s,YUV420像素格式,顏色深度為8位的視頻流接收,接收的數(shù)據(jù)帶寬[4]將達(dá)到約5.0 Gb/s。為了更好地傳輸4K視頻流,要求傳輸速率[5]最好能達(dá)到接收速率的4倍,即20.0 Gb/s左右。
視頻流接收,采用DisplayPort 1.2高清數(shù)字顯示接口標(biāo)準(zhǔn),通過(guò)4路數(shù)據(jù)傳輸達(dá)到21.6 Gb/s,單路傳輸為5.4 Gb/s,能夠支持4K視頻流傳輸。
視頻流轉(zhuǎn)移,使用VDMA高速數(shù)據(jù)傳輸將視頻流存儲(chǔ)到內(nèi)存中進(jìn)行下一步處理,最高數(shù)據(jù)帶寬能達(dá)到1 024 bit,選擇以128 bit帶寬,200 MHz的頻率運(yùn)行,傳輸速率約為23.8 Gb/s。
視頻流處理,對(duì)采集的視頻流數(shù)據(jù)類型進(jìn)行分析,通過(guò)像素格式轉(zhuǎn)換、像素位數(shù)改變、像素?cái)?shù)據(jù)轉(zhuǎn)移等方式來(lái)得到HEVC編解碼能支持的視頻流格式。
視頻編解碼,搭建多路高帶寬的數(shù)據(jù)線,并盡可能提高時(shí)鐘頻率來(lái)保證視頻的傳輸與提高編解碼器效率。視頻流輸出,對(duì)于解碼完成的數(shù)據(jù),采用2?4路HDMI1.4高清數(shù)字顯示接口標(biāo)準(zhǔn)輸出分屏顯示,每路HDMI數(shù)據(jù)傳輸速率最高達(dá)到10.2 Gb/s,2路以上即可滿足性能需求。
1.2 傳輸通路控制方案
ARM與FPGA的數(shù)據(jù)交互。ARM與FPGA相結(jié)合的異構(gòu)多核構(gòu)架,有利于優(yōu)勢(shì)互補(bǔ),ARM使FPGA處理數(shù)據(jù)以及修改配置更加靈活,F(xiàn)PGA使ARM數(shù)據(jù)運(yùn)算以及數(shù)據(jù)存儲(chǔ)更加迅速,ARM與FPGA通過(guò)AXI總線實(shí)現(xiàn)數(shù)據(jù)交互[6]。FPGA中每個(gè)IP核擁有自己的基地址,ARM通過(guò)AXI總線讀/寫基地址偏移的寄存器數(shù)據(jù),來(lái)檢測(cè)與控制IP核數(shù)據(jù)與參數(shù)。
FPGA與ARM內(nèi)存共享。在ARM端進(jìn)行PetaLinux操作系統(tǒng)移植,進(jìn)行編解碼頂層設(shè)計(jì),使FPGA與ARM協(xié)同工作。通過(guò)FSBL(一級(jí)引導(dǎo)程序)對(duì)ARM進(jìn)行初始化配置,加載FPGA邏輯電路固件,生成U?boot引導(dǎo)Linux內(nèi)核啟動(dòng),讀取設(shè)備樹文件來(lái)加載底層硬件驅(qū)動(dòng),使ARM可以控制驅(qū)動(dòng)程序,分配內(nèi)存地址空間,運(yùn)行Linux系統(tǒng),實(shí)現(xiàn)FPGA與ARM內(nèi)存共享。從而達(dá)到與FPGA數(shù)據(jù)交互的目的。
編解碼的優(yōu)化。ARM通過(guò)操作系統(tǒng)來(lái)控制FPGA中的視頻流編解碼,來(lái)實(shí)現(xiàn)編解碼優(yōu)化與應(yīng)用。把Linux用戶空間分為三層:底層為編解碼控制軟件,包括定制內(nèi)核模塊、定制用戶空間庫(kù)、實(shí)現(xiàn)編解碼基本控制;中層為OpenMAX綜合層,使用開源的多媒體組件標(biāo)準(zhǔn)接口,實(shí)現(xiàn)編解碼軟硬件交互;頂層為Gstreamer應(yīng)用層,利用開源的跨平臺(tái)多媒體構(gòu)架,提供編解碼,以及視頻傳輸通道基本操作。
2.1 ?視頻流高速數(shù)據(jù)傳輸
FPGA內(nèi)部的數(shù)據(jù)傳輸往往采用DMA的方式,但普通DMA的傳輸速度[7]大約為750 Mb/s,遠(yuǎn)不能達(dá)到4K視頻流的傳輸需求,因此,使用視頻流專用的DMA來(lái)搬運(yùn)龐大的視頻數(shù)據(jù)。VDMA能支持?jǐn)?shù)據(jù)帶寬為8的倍數(shù),最高支持1 024 bit,時(shí)鐘頻率能達(dá)到200 MHz左右。在視頻流數(shù)據(jù)映射到內(nèi)存地址之前建立一個(gè)異步行緩沖區(qū)來(lái)處理幀速率變化,最多緩存32幀數(shù)據(jù),設(shè)計(jì)控制和狀態(tài)寄存器與AXI總線連接,便可直接在ARM端配置異步行緩沖區(qū)臨時(shí)保存像素?cái)?shù)據(jù)。同時(shí)ARM也能修改VDMA的數(shù)據(jù)帶寬與時(shí)鐘頻率等參數(shù),實(shí)現(xiàn)VDMA實(shí)時(shí)改變傳輸速率來(lái)存儲(chǔ)數(shù)據(jù)。建立相互獨(dú)立的寫入與讀取線路,對(duì)內(nèi)存地址映射,訪問(wèn)未對(duì)齊內(nèi)存地址數(shù)據(jù),允許幀緩存區(qū)從內(nèi)存中任何地址開始讀寫,保障數(shù)據(jù)不會(huì)丟失。視頻流輸入/輸出與外部時(shí)鐘信號(hào)同步,使VDMA成為異步全雙工通信模式。VDMA結(jié)構(gòu)框圖如圖2所示。
2.3 ?視頻流編解碼傳輸分析
2.3.1 ?編解碼傳輸線路與時(shí)鐘實(shí)現(xiàn)
在相同質(zhì)量的視頻流下,HEVC/H.265編碼率比AVC/H.264提高大約50%,所以HEVC編解碼器需要更高的數(shù)據(jù)吞吐量[9]。設(shè)計(jì)雙路的編解碼數(shù)據(jù)流,數(shù)據(jù)流帶寬達(dá)到128 bit,實(shí)現(xiàn)編解碼同時(shí)進(jìn)行并提高編解碼數(shù)據(jù)流的傳輸速度。
由于整個(gè)傳輸通路的速率瓶頸在于編碼器的編碼速度,故建立編碼器緩存器來(lái)保障編碼器更流暢的編碼。編解碼器都設(shè)計(jì)有一個(gè)32位MCU來(lái)實(shí)現(xiàn)與硬件的交互,MCU接收到來(lái)自ARM的命令,把它分解為多個(gè)slice或者tile級(jí)命令,盡可能地降低編解碼解析命令所花費(fèi)的時(shí)間。
編解碼在超高的工作頻率下運(yùn)行,必須保證時(shí)鐘頻率的穩(wěn)定。鎖相環(huán)是閉環(huán)的控制系統(tǒng),可以鎖定輸入信號(hào)的相位,能輸出精確穩(wěn)定的時(shí)鐘[10]。鎖相環(huán)參考時(shí)鐘頻率高達(dá)667 MHz,實(shí)現(xiàn)編解碼高速運(yùn)算,通過(guò)分頻出4路時(shí)鐘,并提供給編碼器、編碼器的MCU、解碼器與解碼器的MCU,異步的時(shí)鐘能使編解碼器運(yùn)行時(shí)互不干擾,大幅度降低編解碼出錯(cuò)概率。同時(shí)編解碼器的時(shí)鐘并不是固定的,在ARM端的控制下,實(shí)現(xiàn)系統(tǒng)時(shí)鐘的動(dòng)態(tài)調(diào)節(jié),以便編解碼器對(duì)不同類型的視頻流都能進(jìn)行最優(yōu)化的編解碼。編解碼設(shè)計(jì)框圖如圖4所示。
2.3.2 ?傳輸通路延遲性分析
傳輸通路的延遲是研究編解碼傳輸通路一個(gè)很重要的參數(shù)屬性,即指視頻流從接收。經(jīng)過(guò)一系列過(guò)程,再到視頻數(shù)據(jù)顯示所需要的時(shí)間,延遲是層層疊加的,主要包括圖像采集延遲,來(lái)源幀在DMA緩沖延遲、編碼器延遲、傳輸比特流緩沖延遲、網(wǎng)絡(luò)傳輸或者存儲(chǔ)延遲。對(duì)于解碼來(lái)說(shuō),存在緩沖編碼圖像延遲、解碼器延遲、顯示幀緩沖延遲以及顯示器顯示延遲。編解碼器的延遲基本是穩(wěn)定的,為輸入延遲、硬件延遲與輸出延遲的總和。編碼器主要延遲在于對(duì)圖像重新排序時(shí)緩存一幀圖像所花費(fèi)的時(shí)間。解碼器主要延遲在于熵解碼等待的時(shí)間和像素解碼等待的時(shí)間。經(jīng)過(guò)FPGA硬件邏輯分析儀測(cè)試所得傳輸通路各段延遲時(shí)間如圖5所示。
Xilinx公司的Zynq UltraScale+MPSOC ZCU106開發(fā)板包含集成FPGA與ARM的XCZU7EV異構(gòu)芯片,使用該開發(fā)板對(duì)4K視頻流編解碼傳輸方法進(jìn)行測(cè)試與驗(yàn)證。
3.1 視頻流編解碼傳輸通路測(cè)試
通過(guò)超清攝像頭采集RGB視頻數(shù)據(jù),經(jīng)過(guò)VDMA把視頻流映射到內(nèi)存地址,同時(shí)把RGB像素格式轉(zhuǎn)換為YUV420像素格式,對(duì)視頻流進(jìn)行HEVC編碼,再對(duì)視頻流進(jìn)行HEVC解碼,把解碼后的視頻流通過(guò)Displayport 1.2高清數(shù)字顯示接口在顯示屏上顯示。任意采集視頻,視頻圖像播放正常,沒(méi)有出現(xiàn)卡頓、失幀、錯(cuò)位等情況,顯示成像效果如圖6所示,表明視頻流傳輸通路正常運(yùn)行。
3.2 編解碼壓縮效果
為了證明傳輸路通能夠保證4K視頻經(jīng)HEVC編解碼后能穩(wěn)定輸出顯示,對(duì)傳輸通路中耗時(shí)最長(zhǎng),也是傳輸瓶頸所在的編碼部分進(jìn)行測(cè)試。對(duì)視頻分辨率為3 840×2 160,幀率為30 f/s,時(shí)長(zhǎng)120 s,像素格式為YUV420,顏色深度為8位的視頻進(jìn)行H.265編碼。測(cè)試結(jié)果表明,編碼所用時(shí)長(zhǎng)為71 s,遠(yuǎn)小于視頻時(shí)長(zhǎng)120 s,能滿足對(duì)4K視頻播放需求。為了測(cè)試在傳輸通路中編解碼的壓縮率,對(duì)以上的編碼視頻進(jìn)行HEVC解碼,測(cè)試結(jié)果表明,解碼后的視頻原始文件大小為1 307 MB,經(jīng)過(guò)HEVC編碼后的文件大小為81 MB,壓縮率達(dá)到6.19%。
本文采用異構(gòu)多核體系構(gòu)架,利用FPGA實(shí)現(xiàn)4K視頻流編解碼傳輸硬件加速,ARM對(duì)其進(jìn)行多任務(wù)處理和實(shí)時(shí)監(jiān)控,搭建VDMA對(duì)采集的視頻流進(jìn)行搬運(yùn),提高了視頻流傳輸速度,保證了視頻傳輸?shù)姆€(wěn)定性。同時(shí)對(duì)視頻流格式進(jìn)行處理,轉(zhuǎn)換為編解碼支持的視頻流,采用多通道、高帶寬的數(shù)據(jù)通道大幅提高了編解碼傳輸率,搭載Linux系統(tǒng)也使編解碼更具靈活性。這種視頻流編解碼傳輸方法,比傳統(tǒng)處理器在編解碼速率上有著明顯的優(yōu)勢(shì),其壓縮率和壓縮速率能很好地滿足4K超高清視頻流的傳輸要求。
參考文獻(xiàn)
[1] SUZUKI K, TAJIRI T, TAKABA N, et al, Method of downsizing the 4K uncompressed video signal generator [C]// Proceedings of IEEE 6th Global Conference on Consumer Electronics. Nagoya: IEEE, 2017: 1?3.
[2] OH J G, WON Y J, LEE J S S, et al. A convergence broadcasting transmission of fixed 4K UHD and mobile HD services through a single terrestrial channel by employing FEF multiplexing technique in DVB?T2 [J]. Electrical engineering, 2017, 99(3): 1021?1042.
[3] KIM Y, CHOI J S, KIM M. A real?time convolutional neural network for super?resolution on FPGA with applications to 4K UHD 60 fps video services [J]. IEEE transactions on circuits and systems for video technology, 2018, 8: 1.
[4] PETRIN?AK L, GRBI? R, KAPROCKI Z, et al. Challenges in 4K UHD multimedia device testing [C]// Proceedings of International Conference on Zooming Innovation in Consumer Electronics. Novi Sad: IEEE, 2017: 5?8.
[5] HWANG S, SONG J, LEE Y, et al, A 1.62~5.4 Gb/s receiver for display port version 1.2a with adaptive equalization and referenceless frequency acquisition techniques [J]. IEEE transactions on circuits and systems I: regular papers, 2017, 64(10): 2691?2702.
[6] 黃超,魯湛,賀健,等.基于ZYNQ的微型光譜儀高速數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2016,39(3):109?111.
HUANG Chao, LU Zhan, HE Jian, et al. Design of ZYNQ?based high?speed data acquisition system for micro?spectrometer [J]. Modern electronics technique, 2016, 39(3): 109?111.
[7] KAVIANIPOUR H, MUSCHTER S, BOHM C. High performance FPGA?based DMA interface for PCIe [J]. IEEE transactions on nuclear science, 2014, 61(2): 745?749.
[8] SON T N, HOANG T M, DZUNG N T, et al. Fast FPGA implementation of YUV?based fractal image compression [C]// Proceedings of IEEE 5th International Conference on Communications and Electronics. Danang: IEEE, 2014: 440?445.
[9] ARAYACHEEPPREECHA P, PUMRIN S, SUPMONCHAI B. Flexible input transform architecture for HEVC encoder on FPGA [C]// Proceedings of 12th International Conference on Electrical Engineering/Electronics, Computer, Telecommunications and Information Technology. Hua Hin: IEEE, 2015: 2?5.
[10] XIE Changying, ZHANG Maosong, LI Guoli, et al, Design of PLL based On FPGA under unbalanced conditions [C]// Proceedings of IEEE 11th Conference on Industrial Electronics and Applications. Hefei: IEEE, 2016: 315?320.