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>2014-09-11 17:33:01 +0400
committerSergey Sharybin <sergey.vfx@gmail.com>2014-09-11 17:33:01 +0400
commited6942f9ad3c9d79a4d3981da3c902ea9d7cacc0 (patch)
treee5ba8452a75fc0ee67e1d7be7cee1f78a93838d0 /source/blender/blenkernel/intern/tracking.c
parent4bbe0c8cded98d4daafe1707766041ca9b86db36 (diff)
Fix wrong area of interest for movie undistortion
Diffstat (limited to 'source/blender/blenkernel/intern/tracking.c')
-rw-r--r--source/blender/blenkernel/intern/tracking.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/source/blender/blenkernel/intern/tracking.c b/source/blender/blenkernel/intern/tracking.c
index 22005892535..b77cd744a18 100644
--- a/source/blender/blenkernel/intern/tracking.c
+++ b/source/blender/blenkernel/intern/tracking.c
@@ -1891,11 +1891,21 @@ ImBuf *BKE_tracking_distort_frame(MovieTracking *tracking, ImBuf *ibuf, int cali
calibration_height, overscan, false);
}
-void BKE_tracking_max_undistortion_delta_across_bound(MovieTracking *tracking, rcti *rect, float delta[2])
+void BKE_tracking_max_distortion_delta_across_bound(MovieTracking *tracking, rcti *rect,
+ bool undistort, float delta[2])
{
int a;
float pos[2], warped_pos[2];
const int coord_delta = 5;
+ void (*apply_distortion) (MovieTracking *tracking,
+ const float pos[2], float out[2]);
+
+ if (undistort) {
+ apply_distortion = BKE_tracking_undistort_v2;
+ }
+ else {
+ apply_distortion = BKE_tracking_distort_v2;
+ }
delta[0] = delta[1] = -FLT_MAX;
@@ -1907,7 +1917,7 @@ void BKE_tracking_max_undistortion_delta_across_bound(MovieTracking *tracking, r
pos[0] = a;
pos[1] = rect->ymin;
- BKE_tracking_undistort_v2(tracking, pos, warped_pos);
+ apply_distortion(tracking, pos, warped_pos);
delta[0] = max_ff(delta[0], fabsf(pos[0] - warped_pos[0]));
delta[1] = max_ff(delta[1], fabsf(pos[1] - warped_pos[1]));
@@ -1916,7 +1926,7 @@ void BKE_tracking_max_undistortion_delta_across_bound(MovieTracking *tracking, r
pos[0] = a;
pos[1] = rect->ymax;
- BKE_tracking_undistort_v2(tracking, pos, warped_pos);
+ apply_distortion(tracking, pos, warped_pos);
delta[0] = max_ff(delta[0], fabsf(pos[0] - warped_pos[0]));
delta[1] = max_ff(delta[1], fabsf(pos[1] - warped_pos[1]));
@@ -1933,7 +1943,7 @@ void BKE_tracking_max_undistortion_delta_across_bound(MovieTracking *tracking, r
pos[0] = rect->xmin;
pos[1] = a;
- BKE_tracking_undistort_v2(tracking, pos, warped_pos);
+ apply_distortion(tracking, pos, warped_pos);
delta[0] = max_ff(delta[0], fabsf(pos[0] - warped_pos[0]));
delta[1] = max_ff(delta[1], fabsf(pos[1] - warped_pos[1]));
@@ -1942,7 +1952,7 @@ void BKE_tracking_max_undistortion_delta_across_bound(MovieTracking *tracking, r
pos[0] = rect->xmax;
pos[1] = a;
- BKE_tracking_undistort_v2(tracking, pos, warped_pos);
+ apply_distortion(tracking, pos, warped_pos);
delta[0] = max_ff(delta[0], fabsf(pos[0] - warped_pos[0]));
delta[1] = max_ff(delta[1], fabsf(pos[1] - warped_pos[1]));