[Bf-blender-cvs] [7013d55] master: Libmv: Add autotrack API to the C-API

Sergey Sharybin noreply at git.blender.org
Thu Oct 30 19:32:13 CET 2014


Commit: 7013d55580f59066f8b88626808502feb2d66e3d
Author: Sergey Sharybin
Date:   Sun Jun 22 14:53:21 2014 +0600
Branches: master
https://developer.blender.org/rB7013d55580f59066f8b88626808502feb2d66e3d

Libmv: Add autotrack API to the C-API

Pretty much straightforward changes, nothing to be mentioned specially.

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

M	extern/libmv/CMakeLists.txt
M	extern/libmv/bundle.sh
A	extern/libmv/intern/autotrack.cc
A	extern/libmv/intern/autotrack.h
A	extern/libmv/intern/frame_accessor.cc
A	extern/libmv/intern/frame_accessor.h
M	extern/libmv/intern/image.cc
M	extern/libmv/intern/image.h
M	extern/libmv/intern/stub.cc
A	extern/libmv/intern/tracksN.cc
A	extern/libmv/intern/tracksN.h
M	extern/libmv/libmv-capi.h

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

diff --git a/extern/libmv/CMakeLists.txt b/extern/libmv/CMakeLists.txt
index bd27228..69632b3 100644
--- a/extern/libmv/CMakeLists.txt
+++ b/extern/libmv/CMakeLists.txt
@@ -66,19 +66,22 @@ if(WITH_LIBMV)
 
 	list(APPEND INC_SYS
 		../Eigen3
-		${PNG_INCLUDE_DIR}
+		${PNG_INCLUDE_DIRS}
 		${ZLIB_INCLUDE_DIRS}
 	)
 
 	list(APPEND SRC
+		intern/autotrack.cc
 		intern/camera_intrinsics.cc
 		intern/detector.cc
+		intern/frame_accessor.cc
 		intern/homography.cc
 		intern/image.cc
 		intern/logging.cc
 		intern/reconstruction.cc
 		intern/track_region.cc
 		intern/tracks.cc
+		intern/tracksN.cc
 		libmv/autotrack/autotrack.cc
 		libmv/autotrack/predict_tracks.cc
 		libmv/autotrack/tracks.cc
@@ -117,14 +120,17 @@ if(WITH_LIBMV)
 		libmv/tracking/trklt_region_tracker.cc
 
 
+		intern/autotrack.h
 		intern/camera_intrinsics.h
 		intern/detector.h
+		intern/frame_accessor.h
 		intern/homography.h
 		intern/image.h
 		intern/logging.h
 		intern/reconstruction.h
 		intern/track_region.h
 		intern/tracks.h
+		intern/tracksN.h
 		libmv/autotrack/autotrack.h
 		libmv/autotrack/callbacks.h
 		libmv/autotrack/frame_accessor.h
@@ -245,7 +251,7 @@ if(WITH_LIBMV)
 	endif()
 else()
 	list(APPEND SRC
-		libmv-capi_stub.cc
+		intern/stub.cc
 	)
 endif()
 
diff --git a/extern/libmv/bundle.sh b/extern/libmv/bundle.sh
index f352f77..668c11b 100755
--- a/extern/libmv/bundle.sh
+++ b/extern/libmv/bundle.sh
@@ -159,30 +159,36 @@ if(WITH_LIBMV)
 
 	list(APPEND INC_SYS
 		../Eigen3
-		\${PNG_INCLUDE_DIR}
+		\${PNG_INCLUDE_DIRS}
 		\${ZLIB_INCLUDE_DIRS}
 	)
 
 	list(APPEND SRC
+		intern/autotrack.cc
 		intern/camera_intrinsics.cc
 		intern/detector.cc
+		intern/frame_accessor.cc
 		intern/homography.cc
 		intern/image.cc
 		intern/logging.cc
 		intern/reconstruction.cc
 		intern/track_region.cc
 		intern/tracks.cc
+		intern/tracksN.cc
 ${sources}
 ${third_sources}
 
+		intern/autotrack.h
 		intern/camera_intrinsics.h
 		intern/detector.h
+		intern/frame_accessor.h
 		intern/homography.h
 		intern/image.h
 		intern/logging.h
 		intern/reconstruction.h
 		intern/track_region.h
 		intern/tracks.h
+		intern/tracksN.h
 ${headers}
 
 ${third_headers}
@@ -207,7 +213,7 @@ ${tests}
 	endif()
 else()
 	list(APPEND SRC
-		libmv-capi_stub.cc
+		intern/stub.cc
 	)
 endif()
 
diff --git a/extern/libmv/intern/autotrack.cc b/extern/libmv/intern/autotrack.cc
new file mode 100644
index 0000000..6ddb1af
--- /dev/null
+++ b/extern/libmv/intern/autotrack.cc
@@ -0,0 +1,108 @@
+/*
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * The Original Code is Copyright (C) 2014 Blender Foundation.
+ * All rights reserved.
+ *
+ * Contributor(s): Blender Foundation,
+ *                 Sergey Sharybin
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+#include "intern/autotrack.h"
+#include "intern/tracksN.h"
+#include "intern/utildefines.h"
+#include "libmv/autotrack/autotrack.h"
+
+using mv::AutoTrack;
+using mv::FrameAccessor;
+using mv::Marker;
+using libmv::TrackRegionOptions;
+using libmv::TrackRegionResult;
+
+libmv_AutoTrack* libmv_autoTrackNew(libmv_FrameAccessor *frame_accessor) {
+  return (libmv_AutoTrack*) LIBMV_OBJECT_NEW(AutoTrack,
+                                             (FrameAccessor*) frame_accessor);
+}
+
+void libmv_autoTrackDestroy(libmv_AutoTrack* libmv_autotrack) {
+  LIBMV_OBJECT_DELETE(libmv_autotrack, AutoTrack);
+}
+
+void libmv_autoTrackSetOptions(libmv_AutoTrack* libmv_autotrack,
+                               const libmv_AutoTrackOptions* options) {
+  AutoTrack *autotrack = ((AutoTrack*) libmv_autotrack);
+  libmv_configureTrackRegionOptions(options->track_region,
+                                    &autotrack->options.track_region);
+
+  autotrack->options.search_region.min(0) = options->search_region.min[0];
+  autotrack->options.search_region.min(1) = options->search_region.min[1];
+  autotrack->options.search_region.max(0) = options->search_region.max[0];
+  autotrack->options.search_region.max(1) = options->search_region.max[1];
+}
+
+int libmv_autoTrackMarker(libmv_AutoTrack* libmv_autotrack,
+                          const libmv_TrackRegionOptions* libmv_options,
+                          libmv_Marker *libmv_tracked_marker,
+                          libmv_TrackRegionResult* libmv_result) {
+
+  Marker tracked_marker;
+  TrackRegionOptions options;
+  TrackRegionResult result;
+  libmv_apiMarkerToMarker(*libmv_tracked_marker, &tracked_marker);
+  libmv_configureTrackRegionOptions(*libmv_options,
+                                    &options);
+
+  bool tracking_result
+    = ((AutoTrack*) libmv_autotrack)->TrackMarker(&tracked_marker,
+                                                  &result,
+                                                  &options);
+  libmv_markerToApiMarker(tracked_marker, libmv_tracked_marker);
+  libmv_regionTrackergetResult(result, libmv_result);
+
+  // TODO(keir): Update the termination string with failure details.
+  if (result.termination == TrackRegionResult::CONVERGENCE ||
+      result.termination == TrackRegionResult::NO_CONVERGENCE) {
+    tracking_result = true;
+  }
+
+  return tracking_result;
+}
+
+void libmv_autoTrackAddMarker(libmv_AutoTrack* libmv_autotrack,
+                              const libmv_Marker* libmv_marker) {
+  Marker marker;
+  libmv_apiMarkerToMarker(*libmv_marker, &marker);
+  ((AutoTrack*) libmv_autotrack)->AddMarker(marker);
+}
+
+int libmv_autoTrackGetMarker(libmv_AutoTrack* libmv_autotrack,
+                             int clip,
+                             int frame,
+                             int track,
+                             libmv_Marker *libmv_marker) {
+  Marker marker;
+  int ok = ((AutoTrack*) libmv_autotrack)->GetMarker(clip,
+                                                     frame,
+                                                     track,
+                                                     &marker);
+  if (ok) {
+    libmv_markerToApiMarker(marker, libmv_marker);
+  }
+  return ok;
+}
diff --git a/extern/libmv/intern/autotrack.h b/extern/libmv/intern/autotrack.h
new file mode 100644
index 0000000..22e530f
--- /dev/null
+++ b/extern/libmv/intern/autotrack.h
@@ -0,0 +1,71 @@
+/*
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * The Original Code is Copyright (C) 2014 Blender Foundation.
+ * All rights reserved.
+ *
+ * Contributor(s): Blender Foundation,
+ *                 Sergey Sharybin
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+#ifndef LIBMV_C_API_AUTOTRACK_H_
+#define LIBMV_C_API_AUTOTRACK_H_
+
+#include "intern/track_region.h"
+#include "intern/region.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct libmv_FrameAccessor libmv_FrameAccessor;
+typedef struct libmv_AutoTrack libmv_AutoTrack;
+typedef struct libmv_Marker libmv_Marker;
+
+typedef struct libmv_AutoTrackOptions {
+  libmv_TrackRegionOptions track_region;
+  libmv_Region search_region;
+} libmv_AutoTrackOptions;
+
+libmv_AutoTrack* libmv_autoTrackNew(libmv_FrameAccessor *frame_accessor);
+
+void libmv_autoTrackDestroy(libmv_AutoTrack* libmv_autotrack);
+
+void libmv_autoTrackSetOptions(libmv_AutoTrack* libmv_autotrack,
+                               const libmv_AutoTrackOptions* options);
+
+int libmv_autoTrackMarker(libmv_AutoTrack* libmv_autotrack,
+                          const libmv_TrackRegionOptions* libmv_options,
+                          libmv_Marker *libmv_tracker_marker,
+                          libmv_TrackRegionResult* libmv_result);
+
+void libmv_autoTrackAddMarker(libmv_AutoTrack* libmv_autotrack,
+                              const libmv_Marker* libmv_marker);
+
+int libmv_autoTrackGetMarker(libmv_AutoTrack* libmv_autotrack,
+                             int clip,
+                             int frame,
+                             int track,
+                             libmv_Marker *libmv_marker);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  // LIBMV_C_API_TRACKS_H_
diff --git a/extern/libmv/intern/frame_accessor.cc b/extern/libmv/intern/frame_accessor.cc
new file mode 100644
index 0000000..a7d969a
--- /dev/null
+++ b/extern/libmv/intern/frame_accessor.cc
@@ -0,0 +1,164 @@
+/*
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program;

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list