當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]基于IPP庫的MPEG-4視頻傳輸系統(tǒng)設(shè)計(jì)

隨著網(wǎng)絡(luò)及通信技術(shù)的發(fā)展,形式多樣的嵌入式設(shè)備作為繼PC機(jī)后的信息處理工具正日益滲透到社會(huì)生活的各個(gè)領(lǐng)域。在IP化和視頻化的雙重推動(dòng)下,以嵌入式設(shè)備作為視頻處理與傳輸終端在視頻監(jiān)控,視頻會(huì)議等領(lǐng)域得到越來越廣泛的應(yīng)用。為了進(jìn)一步提高傳輸?shù)膶?shí)時(shí)性和圖像質(zhì)量,本文在硬件平臺(tái)上采用 Intel新一代的XScale處理器PXA270,增強(qiáng)了媒體處理能力,降低了系統(tǒng)功耗。同時(shí),為了最大限度的發(fā)揮處理器的性能優(yōu)勢(shì),本文采用 INTEL針對(duì)PXA27X系列開發(fā)的高性能集成函數(shù)庫,即IPP庫函數(shù)作為MPEG-4視頻編解碼的函數(shù)骨架,采用MPEG-4編解碼,在LINUX嵌入式操作系統(tǒng)上實(shí)現(xiàn)并優(yōu)化了視頻傳輸系統(tǒng)。

1 系統(tǒng)硬件組成及工作流程

1.1 系統(tǒng)組成

本系統(tǒng)硬件組成如圖1所示,采用Intel公司的嵌入式處理器PXA270作為主控CPU,該款處理器的主頻率可達(dá)520MHz,可以滿足系統(tǒng)在編解碼條件下的速度要求。其Wireless MMX技術(shù)有效提高了處理視頻數(shù)據(jù)的能力,獨(dú)有的SpeedStep技術(shù)使其兼?zhèn)淞烁咝阅芎偷凸牡奶攸c(diǎn)。根據(jù)系統(tǒng)的運(yùn)算量和系統(tǒng)文件的大小,核心系統(tǒng) Flash存儲(chǔ)器和SDRAM存儲(chǔ)器容量分別設(shè)計(jì)為32M和64M。外設(shè)接口方面,通過USB接口連接以O(shè)V511作為控制芯片的高性能USB攝像頭,提高了傳輸速率并避免了低帶寬條件下的圖像跳動(dòng)現(xiàn)象。通過LCD控制接口連接LCD顯示模塊,通過系統(tǒng)總線連接10M/100M自適應(yīng)以太網(wǎng)芯片 LAN91C11。同時(shí),系統(tǒng)還預(yù)留了RS232串口供調(diào)試使用。

1.2 MPEG-4視頻傳輸系統(tǒng)的工作流程

該系統(tǒng)的主要工作流程如下:

發(fā)送端:視頻數(shù)據(jù)經(jīng)USB攝像頭采集進(jìn)入本系統(tǒng),由PXA270對(duì)原始的YUV420格式的視頻數(shù)據(jù)進(jìn)行MPEG-4編碼,采用IPP庫函數(shù)進(jìn)行DCT變換[2],量化,預(yù)測(cè),運(yùn)動(dòng)估計(jì)及運(yùn)動(dòng)補(bǔ)償,熵編碼后,把壓縮后的視頻數(shù)據(jù)打成RTP包,經(jīng)以太網(wǎng)控制模塊送入以太網(wǎng)。

接收端:將接收的RTP包還原成MPEG4碼流[2],仍采用IPP庫函數(shù)由PXA270進(jìn)行MPEG-4解碼,將解碼后的視頻數(shù)據(jù)運(yùn)用FrameBuffer機(jī)制送入LCD,由LCD顯示模塊來回放發(fā)送端采集到的視頻圖像,達(dá)到視頻傳輸?shù)哪康摹?br />   

圖1 視頻傳輸系統(tǒng)硬件組成框圖

[!--empirenews.page--]

2 系統(tǒng)的模塊分析及基于IPP庫的軟件實(shí)現(xiàn)

本系統(tǒng)由視頻采集模塊,基于IPP庫的MPEG4編解碼模塊,RTP傳輸模塊和視頻回放模塊組成,整個(gè)系統(tǒng)的軟件流程圖如圖2所示,下面就該圖對(duì)各個(gè)模塊進(jìn)行簡(jiǎn)要分析。


圖2 系統(tǒng)軟件流程圖

2.1 視頻采集模塊

