Skip to content
Snippets Groups Projects
Commit dbfaf965 authored by Nicolas Pope's avatar Nicolas Pope
Browse files

Do not use thread pool for second camera

parent 98aaec29
No related branches found
No related tags found
1 merge request!321Reduce latency in device capture and parallel encoding
...@@ -347,14 +347,13 @@ bool OpenCVDevice::get(ftl::rgbd::Frame &frame, cv::cuda::GpuMat &l_out, cv::cud ...@@ -347,14 +347,13 @@ bool OpenCVDevice::get(ftl::rgbd::Frame &frame, cv::cuda::GpuMat &l_out, cv::cud
if (!camera_a_) return false; if (!camera_a_) return false;
std::future<bool> future_b; //std::future<bool> future_b;
if (camera_b_) { if (camera_b_) {
future_b = std::move(ftl::pool.push([this,&rfull,&r,c,&r_out,&r_hres_out,&stream](int id) { //future_b = std::move(ftl::pool.push([this,&rfull,&r,c,&r_out,&r_hres_out,&stream](int id) {
if (!camera_b_->retrieve(frame_r_)) { if (!camera_b_->retrieve(frame_r_)) {
LOG(ERROR) << "Unable to read frame from camera B"; LOG(ERROR) << "Unable to read frame from camera B";
return false; return false;
} } else {
cv::cvtColor(frame_r_, rtmp2_, cv::COLOR_BGR2BGRA); cv::cvtColor(frame_r_, rtmp2_, cv::COLOR_BGR2BGRA);
//if (stereo_) { //if (stereo_) {
...@@ -371,8 +370,9 @@ bool OpenCVDevice::get(ftl::rgbd::Frame &frame, cv::cuda::GpuMat &l_out, cv::cud ...@@ -371,8 +370,9 @@ bool OpenCVDevice::get(ftl::rgbd::Frame &frame, cv::cuda::GpuMat &l_out, cv::cud
//} //}
r_out.upload(r, stream); r_out.upload(r, stream);
return true; }
})); //return true;
//}));
} }
if (camera_b_) { if (camera_b_) {
...@@ -431,10 +431,10 @@ bool OpenCVDevice::get(ftl::rgbd::Frame &frame, cv::cuda::GpuMat &l_out, cv::cud ...@@ -431,10 +431,10 @@ bool OpenCVDevice::get(ftl::rgbd::Frame &frame, cv::cuda::GpuMat &l_out, cv::cud
cv::imencode(".jpg", thumb, thumbdata, params); cv::imencode(".jpg", thumb, thumbdata, params);
} }
if (camera_b_) { //if (camera_b_) {
//FTL_Profile("WaitCamB", 0.05); //FTL_Profile("WaitCamB", 0.05);
future_b.wait(); //future_b.wait();
} //}
return true; return true;
} }
......
...@@ -283,12 +283,13 @@ bool PylonDevice::get(ftl::rgbd::Frame &frame, cv::cuda::GpuMat &l_out, cv::cuda ...@@ -283,12 +283,13 @@ bool PylonDevice::get(ftl::rgbd::Frame &frame, cv::cuda::GpuMat &l_out, cv::cuda
try { try {
FTL_Profile("Frame Retrieve", 0.005); FTL_Profile("Frame Retrieve", 0.005);
std::future<bool> future_b; //std::future<bool> future_b;
bool res_r = false;
if (rcam_) { if (rcam_) {
future_b = std::move(ftl::pool.push([this,&rfull,&r,&l,c,&r_out,&h_r,&stream](int id) { //future_b = std::move(ftl::pool.push([this,&rfull,&r,&l,c,&r_out,&h_r,&stream](int id) {
Pylon::CGrabResultPtr result_right; Pylon::CGrabResultPtr result_right;
if (!_retrieveFrames(result_right, rcam_)) return false; if (_retrieveFrames(result_right, rcam_)) {
cv::Mat wrap_right( cv::Mat wrap_right(
result_right->GetHeight(), result_right->GetHeight(),
...@@ -315,15 +316,16 @@ bool PylonDevice::get(ftl::rgbd::Frame &frame, cv::cuda::GpuMat &l_out, cv::cuda ...@@ -315,15 +316,16 @@ bool PylonDevice::get(ftl::rgbd::Frame &frame, cv::cuda::GpuMat &l_out, cv::cuda
//} //}
r_out.upload(r, stream); r_out.upload(r, stream);
return true; res_r = true;
})); }
//}));
} }
Pylon::CGrabResultPtr result_left; Pylon::CGrabResultPtr result_left;
if (!_retrieveFrames(result_left, lcam_)) { if (!_retrieveFrames(result_left, lcam_)) {
if (rcam_) { if (rcam_) {
future_b.wait(); //future_b.wait();
} }
return false; return false;
} }
...@@ -357,8 +359,9 @@ bool PylonDevice::get(ftl::rgbd::Frame &frame, cv::cuda::GpuMat &l_out, cv::cuda ...@@ -357,8 +359,9 @@ bool PylonDevice::get(ftl::rgbd::Frame &frame, cv::cuda::GpuMat &l_out, cv::cuda
l_out.upload(l, stream); l_out.upload(l, stream);
if (rcam_) { if (rcam_) {
future_b.wait(); //future_b.wait();
if (!future_b.get()) return false; //if (!future_b.get()) return false;
if (!res_r) return false;
} }
} catch (const GenericException &e) { } catch (const GenericException &e) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment