3 海思Hi3518E视频编码
VENC 模块,即视频编码模块。本模块支持多路实时编码,且每路编码独立,编码协议和编码 profile 可以不同。本模块支持视频编码同时,调度 Region 模块对编码图像内容进行叠加和遮挡。VENC 模块的输入源包括三类:用户态读取图像文件向编码模块发送数据;视频输入(VIU)模块采集的图像经视频处理子系统(VPSS)发送到编码模块;视频输入(VIU)模块采集的图像直接发送到编码...
VENC 模块,即视频编码模块。本模块支持多路实时编码,且每路编码独立,编码协议和编码 profile 可以不同。本模块支持视频编码同时,调度 Region 模块对编码图像内容进行叠加和遮挡。
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 示意图
更多推荐
所有评论(0)