diff --git a/components/rgbd-sources/src/rgbd_streamer.cpp b/components/rgbd-sources/src/rgbd_streamer.cpp index c596584a14485acf932315e7b6a0d8bc068a0560..5646495e84274897b55181223cf306f008f466e0 100644 --- a/components/rgbd-sources/src/rgbd_streamer.cpp +++ b/components/rgbd-sources/src/rgbd_streamer.cpp @@ -196,11 +196,15 @@ void Streamer::_schedule() { pool_.push([this,uri,&jobs,&job_mtx,&job_cv](int id) { StreamSource *src = sources_[uri]; - try { + //auto start = std::chrono::high_resolution_clock::now(); + //try { src->src->grab(); - } catch(...) { - LOG(ERROR) << "Grab Exception for: " << uri; - } + //} catch(...) { + // LOG(ERROR) << "Grab Exception for: " << uri; + //} + /*std::chrono::duration<double> elapsed = + std::chrono::high_resolution_clock::now() - start; + LOG(INFO) << "GRAB Elapsed: " << elapsed.count();*/ unique_lock<shared_mutex> lk(src->mutex); src->state |= ftl::rgbd::detail::kGrabbed; @@ -218,6 +222,8 @@ void Streamer::_schedule() { pool_.push([this,uri,&jobs,&job_mtx,&job_cv](int id) { StreamSource *src = sources_[uri]; + //auto start = std::chrono::high_resolution_clock::now(); + if (src->rgb.rows > 0 && src->depth.rows > 0 && src->clients[0].size() > 0) { vector<unsigned char> rgb_buf; cv::imencode(".jpg", src->rgb, rgb_buf); @@ -247,6 +253,10 @@ void Streamer::_schedule() { } } + /*std::chrono::duration<double> elapsed = + std::chrono::high_resolution_clock::now() - start; + LOG(INFO) << "Stream Elapsed: " << elapsed.count();*/ + unique_lock<shared_mutex> lk(src->mutex); DLOG(1) << "Tx Frame: " << uri; src->state |= ftl::rgbd::detail::kTransmitted; diff --git a/components/rgbd-sources/src/stereovideo_source.cpp b/components/rgbd-sources/src/stereovideo_source.cpp index 07711bc33dc69955467ac577203d001dd8e0af30..047c9be554f96c55b117434639ba9e573835fe56 100644 --- a/components/rgbd-sources/src/stereovideo_source.cpp +++ b/components/rgbd-sources/src/stereovideo_source.cpp @@ -111,15 +111,12 @@ static void disparityToDepth(const cv::Mat &disparity, cv::Mat &depth, const cv: } void StereoVideoSource::grab() { - // TODO(Nick) find a way to move this to last part ... but grab can't - // be called twice by different threads and it is currently - // FIXME Call to grab from multiple threads - unique_lock<mutex> lk(mutex_); calib_->rectified(left_, right_); cv::Mat disp; disp_->compute(left_, right_, disp); + unique_lock<mutex> lk(mutex_); left_.copyTo(rgb_); disparityToDepth(disp, depth_, calib_->getQ()); }