From c49342f9f700653226cb7f95e9c67c8413edb35c Mon Sep 17 00:00:00 2001 From: John Zhao Date: Sat, 28 Apr 2018 13:37:25 +0800 Subject: [PATCH] Add process return bool --- src/api/processor/depth_processor.cc | 3 ++- src/api/processor/depth_processor.h | 2 +- src/api/processor/disparity_normalized_processor.cc | 4 +++- src/api/processor/disparity_normalized_processor.h | 2 +- src/api/processor/disparity_processor.cc | 3 ++- src/api/processor/disparity_processor.h | 2 +- src/api/processor/points_processor.cc | 3 ++- src/api/processor/points_processor.h | 2 +- src/api/processor/processor.cc | 13 ++++++++++--- src/api/processor/processor.h | 2 +- src/api/processor/rectify_processor.cc | 3 ++- src/api/processor/rectify_processor.h | 2 +- 12 files changed, 27 insertions(+), 14 deletions(-) diff --git a/src/api/processor/depth_processor.cc b/src/api/processor/depth_processor.cc index 3c6e12a..0031c70 100644 --- a/src/api/processor/depth_processor.cc +++ b/src/api/processor/depth_processor.cc @@ -20,11 +20,12 @@ Object *DepthProcessor::OnCreateOutput() { return nullptr; } -void DepthProcessor::OnProcess( +bool DepthProcessor::OnProcess( Object *const in, Object *const out, Processor *const parent) { UNUSED(in) UNUSED(out) UNUSED(parent) + return true; } MYNTEYE_END_NAMESPACE diff --git a/src/api/processor/depth_processor.h b/src/api/processor/depth_processor.h index 616cc76..135944b 100644 --- a/src/api/processor/depth_processor.h +++ b/src/api/processor/depth_processor.h @@ -19,7 +19,7 @@ class DepthProcessor : public Processor { protected: Object *OnCreateOutput() override; - void OnProcess( + bool OnProcess( Object *const in, Object *const out, Processor *const parent) override; }; diff --git a/src/api/processor/disparity_normalized_processor.cc b/src/api/processor/disparity_normalized_processor.cc index 65bc03f..1f49583 100644 --- a/src/api/processor/disparity_normalized_processor.cc +++ b/src/api/processor/disparity_normalized_processor.cc @@ -22,12 +22,14 @@ Object *DisparityNormalizedProcessor::OnCreateOutput() { return new ObjMat(); } -void DisparityNormalizedProcessor::OnProcess( +bool DisparityNormalizedProcessor::OnProcess( Object *const in, Object *const out, Processor *const parent) { UNUSED(parent) const ObjMat *input = Object::Cast(in); ObjMat *output = Object::Cast(out); cv::normalize(input->value, output->value, 0, 255, cv::NORM_MINMAX, CV_8UC1); + // cv::normalize maybe return empty == + return !output->value.empty(); } MYNTEYE_END_NAMESPACE diff --git a/src/api/processor/disparity_normalized_processor.h b/src/api/processor/disparity_normalized_processor.h index f218cb8..bcaf83d 100644 --- a/src/api/processor/disparity_normalized_processor.h +++ b/src/api/processor/disparity_normalized_processor.h @@ -19,7 +19,7 @@ class DisparityNormalizedProcessor : public Processor { protected: Object *OnCreateOutput() override; - void OnProcess( + bool OnProcess( Object *const in, Object *const out, Processor *const parent) override; }; diff --git a/src/api/processor/disparity_processor.cc b/src/api/processor/disparity_processor.cc index 96ea67a..2d1c22a 100644 --- a/src/api/processor/disparity_processor.cc +++ b/src/api/processor/disparity_processor.cc @@ -54,7 +54,7 @@ Object *DisparityProcessor::OnCreateOutput() { return new ObjMat(); } -void DisparityProcessor::OnProcess( +bool DisparityProcessor::OnProcess( Object *const in, Object *const out, Processor *const parent) { UNUSED(parent) const ObjMat2 *input = Object::Cast(in); @@ -81,6 +81,7 @@ void DisparityProcessor::OnProcess( sgbm_->compute(input->first, input->second, disparity); #endif output->value = disparity / 16 + 1; + return true; } MYNTEYE_END_NAMESPACE diff --git a/src/api/processor/disparity_processor.h b/src/api/processor/disparity_processor.h index 892c506..7cc66d4 100644 --- a/src/api/processor/disparity_processor.h +++ b/src/api/processor/disparity_processor.h @@ -25,7 +25,7 @@ class DisparityProcessor : public Processor { protected: Object *OnCreateOutput() override; - void OnProcess( + bool OnProcess( Object *const in, Object *const out, Processor *const parent) override; private: diff --git a/src/api/processor/points_processor.cc b/src/api/processor/points_processor.cc index 9b8c500..a400339 100644 --- a/src/api/processor/points_processor.cc +++ b/src/api/processor/points_processor.cc @@ -20,11 +20,12 @@ Object *PointsProcessor::OnCreateOutput() { return nullptr; } -void PointsProcessor::OnProcess( +bool PointsProcessor::OnProcess( Object *const in, Object *const out, Processor *const parent) { UNUSED(in) UNUSED(out) UNUSED(parent) + return true; } MYNTEYE_END_NAMESPACE diff --git a/src/api/processor/points_processor.h b/src/api/processor/points_processor.h index 636bf84..e73f41c 100644 --- a/src/api/processor/points_processor.h +++ b/src/api/processor/points_processor.h @@ -19,7 +19,7 @@ class PointsProcessor : public Processor { protected: Object *OnCreateOutput() override; - void OnProcess( + bool OnProcess( Object *const in, Object *const out, Processor *const parent) override; }; diff --git a/src/api/processor/processor.cc b/src/api/processor/processor.cc index 2a3e7c5..c6640a2 100644 --- a/src/api/processor/processor.cc +++ b/src/api/processor/processor.cc @@ -151,12 +151,19 @@ void Processor::Run() { if (pre_callback_) { pre_callback_(input_.get()); } + bool ok = false; if (callback_) { - if (!callback_(input_.get(), output_.get(), parent_)) { - OnProcess(input_.get(), output_.get(), parent_); + if (callback_(input_.get(), output_.get(), parent_)) { + ok = true; + } else { + ok = OnProcess(input_.get(), output_.get(), parent_); } } else { - OnProcess(input_.get(), output_.get(), parent_); + ok = OnProcess(input_.get(), output_.get(), parent_); + } + if (!ok) { + VLOG(2) << Name() << " process failed"; + continue; } if (post_callback_) { post_callback_(output_.get()); diff --git a/src/api/processor/processor.h b/src/api/processor/processor.h index 970b02e..b973818 100644 --- a/src/api/processor/processor.h +++ b/src/api/processor/processor.h @@ -58,7 +58,7 @@ class Processor /*: public std::enable_shared_from_this*/ { protected: virtual Object *OnCreateOutput() = 0; - virtual void OnProcess( + virtual bool OnProcess( Object *const in, Object *const out, Processor *const parent) = 0; private: diff --git a/src/api/processor/rectify_processor.cc b/src/api/processor/rectify_processor.cc index 4a9b34b..0201d92 100644 --- a/src/api/processor/rectify_processor.cc +++ b/src/api/processor/rectify_processor.cc @@ -29,13 +29,14 @@ Object *RectifyProcessor::OnCreateOutput() { return new ObjMat2(); } -void RectifyProcessor::OnProcess( +bool RectifyProcessor::OnProcess( Object *const in, Object *const out, Processor *const parent) { UNUSED(parent) const ObjMat2 *input = Object::Cast(in); ObjMat2 *output = Object::Cast(out); cv::remap(input->first, output->first, map11, map12, cv::INTER_LINEAR); cv::remap(input->second, output->second, map21, map22, cv::INTER_LINEAR); + return true; } void RectifyProcessor::InitParams( diff --git a/src/api/processor/rectify_processor.h b/src/api/processor/rectify_processor.h index c79a1c0..987501a 100644 --- a/src/api/processor/rectify_processor.h +++ b/src/api/processor/rectify_processor.h @@ -25,7 +25,7 @@ class RectifyProcessor : public Processor { protected: Object *OnCreateOutput() override; - void OnProcess( + bool OnProcess( Object *const in, Object *const out, Processor *const parent) override; private: