本章节主要展示如何使用VI组件采集摄像头图像输出并生成YUV文件保存至开发板端。
1.加载参数
loadConfigPara(pContext, pConfigFilePath)
2.初始化摄像头
pCap->Dev = MM_INVALID_DEV;
pCap->mIspDev = MM_INVALID_DEV;
pCap->Chn = MM_INVALID_CHN;
3.启动MPP平台
MPP_SYS_CONF_S stConf;
memset(&stConf, 0, sizeof(MPP_SYS_CONF_S));
AW_MPI_SYS_SetConf(&stConf);
AW_MPI_SYS_Init();
4.初始化缓冲区管理器
pContext->mpSaveBufMgr = initSaveBufMgr(pContext);
5.创建保存图像线程
pthread_create(&saveFrmTrd, NULL, SaveCsiFrameThrad, (void *)pContext);
6.配置VI组件参数并启动
memset(&stVIAttr, 0, sizeof(VI_ATTR_S));
configViAttr(&stVIAttr, &pCap->mConfig);
pCap->Dev = pConfig->DevNum;
eRet = AW_MPI_VI_CreateVipp(pCap->Dev);
AW_MPI_VI_SetVippAttr(pCap->Dev, &stVIAttr);
AW_MPI_ISP_Run(pCap->mIspDev);
AW_MPI_VI_EnableVipp(pCap->Dev);
AW_MPI_VI_CreateVirChn(pCap->Dev, pCap->Chn, NULL);
7.启动虚通道并录制视频
AW_MPI_VI_EnableVirChn(pCap->Dev, pCap->Chn);
pthread_create(&pCap->thid, NULL, GetCSIFrameThread, (void *)pCap);
8.关闭VI组件
AW_MPI_VI_DisableVirChn(pCap->Dev, pCap->Chn);
AW_MPI_VI_DestroyVirChn(pCap->Dev, pCap->Chn);
AW_MPI_VI_DisableVipp(pCap->Dev);
if (pCap->mIspDev >= 0)
AW_MPI_ISP_Stop(pCap->mIspDev);
AW_MPI_VI_DestroyVipp(pCap->Dev);
9.退出MPP平台
AW_MPI_SYS_Exit();