Commit 688b4d9d authored by Lucas Solomon's avatar Lucas Solomon

return 0 from VideoCapture::read() when cannot connect to camera

parent fd1b66b3
...@@ -1113,7 +1113,7 @@ static int read_frame_v4l2(CvCaptureCAM_V4L* capture) { ...@@ -1113,7 +1113,7 @@ static int read_frame_v4l2(CvCaptureCAM_V4L* capture) {
default: default:
/* display the error and stop processing */ /* display the error and stop processing */
perror ("VIDIOC_DQBUF"); perror ("VIDIOC_DQBUF");
return 1; return -1;
} }
} }
...@@ -1141,7 +1141,7 @@ static int read_frame_v4l2(CvCaptureCAM_V4L* capture) { ...@@ -1141,7 +1141,7 @@ static int read_frame_v4l2(CvCaptureCAM_V4L* capture) {
return 1; return 1;
} }
static void mainloop_v4l2(CvCaptureCAM_V4L* capture) { static int mainloop_v4l2(CvCaptureCAM_V4L* capture) {
unsigned int count; unsigned int count;
count = 1; count = 1;
...@@ -1175,10 +1175,14 @@ static void mainloop_v4l2(CvCaptureCAM_V4L* capture) { ...@@ -1175,10 +1175,14 @@ static void mainloop_v4l2(CvCaptureCAM_V4L* capture) {
break; break;
} }
if (read_frame_v4l2 (capture)) int returnCode=read_frame_v4l2(capture);
break; if (returnCode == -1)
return -1;
if (returnCode == 1)
return 0;
} }
} }
return 0;
} }
static int icvGrabFrameCAM_V4L(CvCaptureCAM_V4L* capture) { static int icvGrabFrameCAM_V4L(CvCaptureCAM_V4L* capture) {
...@@ -1246,7 +1250,7 @@ static int icvGrabFrameCAM_V4L(CvCaptureCAM_V4L* capture) { ...@@ -1246,7 +1250,7 @@ static int icvGrabFrameCAM_V4L(CvCaptureCAM_V4L* capture) {
if (capture->is_v4l2_device == 1) if (capture->is_v4l2_device == 1)
{ {
mainloop_v4l2(capture); if(mainloop_v4l2(capture) == -1) return 0;
} else } else
{ {
......
...@@ -830,7 +830,7 @@ static int read_frame_v4l2(CvCaptureCAM_V4L* capture) { ...@@ -830,7 +830,7 @@ static int read_frame_v4l2(CvCaptureCAM_V4L* capture) {
default: default:
/* display the error and stop processing */ /* display the error and stop processing */
perror ("VIDIOC_DQBUF"); perror ("VIDIOC_DQBUF");
return 1; return -1;
} }
} }
...@@ -852,7 +852,7 @@ static int read_frame_v4l2(CvCaptureCAM_V4L* capture) { ...@@ -852,7 +852,7 @@ static int read_frame_v4l2(CvCaptureCAM_V4L* capture) {
return 1; return 1;
} }
static void mainloop_v4l2(CvCaptureCAM_V4L* capture) { static int mainloop_v4l2(CvCaptureCAM_V4L* capture) {
unsigned int count; unsigned int count;
count = 1; count = 1;
...@@ -886,10 +886,14 @@ static void mainloop_v4l2(CvCaptureCAM_V4L* capture) { ...@@ -886,10 +886,14 @@ static void mainloop_v4l2(CvCaptureCAM_V4L* capture) {
break; break;
} }
if (read_frame_v4l2 (capture)) int returnCode = read_frame_v4l2 (capture);
if(returnCode == -1)
return -1;
if(returnCode == 1)
break; break;
} }
} }
return 0;
} }
static bool icvGrabFrameCAM_V4L(CvCaptureCAM_V4L* capture) { static bool icvGrabFrameCAM_V4L(CvCaptureCAM_V4L* capture) {
...@@ -931,14 +935,15 @@ static bool icvGrabFrameCAM_V4L(CvCaptureCAM_V4L* capture) { ...@@ -931,14 +935,15 @@ static bool icvGrabFrameCAM_V4L(CvCaptureCAM_V4L* capture) {
#if defined(V4L_ABORT_BADJPEG) #if defined(V4L_ABORT_BADJPEG)
// skip first frame. it is often bad -- this is unnotied in traditional apps, // skip first frame. it is often bad -- this is unnotied in traditional apps,
// but could be fatal if bad jpeg is enabled // but could be fatal if bad jpeg is enabled
mainloop_v4l2(capture); if(mainloop_v4l2(capture) == -1)
return false;
#endif #endif
/* preparation is ok */ /* preparation is ok */
capture->FirstCapture = 0; capture->FirstCapture = 0;
} }
mainloop_v4l2(capture); if(mainloop_v4l2(capture) == -1) return false;
return true; return true;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment