From 9cb671aa56689c984edce9e6a4663ed8ccd99cb3 Mon Sep 17 00:00:00 2001 From: Andrzej Kapolka Date: Tue, 18 Jun 2013 14:43:19 -0700 Subject: [PATCH] Slightly better fps computation. --- interface/src/Webcam.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/interface/src/Webcam.cpp b/interface/src/Webcam.cpp index 0675b74b6f..50335be64f 100644 --- a/interface/src/Webcam.cpp +++ b/interface/src/Webcam.cpp @@ -16,7 +16,7 @@ #include "Application.h" #include "Webcam.h" -Webcam::Webcam() : _frameTextureID(0), _frameCount(0) { +Webcam::Webcam() : _frameTextureID(0), _frameCount(0), _startTimestamp(0) { // the grabber simply runs as fast as possible _grabber = new FrameGrabber(); _grabber->moveToThread(&_grabberThread); @@ -26,9 +26,6 @@ void Webcam::init() { // start the grabber thread _grabberThread.start(); - // remember when we started - _startTimestamp = _lastFrameTimestamp = usecTimestampNow(); - // let the grabber know we're ready for the first frame QMetaObject::invokeMethod(_grabber, "grabFrame"); } @@ -94,7 +91,12 @@ void Webcam::setFrame(void* image) { const int MAX_FPS = 60; const int MIN_FRAME_DELAY = 1000000 / MAX_FPS; long long now = usecTimestampNow(); - long long remaining = MIN_FRAME_DELAY - (now - _lastFrameTimestamp); + long long remaining = MIN_FRAME_DELAY; + if (_startTimestamp == 0) { + _startTimestamp = now; + } else { + remaining -= (now - _lastFrameTimestamp); + } _lastFrameTimestamp = now; // let the grabber know we're ready for the next frame