国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于IMX53的視頻編碼的研究與應(yīng)用

2014-01-01 03:10:12丁建橋張正華
無線電通信技術(shù) 2014年2期
關(guān)鍵詞:人民郵電出版社緩沖區(qū)調(diào)用

丁建橋,周 磊,張正華

(揚州大學(xué)信息工程學(xué)院,江蘇揚州225000)

0 引言

多媒體信息技術(shù)和計算機網(wǎng)絡(luò)得到飛速發(fā)展,視頻作為信息的核心載體之一,能夠給人最大直觀的視覺感受,所以已成為電子信息技術(shù)領(lǐng)域研究的熱點,得到了最廣泛的應(yīng)用[1]。但是視頻信號數(shù)字化后的數(shù)據(jù)量非常龐大,這無疑給存儲器的存儲容量、通信線路的信道傳輸率以及計算機的處理速度都帶來了極大的壓力。解決這一問題,單純通過擴大存儲器容量和增加通信線路的傳輸率是不現(xiàn)實的,因此需要對視頻數(shù)據(jù)進行壓縮編碼?,F(xiàn)如今,對視頻的壓縮編碼從實現(xiàn)方式來分可分為軟件編碼和硬件編碼[2]。由于在相同硬件平臺上,硬件編碼速率要比軟件編碼快的多,并且在運行過程中占用平臺的資源也很少,因此采用Frescale公司的IMX53對多種分辨率的原始視頻序列進行編解碼。

1 VPU的工作流程

IMX53中的VPU是一個高性能和多標(biāo)準(zhǔn)的視頻編解碼引擎,支持對高達(dá)1 280×720像素的視頻序列進行編碼。VPU的內(nèi)部工作流程如圖1所示。主處理器通過IP總線對BIT處理器進行控制。在視頻編解碼器編碼或解碼一個宏塊之前,BIT處理器配置各子塊,使能它們,并且配置如何創(chuàng)建該編解碼器管道。然后,宏塊處理器根據(jù)BIT處理器的配置來對視頻編碼模塊的運行進行控制。視頻編碼模塊通過AXI總線在外部存儲器中讀取YUV格式的原始視頻序列,并對其進行H.264格式的編碼,然后再把編碼后的視頻通過AXI總線存儲到外部存儲器。如果對一個宏塊的處理全部完成,宏塊處理器就會通知BIT處理器對宏塊的編解碼已經(jīng)完成,然后BIT處理器把整個操作的結(jié)果和狀態(tài)信息通過IP總線返回給主處理器。

圖1 VPU內(nèi)部工作流程

2 VPU控制接口

VPU的 API提供了一個簡單的方法來控制VPU。API控制VPU的大體框圖如圖2所示。主處理器向VPU發(fā)送命令和相應(yīng)的參數(shù)來預(yù)定義API,然后主機應(yīng)用程序通過調(diào)用一系列的API函數(shù)來控制VPU,接著從API函數(shù)中給出的命令被寫入到一個特定的I/O寄存器上,而輸入輸出的數(shù)據(jù)結(jié)構(gòu)通過一系列的命令I(lǐng)/O寄存器傳輸,這些寄存器包含輸入的參數(shù)和輸出的結(jié)果。VPU系統(tǒng)管理器按照接收到的命令和參數(shù)執(zhí)行相應(yīng)的操作,然后編解碼模塊根據(jù)相應(yīng)編解碼庫對原始視頻進行處理。最后ARM主機從VPU接收到一個操作完成的中斷請求后,主機應(yīng)用程序接收到對應(yīng)的處理結(jié)果,并且調(diào)用API函數(shù)結(jié)束本次幀的處理或繼續(xù)處理下一個幀。

圖2 主機接口和VPU的軟件控制

3 應(yīng)用程序設(shè)計

編碼的原始數(shù)據(jù)流來自外部存儲器。具體的視頻編碼操作流程如圖3所示。

圖3 編碼操作流程

要對這些數(shù)據(jù)流進行編碼操作,應(yīng)用程序要完成以下操作:

首先,調(diào)用vpu_Init()函數(shù)完成對VPU的初始化,接著調(diào)用vpu_Encopen()函數(shù)啟動一個新的編碼操作,創(chuàng)建一個編碼器實例。在創(chuàng)建該實例之前,調(diào)用IOGetPhyMem()來分配連續(xù)的物理比特流緩沖區(qū),其中入口參數(shù)為encop.bitstreamBuffer。調(diào)用IOGetVirMem()得到比特流緩沖區(qū)的相對應(yīng)的虛擬地址,然后在用戶空間把比特流寫入到該地址。

