From 2b9e43d3470ce079cb256f133f3ad1b90296a008 Mon Sep 17 00:00:00 2001 From: Lab101 win10 desktop Date: Thu, 4 May 2017 14:20:35 +0200 Subject: [PATCH] fix: videoplayer hangs when setloop=false --- src/OcvVideo.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/OcvVideo.cpp b/src/OcvVideo.cpp index 30a7d5c..906853a 100644 --- a/src/OcvVideo.cpp +++ b/src/OcvVideo.cpp @@ -195,7 +195,11 @@ bool OcvVideoPlayer::update() auto now = chrono::high_resolution_clock::now(); double d = chrono::duration_cast>( now - mGrabTime ).count(); double nextFrame = mCapture->get( CV_CAP_PROP_POS_FRAMES ); - bool loop = mLoop && (uint32_t)nextFrame == mNumFrames - 1; + + bool end = (uint32_t)nextFrame == mNumFrames - 1; + if (!mLoop && end) return false; + bool loop = mLoop && end; + if ( d >= mFrameDuration / mSpeed && mCapture->grab() ) { mElapsedFrames = (uint32_t)nextFrame; mElapsedSeconds = mCapture->get( CV_CAP_PROP_POS_MSEC ) * 0.001;