mirror of
https://github.com/opencv/opencv.git
synced 2024-11-26 04:00:30 +08:00
Merge pull request #12262 from sivaraam:v4l2_mainloop
This commit is contained in:
commit
1deeca985f
@ -857,45 +857,39 @@ static int read_frame_v4l2(CvCaptureCAM_V4L* capture) {
|
||||
}
|
||||
|
||||
static int mainloop_v4l2(CvCaptureCAM_V4L* capture) {
|
||||
unsigned int count;
|
||||
for (;;) {
|
||||
fd_set fds;
|
||||
struct timeval tv;
|
||||
int r;
|
||||
|
||||
count = 1;
|
||||
FD_ZERO (&fds);
|
||||
FD_SET (capture->deviceHandle, &fds);
|
||||
|
||||
while (count-- > 0) {
|
||||
for (;;) {
|
||||
fd_set fds;
|
||||
struct timeval tv;
|
||||
int r;
|
||||
/* Timeout. */
|
||||
tv.tv_sec = 10;
|
||||
tv.tv_usec = 0;
|
||||
|
||||
FD_ZERO (&fds);
|
||||
FD_SET (capture->deviceHandle, &fds);
|
||||
r = select (capture->deviceHandle+1, &fds, NULL, NULL, &tv);
|
||||
|
||||
/* Timeout. */
|
||||
tv.tv_sec = 10;
|
||||
tv.tv_usec = 0;
|
||||
if (-1 == r) {
|
||||
if (EINTR == errno)
|
||||
continue;
|
||||
|
||||
r = select (capture->deviceHandle+1, &fds, NULL, NULL, &tv);
|
||||
|
||||
if (-1 == r) {
|
||||
if (EINTR == errno)
|
||||
continue;
|
||||
|
||||
perror ("select");
|
||||
}
|
||||
|
||||
if (0 == r) {
|
||||
fprintf (stderr, "select timeout\n");
|
||||
|
||||
/* end the infinite loop */
|
||||
break;
|
||||
}
|
||||
|
||||
int returnCode = read_frame_v4l2 (capture);
|
||||
if(returnCode == -1)
|
||||
return -1;
|
||||
if(returnCode == 1)
|
||||
return 1;
|
||||
perror ("select");
|
||||
}
|
||||
|
||||
if (0 == r) {
|
||||
fprintf (stderr, "select timeout\n");
|
||||
|
||||
/* end the infinite loop */
|
||||
break;
|
||||
}
|
||||
|
||||
int returnCode = read_frame_v4l2 (capture);
|
||||
if(returnCode == -1)
|
||||
return -1;
|
||||
if(returnCode == 1)
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user