mirror of
https://github.com/opencv/opencv.git
synced 2025-08-06 14:36:36 +08:00
Merge pull request #8778 from mshabunin:pr6853
This commit is contained in:
commit
246f47fe96
@ -312,6 +312,7 @@ typedef struct CvCaptureCAM_V4L
|
|||||||
int deviceHandle;
|
int deviceHandle;
|
||||||
int bufferIndex;
|
int bufferIndex;
|
||||||
int FirstCapture;
|
int FirstCapture;
|
||||||
|
bool returnFrame;
|
||||||
|
|
||||||
int width; int height;
|
int width; int height;
|
||||||
int mode;
|
int mode;
|
||||||
@ -1094,6 +1095,8 @@ static CvCaptureCAM_V4L * icvCaptureFromCAM_V4L (const char* deviceName)
|
|||||||
capture->is_v4l2_device = 1;
|
capture->is_v4l2_device = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
capture->returnFrame = true;
|
||||||
|
|
||||||
return capture;
|
return capture;
|
||||||
}; /* End icvOpenCAM_V4L */
|
}; /* End icvOpenCAM_V4L */
|
||||||
|
|
||||||
@ -1119,6 +1122,7 @@ static int read_frame_v4l2(CvCaptureCAM_V4L* capture) {
|
|||||||
|
|
||||||
default:
|
default:
|
||||||
/* display the error and stop processing */
|
/* display the error and stop processing */
|
||||||
|
capture->returnFrame = false;
|
||||||
perror ("VIDIOC_DQBUF");
|
perror ("VIDIOC_DQBUF");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -1360,7 +1364,10 @@ static IplImage* icvRetrieveFrameCAM_V4L( CvCaptureCAM_V4L* capture, int) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return(&capture->frame);
|
if (capture->returnFrame)
|
||||||
|
return(&capture->frame);
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int zeroPropertyQuietly(CvCaptureCAM_V4L* capture, int property_id, int value)
|
static int zeroPropertyQuietly(CvCaptureCAM_V4L* capture, int property_id, int value)
|
||||||
|
@ -280,6 +280,7 @@ struct CvCaptureCAM_V4L : public CvCapture
|
|||||||
__u32 fps;
|
__u32 fps;
|
||||||
bool convert_rgb;
|
bool convert_rgb;
|
||||||
bool frame_allocated;
|
bool frame_allocated;
|
||||||
|
bool returnFrame;
|
||||||
|
|
||||||
/* V4L2 variables */
|
/* V4L2 variables */
|
||||||
buffer buffers[MAX_V4L_BUFFERS + 1];
|
buffer buffers[MAX_V4L_BUFFERS + 1];
|
||||||
@ -820,6 +821,7 @@ bool CvCaptureCAM_V4L::open(const char* _deviceName)
|
|||||||
fps = DEFAULT_V4L_FPS;
|
fps = DEFAULT_V4L_FPS;
|
||||||
convert_rgb = true;
|
convert_rgb = true;
|
||||||
deviceName = _deviceName;
|
deviceName = _deviceName;
|
||||||
|
returnFrame = true;
|
||||||
|
|
||||||
return _capture_V4L2(this) == 1;
|
return _capture_V4L2(this) == 1;
|
||||||
}
|
}
|
||||||
@ -847,6 +849,7 @@ static int read_frame_v4l2(CvCaptureCAM_V4L* capture) {
|
|||||||
|
|
||||||
default:
|
default:
|
||||||
/* display the error and stop processing */
|
/* display the error and stop processing */
|
||||||
|
capture->returnFrame = false;
|
||||||
perror ("VIDIOC_DQBUF");
|
perror ("VIDIOC_DQBUF");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -1581,7 +1584,10 @@ static IplImage* icvRetrieveFrameCAM_V4L( CvCaptureCAM_V4L* capture, int) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return(&capture->frame);
|
if (capture->returnFrame)
|
||||||
|
return(&capture->frame);
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline __u32 capPropertyToV4L2(int prop) {
|
static inline __u32 capPropertyToV4L2(int prop) {
|
||||||
|
Loading…
Reference in New Issue
Block a user