mirror of
https://github.com/opencv/opencv.git
synced 2025-07-26 07:07:37 +08:00
videoio(test): skip GStreamer in 'frame_timestamp' tests
- CAP_PROP_POS_MSEC is not reliable
This commit is contained in:
parent
a9f4f8ded4
commit
962f5c9b82
@ -1062,6 +1062,8 @@ double GStreamerCapture::getProperty(int propId) const
|
|||||||
switch(propId)
|
switch(propId)
|
||||||
{
|
{
|
||||||
case CV_CAP_PROP_POS_MSEC:
|
case CV_CAP_PROP_POS_MSEC:
|
||||||
|
CV_LOG_ONCE_WARNING(NULL, "OpenCV | GStreamer: CAP_PROP_POS_MSEC property result may be unrealiable: "
|
||||||
|
"https://github.com/opencv/opencv/issues/19025");
|
||||||
format = GST_FORMAT_TIME;
|
format = GST_FORMAT_TIME;
|
||||||
status = gst_element_query_position(sink.get(), CV_GST_FORMAT(format), &value);
|
status = gst_element_query_position(sink.get(), CV_GST_FORMAT(format), &value);
|
||||||
if(!status) {
|
if(!status) {
|
||||||
|
@ -237,6 +237,11 @@ public:
|
|||||||
if (!isBackendAvailable(apiPref, cv::videoio_registry::getStreamBackends()))
|
if (!isBackendAvailable(apiPref, cv::videoio_registry::getStreamBackends()))
|
||||||
throw SkipTestException(cv::String("Backend is not available/disabled: ") + cv::videoio_registry::getBackendName(apiPref));
|
throw SkipTestException(cv::String("Backend is not available/disabled: ") + cv::videoio_registry::getBackendName(apiPref));
|
||||||
|
|
||||||
|
// GStreamer: https://github.com/opencv/opencv/issues/19025
|
||||||
|
if (apiPref == CAP_GSTREAMER)
|
||||||
|
throw SkipTestException(cv::String("Backend ") + cv::videoio_registry::getBackendName(apiPref) +
|
||||||
|
cv::String(" does not return reliable values for CAP_PROP_POS_MSEC property"));
|
||||||
|
|
||||||
if (((apiPref == CAP_FFMPEG) && ((ext == "h264") || (ext == "h265"))))
|
if (((apiPref == CAP_FFMPEG) && ((ext == "h264") || (ext == "h265"))))
|
||||||
throw SkipTestException(cv::String("Backend ") + cv::videoio_registry::getBackendName(apiPref) +
|
throw SkipTestException(cv::String("Backend ") + cv::videoio_registry::getBackendName(apiPref) +
|
||||||
cv::String(" does not support CAP_PROP_POS_MSEC option"));
|
cv::String(" does not support CAP_PROP_POS_MSEC option"));
|
||||||
@ -253,10 +258,12 @@ public:
|
|||||||
double timestamp = 0;
|
double timestamp = 0;
|
||||||
ASSERT_NO_THROW(cap >> img);
|
ASSERT_NO_THROW(cap >> img);
|
||||||
EXPECT_NO_THROW(timestamp = cap.get(CAP_PROP_POS_MSEC));
|
EXPECT_NO_THROW(timestamp = cap.get(CAP_PROP_POS_MSEC));
|
||||||
|
if (cvtest::debugLevel > 0)
|
||||||
|
std::cout << "i = " << i << ": timestamp = " << timestamp << std::endl;
|
||||||
const double frame_period = 1000.f/bunny_param.getFps();
|
const double frame_period = 1000.f/bunny_param.getFps();
|
||||||
// NOTE: eps == frame_period, because videoCapture returns frame begining timestamp or frame end
|
// NOTE: eps == frame_period, because videoCapture returns frame begining timestamp or frame end
|
||||||
// timestamp depending on codec and back-end. So the first frame has timestamp 0 or frame_period.
|
// timestamp depending on codec and back-end. So the first frame has timestamp 0 or frame_period.
|
||||||
EXPECT_NEAR(timestamp, i*frame_period, frame_period);
|
EXPECT_NEAR(timestamp, i*frame_period, frame_period) << "i=" << i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user