From 618c4b9daf216eb5d287fc7725d9154e21378219 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Mon, 15 Mar 2021 15:22:03 +0100 Subject: Refactor Libmv C-API motion model conversion Mode to an own utility function and guard missing enumerator values with a LOG(FATAL). --- intern/libmv/intern/track_region.cc | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) (limited to 'intern') diff --git a/intern/libmv/intern/track_region.cc b/intern/libmv/intern/track_region.cc index af88afd7ac2..334e331c7a8 100644 --- a/intern/libmv/intern/track_region.cc +++ b/intern/libmv/intern/track_region.cc @@ -21,6 +21,7 @@ #include "intern/image.h" #include "intern/utildefines.h" #include "libmv/image/image.h" +#include "libmv/logging/logging.h" #include "libmv/tracking/track_region.h" /* define this to generate PNG images with content of search areas @@ -36,23 +37,35 @@ using libmv::TrackRegion; using libmv::TrackRegionOptions; using libmv::TrackRegionResult; -void libmv_configureTrackRegionOptions( - const libmv_TrackRegionOptions& options, - TrackRegionOptions* track_region_options) { - switch (options.motion_model) { +namespace { + +TrackRegionOptions::Mode convertMotionModelToMode(int motion_model) { + switch (motion_model) { #define LIBMV_CONVERT(the_model) \ - case TrackRegionOptions::the_model: \ - track_region_options->mode = TrackRegionOptions::the_model; \ - break; + case TrackRegionOptions::the_model: return TrackRegionOptions::the_model; + LIBMV_CONVERT(TRANSLATION) LIBMV_CONVERT(TRANSLATION_ROTATION) LIBMV_CONVERT(TRANSLATION_SCALE) LIBMV_CONVERT(TRANSLATION_ROTATION_SCALE) LIBMV_CONVERT(AFFINE) LIBMV_CONVERT(HOMOGRAPHY) + #undef LIBMV_CONVERT } + LOG(FATAL) << "Unhandled motion model " << motion_model + << ", should never happen."; + + return TrackRegionOptions::TRANSLATION; +} + +} // namespace + +void libmv_configureTrackRegionOptions( + const libmv_TrackRegionOptions& options, + TrackRegionOptions* track_region_options) { + track_region_options->mode = convertMotionModelToMode(options.motion_model); track_region_options->minimum_correlation = options.minimum_correlation; track_region_options->max_iterations = options.num_iterations; track_region_options->sigma = options.sigma; -- cgit v1.2.3