視頻采集由USB攝像頭來實(shí)現(xiàn),采用通用的Video4Linux API 進(jìn)行編程。Video4Linux是嵌入式LINUX為圖像傳感器之類的語音圖像設(shè)備提供接口函數(shù)。通過打開/dev/video0 設(shè)備文件對(duì)攝像頭進(jìn)行操作,得到Y(jié)UV420格式的視頻數(shù)據(jù)。采集視頻數(shù)據(jù)的過程為:打開設(shè)備文件,查詢并確認(rèn)設(shè)備性能,對(duì)采集窗口,顏色模式,幀狀態(tài)初始化,采用mmap()內(nèi)存映射方式實(shí)現(xiàn)共享內(nèi)存,開始采集圖像數(shù)據(jù),阻塞等待驅(qū)動(dòng)緩沖好一幀完整的圖像,循環(huán)采集直至程序退出。由于采用了內(nèi)存映射方式而不是read(),write()等文件操作函數(shù),繞過了內(nèi)核緩沖區(qū),加速了I/O訪問。同時(shí),該模塊開辟了兩塊視頻緩沖區(qū),一塊用于采集的同時(shí)另一塊用于發(fā)送,顯著提高了采集效率。

2.2 基于IPP庫的MPEG4編解碼

2.2.1 IPP庫簡(jiǎn)介

IPP是Intel基于其系列處理器開發(fā)的一套跨平臺(tái)的集成性能函數(shù)庫(Integrated Performance Primitives)的縮寫[3,5],它提供了廣泛的多媒體功能,包括音視頻編解碼(如MPEG4,G.723),圖像處理,語音識(shí)別及加密機(jī)制。 Intel IPP 針對(duì)包括PXA27X系列的大量微處理器進(jìn)行優(yōu)化,采用跨平臺(tái)的通用API,提供圖像處理、顏色轉(zhuǎn)換、過濾、變換,以及算術(shù)、統(tǒng)計(jì)與圖形運(yùn)算等各種函數(shù),為軟件應(yīng)用程序提供了一個(gè)友好的連接界面,不但節(jié)省了開發(fā)成本以及研發(fā)時(shí)間,還使得多媒體應(yīng)用程序在INTEL處理器上的性能大大改善。

2.2.2 IPP庫函數(shù)介紹

一般的IPP函數(shù)名如下:

ipp<data-domain><name>_<datatype>[<descriptor>](<arguments> ) ;

這里的data-domain所謂的域,指的是該IPP函數(shù)所屬的功能范圍。i(images/video)代表二維圖像處理

datatype數(shù)據(jù)類型的定義是<bit depth>位數(shù)加上<bit interpretation>位解釋組成。位數(shù)有<1|8|16|32|64>,位解釋則有<u|s|f>[c]。

這里u是無符號(hào),s是有符號(hào),f是浮點(diǎn)數(shù),c是復(fù)數(shù)。

descriptor是描述符,描述要操作的數(shù)據(jù)。

C加數(shù)字n表明圖像數(shù)據(jù)有幾個(gè)顏色頻道,1|2|3|4。

I表示操作僅在此數(shù)據(jù)內(nèi)存的范圍內(nèi)進(jìn)行,不需要多余的內(nèi)存空間。

R表示需要指定ROI即圈選范圍。

[!--empirenews.page--]

2.2.3 MPEG-4編解碼中的關(guān)鍵IPP庫函數(shù)

基于IPP庫的MPEG-4編解碼系統(tǒng)框圖如圖3所示,下面來具體介紹MPEG4編解碼中用到的關(guān)鍵的IPP庫函數(shù)[1,4]:

DCT變換:

ippiDCT8x8Fwd_Video_8u16s_C1R(const Ipp8u * pSrc,  int srcStep,  Ipp16s * pDst);

功能描述:將pSrc指向的8X8圖像塊采樣點(diǎn)(空間域)進(jìn)行前向離散余弦變換,轉(zhuǎn)換到 pDst指向的一組變換系數(shù)(變換域)。

量化:

ippiQuantIntra_MPEG4_16s_I (Ipp16s * pSrcDst,  Ipp8u QP,  int blockIndex,  const int * pQMatrix);

功能描述:將輸入的DCT系數(shù)量化后,重新存儲(chǔ)到pSrcDst指向的存儲(chǔ)空間,其中QP是量化系數(shù)

VLC編碼:

ippiEncodeVLCZigzag_Inter_MPEG4_16s1u       對(duì)幀間塊進(jìn)行之字型掃描并VLC編碼

運(yùn)動(dòng)估計(jì)和運(yùn)動(dòng)補(bǔ)償:

ippiMCBlock_RoundOff_8u----進(jìn)行運(yùn)動(dòng)補(bǔ)償并將補(bǔ)償結(jié)果復(fù)制到當(dāng)前塊

ippiMotionEstimation_16x16_SEA----完成16X16大小的運(yùn)動(dòng)補(bǔ)償,它不僅覆蓋了16X16,還包括了8X8的整像素和半像素搜索。同時(shí),該函數(shù)還決定了幀內(nèi)或幀間的選擇

ippiEncodeMV_MPEG4_8u16s----搜索預(yù)測(cè)的運(yùn)動(dòng)向量并對(duì)殘差進(jìn)行編碼

以上只選取了MPEG4編碼端用到的幀內(nèi)/幀間關(guān)鍵的IPP庫函數(shù),而解碼端的VLC解碼,逆量化以及逆DCT變換是編碼的逆過程,對(duì)于各個(gè)功能模塊相對(duì)應(yīng)的IPP庫函數(shù)在IPP庫參考文檔中有詳細(xì)敘述,在此不再贅述。


圖3  MPEG-4編解碼系統(tǒng)框圖

[!--empirenews.page--]

2.3 視頻傳輸模塊

在壓縮視頻流通過IP網(wǎng)絡(luò)傳輸之前必須打包。由于TCP協(xié)議丟包重傳的特性增加了抖動(dòng)和失真,不符合MPEG-4視頻傳輸對(duì)時(shí)延的嚴(yán)格要求,本系統(tǒng)采用UDP來傳輸,但UDP不保證可靠傳輸,接收端需要通過RTP/RTCP來檢測(cè)丟包。RTP協(xié)議提供了時(shí)間戳,序列號(hào)來控制實(shí)時(shí)數(shù)據(jù)的流放。發(fā)送端在數(shù)據(jù)包里隱蔽的設(shè)置了時(shí)間標(biāo)簽,接收端依照時(shí)間標(biāo)簽按照正確的速率恢復(fù)成原始的實(shí)時(shí)的數(shù)據(jù)。

2.4 視頻回放模塊

本系統(tǒng)采用FrameBuffer機(jī)制在LCD上實(shí)現(xiàn)視頻信息的顯示。FrameBuffer是一種能夠提取圖形的硬件設(shè)備,是用戶進(jìn)入圖形界面很好的接口,這種接口將顯示設(shè)備抽象為幀緩沖區(qū)。用戶可以把它看作一塊內(nèi)存,只要將其映射到進(jìn)程地址空間,就可以直接進(jìn)行讀寫操作,而寫操作可以立即反應(yīng)在屏幕上。在應(yīng)用程序中,首先打開/dev/fb0設(shè)備文件,隨后用ioctl操作取得屏幕的分辨率和bpp值,從而計(jì)算出屏幕緩沖區(qū)的大小,并將該緩沖區(qū)映射到用戶空間,最后就可直接對(duì)屏幕緩沖區(qū)進(jìn)行圖片顯示。由于本系統(tǒng)所采用的LCD只支持RGB格式的視頻流,而經(jīng)MPEG4 解碼后的數(shù)據(jù)為YUV格式的,所以在顯示之前還需運(yùn)用IPP函數(shù)ippiYUV420ToRGB565_8u16u_P3C3R進(jìn)行YUV到RGB格式的轉(zhuǎn)換。

3 結(jié)語

本文介紹了視頻傳輸系統(tǒng)各個(gè)模塊的功能和軟件實(shí)現(xiàn),重點(diǎn)介紹了基于IPP的MPEG-4編解碼模塊。從實(shí)際效果來看,在 XScale PXA270中利用IPP庫編解碼后的編碼速率比未用IPP庫提高了70%~90%,大大提高了實(shí)時(shí)性。本文的研究成果可以在視頻監(jiān)控,多媒體會(huì)議等很多領(lǐng)域得到更廣泛的應(yīng)用。

本文作者創(chuàng)新點(diǎn):在基于Intel Xscale構(gòu)架的PXA270嵌入式設(shè)備上,使用IPP為MPEG-4編解碼編寫的底層API函數(shù)對(duì)視頻傳輸系統(tǒng)程序結(jié)構(gòu)進(jìn)行重組并優(yōu)化,對(duì)IPP的語法規(guī)則和其中的關(guān)鍵算法給出了解釋。經(jīng)優(yōu)化后的系統(tǒng)傳輸效率和圖象質(zhì)量明顯提高。

參考文獻(xiàn):
[1]Intel Integrated Performance Primitives on Intel Personal Internet Client Architecture Processors Reference Manual Version 5.0 [S].Intel.com ,2005
[2]求是科技.Visual C++音視頻編解碼技術(shù)及實(shí)踐[M].人民郵電出版社,2006
[3]洪艷偉,楊斌.嵌入式手持設(shè)備及其基于IPP的優(yōu)化. [J].《微計(jì)算機(jī)信息》,2007,2-2:23
[4]Iain E.G.Richardson 著 歐陽合 韓軍譯. H.264和MPEG-4視頻壓縮[M].國防科技大學(xué)出版社,2004
[5]鄭靈翔等.嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用開發(fā)[M].北京航天航空大學(xué)出版社,2006
 

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