VENC 子產品,即視訊編碼子產品。本子產品支援多路實時編碼,且每路編碼獨立,編碼協定和編碼 profile 可以不同。本子產品支援視訊編碼同時,排程 Region 子產品對編碼圖像内容進行疊加和遮擋。
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0gTMx81dsQWZ4lmZf1GLlpXazVmcvwFciV2dsQXYtJ3bm9CX9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5yMzYTM3kzYjlTZjFDN5ETYyYzXwAzMzQTM5AzLcZDMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
VENC 子產品的輸入源包括三類:
- 使用者态讀取圖像檔案向編碼子產品發送資料;
- 視訊輸入(VIU)子產品采集的圖像經視訊處理子系統(VPSS)發送到編碼子產品;
- 視訊輸入(VIU)子產品采集的圖像直接發送到編碼子產品;
不同型号的晶片支援不同的編碼規格,晶片支援的編碼規格如表所示。
2 功能描述
2.1 編碼資料流程圖
VENC 的資料流程圖
典型的編碼流程包括了輸入圖像的接收、圖像内容的遮擋和覆寫、圖像的編碼、以及碼流的輸出等過程。
VENC 子產品由編碼通道子子產品(VENC)和編碼協定子子產品(H.264/H.265/JPEG/MJPEG)組成。
通道支援接收 YUV 格式圖像輸入,支援格式為 Semi-planar YUV 4:2:0 或 Semi-planarYUV 4:2:2。
- H.264/H.265 隻支援 Semi-planar YUV 4:2:0
- JPEG/MJPEG 支援 Semiplanar YUV 4:2:0 或 Semi-planar YUV 4:2:2
另外, Hi3518EV200 能夠支援單分量輸入(隻存在 Y 分量)。通道子產品接收外部原始圖像資料,而不關心圖像資料是來自哪個外
部子產品。
通道接收到圖像之後,比較圖像尺寸和編碼通道尺寸:
- 如果輸入圖像比編碼通道尺寸大, VENC 将按照編碼通道尺寸大小,調用 VGS 對源圖像進行縮小,然後對縮小之後的圖像進行編碼。
- 如果輸入圖像比編碼通道尺寸小, VENC丢棄源圖像。 VENC 不支援放大輸入圖像編碼。
- 如果輸入圖像與編碼通道尺寸相當, VENC 直接接受源圖像,進行編碼。
注意:
- 通道的幀率控制預設不打開,需要使用者調用接口設定。 RC 中也具有幀率控制功能。推薦使用 RC 的幀率控制,這樣不會對碼率控制造成過大的沖擊。
- 對于 Hi3518EV200 的 H.264 編碼,輸入圖像格式由非單分量切換為單分量時,由于存在幀間預測量化誤差,在編碼出下一個 I 幀之前圖像會存有色度殘留。建議客戶在切換單分量時調用接口 HI_MPI_VENC_ResetChn 進行通道複位。
REGION 子產品支援對圖像内容的遮擋和疊加。
完成視訊區域管理之後,圖像被送入具體協定類型編碼通道,完成視訊編碼,輸出碼流。
2.2 編碼通道
編碼通道作為基本容器,儲存編碼通道的多種使用者設定和管理編碼通道的多種内部資源。編碼通道完成圖像轉化為碼流的功能,具體由碼率控制器和編碼器協同完成。這裡的編碼器指的是狹義上的編碼器,隻完成編碼功能。碼率控制器提供了對編碼參數的控制和調整,進而對輸出碼率進行控制。
編碼通道功能子產品劃分
2.3 碼率控制
碼率控制器實作對編碼碼率進行控制。
從資訊學的角度分析,圖像的壓縮比越低,壓縮圖像的品質越高;圖像壓縮比例越高,壓縮圖像的品質越低。對于場景變化的真實場景,圖像品質穩定,編碼碼率會波動;編碼碼率穩定,圖像品質會波動。以 H.264 編碼為例,通常圖像 Qp 越低,圖像的品質越好,碼率越高;圖像 Qp 越高,圖像品質越差,碼率越低。
碼率控制是針對連續的編碼碼流而言,是以, JPEG 協定編碼通道不包括碼率控制功能。
碼率控制器分别提供了對 H.264\H.265\MJPEG 協定編碼通道 CBR、 VBR、 FIXQP 等三種碼率控制模式,對圖像品質和碼率進行調節。
Hi3518EV200 不支援 H.265 編碼,是以,也不支援 H.265 類型的碼率控制。
CBR
CBR(Constant Bit Rate)固定比特率。即在碼率統計時間内保證編碼碼率平穩。碼率穩定主要由兩個量來評估,這兩個量都可以由使用者在建立編碼通道時指定。
碼率統計時間 u32StatTime
機關為秒(s),碼率統計時間越長,每幀圖像的碼率波動對于碼率調節的影響越弱,碼率的調節會更緩慢,圖像品質的波動會更輕微;碼率統計時間越短,每幀圖像的碼率波動對于碼率調節的影響越強,圖像碼率的調節會更靈敏,圖像品質的波動會更劇烈。
行級碼率控制調節幅度 u32RowQpDelta
行級碼率控制調節幅度是一幀内行級調節的最大範圍,其中行級以宏塊行為機關。調節幅度越大,允許行級調整的 QP 範圍越大,碼率越平穩。對于圖像複雜度分布不均勻的場景,行級碼率控制調節幅度設定過大會帶來圖像品質不均勻。
VBR
VBR(Variable Bit Rate)可變比特率,即允許在碼率統計時間内編碼碼率波動,進而保證編碼圖像品質平穩。以 H.264 編碼為例, VENC 子產品提供使用者可設定 MaxQp,MinQp, MaxBitrate 和 ChangePos。 MaxQp, MinQp 用于控制圖像的品質範圍,MaxBitrate 用于鉗位碼率統計時間内的最大編碼碼率, ChangePos 用于控制開始調整Qp 的碼率基準線。當編碼碼率大于 MaxBitrate*ChangePos 時,圖像 qp 會逐漸向MaxQp 調整,如果圖像 QP 達到 MaxQp, QP 會被鉗位到最大值, MaxBitrate 的鉗位效果失效,編碼碼率有可能會超出 MaxBitrate。當編碼碼率小于 MaxBitrate*ChangePos時,圖像 QP 會逐漸向 MinQp 調整,如果圖像 QP 達到 MinQp,此時編碼的碼率已經達到最大值,而且圖像品質最好。
FIXQP
Fix Qp 固定 Qp 值。在碼率統計時間内,編碼圖像所有宏塊 Qp 值相同,采用使用者設定的圖像 Qp 值, I 幀和 P 幀的 QP 值可以分别設定。
2.4 進階跳幀參考模式
進階跳幀參考模式涉及 3 個參數: u32Base、 u32Enhance 和 bEnablePred,其含義請參考 VENC_PARAM_REF_S。進階跳幀參考模式示意如圖所示。
2.5 彩轉灰
彩轉灰,即 VENC 支援把彩色圖像轉換成灰階圖像進行編碼。具體功能請參考相關
API: HI_MPI_VENC_SetColor2Grey。
2.6 裁剪編碼
裁剪編碼,即 VENC 從圖像中裁剪出一部分進行編碼,使用者可以設定裁剪的起始點
X、 Y 和裁剪的寬度 width 和高度 height,具體功能請參考相關 API:
HI_MPI_VENC_GetCrop 和 HI_MPI_VENC_SetCrop 等。
裁剪編碼示意圖
2.7 ROI
ROI(Region Of Interest)編碼,感興趣區域編碼。
使用者可以通過配置 ROI 區域,對該區域的圖像 Qp 進行限制,進而實作圖像中該區域的 Qp 與其他圖像區域的差異化。系統現僅支援對 H.264/H.265 通道進行 ROI 設定。系統提供了 8 個感興趣區域,可供使用者同時使用。8 個區域可以互相疊加,且疊加時的優先級按照 0~7 的索引号依次提高,這裡,疊加優先級是指發生疊加時,圖像區域的最終 Qp 值的判定,最終的區域 Qp 值按照優先級最高的區域設定。 ROI 區域可配置絕對 Qp 和相對 Qp 兩種模式。
- 絕對 Qp: ROI 區域的 Qp 為使用者設定的 Qp 值。
- 相對 Qp: ROI 區域的 Qp 為碼率控制産生的 Qp 與使用者設定的 Qp 偏移值的和。
以下示例編碼圖像采用 FixQp 模式,設定圖像 Qp 為 25,即圖像中所有宏塊 Qp 值25。 Roi 區域 0 設定為絕對 Qp 模式, Qp 值為 10,索引為 0; Roi 區域 1 設定為相對Qp 模式, Qp 為-10,索引為 1。區域 0 的 index 小于區域 1 的 index,是以在發生互相重疊的圖像區域按高優先級的區域(區域 1) Qp 設定。區域 0 除了發生重疊的部分的Qp 值等于 10。區域 1 的 Qp 值為 25-10=15。
ROI 示意圖