mirror of
https://github.com/opencv/opencv.git
synced 2024-11-28 21:20:18 +08:00
Attempt at fixing bug 3186
This commit is contained in:
parent
9cf301e257
commit
1b1fb131b3
@ -248,6 +248,10 @@ make & enjoy!
|
||||
#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
|
||||
@ -1236,10 +1240,10 @@ static int read_frame_v4l2(CvCaptureCAM_V4L* capture) {
|
||||
//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;
|
||||
@ -1273,8 +1277,11 @@ static void mainloop_v4l2(CvCaptureCAM_V4L* capture) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (read_frame_v4l2 (capture))
|
||||
break;
|
||||
switch(int readresult = read_frame_v4l2(capture) )
|
||||
case CAM_UNPLUGGED:
|
||||
return CAPV4L2_FAIL;
|
||||
default:
|
||||
return CAPV4L2_OK;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1354,7 +1361,10 @@ static int icvGrabFrameCAM_V4L(CvCaptureCAM_V4L* capture) {
|
||||
{
|
||||
// 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
|
||||
|
||||
@ -1367,7 +1377,10 @@ static int icvGrabFrameCAM_V4L(CvCaptureCAM_V4L* capture) {
|
||||
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 */
|
||||
|
Loading…
Reference in New Issue
Block a user