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
path: root/source
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
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')
-rw-r--r--source/blender/blenkernel/BKE_tracking.h2
-rw-r--r--source/blender/blenkernel/intern/tracking.c47
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;
}