diff options
author | Sergey Sharybin <sergey@blender.org> | 2020-11-20 17:06:25 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey@blender.org> | 2020-11-23 11:23:19 +0300 |
commit | 2ee5bc33ead1515f6edc7ce6e8eff15438b4d039 (patch) | |
tree | 458f19fdd9b487a6f350438fc92e9a1624cc940a /source/blender/blenkernel | |
parent | 7bab87c119f4bef0c52cdadeb84a86336193296c (diff) |
Tracking: Refactor, move track allocation to helper function
The caller is still responsible for allocating list of markers,
but the track allocation and initialization can now be reused.
Currently no functional changes, preparing for an upcoming
development.
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r-- | source/blender/blenkernel/BKE_tracking.h | 2 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/tracking.c | 47 |
2 files changed, 31 insertions, 18 deletions
diff --git a/source/blender/blenkernel/BKE_tracking.h b/source/blender/blenkernel/BKE_tracking.h index 39cb82b25c3..f92cd784ee0 100644 --- a/source/blender/blenkernel/BKE_tracking.h +++ b/source/blender/blenkernel/BKE_tracking.h @@ -76,6 +76,8 @@ void BKE_tracking_clipboard_paste_tracks(struct MovieTracking *tracking, struct MovieTrackingObject *object); /* **** Track **** */ +struct MovieTrackingTrack *BKE_tracking_track_add_empty(struct MovieTracking *tracking, + struct ListBase *tracks_list); struct MovieTrackingTrack *BKE_tracking_track_add(struct MovieTracking *tracking, struct ListBase *tracksbase, float x, diff --git a/source/blender/blenkernel/intern/tracking.c b/source/blender/blenkernel/intern/tracking.c index 7f927a8838e..3b6479318dd 100644 --- a/source/blender/blenkernel/intern/tracking.c +++ b/source/blender/blenkernel/intern/tracking.c @@ -541,6 +541,34 @@ void BKE_tracking_clipboard_paste_tracks(MovieTracking *tracking, MovieTrackingO /*********************** Tracks *************************/ +/* Add new empty track to the given list of tracks. + * + * It is required that caller will append at least one marker to avoid degenerate tracks. + */ +MovieTrackingTrack *BKE_tracking_track_add_empty(MovieTracking *tracking, ListBase *tracks_list) +{ + const MovieTrackingSettings *settings = &tracking->settings; + + MovieTrackingTrack *track = MEM_callocN(sizeof(MovieTrackingTrack), "add_marker_exec track"); + strcpy(track->name, "Track"); + + /* Fill track's settings from default settings. */ + track->motion_model = settings->default_motion_model; + track->minimum_correlation = settings->default_minimum_correlation; + track->margin = settings->default_margin; + track->pattern_match = settings->default_pattern_match; + track->frames_limit = settings->default_frames_limit; + track->flag = settings->default_flag; + track->algorithm_flag = settings->default_algorithm_flag; + track->weight = settings->default_weight; + track->weight_stab = settings->default_weight; + + BLI_addtail(tracks_list, track); + BKE_tracking_track_unique_name(tracks_list, track); + + return track; +} + /* Add new track to a specified tracks base. * * Coordinates are expected to be in normalized 0..1 space, @@ -557,7 +585,7 @@ MovieTrackingTrack *BKE_tracking_track_add(MovieTracking *tracking, int width, int height) { - MovieTrackingTrack *track; + MovieTrackingTrack *track = BKE_tracking_track_add_empty(tracking, tracksbase); MovieTrackingMarker marker; MovieTrackingSettings *settings = &tracking->settings; @@ -571,20 +599,6 @@ MovieTrackingTrack *BKE_tracking_track_add(MovieTracking *tracking, search[0] = half_search / (float)width; search[1] = half_search / (float)height; - track = MEM_callocN(sizeof(MovieTrackingTrack), "add_marker_exec track"); - strcpy(track->name, "Track"); - - /* fill track's settings from default settings */ - track->motion_model = settings->default_motion_model; - track->minimum_correlation = settings->default_minimum_correlation; - track->margin = settings->default_margin; - track->pattern_match = settings->default_pattern_match; - track->frames_limit = settings->default_frames_limit; - track->flag = settings->default_flag; - track->algorithm_flag = settings->default_algorithm_flag; - track->weight = settings->default_weight; - track->weight_stab = settings->default_weight; - memset(&marker, 0, sizeof(marker)); marker.pos[0] = x; marker.pos[1] = y; @@ -604,9 +618,6 @@ MovieTrackingTrack *BKE_tracking_track_add(MovieTracking *tracking, BKE_tracking_marker_insert(track, &marker); - BLI_addtail(tracksbase, track); - BKE_tracking_track_unique_name(tracksbase, track); - return track; } |