基于i.MX27的網(wǎng)絡(luò )音視頻通信的實(shí)現
添加H264硬件視頻編解碼器
本文引用地址:http://dyxdggzs.com/article/97894.htmLinphone1.6.0本身具有視頻編解碼功能,默認具有H263 、mpeg4、mjpeg等編解碼器,我們要仿照這些編解碼器的源碼結構添加H264解碼器,重要的是將編解碼器的軟件編解碼部分替換成i.MX27的VPU(視頻處理單元)來(lái)進(jìn)行硬件編解碼,因為i.MX27的CPU處理速度有限,遠及不上PC的CPU,而i.MX27的VPU則是專(zhuān)門(mén)進(jìn)行視頻編解碼處理的協(xié)處理器,在處理視頻數據的時(shí)候是不需要CPU參與。
代碼的添加過(guò)程如下:在向Linphone注冊編解碼器的地方添加H264編解碼器,使得Linphone具備H264編解碼器的功能選項,注冊的內容包括:編解碼器id,一些名稱(chēng)文本等標識符,編解碼器初始化,視頻數據預處理、處理、后處理,編解碼器銷(xiāo)毀(釋放系統資源)等函數鏈接,編解碼器方法(進(jìn)行基本視頻編解碼處理之外的操作)等。注冊好編解碼器后,就是如何真正實(shí)現編解碼器對視頻流的編解碼處理了,也就是編解碼器的初始化,視頻數據預處理、處理、后處理,編解碼器銷(xiāo)毀等函數的實(shí)現。視頻處理的軟件部分主要包括內核空間的驅動(dòng)和編解碼庫以及用戶(hù)空間的應用程序。內核驅動(dòng)負責系統控制和系統資源的申請和釋放,提供一些IOCTRL接口給用戶(hù)空間的應用程序使用調配系統硬件資源;用戶(hù)空間的應用程序調用適當的IOCTRL和編解碼庫函數來(lái)實(shí)現復雜的編解碼系統。
VPU的內核驅動(dòng)主要包括以下功能:模塊初始化、器件初始化、中斷服務(wù)策略、文件操作策略、器件關(guān)閉、編解碼庫、系統IO操作等。
視頻編解碼的計算和絕大部分視頻流的壓縮/解壓縮都是由i.MX27的硬件VPU單元來(lái)完成的,這樣軟件就不需要過(guò)多的控制或者時(shí)間消耗等來(lái)實(shí)現一個(gè)復雜的編解碼系統。VPU的硬件數據流可以用一個(gè)mpeg4格式數據的解碼實(shí)現過(guò)程展示(見(jiàn)圖2)。
硬件編解碼速度快、效率高、功耗和熱功耗低,節省了CPU的資源,實(shí)現了良好畫(huà)質(zhì)的傳輸,這一點(diǎn)充分體現了i.MX27芯片在視頻處理方面的優(yōu)勢。
評論