使用命令EBC_SET_SEARCHRAM_PARAM和IOGetIramBase()來查詢系統(tǒng)中內(nèi)部RAM對于VPU的使用情況,然后使用vpu_EncGetInitialInfo()獲得對于編碼器操作來說至關(guān)重要的參數(shù),例如所需的幀緩沖區(qū)大小等等,再按照從vpu_EncGetInitialInfo()返回的所需的幀緩沖區(qū)大小,分配一個合適大小的幀緩沖區(qū),調(diào)用vpu_EncRegisterFrameBuffer()來通知VPU。接著調(diào)用vpu_EncGiveCommand()通過特定的命令和參數(shù)來為編碼后的數(shù)據(jù)創(chuàng)建高等級的報頭語法(創(chuàng)建了一個編碼器實例后,必須從新配置編碼器操作)。

調(diào)用vpu_EncStartOneFrame()開始對視頻序列進行逐幀的編碼操作。調(diào)用vpu_WaitforInt()來等待幀編碼操作完成的中斷信號,并且使用vpu_Is-Busy()檢查VPU是否處于空閑狀態(tài),如果VPU空閑,繼續(xù)下一步;否則,繼續(xù)等待。當(dāng)對一個幀編碼完成后,使用vpu_EncGetOutputInfo()得到編碼器的輸出信息以及檢查編碼器操作結(jié)果,例如圖像類型、地址以及產(chǎn)生的比特流的大小等。如果還有其他的幀需要編碼,則再次調(diào)用vpu_EncStartOneFrame()繼續(xù)對視頻進行編碼操作;否則通過關(guān)閉實例來終止對該序列的編碼處理,該操作通過調(diào)用vpu_Enc-Close()來完成。使用IOFreePhyMem()和IOFree-VirtMem()釋放所有的分配的存儲空間。最后調(diào)用vpu_UnInit()釋放系統(tǒng)的資源。

為原始視頻的圖像幀分配幀緩沖區(qū)的應(yīng)用程序操作步驟如下:

首先,根據(jù)幀緩沖區(qū)的個數(shù)和大小為其分配內(nèi)存空間。然后,再分配用于存儲幀緩沖區(qū)指針地址的內(nèi)存空間。接著,根據(jù)所需的個數(shù)分配幀緩沖區(qū),并分別把每一個幀緩沖區(qū)中圖像幀亮度地址和色度地址等信息存儲到之前分配的內(nèi)存空間中。根據(jù)通過vpu_EncGetInitialInfo()函數(shù)得到的信息參數(shù),調(diào)用vpu_EncRegisterFrameBuffer()函數(shù)為VPU內(nèi)部圖像幀分配寄存器幀緩沖區(qū),其中包括參考幀、重建幀等等。最后,如果原始視頻來自視頻傳感器則要對視頻傳感器進行相應(yīng)的配置,否則為原始視頻的圖像幀分配一個單獨的幀緩沖區(qū),并且把原始視頻的圖像幀的地址信息存儲到之前分配的內(nèi)存空間中。

4 實驗結(jié)果及分析

本文的實驗測試平臺為Freescale公司的IMX53 Quick Start Board。VPU的固件版本是13.4.41,VPU代碼庫版本是5.3.2。使用的操作系統(tǒng)為由LTIB內(nèi)核配置系統(tǒng)構(gòu)建的Linux操作系統(tǒng)。開發(fā)板和PC主機通過串口和網(wǎng)口進行通信,串口用于控制終端Minicom對開發(fā)板的控制通信,網(wǎng)口用于NFS服務(wù)通信。通過編譯VPU測試程序,然后在IMX53上運行,來測試VPU的H.264標(biāo)準(zhǔn)的編碼性能。

由于1 280×720像素的視頻是現(xiàn)在主流的高清視頻格式,而CIF格式視頻在監(jiān)控領(lǐng)域得到廣泛應(yīng)用。因此,測試對象是從測試視頻網(wǎng)站 http://media.xiph.org/video/derf/下載的 8段 YUV 格式的原始視頻序列,規(guī)格分別為1 280×720像素的高清視頻(如表4所示)與352×288像素CIF格式的視頻(如表5所示)。

表4 1 280×720像素高清視頻實驗結(jié)果

表5 CIF格式視頻實驗結(jié)果

視頻壓縮的目標(biāo)是在保證視頻的主觀質(zhì)量的前提下盡可能地提高壓縮率[3],因此對編碼器性能的評價分為客觀評價和主觀評價。主觀評價就是通過人在給定的觀察條件下觀察視頻圖像,對視頻圖像的優(yōu)劣做主觀評定,然后對評分進行統(tǒng)計平均來得到評價結(jié)果[3,4]??陀^評價通常采用壓縮比Cr和編碼率來衡量。設(shè)圖像的尺寸為M×N個像素,每個像素為BpBit,壓縮后的總比特數(shù)為Bc。

壓縮比定義為:

由文獻(xiàn)[5]了解,對視頻進行H.264標(biāo)準(zhǔn)的編碼在保證較高壓縮比的情況下有很好的視頻圖像質(zhì)量,并且本文是測試視頻編碼器VPU對視頻編碼標(biāo)準(zhǔn)H.264的編碼性能。因此在實驗中主要對編碼器VPU的性能進行客觀評價。

4.1 VPU性能的主觀評價

