Commit 677680d8 authored by Vadim Pisarevsky's avatar Vadim Pisarevsky

reverted the original VideoCapture::read() code; moved frame index check to…

reverted the original VideoCapture::read() code; moved frame index check to where it should belong: ffmpeg wrapper; applied patch by Rob Reilink (ticket #1971)
parent 586d5a60
......@@ -494,15 +494,8 @@ bool VideoCapture::retrieve(Mat& image, int channel)
bool VideoCapture::read(Mat& image)
{
double frame_pos = get(CV_CAP_PROP_POS_FRAMES);
double frame_count = get(CV_CAP_PROP_FRAME_COUNT);
if (frame_pos < frame_count || frame_pos < 0 || frame_count < 0)
{
if(grab())
retrieve(image);
else
image.release();
}
if(grab())
retrieve(image);
else
image.release();
return !image.empty();
......
......@@ -438,6 +438,10 @@ bool CvCapture_FFMPEG::grabFrame()
const int max_number_of_attempts = 1 << 16;
if( !ic || !video_st ) return false;
if( ic->streams[video_stream]->nb_frames > 0 &&
frame_number > ic->streams[video_stream]->nb_frames )
return false;
av_free_packet (&packet);
......
......@@ -316,7 +316,9 @@ int CvCaptureCAM::startCaptureDevice(int cameraNum) {
capture = [[CaptureDelegate alloc] init];
QTCaptureDevice *device;
NSArray* devices = [QTCaptureDevice inputDevicesWithMediaType:QTMediaTypeVideo];
NSArray* devices = [[[QTCaptureDevice inputDevicesWithMediaType:QTMediaTypeVideo]
arrayByAddingObjectsFromArray:[QTCaptureDevice inputDevicesWithMediaType:QTMediaTypeMuxed]] retain];
if ([devices count] == 0) {
cout << "QTKit didn't find any attached Video Input Devices!" << endl;
[localpool drain];
......
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