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