From 2a5695139d314b33357930092c7629c22d051815 Mon Sep 17 00:00:00 2001 From: Sebastian Hahta <joseha@utu.fi> Date: Fri, 12 Jul 2019 11:53:05 +0300 Subject: [PATCH] closes #114; precision depends on thread::sleep_for --- components/rgbd-sources/src/snapshot.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/components/rgbd-sources/src/snapshot.cpp b/components/rgbd-sources/src/snapshot.cpp index 2bcb95fa8..9980235ae 100644 --- a/components/rgbd-sources/src/snapshot.cpp +++ b/components/rgbd-sources/src/snapshot.cpp @@ -145,7 +145,9 @@ bool SnapshotWriter::addCameraRGBD(const string &name, const Mat &rgb, const Mat } SnapshotStreamWriter::SnapshotStreamWriter(const string &filename, int delay) : - run_(false), finished_(false), writer_(filename), delay_(delay) {} + run_(false), finished_(false), delay_(delay), writer_(filename) { + DCHECK(delay > 0); + } SnapshotStreamWriter::~SnapshotStreamWriter() { @@ -161,8 +163,10 @@ void SnapshotStreamWriter::run() { vector<Mat> depth(sources_.size()); while(run_) { - auto now = std::chrono::system_clock::now(); - auto duration = now.time_since_epoch(); + auto t_now = std::chrono::system_clock::now(); + auto t_wakeup = t_now + std::chrono::milliseconds(delay_); + + auto duration = t_now.time_since_epoch(); auto ms = std::chrono::duration_cast<std::chrono::milliseconds>(duration).count(); for(size_t i = 0; i < sources_.size(); ++i) { @@ -173,7 +177,7 @@ void SnapshotStreamWriter::run() { writer_.addCameraRGBD(std::to_string(ms) + "-" + std::to_string(i), rgb[i], depth[i]); } - std::this_thread::sleep_for(std::chrono::milliseconds(delay_)); + std::this_thread::sleep_until(t_wakeup); } run_ = false; -- GitLab