VENC功能接口
CreateVenc
函数原型 |
int32_t CreateVenc(struct VencConfig* vencConfig) |
---|---|
功能 |
获取VENC编码实例,相当于获取VENC执行器句柄。调用方可以使用申请到的VENC编码实例调用RunVenc接口进行图片编码。 |
输入说明 |
输入为结构体VencConfig类型指针,VencConfig参见说明入参:入参:VencConfig。其中需要配置回调函数,用于处理编码结果。 |
输出说明 |
无输出。 |
返回值说明 |
|
使用说明 |
调用方创建VencConfig对象指针,调用CreateVenc接口将VencConfig对象指针传入。如果申请成功,CreateVenc接口会返回VENC编码实例句柄号,否则返回-1。调用方需要对返回值进行校验。 |
使用约束 |
调用方负责VENC编码实例的生命周期,即申请与释放,申请使用CreateVenc接口,释放使用DestroyVenc接口。 |
入参:VencConfig
该入参是初始化VENC模块时使用,结构体所有成员变量必须初始化后再使用。
成员变量 |
说明 |
取值范围 |
---|---|---|
uint32_t width |
图像宽度。 |
128~1920,且为偶数。 |
uint32_t height |
图像高度。 |
128~1920,且为偶数。 |
uint32_t codingType |
视频编码协议H265-main level(0)、H264-baseline level(1)、H264-main level(2)、H264-high level(3) |
0~3
|
uint32_t yuvStoreType |
YUV图像存储格式。 |
0或者1
|
uint32_t keyFrameInterval |
I帧间隔 |
大于0小于65535 |
VencOutMsgCallBack vencOutMsgCallBack |
回调函数,用于处理编码结果。 DVPP(VENC模块)处理每一路图片数据的编码时,对于首帧图片数据,会调用两次回调函数,第一次调用回调函数处理文件头信息,第二次调用回调函数处理本帧的图片数据 |
typedef void (*VencOutMsgCallBack)(struct VencOutMsg* vencOutMsg, void* userData);不可为空 |
void* userData |
用户记录想要传递的信息,随回调函数返回给用户 |
可以为NULL |
RunVenc
函数原型 |
int32_t RunVenc(int32_t vencHandle, struct VencInMsg* vencInMsg) |
---|---|
功能 |
使用CreateVenc接口创建的实例调用RunVenc接口,控制DVPP执行器进行视频编码。 |
输入说明 |
输入为int32_t句柄号和VencInMsg指针。vencHandle为CreateVenc返回值。VencInMsg参见入参:入参:VencInMsg。VENC执行器配置信息VencInMsg,该结构体用于将要编码的视频信息传递给执行器进行编码。 |
输出说明 |
无输出。 |
返回值说明 |
|
使用说明 |
调用方调用RunVenc函数,传入编码实例句柄号和VencInMsg对象指针,配置好相应功能的vencInMsg。 |
使用约束 |
若需要将多张图片编码成一个视频,则调用一次CreateVenc接口创建实例后,必须使用同一个实例调用RunVenc接口进行视频编码,最后再调用一次DestroyVenc接口释放实例。 |
入参:VencInMsg
该入参是调用VENC模块执行编码时使用,所有结构体成员变量必须初始化后再使用。
成员变量 |
说明 |
取值范围 |
---|---|---|
void* inputData |
输入数据地址 |
非空 |
uint32_t inputDataSize |
输入数据大小 |
不能大于输入数据buffer大小,推荐值和输入数据buffer大小一样 |
uint32_t keyFrameInterval |
I帧间隔 |
大于等于0小于65535,0表示这个参数不起作用 |
uint32_t forceIFrame |
强制重新开始I帧间隔,0:不强制;1:强制重新开始I帧 |
0或者1 |
uint32_t eos |
是否为结束帧,0:不是;1:是结束帧 |
0或者1 |
出参:VencOutMsg
成员变量 |
说明 |
取值范围 |
---|---|---|
void* outputData |
输出数据地址 |
由VENC内部申请 |
uint32_t outputDataSize |
输出数据大小 |
由VENC内部填写 |
uint32_t timeStamp |
记录调用回调函数的时序 |
由VENC内部填写 |
DestroyVenc
函数原型 |
int32_t DestroyVenc(int32_t vencHandle) |
---|---|
功能 |
释放由CreateVenc接口创建的VENC编码实例,关闭VENC执行器。 |
输入说明 |
输入为int32_t类型VENC编码实例句柄号,为调用函数CreateVenc返回值。 |
输出说明 |
无输出。 |
返回值说明 |
|
使用说明 |
无特殊说明。 |
使用约束 |
一旦调用DestroyVenc接口,如果还想在继续调用VENC,需要重新创建VENC编码实例。 |