海思HI35XX之----視訊處理單元各通道間的關係
最近在折騰HI3518C的晶片,應用到IPCamera上,最終獲取多路不同解析度的視訊流供不同需求的預覽切換。此處簡單記錄一下視訊前處理元VPSS(Video Process Sub-System)的多通道間的關係以及使用心得。
HI3518C的視訊子系統包括:視訊系統初始化模組(MPP_SYS_CONF_S)、視訊輸入模組(VI)、視訊前處理模組(VPSS)、視訊編碼模組(VENC)和視訊輸出模組(VO)組成。
HI3518C的VPSS是視訊資料編碼前的預處理單元,主要完成對一幅輸入影象的統一預處理,如去噪、去隔行等,然後再對各通道分別進行縮放、銳化等處理(如:PreScale
其中,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
然後,就是根據實際需要來建立多個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 模式,可與多個接收者繫結。