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