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