欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > rockit 学习、开发笔记(六)(VENC)

rockit 学习、开发笔记(六)(VENC)

2025/2/21 3:35:21 来源:https://blog.csdn.net/weixin_58592012/article/details/144292413  浏览:    关键词:rockit 学习、开发笔记(六)(VENC)

前言

上节我们讲到了VDEC解码模块,那当然少不了VENC编码模块了,一般有编解码的需求都是为了压缩视频的大小,方便减少传输所占用的带宽。

概述

VENC 模块,即视频编码模块。本模块支持多路实时编码,且每路编码独立,编码协议和编码 profile 可以不同。

编码数据流程图
典型的编码流程包括了输入图像的接收、图像的选择、镜像、裁剪缩放、图像内容的遮挡和覆盖、图像的编码、以及码流的输出等过程。

内部数据流程处理如下图:
在这里插入图片描述

内部数据流程看起来还是蛮好理解,但是看到编码模块相关的API还是稍微有点晕😵的,这些API我到现在大部分都没有使用到,目前我的水平只能支持能够实现简单编码属性修改。

初始化

RK_MPI_VENC_CreateChn

该函数用于创建编码通道。

在这里插入图片描述

通过该函数创建并设置编码通道属性,设置结构体里面三个属性

VENC_ATTR_S stVencAttr;//编码器属性
VENC_RC_ATTR_S stRcAttr;//码率控制器属性
VENC_GOP_ATTR_S stGopAttr;//Gop Mode 类型的结构体
VENC_ATTR_S

该结构体用于定义编码器属性。

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

要注意的是里面所有的成员是静态的,开始接收编码流后就不能修改了

VENC_RC_ATTR_S

该结构体用于定义编码通道码率控制器属性
在这里插入图片描述在这里插入图片描述在这里插入图片描述
上面的属性需要根据不同编码协议模式来配置,里面的属性可以配置的属性有gop,帧率信息,码率等等,不同编码协议所配置的信息也会有所不同。

RK_MPI_VENC_StartRecvFrame

该函数启动编码通道开始接收输入图像。

在这里插入图片描述

调用该函数后,就算是开始正式接收数据流进行编码了,可以通过与VI或者VPSS等前级模块bind的方式来不断编码数据流。

RK_MPI_VENC_GetStream

该函数用于获取编码后的码流。
在这里插入图片描述

对于获取方式有两种不同的方式。
在这里插入图片描述

RK_MPI_VENC_ReleaseStream

该函数用于释放码流缓存,与上面RK_MPI_VENC_GetStream配对使用

在这里插入图片描述

RK_MPI_VENC_RequestIDR

该函数用于请求I帧
在这里插入图片描述

以上就是venc编码模块比较常用的一些接口,基本流程就是设置通道属性然后,使能通道开始接收数据来编码,然后在从内部队列获取编码流,一般常规用法都是VI绑定VPSS再绑定VENC来进行编码的。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词