一、 执行源代码
- 查看 /mps/ko 下目录:
- 加载驱动 drv:
- 在 ini 里修改 sensor 配置:
- 运行
二、 cnsampleVioUsage
1.原代码
2.注释
三、 main
- 原代码
2.注释
int main(int argc, char* argv[]) /* 声明一个字符数组,大小是 int argc */
{
cnS32_t s32Ret = CN_FAILURE;
cnBool_t abChnEnable[VPPS_MAX_PHY_CHN_NUM] = {CN_TRUE, CN_FALSE, CN_FALSE, CN_FALSE}; /* VPPS 最大物理通道赋值 */
cnsampleCommSysPrintVersion(); /* 打印系统版本 */
signal(SIGINT, cnsampleVioHandleSig); /* 设置相应信号处理函数,SIGINT 由中断信号产生,发送给所有进程 */
signal(SIGTERM, cnsampleVioHandleSig); /* SIGTERM 请求终止进程 */
memset(&g_stViConfig, 0, sizeof(g_stViConfig)); /* 清空 g_stViConfig */
s32Ret = parseParam(argc, argv); /* 传入参数分析 */
if (s32Ret)
{
return CN_FAILURE;
}
s32Ret =cnsampleCommViGetSensorInfo(&g_stViConfig); /* 获取 sensor 信息 */
if (s32Ret)
{
return CN_FAILURE;
}
cnsampleCommViGetSizeBySensor(g_stViConfig.astViInfo[0].stSnsInfo.enSnsType, &g_enViPicSize); /* 在sensor中获取尺寸参数 */
s32Ret = cnsampleViVppsVo(); /* 视频输入处理输出 */
if (CN_SUCCESS == s32Ret) /* 判断视频输入处理输出是否成功 */
{
CNSAMPLE_TRACE("cnsampleViVppsVo success!\n");
}
else
{
CNSAMPLE_TRACE("cnsampleViVppsVo fail!\n");
return CN_FAILURE;
}
while (g_bThreadStart)
{
sleep(1); /* 线程休眠1秒 */
}
cnsampleCommViUnBindVpps(0, 0, 0); /* 视频输入不处理 */
cnsampleCommVppsUnBindVo(0, 0, 0, 0); /* 视频处理不输出 */
cnsampleCommVoStopVo(&g_stVoConfig); /* 视频停止输出 */
cnsampleCommVppsStop(0, abChnEnable); /* 视频处理子系统停止 */
cnsampleCommViStopVi(&g_stViConfig); /* 视频输入停止*/
cnsampleCommSysExit();
return CN_SUCCESS;
}
参考资料:
寒武纪图像质量调试工具用户手册-CN-v0.9.0.PDF
寒武纪DIS 调试指南-CN-v0.9.0.PDF
寒武纪 GDC 调试指南-CN-v0.9.0.PDF
评论
小夹子
2022年7月1日