diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2014-09-11 17:33:01 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2014-09-11 17:33:01 +0400 |
commit | ed6942f9ad3c9d79a4d3981da3c902ea9d7cacc0 (patch) | |
tree | e5ba8452a75fc0ee67e1d7be7cee1f78a93838d0 /source/blender/blenkernel/intern | |
parent | 4bbe0c8cded98d4daafe1707766041ca9b86db36 (diff) |
Fix wrong area of interest for movie undistortion
Diffstat (limited to 'source/blender/blenkernel/intern')
-rw-r--r-- | source/blender/blenkernel/intern/tracking.c | 20 |
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])); |