Tracking: Fix slow undistored display

TH distortion model was not cached properly, making it so frame is
undistorted on every redraw.
This commit is contained in:
Sergey Sharybin 2020-04-06 12:15:14 +02:00
parent 5d3c7d1218
commit ccaf6c7404
1 changed files with 6 additions and 6 deletions

View File

@ -457,8 +457,8 @@ typedef struct MovieClipCache {
/* cache for undistorted shot */
float principal[2];
float polynomial_k1;
float division_k1;
float polynomial_k[3];
float division_k[2];
short distortion_model;
bool undistortion_used;
@ -896,11 +896,11 @@ static bool check_undistortion_cache_flags(const MovieClip *clip)
return false;
}
if (!equals_v3v3(&camera->k1, &cache->postprocessed.polynomial_k1)) {
if (!equals_v3v3(&camera->k1, cache->postprocessed.polynomial_k)) {
return false;
}
if (!equals_v2v2(&camera->division_k1, &cache->postprocessed.division_k1)) {
if (!equals_v2v2(&camera->division_k1, cache->postprocessed.division_k)) {
return false;
}
@ -1002,8 +1002,8 @@ static void put_postprocessed_frame_to_cache(
if (need_undistortion_postprocess(user, flag)) {
cache->postprocessed.distortion_model = camera->distortion_model;
copy_v2_v2(cache->postprocessed.principal, camera->principal);
copy_v3_v3(&cache->postprocessed.polynomial_k1, &camera->k1);
copy_v2_v2(&cache->postprocessed.division_k1, &camera->division_k1);
copy_v3_v3(cache->postprocessed.polynomial_k, &camera->k1);
copy_v2_v2(cache->postprocessed.division_k, &camera->division_k1);
cache->postprocessed.undistortion_used = true;
}
else {