|
|
|
@ -215,8 +215,28 @@ public: |
|
|
|
|
throw SkipTestException(cv::String("Backend ") + cv::videoio_registry::getBackendName(apiPref) + |
|
|
|
|
cv::String(" can't open the video: ") + video_file); |
|
|
|
|
|
|
|
|
|
int frame_count = (int)cap.get(CAP_PROP_FRAME_COUNT); |
|
|
|
|
|
|
|
|
|
// HACK: Video consists of 125 frames, but cv::VideoCapture with FFmpeg reports only 122 frames for mpg video.
|
|
|
|
|
// mpg file reports 5.08 sec * 24 fps => property returns 122 frames,but actual number of frames returned is 125
|
|
|
|
|
// HACK: CAP_PROP_FRAME_COUNT is not supported for vmw + MSMF. Just force check for all 125 frames
|
|
|
|
|
if (ext == "mpg") |
|
|
|
|
EXPECT_GT(frame_count, 121); |
|
|
|
|
else if ((ext == "wmv") && (apiPref == CAP_MSMF)) |
|
|
|
|
frame_count = 125; |
|
|
|
|
else |
|
|
|
|
EXPECT_EQ(frame_count, 125); |
|
|
|
|
Mat img; |
|
|
|
|
for(int i = 0; i < 10; i++) |
|
|
|
|
|
|
|
|
|
#ifdef _WIN32 // handle old FFmpeg wrapper on Windows till rebuild
|
|
|
|
|
frame_count = 10; |
|
|
|
|
#else |
|
|
|
|
// HACK: FFmpeg reports picture_pts = AV_NOPTS_VALUE_ for the last frame for AVI container by some reason
|
|
|
|
|
if ((ext == "avi") && (apiPref == CAP_FFMPEG)) |
|
|
|
|
frame_count--; |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
for (int i = 0; i < frame_count; i++) |
|
|
|
|
{ |
|
|
|
|
double timestamp = 0; |
|
|
|
|
ASSERT_NO_THROW(cap >> img); |
|
|
|
|