基于IPP庫(kù)的MPEG-4視頻傳輸系統(tǒng)設(shè)計(jì)
2 系統(tǒng)的模塊分析及基于IPP庫(kù)的軟件實(shí)現(xiàn)
本系統(tǒng)由視頻采集模塊,基于IPP庫(kù)的MPEG4編解碼模塊,RTP傳輸模塊和視頻回放模塊組成,整個(gè)系統(tǒng)的軟件流程圖如圖2所示,下面就該圖對(duì)各個(gè)模塊進(jìn)行簡(jiǎn)要分析。
圖2 系統(tǒng)軟件流程圖
2.1 視頻采集模塊
視頻采集由USB攝像頭來(lái)實(shí)現(xiàn),采用通用的Video4Linux API 進(jìn)行編程。Video4Linux是嵌入式LINUX為圖像傳感器之類的語(yǔ)音圖像設(shè)備提供接口函數(shù)。通過(guò)打開(kāi)/dev/video0 設(shè)備文件對(duì)攝像頭進(jìn)行操作,得到Y(jié)UV420格式的視頻數(shù)據(jù)。采集視頻數(shù)據(jù)的過(guò)程為:打開(kāi)設(shè)備文件,查詢并確認(rèn)設(shè)備性能,對(duì)采集窗口,顏色模式,幀狀態(tài)初始化,采用mmap()內(nèi)存映射方式實(shí)現(xiàn)共享內(nèi)存,開(kāi)始采集圖像數(shù)據(jù),阻塞等待驅(qū)動(dòng)緩沖好一幀完整的圖像,循環(huán)采集直至程序退出。由于采用了內(nèi)存映射方式而不是read(),write()等文件操作函數(shù),繞過(guò)了內(nèi)核緩沖區(qū),加速了I/O訪問(wèn)。同時(shí),該模塊開(kāi)辟了兩塊視頻緩沖區(qū),一塊用于采集的同時(shí)另一塊用于發(fā)送,顯著提高了采集效率。
2.2.1 IPP庫(kù)簡(jiǎn)介
IPP是Intel基于其系列處理器開(kāi)發(fā)的一套跨平臺(tái)的集成性能函數(shù)庫(kù)(Integrated Performance Primitives)的縮寫(xiě)[3,5],它提供了廣泛的多媒體功能,包括音視頻編解碼(如MPEG4,G.723),圖像處理,語(yǔ)音識(shí)別及加密機(jī)制。 Intel IPP 針對(duì)包括PXA27X系列的大量微處理器進(jìn)行優(yōu)化,采用跨平臺(tái)的通用API,提供圖像處理、顏色轉(zhuǎn)換、過(guò)濾、變換,以及算術(shù)、統(tǒng)計(jì)與圖形運(yùn)算等各種函數(shù),為軟件應(yīng)用程序提供了一個(gè)友好的連接界面,不但節(jié)省了開(kāi)發(fā)成本以及研發(fā)時(shí)間,還使得多媒體應(yīng)用程序在INTEL處理器上的性能大大改善。
2.2.2 IPP庫(kù)函數(shù)介紹
一般的IPP函數(shù)名如下:
ippdata-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是無(wú)符號(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即圈選范圍。
評(píng)論