天天看點

3 海思Hi3518E視訊編碼

VENC 子產品,即視訊編碼子產品。本子產品支援多路實時編碼,且每路編碼獨立,編碼協定和編碼 profile 可以不同。本子產品支援視訊編碼同時,排程 Region 子產品對編碼圖像内容進行疊加和遮擋。

3 海思Hi3518E視訊編碼

VENC 子產品的輸入源包括三類:

  • 使用者态讀取圖像檔案向編碼子產品發送資料;
  • 視訊輸入(VIU)子產品采集的圖像經視訊處理子系統(VPSS)發送到編碼子產品;
  • 視訊輸入(VIU)子產品采集的圖像直接發送到編碼子產品;

不同型号的晶片支援不同的編碼規格,晶片支援的編碼規格如表所示。

3 海思Hi3518E視訊編碼

2 功能描述

2.1 編碼資料流程圖

VENC 的資料流程圖

3 海思Hi3518E視訊編碼

典型的編碼流程包括了輸入圖像的接收、圖像内容的遮擋和覆寫、圖像的編碼、以及碼流的輸出等過程。

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 編碼通道

編碼通道作為基本容器,儲存編碼通道的多種使用者設定和管理編碼通道的多種内部資源。編碼通道完成圖像轉化為碼流的功能,具體由碼率控制器和編碼器協同完成。這裡的編碼器指的是狹義上的編碼器,隻完成編碼功能。碼率控制器提供了對編碼參數的控制和調整,進而對輸出碼率進行控制。

編碼通道功能子產品劃分

3 海思Hi3518E視訊編碼

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。進階跳幀參考模式示意如圖所示。

3 海思Hi3518E視訊編碼

2.5 彩轉灰

彩轉灰,即 VENC 支援把彩色圖像轉換成灰階圖像進行編碼。具體功能請參考相關

API: HI_MPI_VENC_SetColor2Grey。

2.6 裁剪編碼

裁剪編碼,即 VENC 從圖像中裁剪出一部分進行編碼,使用者可以設定裁剪的起始點

X、 Y 和裁剪的寬度 width 和高度 height,具體功能請參考相關 API:

HI_MPI_VENC_GetCrop 和 HI_MPI_VENC_SetCrop 等。

裁剪編碼示意圖

3 海思Hi3518E視訊編碼

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 示意圖

3 海思Hi3518E視訊編碼

繼續閱讀