#define CHANNEL_NUMBER 1
#define MAX_CAMERAS 8
+// Extra global values declared for error capture
+#define CAPV4L2_CAMERA_UNPLUGGED 2
+#define CAPV4L2_OK 1
+#define CAPV4L2_FAIL 0
// default and maximum number of V4L buffers, not including last, 'special' buffer
#define MAX_V4L_BUFFERS 10
//set timestamp in capture struct to be timestamp of most recent frame
capture->timestamp = buf.timestamp;
- return 1;
+ return CAPV4L2_CAMERA_UNPLUGGED;
}
-static void mainloop_v4l2(CvCaptureCAM_V4L* capture) {
+static int mainloop_v4l2(CvCaptureCAM_V4L* capture) {
unsigned int count;
count = 1;
break;
}
- if (read_frame_v4l2 (capture))
- break;
+ switch(int readresult = read_frame_v4l2(capture) )
+ case CAM_UNPLUGGED:
+ return CAPV4L2_FAIL;
+ default:
+ return CAPV4L2_OK;
}
}
}
{
// skip first frame. it is often bad -- this is unnotied in traditional apps,
// but could be fatal if bad jpeg is enabled
- mainloop_v4l2(capture);
+ if(!mainloop_v4l2(capture)){
+ fprintf( stderr, "HIGHGUI ERROR: V4L: Could not capture image.\n");
+ return 0;
+ }
}
#endif
if (V4L2_SUPPORT == 1)
{
- mainloop_v4l2(capture);
+ if(!mainloop_v4l2(capture)){
+ fprintf( stderr, "HIGHGUI ERROR: V4L: Could not capture image.\n");
+ return 0;
+ }
}
#endif /* HAVE_CAMV4L2 */