[Bf-blender-cvs] [618c4b9daf2] master: Refactor Libmv C-API motion model conversion

Sergey Sharybin noreply at git.blender.org
Mon Mar 15 15:55:25 CET 2021


Commit: 618c4b9daf216eb5d287fc7725d9154e21378219
Author: Sergey Sharybin
Date:   Mon Mar 15 15:22:03 2021 +0100
Branches: master
https://developer.blender.org/rB618c4b9daf216eb5d287fc7725d9154e21378219

Refactor Libmv C-API motion model conversion

Mode to an own utility function and guard missing enumerator values
with a LOG(FATAL).

===================================================================

M	intern/libmv/intern/track_region.cc

===================================================================

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;



More information about the Bf-blender-cvs mailing list