通過調(diào)用VPU對表4和表5中的8段YUV格式的原始視頻進行H.264格式的視頻編碼。完成編碼后使用支持H.264標(biāo)準(zhǔn)的播放器對編碼后的8段視頻分別進行播放。這8段視頻均能夠流暢播放,視頻圖像畫面清晰,無失真和塊效應(yīng)。在編碼后的視頻Shields和Paris中截取的圖像如圖4和圖5所示。

圖4 Shields的視頻截圖

圖5 Paris視頻截圖

4.2 VPU性能的客觀評價

測試后得到的數(shù)據(jù)分別記入表4和表5中。由于VPU對視頻的處理是基于幀的,因此在本實驗中使用編碼率的單位為fps(Frame Per Second)。

由表4和表5中的實驗結(jié)果看出,在IMX53上對YUV格式的原始視頻序列進行H.264標(biāo)準(zhǔn)的壓縮編碼,能夠在保證視頻的主觀視覺質(zhì)量的前提下得到很高的壓縮比,尤其是對于像CIF格式的低分辨率視頻壓縮效果更為顯著,但是對于像parkrun圖像背景和對象運動劇烈的視頻壓縮比較低。VPU對視頻進行編碼的速率也很高,最高可對幀頻為30 fps的1 280×720像素高清視頻進行實時的壓縮編碼。

5 結(jié)束語

以IMX53開發(fā)板為平臺,通過調(diào)用VPU模塊對YUV格式的原始視頻進行H.264標(biāo)準(zhǔn)的壓縮編碼。該方案支持通過不同方式獲得的不同分辨率的原始視頻的壓縮編碼。IMX53實驗結(jié)果證明該方案對原始視頻的壓縮效率非常高,從而更加有利于視頻的存儲和傳輸。

[1] 畢厚杰.新一代視頻壓縮編碼標(biāo)準(zhǔn)—H264/AVC[M].北京:人民郵電出版社,2005:11 -12.

[2] 劉恩虹,周兵,葛寶珊,等.基于H.264的嵌入式視頻編碼器[J].計算機工程,2009,35(9):227 -230.

[3] 劉峰.視頻圖像編碼技術(shù)及國際標(biāo)準(zhǔn)[M].北京:北京郵電大學(xué)出版社,2005.

[4] 李?。曨l質(zhì)量的主觀評估方法研究[D].西安:西安電子科技大學(xué),2009:23 -27.

[5] 鄧中亮,段大高,崔巖松,等.基于H.264的視頻編/解碼與控制技術(shù)[M].北京:北京郵電大學(xué)出版社,2010.

[6] LUTHRA A,SULLIVAN G J,WIEGAND T.Introduction to the Special Issue on the H.264/AVC Video Coding Standard [J].IEEE Journals and Magazines,2003:557 -559.

[7] HALLINAN Christopher.Embedded Linux Primer(Second Edition)[M].北京:人民郵電出版社,2012.

[8] 鳥哥.鳥哥的Linux私房菜[M].北京:人民郵電出版社,2010.

[9] MTTHEW N,STONES R.Linux程序設(shè)計(第 4版)[M].陳建,宋健健,譯.北京:人民郵電出版社,2010.

[10]莫爾勒.深入 Linux內(nèi)核架構(gòu)[M].郭旭,譯.北京:人民郵電出版社,2010.

[11]STEVENS W R,RAGO S A.UNIX 環(huán)境高級編程(第2版)[M].尤晉元,張亞英,戚正偉,譯.北京:人民郵電出版社,2006.

猜你喜歡
人民郵電出版社緩沖區(qū)調(diào)用
小日子,大自在
讀者(2024年5期)2024-03-04 03:13:25
嵌入式系統(tǒng)環(huán)形緩沖區(qū)快速讀寫方法的設(shè)計與實現(xiàn)
對某人而言,是為全部
核電項目物項調(diào)用管理的應(yīng)用研究
LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
基于系統(tǒng)調(diào)用的惡意軟件檢測技術(shù)研究
趙厚麟 :贊《通信世界》,常盛不衰;賀《通信世界》,惠及全球!
通信世界(2016年25期)2016-04-11 01:30:52
關(guān)鍵鏈技術(shù)緩沖區(qū)的確定方法研究
利用RFC技術(shù)實現(xiàn)SAP系統(tǒng)接口通信
Neighbor self-optim izing process design based on X2 in TD-LTE system
绿春县| 信宜市| 博客| 盱眙县| 洪泽县| 秦安县| 绥中县| 福泉市| 东台市| 潮州市| 手游| 巴青县| 额济纳旗| 常宁市| 宜良县| 宝山区| 莱芜市| 灵宝市| 偃师市| 双桥区| 靖西县| 铜梁县| 广州市| 石门县| 永和县| 柯坪县| 江门市| 大同市| 比如县| 涪陵区| 北宁市| 海口市| 梅河口市| 吴旗县| 华安县| 修文县| 中宁县| 静海县| 冀州市| 公主岭市| 鸡东县|