Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
O
opencv
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
opencv
Commits
9744073b
Commit
9744073b
authored
Apr 04, 2016
by
Alexander Alekhin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
videoio: give chance for all enabled backends
"Eat" unexpected backend exceptions
parent
36477fde
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
76 additions
and
91 deletions
+76
-91
cap.cpp
modules/videoio/src/cap.cpp
+76
-91
No files found.
modules/videoio/src/cap.cpp
View file @
9744073b
...
...
@@ -117,6 +117,36 @@ CV_IMPL int cvGetCaptureDomain( CvCapture* capture)
return
capture
?
capture
->
getCaptureDomain
()
:
0
;
}
static
bool
get_capture_debug_flag
()
{
static
bool
initialized
=
false
;
static
bool
flag
=
false
;
if
(
!
initialized
)
{
#ifndef NO_GETENV
flag
=
getenv
(
"OPENCV_VIDEOCAPTURE_DEBUG"
)
?
true
:
false
;
// TODO Use getBoolParameter
#endif
initialized
=
true
;
}
return
flag
;
}
#define TRY_OPEN(capture, backend_func) \
{ \
if (!capture) \
try { \
if (get_capture_debug_flag()) fprintf(stderr, "VIDEOIO(%s): trying ...\n", #backend_func); \
capture = backend_func; \
if (get_capture_debug_flag()) fprintf(stderr, "VIDEOIO(%s): result=%p ...\n", #backend_func, capture); \
} catch (const cv::Exception& e) { \
fprintf(stderr, "VIDEOIO(%s): raised OpenCV exception:\n\n%s\n", #backend_func, e.what()); \
} catch (const std::exception& e) { \
fprintf(stderr, "VIDEOIO(%s): raised C++ exception:\n\n%s\n", #backend_func, e.what()); \
} catch (...) { \
fprintf(stderr, "VIDEOIO(%s): raised unknown C++ exception!\n\n", #backend_func); \
} \
}
/**
* Camera dispatching method: index is the camera number.
...
...
@@ -144,120 +174,101 @@ CV_IMPL CvCapture * cvCreateCameraCapture (int index)
#ifdef HAVE_MSMF
case
CV_CAP_MSMF
:
if
(
!
capture
)
capture
=
cvCreateCameraCapture_MSMF
(
index
);
TRY_OPEN
(
capture
,
cvCreateCameraCapture_MSMF
(
index
))
if
(
pref
)
break
;
#endif
#ifdef HAVE_TYZX
case
CV_CAP_STEREO
:
if
(
!
capture
)
capture
=
cvCreateCameraCapture_TYZX
(
index
);
TRY_OPEN
(
capture
,
cvCreateCameraCapture_TYZX
(
index
))
if
(
pref
)
break
;
#endif
case
CV_CAP_VFW
:
#ifdef HAVE_VFW
if
(
!
capture
)
capture
=
cvCreateCameraCapture_VFW
(
index
);
TRY_OPEN
(
capture
,
cvCreateCameraCapture_VFW
(
index
))
#endif
if
(
pref
)
break
;
// CV_CAP_VFW
#if defined HAVE_LIBV4L || defined HAVE_CAMV4L || defined HAVE_CAMV4L2 || defined HAVE_VIDEOIO
if
(
!
capture
)
capture
=
cvCreateCameraCapture_V4L
(
index
);
TRY_OPEN
(
capture
,
cvCreateCameraCapture_V4L
(
index
))
#endif
#ifdef HAVE_GSTREAMER
if
(
!
capture
)
capture
=
cvCreateCapture_GStreamer
(
CV_CAP_GSTREAMER_V4L2
,
reinterpret_cast
<
char
*>
(
index
));
TRY_OPEN
(
capture
,
cvCreateCapture_GStreamer
(
CV_CAP_GSTREAMER_V4L2
,
reinterpret_cast
<
char
*>
(
index
)))
if
(
!
capture
)
capture
=
cvCreateCapture_GStreamer
(
CV_CAP_GSTREAMER_V4L
,
reinterpret_cast
<
char
*>
(
index
));
TRY_OPEN
(
capture
,
cvCreateCapture_GStreamer
(
CV_CAP_GSTREAMER_V4L
,
reinterpret_cast
<
char
*>
(
index
)))
#endif
if
(
pref
)
break
;
// CV_CAP_VFW
case
CV_CAP_FIREWIRE
:
#ifdef HAVE_DC1394_2
if
(
!
capture
)
capture
=
cvCreateCameraCapture_DC1394_2
(
index
);
TRY_OPEN
(
capture
,
cvCreateCameraCapture_DC1394_2
(
index
))
#endif
#ifdef HAVE_DC1394
if
(
!
capture
)
capture
=
cvCreateCameraCapture_DC1394
(
index
);
TRY_OPEN
(
capture
,
cvCreateCameraCapture_DC1394
(
index
))
#endif
#ifdef HAVE_CMU1394
if
(
!
capture
)
capture
=
cvCreateCameraCapture_CMU
(
index
);
TRY_OPEN
(
capture
,
cvCreateCameraCapture_CMU
(
index
))
#endif
#if defined(HAVE_GSTREAMER) && 0
// Re-enable again when gstreamer 1394 support will land in the backend code
if
(
!
capture
)
capture
=
cvCreateCapture_GStreamer
(
CV_CAP_GSTREAMER_1394
,
0
);
TRY_OPEN
(
capture
,
cvCreateCapture_GStreamer
(
CV_CAP_GSTREAMER_1394
,
0
))
#endif
if
(
pref
)
break
;
// CV_CAP_FIREWIRE
#ifdef HAVE_MIL
case
CV_CAP_MIL
:
if
(
!
capture
)
capture
=
cvCreateCameraCapture_MIL
(
index
);
TRY_OPEN
(
capture
,
cvCreateCameraCapture_MIL
(
index
))
if
(
pref
)
break
;
#endif
#if defined(HAVE_QUICKTIME) || defined(HAVE_QTKIT)
case
CV_CAP_QT
:
if
(
!
capture
)
capture
=
cvCreateCameraCapture_QT
(
index
);
TRY_OPEN
(
capture
,
cvCreateCameraCapture_QT
(
index
))
if
(
pref
)
break
;
#endif
#ifdef HAVE_UNICAP
case
CV_CAP_UNICAP
:
if
(
!
capture
)
capture
=
cvCreateCameraCapture_Unicap
(
index
);
TRY_OPEN
(
capture
,
cvCreateCameraCapture_Unicap
(
index
))
if
(
pref
)
break
;
#endif
#ifdef HAVE_PVAPI
case
CV_CAP_PVAPI
:
if
(
!
capture
)
capture
=
cvCreateCameraCapture_PvAPI
(
index
);
TRY_OPEN
(
capture
,
cvCreateCameraCapture_PvAPI
(
index
))
if
(
pref
)
break
;
#endif
#ifdef HAVE_OPENNI
case
CV_CAP_OPENNI
:
if
(
!
capture
)
capture
=
cvCreateCameraCapture_OpenNI
(
index
);
TRY_OPEN
(
capture
,
cvCreateCameraCapture_OpenNI
(
index
))
if
(
pref
)
break
;
#endif
#ifdef HAVE_OPENNI2
case
CV_CAP_OPENNI2
:
if
(
!
capture
)
capture
=
cvCreateCameraCapture_OpenNI2
(
index
);
TRY_OPEN
(
capture
,
cvCreateCameraCapture_OpenNI2
(
index
))
if
(
pref
)
break
;
#endif
#ifdef HAVE_XIMEA
case
CV_CAP_XIAPI
:
if
(
!
capture
)
capture
=
cvCreateCameraCapture_XIMEA
(
index
);
TRY_OPEN
(
capture
,
cvCreateCameraCapture_XIMEA
(
index
))
if
(
pref
)
break
;
#endif
#ifdef HAVE_AVFOUNDATION
case
CV_CAP_AVFOUNDATION
:
if
(
!
capture
)
capture
=
cvCreateCameraCapture_AVFoundation
(
index
);
TRY_OPEN
(
capture
,
cvCreateCameraCapture_AVFoundation
(
index
))
if
(
pref
)
break
;
#endif
#ifdef HAVE_GIGE_API
case
CV_CAP_GIGANETIX
:
if
(
!
capture
)
capture
=
cvCreateCameraCapture_Giganetix
(
index
);
TRY_OPEN
(
capture
,
cvCreateCameraCapture_Giganetix
(
index
))
if
(
pref
)
break
;
// CV_CAP_GIGANETIX
#endif
}
...
...
@@ -281,66 +292,56 @@ CV_IMPL CvCapture * cvCreateFileCaptureWithPreference (const char * filename, in
#ifdef HAVE_FFMPEG
case
CV_CAP_FFMPEG
:
if
(
!
result
)
result
=
cvCreateFileCapture_FFMPEG_proxy
(
filename
);
TRY_OPEN
(
result
,
cvCreateFileCapture_FFMPEG_proxy
(
filename
))
if
(
apiPreference
)
break
;
#endif
#ifdef HAVE_VFW
case
CV_CAP_VFW
:
if
(
!
result
)
result
=
cvCreateFileCapture_VFW
(
filename
);
TRY_OPEN
(
result
,
cvCreateFileCapture_VFW
(
filename
))
if
(
apiPreference
)
break
;
#endif
#if defined HAVE_LIBV4L || defined HAVE_CAMV4L || defined HAVE_CAMV4L2 || defined HAVE_VIDEOIO
if
(
!
result
)
result
=
cvCreateCameraCapture_V4L
(
filename
);
TRY_OPEN
(
result
,
cvCreateCameraCapture_V4L
(
filename
))
if
(
apiPreference
)
break
;
#endif
case
CV_CAP_MSMF
:
#ifdef HAVE_MSMF
if
(
!
result
)
result
=
cvCreateFileCapture_MSMF
(
filename
);
TRY_OPEN
(
result
,
cvCreateFileCapture_MSMF
(
filename
))
#endif
#ifdef HAVE_XINE
if
(
!
result
)
result
=
cvCreateFileCapture_XINE
(
filename
);
TRY_OPEN
(
result
,
cvCreateFileCapture_XINE
(
filename
))
#endif
if
(
apiPreference
)
break
;
#ifdef HAVE_GSTREAMER
case
CV_CAP_GSTREAMER
:
if
(
!
result
)
result
=
cvCreateCapture_GStreamer
(
CV_CAP_GSTREAMER_FILE
,
filename
);
TRY_OPEN
(
result
,
cvCreateCapture_GStreamer
(
CV_CAP_GSTREAMER_FILE
,
filename
))
if
(
apiPreference
)
break
;
#endif
#if defined(HAVE_QUICKTIME) || defined(HAVE_QTKIT)
case
CV_CAP_QT
:
if
(
!
result
)
result
=
cvCreateFileCapture_QT
(
filename
);
TRY_OPEN
(
result
,
cvCreateFileCapture_QT
(
filename
))
if
(
apiPreference
)
break
;
#endif
#ifdef HAVE_AVFOUNDATION
case
CV_CAP_AVFOUNDATION
:
if
(
!
result
)
result
=
cvCreateFileCapture_AVFoundation
(
filename
);
TRY_OPEN
(
result
,
cvCreateFileCapture_AVFoundation
(
filename
))
if
(
apiPreference
)
break
;
#endif
#ifdef HAVE_OPENNI
case
CV_CAP_OPENNI
:
if
(
!
result
)
result
=
cvCreateFileCapture_OpenNI
(
filename
);
TRY_OPEN
(
result
,
cvCreateFileCapture_OpenNI
(
filename
))
if
(
apiPreference
)
break
;
#endif
case
CV_CAP_IMAGES
:
if
(
!
result
)
result
=
cvCreateFileCapture_Images
(
filename
);
TRY_OPEN
(
result
,
cvCreateFileCapture_Images
(
filename
))
}
return
result
;
...
...
@@ -358,63 +359,47 @@ CV_IMPL CvCapture * cvCreateFileCapture (const char * filename)
CV_IMPL
CvVideoWriter
*
cvCreateVideoWriter
(
const
char
*
filename
,
int
fourcc
,
double
fps
,
CvSize
frameSize
,
int
is_color
)
{
// If none of the writers is used
// these statements suppress 'unused parameter' warnings.
CV_UNUSED
(
frameSize
);
CV_UNUSED
(
is_color
);
//CV_FUNCNAME( "cvCreateVideoWriter" );
CvVideoWriter
*
result
=
0
;
if
(
!
fourcc
||
!
fps
)
result
=
cvCreateVideoWriter_Images
(
filename
);
TRY_OPEN
(
result
,
cvCreateVideoWriter_Images
(
filename
))
#ifdef HAVE_FFMPEG
if
(
!
result
)
result
=
cvCreateVideoWriter_FFMPEG_proxy
(
filename
,
fourcc
,
fps
,
frameSize
,
is_color
);
TRY_OPEN
(
result
,
cvCreateVideoWriter_FFMPEG_proxy
(
filename
,
fourcc
,
fps
,
frameSize
,
is_color
))
#endif
#ifdef HAVE_VFW
if
(
!
result
)
result
=
cvCreateVideoWriter_VFW
(
filename
,
fourcc
,
fps
,
frameSize
,
is_color
);
TRY_OPEN
(
result
,
cvCreateVideoWriter_VFW
(
filename
,
fourcc
,
fps
,
frameSize
,
is_color
))
#endif
#ifdef HAVE_MSMF
if
(
!
result
)
result
=
cvCreateVideoWriter_MSMF
(
filename
,
fourcc
,
fps
,
frameSize
,
is_color
);
TRY_OPEN
(
result
,
cvCreateVideoWriter_MSMF
(
filename
,
fourcc
,
fps
,
frameSize
,
is_color
))
#endif
/* #ifdef HAVE_XINE
if(!result)
result = cvCreateVideoWriter_XINE(filename, fourcc, fps, frameSize, is_color);
TRY_OPEN(result, cvCreateVideoWriter_XINE(filename, fourcc, fps, frameSize, is_color))
#endif
*/
#ifdef HAVE_AVFOUNDATION
if
(
!
result
)
result
=
cvCreateVideoWriter_AVFoundation
(
filename
,
fourcc
,
fps
,
frameSize
,
is_color
);
TRY_OPEN
(
result
,
cvCreateVideoWriter_AVFoundation
(
filename
,
fourcc
,
fps
,
frameSize
,
is_color
))
#endif
#if defined(HAVE_QUICKTIME) || defined(HAVE_QTKIT)
if
(
!
result
)
result
=
cvCreateVideoWriter_QT
(
filename
,
fourcc
,
fps
,
frameSize
,
is_color
);
TRY_OPEN
(
result
,
cvCreateVideoWriter_QT
(
filename
,
fourcc
,
fps
,
frameSize
,
is_color
))
#endif
#ifdef HAVE_GSTREAMER
if
(
!
result
)
result
=
cvCreateVideoWriter_GStreamer
(
filename
,
fourcc
,
fps
,
frameSize
,
is_color
);
#endif
#if !defined(HAVE_FFMPEG) && \
!defined(HAVE_VFW) && \
!defined(HAVE_MSMF) && \
!defined(HAVE_AVFOUNDATION) && \
!defined(HAVE_QUICKTIME) && \
!defined(HAVE_QTKIT) && \
!defined(HAVE_GSTREAMER)
// If none of the writers is used
// these statements suppress 'unused parameter' warnings.
(
void
)
frameSize
;
(
void
)
is_color
;
TRY_OPEN
(
result
,
cvCreateVideoWriter_GStreamer
(
filename
,
fourcc
,
fps
,
frameSize
,
is_color
))
#endif
if
(
!
result
)
result
=
cvCreateVideoWriter_Images
(
filename
);
TRY_OPEN
(
result
,
cvCreateVideoWriter_Images
(
filename
))
return
result
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment