[Bf-blender-cvs] [2ee5bc33ead] master: Tracking: Refactor, move track allocation to helper function

Sergey Sharybin noreply at git.blender.org
Mon Nov 23 09:34:40 CET 2020


Commit: 2ee5bc33ead1515f6edc7ce6e8eff15438b4d039
Author: Sergey Sharybin
Date:   Fri Nov 20 15:06:25 2020 +0100
Branches: master
https://developer.blender.org/rB2ee5bc33ead1515f6edc7ce6e8eff15438b4d039

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.

===================================================================

M	source/blender/blenkernel/BKE_tracking.h
M	source/blender/blenkernel/intern/tracking.c

===================================================================

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;
 }



More information about the Bf-blender-cvs mailing list