From 0fbb5e29b30caa687b19f5df206ed7b12f68a87a Mon Sep 17 00:00:00 2001 From: Nicolas Pope <nwpope@utu.fi> Date: Sun, 15 Dec 2019 19:43:25 +0200 Subject: [PATCH] Switch to streams for snapshot source --- .../src/sources/snapshot/snapshot_source.cpp | 15 ++++++++++----- .../src/sources/snapshot/snapshot_source.hpp | 1 + 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/components/rgbd-sources/src/sources/snapshot/snapshot_source.cpp b/components/rgbd-sources/src/sources/snapshot/snapshot_source.cpp index 136a2e7df..61acdb9d8 100644 --- a/components/rgbd-sources/src/sources/snapshot/snapshot_source.cpp +++ b/components/rgbd-sources/src/sources/snapshot/snapshot_source.cpp @@ -53,6 +53,8 @@ SnapshotSource::SnapshotSource(ftl::rgbd::Source *host, Snapshot &snapshot, cons host->setPose(pose); mspf_ = 1000 / host_->value("fps", 20); + + cudaStreamCreate(&stream_); } bool SnapshotSource::compute(int n, int b) { @@ -61,11 +63,14 @@ bool SnapshotSource::compute(int n, int b) { //snap_rgb_.copyTo(rgb_); //snap_depth_.copyTo(depth_); - rgb_.upload(snap_rgb_); - depth_.upload(snap_depth_); - - auto cb = host_->callback(); - if (cb) cb(timestamp_, rgb_, depth_); + cv::cuda::Stream cvstream = cv::cuda::StreamAccessor::wrapStream(stream_); + rgb_.upload(snap_rgb_, cvstream); + depth_.upload(snap_depth_, cvstream); + cudaStreamSynchronize(stream_); + + //auto cb = host_->callback(); + //if (cb) cb(timestamp_, rgb_, depth_); + host_->notify(timestamp_, rgb_, depth_); frame_idx_ = (frame_idx_ + 1) % snapshot_.getFramesCount(); diff --git a/components/rgbd-sources/src/sources/snapshot/snapshot_source.hpp b/components/rgbd-sources/src/sources/snapshot/snapshot_source.hpp index de1b0df48..80a0bf392 100644 --- a/components/rgbd-sources/src/sources/snapshot/snapshot_source.hpp +++ b/components/rgbd-sources/src/sources/snapshot/snapshot_source.hpp @@ -32,6 +32,7 @@ class SnapshotSource : public detail::Source { cv::Mat snap_rgb_; cv::Mat snap_depth_; int mspf_; + cudaStream_t stream_; }; } -- GitLab