海思HI35XX之----視頻處理單元各通道間的關系
最近在折騰HI3518C的芯片,應用到IPCamera上,最終獲取多路不同分辨率的視頻流供不同需求的預覽切換。此處簡單記錄一下視頻前處理元VPSS(Video Process Sub-System)的多通道間的關系以及使用心得。
HI3518C的視頻子系統包括:視頻系統初始化模塊(MPP_SYS_CONF_S)、視頻輸入模塊(VI)、視頻前處理模塊(VPSS)、視頻編碼模塊(VENC)和視頻輸出模塊(VO)組成。
HI3518C的VPSS是視頻數據編碼前的預處理單元,主要完成對一幅輸入圖像的統一預處理,如去噪、去隔行等,然後再對各通道分別進行縮放、銳化等處理(如:PreScale、De-ring/De-block、NR、IE、DIE、Sharpen 等,具體可參見VPSS_GRP_ATTR_S結構體),最後輸出多種不同分辨率的圖像。
其中,HI3518C對用提供GROUP的概念來管理VPSS,最多支持128個GROUP(我目前只使用了一個組:GROUP0)。VPSS的GROUP又包含多個通道(CHANNEL),對於不同規格的芯片,每個組包含的通道數也不相同,規格文檔上都有詳細說明。
HI3518C的各個GROUP包含8個CHANNEL,其中2個物理通道(PHY CHN)、一個直通通道(Bypass)和5個擴展通道(EXT CHN)。
物理通道是由硬件提供的,各物理通道的功能和限制各不相同;直通通道具備CROP功能,可以把不需要作預處理的一幅幅圖像直接透傳給接收者;擴展通道具備縮放功能,當它綁定到物理通道後,可以把從物理通道獲取到的圖像縮小或放大成用戶所需要的不同分辨率的圖像。Hi3518C 提供 5 路擴展通道以提供更好的靈活性,擴展通道具備縮放和幀率控制功能,不經過其他硬件算法單元處理。
用戶在使用的時候,需要首先創建VPSS GROUP,然後設置好GROUP屬性並啟用VPSS GROUP之後,再把VI作為源通道,把VPSS作為目標通道,通過調用 HI_MPI_SYS_Bind 綁定VI到VPSS,就可以建立視頻輸入到視頻預處理間的通路,使得前端采集到的視頻數據經由此通路到達VPSS單元。註意,每個 GROUP 僅可與一個輸入源綁定。
然後,就是根據實際需要來創建多個VPSS CHANNEL,從CHANNEL中獲得所需要的目標分辨率的圖像輸出了。
HI3518C的物理通道0無縮放能力,支持銳化,不支持抽場,一般用於大碼流編碼和JPEG抓拍。
HI3518C的物理通道1,水平、垂直均最大支持 8 倍縮小,水平、垂直均最大支持 8 倍放大,支持銳化, 不支持抽場,一般用於小碼流編碼和CVBS(復合視頻廣播信號)預覽。
因此,用戶可以通過CHANNEL(0)來獲取到前端圖像采集模塊所支持的最大像素分辨率的圖像,也就是說,如果前端sensor支持的最大圖像分辨率為1920*1080像素,那麽經CHANNEL0所得到的圖像就是1920*1080像素格式,並且不可以把該通道的數據再作為其它擴展通道的源來進行圖像的放大或縮小處理。
用戶可以通過CHANNEL(1)來獲取到的圖像為用戶任意指定的合法的像素大小,通過指定像素格式及寬高大小,進行預處理後可以作為視頻編碼模塊(VENC)的輸入。同時,用戶可以把該通道作為後面所要建立的擴展通道的源,通過設置所要建立的擴展通道的屬性(主要指:綁定的源通道號、圖像幀率、圖像寬高等,見VPSS_EXT_CHN_ATTR_S結構體),再經由各擴展通道來獲取到的所需的目標分辨率。
用戶還可通過擴展通道CHANNEL(3、4、5、6、7)來獲取除VI所支持的最大分辨率以外的各種符合標準的不同分辨率圖像,比如前端sensor支持最大分辨率為1920*1080,那麽結合擴展通道的使用,用戶就可以獲取到HD720(1280*720)、VGA(640*480)、QVGA(320*240)、CIF(352*288)、QCIF(176*144)等分辨率的圖像了。
註意,當把通道 1 作為輸入源的時候,要設置通道 1 為USER模式。因為HI3518C只有兩個物理通道,通道0不具備縮放功能,所以只有通道1可以作為擴展通道的源,對圖像進行縮放處理。
其中,VPSS GROUP有兩種工作模式:AUTO 和 USER,兩種模式間可動態切換。默認的工作模式為 AUTO,此模式下各通道僅可與一個接收者綁定。若想使用 USER 模式,則需調用 MPI 接口進行設置,同時指定所需圖像的大小和格式,此模式下各通道可與多個接收者綁定。需要特別註意的是,USER 模式主要用於對同一通道圖像進行多路編碼的場景,此模式下播放控制不生效,因此預覽和回放場景下不建議使用。Bypass 通道只能工作在 AUTO 模式,可與多個接收者綁定。
海思HI35XX之----視頻處理單元各通道間的關系