现在调试过程中发现了这样一个问题,前端sensor传来的视频流用ISS采集一切正常,但是根据需求,需要实现抓拍功能,也就是需要前端sensor将视频停下来,然后抓拍单独发一张图片给VP,可是一旦中断了视频流以后,8127就会循环处理内部已有的图像然后通过Video-OUT输出。根本无法再从VP口获取数据,请问各位大大这是怎么回事哪?是需要做哪些设置吗?
bo bo:
没人回复?还是描述的不清楚?
Chris Meng:
你好,
请问“需要前端sensor将视频停下来,然后抓拍单独发一张图片给VP”,请问你是改变了sensor输出的时序么?这是我们ISP不允许的。如果要改变sensor输入的时序,改变后,需要复位ISS.
请问你们的视频和抓拍的图像的大小不一样吗?
bo bo:
回复 Chris Meng:
sensor输出时序是这样的:将原时序停下来,然后重新开始曝光从头开始传一帧图像。我的理解也应该是复位ISS,但是我复位后好像没生效,能详细的说明一下复位的操作吗?都需要设置哪些寄存器?
视频和抓拍的图像大小是一样的,只是抓拍的这一张对实时性要求比较高,必须在收到触发信号后马上进行曝光,如果从原数据流里取数据的话,达不到这个要求。所以……
Chris Meng:
回复 bo bo:
你好,
复位ISS请参考CAMERA_LINK_CMD_FORCE_RESET。但复位ISS也是需要时间的,所以你需要分析一下,是收到抓拍信号后,能否就使用当前帧编码jpeg,或者下一帧编码jpeg?
bo bo:
回复 Chris Meng:
软件人员说这个命令,里面没有执行。
另外也试了ISS_HL_SYSCONFIG[0]这个寄存器,也不行。
请问能否告知一下您的联系方式,详细问您一下,我QQ157752750.不盛感激
Chris Meng:
回复 bo bo:
你好,
我们默认代码是在RSZ overflow的时候会复位ISS,你们的情况需要手动调用复位代码。
piao sun:
回复 Chris Meng:
软件查到 接收到 CAMERA_LINK_CMD_FORCE_RESET 消息时,实际是调用 FVID2_control(pObj->fvidHandleVipAll, IOCTL_ISS_CAPT_RESET_AND_RESTART, &overFlowStatus, NULL);这个函数,但是并没有找到处理 IOCTL_ISS_CAPT_RESET_AND_RESTART
这个命令的地方啊?
Chris Meng:
回复 piao sun:
你好,
你使用的是3.5版本的软件么?有实现的地方,调用了Iss_captResetAndRestart
piao sun:
回复 Chris Meng:
我们使用的是3.0的版本,多谢你,我在3.5的版本上看一下,谢谢!
changquan wang:
bobo你好!
不知道你是怎样在ISS端实现视频流采集的,应该是采集YUV格式的帧数据吧!
我现在也在做这一块。
在ISS端保存数据。
我在文件/ipnc_rdk/ipnc_mcfw/mcfw/src_bios6/links_m3vpss/camera|cameraLink_drv.c中
Int32 CameraLink_drvProcessData(CameraLink_Obj * pObj)函数 添加如下代码。
FILE* p = NULL; char *name; name="image.YUV"; if((p=fopen(name,"w+"))==NULL) Vps_printf("Creat YUV file failed\n"); fwrite(pFrame->addr[0][0],1,pObj->createArgs.vipInst[0].sensorOutWidth*pObj->createArgs.vipInst[0].sensorOutHeight*2,p); fclose(p); p = NULL; Vps_printf("M3 save framewidth=%d,height=%d\n",pObj->createArgs.vipInst[0].sensorOutWidth,pObj->createArgs.vipInst[0].sensorOutHeight); saveframe=0;
编译通过。程序也可以执行。
有打印信息Vps_printf("In M3 frame save!");
M3 save framewidth=
但是没有生成文件image.YUV。这是为什么呢?
如何实现YUV图像额保存呢?
望不吝赐教,谢谢!