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@blender.org>2020-11-20 17:06:25 +0300
committerSergey Sharybin <sergey@blender.org>2020-11-23 11:23:19 +0300
commit2ee5bc33ead1515f6edc7ce6e8eff15438b4d039 (patch)
tree458f19fdd9b487a6f350438fc92e9a1624cc940a /source/blender/blenkernel/intern/tracking.c
parent7bab87c119f4bef0c52cdadeb84a86336193296c (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/intern/tracking.c')
-rw-r--r--source/blender/blenkernel/intern/tracking.c47
1 files changed, 29 insertions, 18 deletions
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;
}