1.函数
1) RK_MPI_VI_SetChnAttr
_CAPI RK_S32 RK_MPI_VI_SetChnAttr(VI_PIPE ViPipe, VI_CHN ViChn,const VI_CHN_ATTR_S *pstChnAttr);
/*VI通道属性结构体指针1)pcVideoNode:video节点路径2)u32BufCnt:VI捕获视频缓冲区计数3)u32Width:宽度4)u32Height:高度5)enPixFmt:视频输入的图像格式,默认是NV12;6)enBufType:VI捕捉视频的类型;DMA或者MMPDMA:直接访问内存,相当于音视频数据直接从硬件传输到内存里面。优点:速度快缺点:消耗资源MMP:内存映射,直接把硬件外设、磁盘文件映射到虚拟内存优点:占用硬件资源比较少缺点:读写速度比较慢;有时候会数据丢失7)enWorkMode:VI的工作模式,默认是NORMAL;NORMAL:相对于“亮度模式”,该模式下正常读取camera数据并发给后级;LUMA_ONLY:亮度模式,该模式仅用于亮度统计,无法通过回调函数或者RK_MPI_SYS_Get_MediaBuffer获取数据*/VI_CHN_ATTR_S vi_chn_attr;vi_chn_attr.pcVideoNode = pDeviceName;vi_chn_attr.u32BufCnt = 3;vi_chn_attr.u32Width = u32Width;vi_chn_attr.u32Height = u32Height;vi_chn_attr.enPixFmt = IMAGE_TYPE_NV12;vi_chn_attr.enBufType = VI_CHN_BUF_TYPE_DMA;vi_chn_attr.enWorkMode = VI_WORK_MODE_NORMAL;/*设置VI通道属性 函数原型:RK_S32 RK_MPI_VI_SetChnAttr(VI_PIPE ViPipe, VI_CHN ViChn,const VI_CHN_ATTR_S *pstChnAttr);参数:1)VI_PIPE ViPipe:VI管道号;2)VI_CHN ViChn:VI通道号,取值范围:0~VI_MAX_CHN_NUM;3)通道属性结构体指针返回值:0表示成功;非0返回错误码。说明:1)如果设置的通道已经通过RK_MPI_SYS_Bind()与其他通道绑定,则在这使用这个函数之前需要通过RK_MPI_SYS_UnBind()解绑;2)如果设置的通道已经通过RK_MPI_VI_EnableChn()使能,则在使用该函数之前需要通过RK_MPI_VI_DisableChn()解绑*/ ret = RK_MPI_VI_SetChnAttr(s32CamId, 0, &vi_chn_attr);
2)RK_MPI_VI_EnableChn
_CAPI RK_S32 RK_MPI_VI_EnableChn(VI_PIPE ViPipe, VI_CHN ViChn);
/*启用VI通道函数原型:RK_S32 RK_MPI_VI_EnableChn(VI_PIPE ViPipe, VI_CHN ViChn)参数:1)VI_PIPE ViPipe:VI管道号;2)VI_CHN ViChn:VI通道号;*/ret |= RK_MPI_VI_EnableChn(s32CamId, 0);//
3) 编码器类型
VENC_CHN_ATTR_S venc_chn_attr;/*VENC_ATTR_S stVencAttr; //编码器类型VENC_RC_ATTR_S stRcAttr; //码率控制器VENC_GOP_ATTR_S stGopAttr; //GOP属性*/memset(&venc_chn_attr, 0, sizeof(venc_chn_attr));//清空设置// venc_chn_attr.stVencAttr.enRotation=VENC_ROTATION_270;//旋转270度venc_chn_attr.stRcAttr.enRcMode = VENC_RC_MODE_H264CBR;//编码器协议类型venc_chn_attr.stRcAttr.stH264Cbr.u32Gop = 30;//H264协议编码通道Cbr模式属性-I帧间隔,取值范围:1-65536venc_chn_attr.stRcAttr.stH264Cbr.u32BitRate = u32Width * u32Height;//H264协议编码通道Cbr模式属性-数据源帧率分子// frame rate: in 30/1, out 30/1.venc_chn_attr.stRcAttr.stH264Cbr.fr32DstFrameRateDen = 1;//H264协议编码通道Cbr模式属性-目标帧率分母venc_chn_attr.stRcAttr.stH264Cbr.fr32DstFrameRateNum = 30;//H264协议编码通道Cbr模式属性-目标帧率分子venc_chn_attr.stRcAttr.stH264Cbr.u32SrcFrameRateDen = 1;//H264协议编码通道Cbr模式属性-数据源帧率分母venc_chn_attr.stRcAttr.stH264Cbr.u32SrcFrameRateNum = 30;//H264协议编码通道Cbr模式属性-数据源帧率分母venc_chn_attr.stVencAttr.enType = RK_CODEC_TYPE_H264;//编码器类型venc_chn_attr.stVencAttr.imageType = IMAGE_TYPE_NV12;//输入图像类型venc_chn_attr.stVencAttr.u32PicWidth = u32Width;//编码图像宽度,以像素为单位venc_chn_attr.stVencAttr.u32PicHeight = u32Height;//编码图像高度,以像素为单位venc_chn_attr.stVencAttr.u32VirWidth = u32Width;//stride宽度,通常与buffer_width相同,如果u32VirWidth大于buffer宽度,则必须满足16对齐venc_chn_attr.stVencAttr.u32VirHeight = u32Height;//stride宽度,通常与buffer_height相同,如果u32VirHeight大于buffer宽度,则必须满足16对齐/*编码等级:1)H264:66-baseline;77-main profile;100-high profile2)H265:默认是Main3)Jpege/MJpege:默认是baseline*/venc_chn_attr.stVencAttr.u32Profile = 77;
3)RK_MPI_VENC_CreateChn
_CAPI RK_S32 RK_MPI_VENC_CreateChn(VENC_CHN VencChn,VENC_CHN_ATTR_S *stVencChnAttr);
/*创建编码通道函数原型:RK_S32 RK_MPI_VENC_CreateChn(VENC_CHN VeChn, VENC_CHN_ATTR_S *stVencChnAttr)参数:1)VENC_CHN VeChn:编码通道2)VENC_CHN_ATTR_S *stVencChnAttr:编码通道属性指针返回值:成功为0;失败为非0*/ret = RK_MPI_VENC_CreateChn(0, &venc_chn_attr);