[Bf-blender-cvs] [058e3f0] master: Tracking: Decouple C-API module into more granular files
Sergey Sharybin
noreply at git.blender.org
Thu Sep 25 13:07:42 CEST 2014
Commit: 058e3f087e4db827e0dcb2b8ea662fa7cdc1ff6b
Author: Sergey Sharybin
Date: Thu Sep 25 17:01:06 2014 +0600
Branches: master
https://developer.blender.org/rB058e3f087e4db827e0dcb2b8ea662fa7cdc1ff6b
Tracking: Decouple C-API module into more granular files
This way maintaining the C-API is a bit less tedious job
and makes code cleaner to follow.
Should be no functional changes.
===================================================================
M extern/libmv/CMakeLists.txt
M extern/libmv/SConscript
M extern/libmv/bundle.sh
A extern/libmv/intern/camera_intrinsics.cc
A extern/libmv/intern/camera_intrinsics.h
A extern/libmv/intern/detector.cc
A extern/libmv/intern/detector.h
A extern/libmv/intern/homography.cc
A extern/libmv/intern/homography.h
A extern/libmv/intern/image.cc
A extern/libmv/intern/image.h
A extern/libmv/intern/logging.cc
A extern/libmv/intern/logging.h
A extern/libmv/intern/reconstruction.cc
A extern/libmv/intern/reconstruction.h
A extern/libmv/intern/region.h
A extern/libmv/intern/stub.cc
A extern/libmv/intern/track_region.cc
A extern/libmv/intern/track_region.h
A extern/libmv/intern/tracks.cc
A extern/libmv/intern/tracks.h
A extern/libmv/intern/utildefines.h
D extern/libmv/libmv-capi.cc
M extern/libmv/libmv-capi.h
D extern/libmv/libmv-capi_intern.h
D extern/libmv/libmv-capi_stub.cc
D extern/libmv/libmv-util.cc
D extern/libmv/libmv-util.h
M source/blender/blenkernel/intern/tracking.c
===================================================================
diff --git a/extern/libmv/CMakeLists.txt b/extern/libmv/CMakeLists.txt
index 9030ae9..d482819 100644
--- a/extern/libmv/CMakeLists.txt
+++ b/extern/libmv/CMakeLists.txt
@@ -35,12 +35,10 @@ set(INC_SYS
set(SRC
libmv-capi.h
- libmv-capi_intern.h
)
if(WITH_LIBMV)
add_definitions(
- -DWITH_LIBMV
-DWITH_LIBMV_GUARDED_ALLOC
-DGOOGLE_GLOG_DLL_DECL=
-DLIBMV_NO_FAST_DETECTOR=
@@ -73,8 +71,14 @@ if(WITH_LIBMV)
)
list(APPEND SRC
- libmv-capi.cc
- libmv-util.cc
+ intern/camera_intrinsics.cc
+ intern/detector.cc
+ intern/homography.cc
+ intern/image.cc
+ intern/logging.cc
+ intern/reconstruction.cc
+ intern/track_region.cc
+ intern/tracks.cc
libmv/base/aligned_malloc.cc
libmv/image/array_nd.cc
libmv/image/convolve.cc
@@ -109,7 +113,15 @@ if(WITH_LIBMV)
libmv/tracking/track_region.cc
libmv/tracking/trklt_region_tracker.cc
- libmv-util.h
+
+ intern/camera_intrinsics.h
+ intern/detector.h
+ intern/homography.h
+ intern/image.h
+ intern/logging.h
+ intern/reconstruction.h
+ intern/track_region.h
+ intern/tracks.h
libmv/base/aligned_malloc.h
libmv/base/id_generator.h
libmv/base/scoped_ptr.h
@@ -217,7 +229,7 @@ if(WITH_LIBMV)
endif()
else()
list(APPEND SRC
- libmv-capi_stub.cc
+ intern/stub.cc
)
endif()
diff --git a/extern/libmv/SConscript b/extern/libmv/SConscript
index 6156dd4..857d7de 100644
--- a/extern/libmv/SConscript
+++ b/extern/libmv/SConscript
@@ -24,11 +24,10 @@ if env['WITH_BF_LIBMV']:
defs.append('CERES_TR1_SHARED_PTR')
defs.append('GOOGLE_GLOG_DLL_DECL=')
- defs.append('WITH_LIBMV')
defs.append('WITH_LIBMV_GUARDED_ALLOC')
defs.append('LIBMV_NO_FAST_DETECTOR')
- src = env.Glob('*.cc')
+ src = env.Glob('intern/*.cc')
src += env.Glob('libmv/base/*.cc')
src += env.Glob('libmv/image/*.cc')
src += env.Glob('libmv/multiview/*.cc')
@@ -52,7 +51,7 @@ if env['WITH_BF_LIBMV']:
src += env.Glob("third_party/glog/src/*.cc")
incs += ' ./third_party/glog/src'
else:
- src = env.Glob("libmv-capi_stub.cc")
+ src = env.Glob("intern/stub.cc")
src = [src for src in src if src.find('_test.cc') == -1]
diff --git a/extern/libmv/bundle.sh b/extern/libmv/bundle.sh
index 0560ab0..d394d2c 100755
--- a/extern/libmv/bundle.sh
+++ b/extern/libmv/bundle.sh
@@ -7,7 +7,7 @@ else
exit 1
fi
-BRANCH="devel"
+BRANCH="master"
repo="git://git.blender.org/libmv.git"
tmp=`mktemp -d`
@@ -128,12 +128,10 @@ set(INC_SYS
set(SRC
libmv-capi.h
- libmv-capi_intern.h
)
if(WITH_LIBMV)
add_definitions(
- -DWITH_LIBMV
-DWITH_LIBMV_GUARDED_ALLOC
-DGOOGLE_GLOG_DLL_DECL=
-DLIBMV_NO_FAST_DETECTOR=
@@ -166,11 +164,29 @@ if(WITH_LIBMV)
)
list(APPEND SRC
- libmv-capi.cc
- libmv-util.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}
- libmv-util.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}
@@ -287,11 +303,10 @@ if env['WITH_BF_LIBMV']:
defs.append('CERES_TR1_SHARED_PTR')
defs.append('GOOGLE_GLOG_DLL_DECL=')
- defs.append('WITH_LIBMV')
defs.append('WITH_LIBMV_GUARDED_ALLOC')
defs.append('LIBMV_NO_FAST_DETECTOR')
- src = env.Glob('*.cc')
+ src = env.Glob('intern/*.cc')
$src
incs += ' ../Eigen3 third_party/gflags third_party/glog/src third_party/ceres/include third_party/ceres/config ../../intern/guardedalloc'
@@ -309,7 +324,7 @@ ${win_src}
src += env.Glob("third_party/glog/src/*.cc")
incs += ' ./third_party/glog/src'
else:
- src = env.Glob("libmv-capi_stub.cc")
+ src = env.Glob("intern/stub.cc")
src = [src for src in src if src.find('_test.cc') == -1]
diff --git a/extern/libmv/intern/camera_intrinsics.cc b/extern/libmv/intern/camera_intrinsics.cc
new file mode 100644
index 0000000..e8b9997
--- /dev/null
+++ b/extern/libmv/intern/camera_intrinsics.cc
@@ -0,0 +1,354 @@
+/*
+ * ***** 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) 2011 Blender Foundation.
+ * All rights reserved.
+ *
+ * Contributor(s): Blender Foundation,
+ * Sergey Sharybin
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+#include "intern/camera_intrinsics.h"
+#include "intern/utildefines.h"
+#include "libmv/simple_pipeline/camera_intrinsics.h"
+
+using libmv::CameraIntrinsics;
+using libmv::DivisionCameraIntrinsics;
+using libmv::PolynomialCameraIntrinsics;
+
+libmv_CameraIntrinsics *libmv_cameraIntrinsicsNew(
+ const libmv_CameraIntrinsicsOptions* libmv_camera_intrinsics_options) {
+ CameraIntrinsics *camera_intrinsics =
+ libmv_cameraIntrinsicsCreateFromOptions(libmv_camera_intrinsics_options);
+ return (libmv_CameraIntrinsics *) camera_intrinsics;
+}
+
+libmv_CameraIntrinsics *libmv_cameraIntrinsicsCopy(
+ const libmv_CameraIntrinsics* libmv_intrinsics) {
+ const CameraIntrinsics *orig_intrinsics =
+ (const CameraIntrinsics *) libmv_intrinsics;
+
+ CameraIntrinsics *new_intrinsics = NULL;
+ switch (orig_intrinsics->GetDistortionModelType()) {
+ case libmv::DISTORTION_MODEL_POLYNOMIAL:
+ {
+ const PolynomialCameraIntrinsics *polynomial_intrinsics =
+ static_cast<const PolynomialCameraIntrinsics*>(orig_intrinsics);
+ new_intrinsics = LIBMV_OBJECT_NEW(PolynomialCameraIntrinsics,
+ *polynomial_intrinsics);
+ break;
+ }
+ case libmv::DISTORTION_MODEL_DIVISION:
+ {
+ const DivisionCameraIntrinsics *division_intrinsics =
+ static_cast<const DivisionCameraIntrinsics*>(orig_intrinsics);
+ new_intrinsics = LIBMV_OBJECT_NEW(DivisionCameraIntrinsics,
+ *division_intrinsics);
+ break;
+ }
+ default:
+ assert(!"Unknown distortion model");
+ }
+ return (libmv_CameraIntrinsics *) new_intrinsics;
+}
+
+void libmv_cameraIntrinsicsDestroy(libmv_CameraIntrinsics* libmv_intrinsics) {
+ LIBMV_OBJECT_DELETE(libmv_intrinsics, CameraIntrinsics);
+}
+
+void libmv_cameraIntrinsicsUpdate(
+ const libmv_CameraIntrinsicsOptions* libmv_camera_intrinsics_options,
+ libmv_CameraIntrinsics* libmv_intrinsics) {
+ CameraIntrinsics *camera_intrinsics = (CameraIntrinsics *) libmv_intrinsics;
+
+ double focal_length = libmv_camera_intrinsics_options->focal_length;
+ double principal_x = libmv_camera_intrinsics_options->principal_point_x;
+ double principal_y = libmv_camera_intrinsics_options->principal_point_y;
+ int image_width = libmv_camera_intrinsics_options->image_width;
+ int image_height = libmv_camera_intrinsics_options->image_height;
+
+ /* Try avoid unnecessary updates, so pre-computed distortion grids
+ * are not freed.
+ */
+
+ if (camera_intrinsics->focal_length() != focal_length) {
+ camera_intrinsics->SetFocalLength(focal_length, focal_length);
+ }
+
+ if (camera_intrinsics->principal_point_x() != principal_x ||
+ camera_intrinsics->principal_point_y() != principal_y) {
+ camera_intrinsics->SetPrincipalPoint(principal_x, principal_y);
+ }
+
+ if (camera_intrinsics->image_width() != image_width ||
+ camera_intrinsics->image_height() != image_height) {
+ camera_intrinsics->SetImageSize(image_width, image_height);
+ }
+
+ switch (libmv_camera_intrinsics_options->distortion_model) {
+ case LIBMV_DISTORTION_MODEL_POLYNOMIAL:
+ {
+ assert(camera_intrinsics->GetDistortionModelType() ==
+ libmv::DISTORTION_MODEL_POLYNOMIAL);
+
+ PolynomialCameraIntrinsics *polynomial_intrinsics =
+ (PolynomialCameraIntrinsics *) camera_intrinsics;
+
+ double k1 = libmv_camera_intrinsics_options->polynomial_k1;
+ double k2 = libmv_camera_intrinsics_options->polynomial_k2;
+ double k3 = libmv_camera_intrinsics_options->polynomial_k3;
+
+ if (polynomial_intrinsics->k1() != k1 ||
+ polynomial_intrinsics->k2() != k2 ||
+ polynomial_intrinsics->k3() != k3) {
+ polynomial_intrinsics->SetRadialDistortion(k1, k2, k3);
+ }
+ break;
+ }
+
+ case LIBMV_DISTORTION_MODEL_DIVISION:
+ {
+ assert(camera_intrinsics->GetDistortionModelType() ==
+ libmv::DISTORTION_MODEL_DIVISION);
+
+ DivisionCameraIntrinsics *division_intrinsics =
+ (DivisionCameraIntrinsics *) camera_intrinsics;
+
+ double k1 = libmv_camera_intrinsics_options->division_k1;
+ double k2 = libmv_camera_intrinsics_options->division_k2;
+
+ if (division_intrinsics->k1() != k1 ||
+ division_intrinsics->k2() != k2) {
+ division_intrinsics->SetDistortion(k1, k2);
+ }
+
+ break;
+ }
+
+ default:
+ assert(!"Unknown distortion model");
+ }
+}
+
+void libmv_cameraIntrinsicsSetThreads(libmv_CameraIntrinsics* libmv_intrinsics,
+ int threads) {
+ CameraIntrinsics *camera_intrinsics = (CameraIntrinsics *) libmv_intrinsics;
+ camera_intrinsics->SetThreads(threads);
+}
+
+void libmv_cameraIntrinsicsExtractOptions(
+ const libmv_CameraIntrinsics* libmv_intrinsics,
+ libmv_Came
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list