Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2016-01-26 13:42:55 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2016-01-26 13:44:43 +0300
commitc8d2ebe13c1a93a7390df60607525c47614b4984 (patch)
treef6c5f8403db37778e4905d4f865070cec187089e /intern/libmv
parentf1f42c6172c7e656f42cb4895c0badf10f33a1ad (diff)
Compositor: Speedup movie (un)distortion operation
Avoid per-pixel camera intrincs object construction and synchronization. Here on a bit synthetic file it gives about 40% speedup with a single node.
Diffstat (limited to 'intern/libmv')
-rw-r--r--intern/libmv/intern/camera_intrinsics.cc22
-rw-r--r--intern/libmv/intern/camera_intrinsics.h4
-rw-r--r--intern/libmv/intern/stub.cc26
3 files changed, 18 insertions, 34 deletions
diff --git a/intern/libmv/intern/camera_intrinsics.cc b/intern/libmv/intern/camera_intrinsics.cc
index 0ce757cc93b..24a34ae40bb 100644
--- a/intern/libmv/intern/camera_intrinsics.cc
+++ b/intern/libmv/intern/camera_intrinsics.cc
@@ -264,33 +264,23 @@ void libmv_cameraIntrinsicsDistortFloat(
}
void libmv_cameraIntrinsicsApply(
- const libmv_CameraIntrinsicsOptions* libmv_camera_intrinsics_options,
+ const struct libmv_CameraIntrinsics* libmv_intrinsics,
double x,
double y,
double* x1,
double* y1) {
- /* Do a lens distortion if focal length is non-zero only. */
- if (libmv_camera_intrinsics_options->focal_length) {
- CameraIntrinsics* camera_intrinsics =
- libmv_cameraIntrinsicsCreateFromOptions(libmv_camera_intrinsics_options);
- camera_intrinsics->ApplyIntrinsics(x, y, x1, y1);
- LIBMV_OBJECT_DELETE(camera_intrinsics, CameraIntrinsics);
- }
+ CameraIntrinsics *intrinsics = (CameraIntrinsics *) libmv_intrinsics;
+ intrinsics->ApplyIntrinsics(x, y, x1, y1);
}
void libmv_cameraIntrinsicsInvert(
- const libmv_CameraIntrinsicsOptions* libmv_camera_intrinsics_options,
+ const struct libmv_CameraIntrinsics* libmv_intrinsics,
double x,
double y,
double* x1,
double* y1) {
- /* Do a lens un-distortion if focal length is non-zero only/ */
- if (libmv_camera_intrinsics_options->focal_length) {
- CameraIntrinsics *camera_intrinsics =
- libmv_cameraIntrinsicsCreateFromOptions(libmv_camera_intrinsics_options);
- camera_intrinsics->InvertIntrinsics(x, y, x1, y1);
- LIBMV_OBJECT_DELETE(camera_intrinsics, CameraIntrinsics);
- }
+ CameraIntrinsics *intrinsics = (CameraIntrinsics *) libmv_intrinsics;
+ intrinsics->InvertIntrinsics(x, y, x1, y1);
}
static void libmv_cameraIntrinsicsFillFromOptions(
diff --git a/intern/libmv/intern/camera_intrinsics.h b/intern/libmv/intern/camera_intrinsics.h
index 9910d16a108..50a0073437b 100644
--- a/intern/libmv/intern/camera_intrinsics.h
+++ b/intern/libmv/intern/camera_intrinsics.h
@@ -108,14 +108,14 @@ void libmv_cameraIntrinsicsDistortFloat(
float* destination_image);
void libmv_cameraIntrinsicsApply(
- const libmv_CameraIntrinsicsOptions* libmv_camera_intrinsics_options,
+ const struct libmv_CameraIntrinsics* libmv_intrinsics,
double x,
double y,
double* x1,
double* y1);
void libmv_cameraIntrinsicsInvert(
- const libmv_CameraIntrinsicsOptions* libmv_camera_intrinsics_options,
+ const struct libmv_CameraIntrinsics* libmv_intrinsics,
double x,
double y,
double* x1,
diff --git a/intern/libmv/intern/stub.cc b/intern/libmv/intern/stub.cc
index ad648203764..47e1915e072 100644
--- a/intern/libmv/intern/stub.cc
+++ b/intern/libmv/intern/stub.cc
@@ -303,29 +303,23 @@ void libmv_cameraIntrinsicsDistortFloat(
/* ************ utils ************ */
void libmv_cameraIntrinsicsApply(
- const libmv_CameraIntrinsicsOptions* libmv_camera_intrinsics_options,
- double x,
- double y,
+ const struct libmv_CameraIntrinsics* /*libmv_intrinsics*/,
+ double /*x*/,
+ double /*y*/,
double* x1,
double* y1) {
- 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;
- *x1 = x * focal_length + principal_x;
- *y1 = y * focal_length + principal_y;
+ *x1 = 0.0;
+ *y1 = 0.0;
}
void libmv_cameraIntrinsicsInvert(
- const libmv_CameraIntrinsicsOptions* libmv_camera_intrinsics_options,
- double x,
- double y,
+ const struct libmv_CameraIntrinsics* /*libmv_intrinsics*/,
+ double /*x*/,
+ double /*y*/,
double* x1,
double* y1) {
- 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;
- *x1 = (x - principal_x) / focal_length;
- *y1 = (y - principal_y) / focal_length;
+ *x1 = 0.0;
+ *y1 = 0.0;
}
void libmv_homography2DFromCorrespondencesEuc(/* const */ double (* /*x1*/)[2],