Blender  V3.3
Classes | Typedefs | Functions | Variables
tracking.c File Reference
#include <limits.h>
#include <math.h>
#include <memory.h>
#include <stddef.h>
#include "MEM_guardedalloc.h"
#include "DNA_anim_types.h"
#include "DNA_camera_types.h"
#include "DNA_gpencil_types.h"
#include "DNA_movieclip_types.h"
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
#include "BLI_bitmap_draw_2d.h"
#include "BLI_ghash.h"
#include "BLI_listbase.h"
#include "BLI_math.h"
#include "BLI_math_base.h"
#include "BLI_string.h"
#include "BLI_string_utils.h"
#include "BLI_threads.h"
#include "BLI_utildefines.h"
#include "BLT_translation.h"
#include "BKE_fcurve.h"
#include "BKE_layer.h"
#include "BKE_lib_id.h"
#include "BKE_movieclip.h"
#include "BKE_object.h"
#include "BKE_scene.h"
#include "BKE_tracking.h"
#include "IMB_imbuf.h"
#include "IMB_imbuf_types.h"
#include "RNA_access.h"
#include "RNA_prototypes.h"
#include "libmv-capi.h"
#include "tracking_private.h"

Go to the source code of this file.

Classes

struct  MovieDistortion
 
struct  TrackMaskSetPixelData
 

Typedefs

typedef struct MovieDistortion MovieDistortion
 
typedef struct TrackMaskSetPixelData TrackMaskSetPixelData
 

Functions

static void tracking_tracks_free (ListBase *tracks)
 
static void tracking_plane_tracks_free (ListBase *plane_tracks)
 
static void tracking_reconstruction_free (MovieTrackingReconstruction *reconstruction)
 
static void tracking_object_free (MovieTrackingObject *object)
 
static void tracking_objects_free (ListBase *objects)
 
static void tracking_dopesheet_free (MovieTrackingDopesheet *dopesheet)
 
void BKE_tracking_free (MovieTracking *tracking)
 
static void tracking_tracks_copy (ListBase *tracks_dst, const ListBase *tracks_src, GHash *tracks_mapping, const int flag)
 
static void tracking_plane_tracks_copy (ListBase *plane_tracks_list_dst, const ListBase *plane_tracks_list_src, GHash *tracks_mapping, const int flag)
 
static void tracking_reconstruction_copy (MovieTrackingReconstruction *reconstruction_dst, const MovieTrackingReconstruction *reconstruction_src, const int UNUSED(flag))
 
static void tracking_stabilization_copy (MovieTrackingStabilization *stabilization_dst, const MovieTrackingStabilization *stabilization_src, const int UNUSED(flag))
 
static void tracking_object_copy (MovieTrackingObject *object_dst, const MovieTrackingObject *object_src, GHash *tracks_mapping, const int flag)
 
static void tracking_objects_copy (ListBase *objects_dst, const ListBase *objects_src, GHash *tracks_mapping, const int flag)
 
void BKE_tracking_copy (MovieTracking *tracking_dst, const MovieTracking *tracking_src, const int flag)
 
void BKE_tracking_settings_init (MovieTracking *tracking)
 
ListBase * BKE_tracking_get_active_tracks (MovieTracking *tracking)
 
ListBase * BKE_tracking_get_active_plane_tracks (MovieTracking *tracking)
 
MovieTrackingReconstruction * BKE_tracking_get_active_reconstruction (MovieTracking *tracking)
 
void BKE_tracking_get_camera_object_matrix (Object *camera_object, float mat[4][4])
 
void BKE_tracking_get_projection_matrix (MovieTracking *tracking, MovieTrackingObject *object, int framenr, int winx, int winy, float mat[4][4])
 
void BKE_tracking_clipboard_free (void)
 
void BKE_tracking_clipboard_copy_tracks (MovieTracking *tracking, MovieTrackingObject *object)
 
bool BKE_tracking_clipboard_has_tracks (void)
 
void BKE_tracking_clipboard_paste_tracks (MovieTracking *tracking, MovieTrackingObject *object)
 
MovieTrackingTrack * BKE_tracking_track_add_empty (MovieTracking *tracking, ListBase *tracks_list)
 
MovieTrackingTrack * BKE_tracking_track_add (MovieTracking *tracking, ListBase *tracksbase, float x, float y, int framenr, int width, int height)
 
MovieTrackingTrack * BKE_tracking_track_duplicate (MovieTrackingTrack *track)
 
void BKE_tracking_track_unique_name (ListBase *tracksbase, MovieTrackingTrack *track)
 
void BKE_tracking_track_free (MovieTrackingTrack *track)
 
void BKE_tracking_track_first_last_frame_get (const MovieTrackingTrack *track, int *r_first_frame, int *r_last_frame)
 
void BKE_tracking_tracks_first_last_frame_minmax (MovieTrackingTrack **tracks, const int num_tracks, int *r_first_frame, int *r_last_frame)
 
int BKE_tracking_count_selected_tracks_in_list (const ListBase *tracks_list)
 
int BKE_tracking_count_selected_tracks_in_active_object (MovieTracking *tracking)
 
MovieTrackingTrack ** BKE_tracking_selected_tracks_in_active_object (MovieTracking *tracking, int *r_num_tracks)
 
void BKE_tracking_track_flag_set (MovieTrackingTrack *track, int area, int flag)
 
void BKE_tracking_track_flag_clear (MovieTrackingTrack *track, int area, int flag)
 
bool BKE_tracking_track_has_marker_at_frame (MovieTrackingTrack *track, int framenr)
 
bool BKE_tracking_track_has_enabled_marker_at_frame (MovieTrackingTrack *track, int framenr)
 
static void path_clear_remained (MovieTrackingTrack *track, const int ref_frame)
 
static void path_clear_up_to (MovieTrackingTrack *track, const int ref_frame)
 
static void path_clear_all (MovieTrackingTrack *track, const int ref_frame)
 
void BKE_tracking_track_path_clear (MovieTrackingTrack *track, const int ref_frame, const eTrackClearAction action)
 
void BKE_tracking_tracks_join (MovieTracking *tracking, MovieTrackingTrack *dst_track, MovieTrackingTrack *src_track)
 
static void accumulate_marker (MovieTrackingMarker *dst_marker, const MovieTrackingMarker *src_marker)
 
static void multiply_marker (MovieTrackingMarker *marker, const float multiplier)
 
static void tracking_average_markers (MovieTrackingTrack *dst_track, MovieTrackingTrack **src_tracks, const int num_src_tracks)
 
static void tracking_average_tracks (MovieTrackingTrack *dst_track, MovieTrackingTrack **src_tracks, const int num_src_tracks)
 
void BKE_tracking_tracks_average (MovieTrackingTrack *dst_track, MovieTrackingTrack **src_tracks, const int num_src_tracks)
 
MovieTrackingTrack * BKE_tracking_track_get_named (MovieTracking *tracking, MovieTrackingObject *object, const char *name)
 
MovieTrackingTrack * BKE_tracking_track_get_indexed (MovieTracking *tracking, int tracknr, ListBase **r_tracksbase)
 
MovieTrackingTrack * BKE_tracking_track_get_active (MovieTracking *tracking)
 
static bGPDlayer * track_mask_gpencil_layer_get (MovieTrackingTrack *track)
 
static void track_mask_set_pixel_cb (int x, int x_end, int y, void *user_data)
 
static void track_mask_gpencil_layer_rasterize (int frame_width, int frame_height, const float region_min[2], bGPDlayer *layer, float *mask, int mask_width, int mask_height)
 
float * tracking_track_get_mask_for_region (int frame_width, int frame_height, const float region_min[2], const float region_max[2], MovieTrackingTrack *track)
 
float * BKE_tracking_track_get_mask (int frame_width, int frame_height, MovieTrackingTrack *track, MovieTrackingMarker *marker)
 
float BKE_tracking_track_get_weight_for_marker (MovieClip *clip, MovieTrackingTrack *track, MovieTrackingMarker *marker)
 
void BKE_tracking_track_select (ListBase *tracksbase, MovieTrackingTrack *track, int area, bool extend)
 
void BKE_tracking_track_deselect (MovieTrackingTrack *track, int area)
 
void BKE_tracking_tracks_deselect_all (ListBase *tracksbase)
 
MovieTrackingMarker * BKE_tracking_marker_insert (MovieTrackingTrack *track, MovieTrackingMarker *marker)
 
void BKE_tracking_marker_delete (MovieTrackingTrack *track, int framenr)
 
void BKE_tracking_marker_clamp_pattern_position (MovieTrackingMarker *marker)
 
void BKE_tracking_marker_clamp_search_size (MovieTrackingMarker *marker)
 
void BKE_tracking_marker_clamp_search_position (MovieTrackingMarker *marker)
 
MovieTrackingMarker * BKE_tracking_marker_get (MovieTrackingTrack *track, int framenr)
 
MovieTrackingMarker * BKE_tracking_marker_get_exact (MovieTrackingTrack *track, int framenr)
 
MovieTrackingMarker * BKE_tracking_marker_ensure (MovieTrackingTrack *track, int framenr)
 
static const MovieTrackingMarker * get_usable_marker_for_interpolation (struct MovieTrackingTrack *track, const MovieTrackingMarker *anchor_marker, const int direction)
 
bool BKE_tracking_marker_get_interpolated (struct MovieTrackingTrack *track, const int framenr, struct MovieTrackingMarker *r_marker)
 
void BKE_tracking_marker_pattern_minmax (const MovieTrackingMarker *marker, float min[2], float max[2])
 
void BKE_tracking_marker_get_subframe_position (MovieTrackingTrack *track, float framenr, float pos[2])
 
MovieTrackingPlaneTrack * BKE_tracking_plane_track_add (MovieTracking *tracking, ListBase *plane_tracks_base, ListBase *tracks, int framenr)
 
void BKE_tracking_plane_track_unique_name (ListBase *plane_tracks_base, MovieTrackingPlaneTrack *plane_track)
 
void BKE_tracking_plane_track_free (MovieTrackingPlaneTrack *plane_track)
 
MovieTrackingPlaneTrack * BKE_tracking_plane_track_get_named (MovieTracking *tracking, MovieTrackingObject *object, const char *name)
 
MovieTrackingPlaneTrack * BKE_tracking_plane_track_get_active (struct MovieTracking *tracking)
 
void BKE_tracking_plane_tracks_deselect_all (ListBase *plane_tracks_base)
 
bool BKE_tracking_plane_track_has_point_track (MovieTrackingPlaneTrack *plane_track, MovieTrackingTrack *track)
 
bool BKE_tracking_plane_track_remove_point_track (MovieTrackingPlaneTrack *plane_track, MovieTrackingTrack *track)
 
void BKE_tracking_plane_tracks_remove_point_track (MovieTracking *tracking, MovieTrackingTrack *track)
 
void BKE_tracking_plane_track_replace_point_track (MovieTrackingPlaneTrack *plane_track, MovieTrackingTrack *old_track, MovieTrackingTrack *new_track)
 
void BKE_tracking_plane_tracks_replace_point_track (MovieTracking *tracking, MovieTrackingTrack *old_track, MovieTrackingTrack *new_track)
 
MovieTrackingPlaneMarker * BKE_tracking_plane_marker_insert (MovieTrackingPlaneTrack *plane_track, MovieTrackingPlaneMarker *plane_marker)
 
void BKE_tracking_plane_marker_delete (MovieTrackingPlaneTrack *plane_track, int framenr)
 
MovieTrackingPlaneMarker * BKE_tracking_plane_marker_get (MovieTrackingPlaneTrack *plane_track, int framenr)
 
MovieTrackingPlaneMarker * BKE_tracking_plane_marker_get_exact (MovieTrackingPlaneTrack *plane_track, int framenr)
 
MovieTrackingPlaneMarker * BKE_tracking_plane_marker_ensure (MovieTrackingPlaneTrack *plane_track, int framenr)
 
void BKE_tracking_plane_marker_get_subframe_corners (MovieTrackingPlaneTrack *plane_track, float framenr, float corners[4][2])
 
MovieTrackingObject * BKE_tracking_object_add (MovieTracking *tracking, const char *name)
 
bool BKE_tracking_object_delete (MovieTracking *tracking, MovieTrackingObject *object)
 
void BKE_tracking_object_unique_name (MovieTracking *tracking, MovieTrackingObject *object)
 
MovieTrackingObject * BKE_tracking_object_get_named (MovieTracking *tracking, const char *name)
 
MovieTrackingObject * BKE_tracking_object_get_active (MovieTracking *tracking)
 
MovieTrackingObject * BKE_tracking_object_get_camera (MovieTracking *tracking)
 
ListBase * BKE_tracking_object_get_tracks (MovieTracking *tracking, MovieTrackingObject *object)
 
ListBase * BKE_tracking_object_get_plane_tracks (MovieTracking *tracking, MovieTrackingObject *object)
 
MovieTrackingReconstruction * BKE_tracking_object_get_reconstruction (MovieTracking *tracking, MovieTrackingObject *object)
 
static int reconstructed_camera_index_get (MovieTrackingReconstruction *reconstruction, int framenr, bool nearest)
 
static void reconstructed_camera_scale_set (MovieTrackingObject *object, float mat[4][4])
 
void BKE_tracking_camera_shift_get (MovieTracking *tracking, int winx, int winy, float *shiftx, float *shifty)
 
void BKE_tracking_camera_to_blender (MovieTracking *tracking, Scene *scene, Camera *camera, int width, int height)
 
MovieReconstructedCamera * BKE_tracking_camera_get_reconstructed (MovieTracking *tracking, MovieTrackingObject *object, int framenr)
 
void BKE_tracking_camera_get_reconstructed_interpolate (MovieTracking *tracking, MovieTrackingObject *object, float framenr, float mat[4][4])
 
MovieDistortion * BKE_tracking_distortion_new (MovieTracking *tracking, int calibration_width, int calibration_height)
 
void BKE_tracking_distortion_update (MovieDistortion *distortion, MovieTracking *tracking, int calibration_width, int calibration_height)
 
void BKE_tracking_distortion_set_threads (MovieDistortion *distortion, int threads)
 
MovieDistortion * BKE_tracking_distortion_copy (MovieDistortion *distortion)
 
ImBuf * BKE_tracking_distortion_exec (MovieDistortion *distortion, MovieTracking *tracking, ImBuf *ibuf, int calibration_width, int calibration_height, float overscan, bool undistort)
 
void BKE_tracking_distortion_distort_v2 (MovieDistortion *distortion, const float co[2], float r_co[2])
 
void BKE_tracking_distortion_undistort_v2 (MovieDistortion *distortion, const float co[2], float r_co[2])
 
void BKE_tracking_distortion_free (MovieDistortion *distortion)
 
void BKE_tracking_distort_v2 (MovieTracking *tracking, int image_width, int image_height, const float co[2], float r_co[2])
 
void BKE_tracking_undistort_v2 (MovieTracking *tracking, int image_width, int image_height, const float co[2], float r_co[2])
 
ImBuf * BKE_tracking_undistort_frame (MovieTracking *tracking, ImBuf *ibuf, int calibration_width, int calibration_height, float overscan)
 
ImBuf * BKE_tracking_distort_frame (MovieTracking *tracking, ImBuf *ibuf, int calibration_width, int calibration_height, float overscan)
 
void BKE_tracking_max_distortion_delta_across_bound (MovieTracking *tracking, int image_width, int image_height, rcti *rect, bool undistort, float delta[2])
 
static void disable_imbuf_channels (ImBuf *ibuf, MovieTrackingTrack *track, bool grayscale)
 
ImBuf * BKE_tracking_sample_pattern (int frame_width, int frame_height, ImBuf *search_ibuf, MovieTrackingTrack *track, MovieTrackingMarker *marker, bool from_anchor, bool use_mask, int num_samples_x, int num_samples_y, float pos[2])
 
ImBuf * BKE_tracking_get_pattern_imbuf (ImBuf *ibuf, MovieTrackingTrack *track, MovieTrackingMarker *marker, bool anchored, bool disable_channels)
 
ImBuf * BKE_tracking_get_search_imbuf (ImBuf *ibuf, MovieTrackingTrack *track, MovieTrackingMarker *marker, bool anchored, bool disable_channels)
 
BLI_INLINE int plane_marker_size_len_in_pixels (const float a[2], const float b[2], const int frame_width, const int frame_height)
 
ImBuf * BKE_tracking_get_plane_imbuf (const ImBuf *frame_ibuf, const MovieTrackingPlaneMarker *plane_marker)
 
void BKE_tracking_disable_channels (ImBuf *ibuf, bool disable_red, bool disable_green, bool disable_blue, bool grayscale)
 
static int channels_alpha_sort (const void *a, const void *b)
 
static int channels_total_track_sort (const void *a, const void *b)
 
static int channels_longest_segment_sort (const void *a, const void *b)
 
static int channels_average_error_sort (const void *a, const void *b)
 
static int compare_firstlast_putting_undefined_first (bool inverse, bool a_markerless, int a_value, bool b_markerless, int b_value)
 
static int channels_start_sort (const void *a, const void *b)
 
static int channels_end_sort (const void *a, const void *b)
 
static int channels_alpha_inverse_sort (const void *a, const void *b)
 
static int channels_total_track_inverse_sort (const void *a, const void *b)
 
static int channels_longest_segment_inverse_sort (const void *a, const void *b)
 
static int channels_average_error_inverse_sort (const void *a, const void *b)
 
static int channels_start_inverse_sort (const void *a, const void *b)
 
static int channels_end_inverse_sort (const void *a, const void *b)
 
static void tracking_dopesheet_channels_segments_calc (MovieTrackingDopesheetChannel *channel)
 
static void tracking_dopesheet_channels_calc (MovieTracking *tracking)
 
static void tracking_dopesheet_channels_sort (MovieTracking *tracking, int sort_method, bool inverse)
 
static int coverage_from_count (int count)
 
static void tracking_dopesheet_calc_coverage (MovieTracking *tracking)
 
void BKE_tracking_dopesheet_tag_update (MovieTracking *tracking)
 
void BKE_tracking_dopesheet_update (MovieTracking *tracking)
 
MovieTrackingObject * BKE_tracking_find_object_for_track (const MovieTracking *tracking, const MovieTrackingTrack *track)
 
ListBase * BKE_tracking_find_tracks_list_for_track (MovieTracking *tracking, const MovieTrackingTrack *track)
 
MovieTrackingObject * BKE_tracking_find_object_for_plane_track (const MovieTracking *tracking, const MovieTrackingPlaneTrack *plane_track)
 
ListBase * BKE_tracking_find_tracks_list_for_plane_track (MovieTracking *tracking, const MovieTrackingPlaneTrack *plane_track)
 
void BKE_tracking_get_rna_path_for_track (const struct MovieTracking *tracking, const struct MovieTrackingTrack *track, char *rna_path, size_t rna_path_len)
 
void BKE_tracking_get_rna_path_prefix_for_track (const struct MovieTracking *tracking, const struct MovieTrackingTrack *track, char *rna_path, size_t rna_path_len)
 
void BKE_tracking_get_rna_path_for_plane_track (const struct MovieTracking *tracking, const struct MovieTrackingPlaneTrack *plane_track, char *rna_path, size_t rna_path_len)
 
void BKE_tracking_get_rna_path_prefix_for_plane_track (const struct MovieTracking *tracking, const struct MovieTrackingPlaneTrack *plane_track, char *rna_path, size_t rna_path_len)
 

Variables

struct {
   ListBase   tracks
 
} tracking_clipboard
 

Typedef Documentation

◆ MovieDistortion

◆ TrackMaskSetPixelData

Function Documentation

◆ accumulate_marker()

static void accumulate_marker ( MovieTrackingMarker *  dst_marker,
const MovieTrackingMarker *  src_marker 
)
static

◆ BKE_tracking_camera_get_reconstructed()

MovieReconstructedCamera* BKE_tracking_camera_get_reconstructed ( MovieTracking *  tracking,
MovieTrackingObject *  object,
int  framenr 
)

◆ BKE_tracking_camera_get_reconstructed_interpolate()

void BKE_tracking_camera_get_reconstructed_interpolate ( MovieTracking *  tracking,
MovieTrackingObject *  object,
float  framenr,
float  mat[4][4] 
)

◆ BKE_tracking_camera_shift_get()

void BKE_tracking_camera_shift_get ( struct MovieTracking *  tracking,
int  winx,
int  winy,
float *  shiftx,
float *  shifty 
)

Converts principal offset from center to offset of blender's camera.

Definition at line 2225 of file tracking.c.

References MovieTracking::camera, and MovieTrackingCamera::principal.

Referenced by BKE_tracking_camera_to_blender(), and BKE_tracking_get_projection_matrix().

◆ BKE_tracking_camera_to_blender()

void BKE_tracking_camera_to_blender ( MovieTracking *  tracking,
Scene *  scene,
Camera *  camera,
int  width,
int  height 
)

◆ BKE_tracking_clipboard_copy_tracks()

void BKE_tracking_clipboard_copy_tracks ( struct MovieTracking *  tracking,
struct MovieTrackingObject *  object 
)

◆ BKE_tracking_clipboard_free()

void BKE_tracking_clipboard_free ( void  )

Free clipboard by freeing memory used by all tracks in it.

Definition at line 448 of file tracking.c.

References BKE_tracking_track_free(), BLI_listbase_clear(), MEM_freeN, MovieTrackingTrack::next, and tracking_clipboard.

Referenced by BKE_tracking_clipboard_copy_tracks(), and WM_exit_ex().

◆ BKE_tracking_clipboard_has_tracks()

bool BKE_tracking_clipboard_has_tracks ( void  )

Check whether there are any tracks in the clipboard.

Definition at line 484 of file tracking.c.

References BLI_listbase_is_empty(), and tracking_clipboard.

Referenced by paste_tracks_poll().

◆ BKE_tracking_clipboard_paste_tracks()

void BKE_tracking_clipboard_paste_tracks ( struct MovieTracking *  tracking,
struct MovieTrackingObject *  object 
)

Paste tracks from clipboard to specified object.

Names of new tracks in object are guaranteed to be unique here.

Definition at line 489 of file tracking.c.

References MovieTracking::act_track, BKE_tracking_object_get_tracks(), BKE_tracking_track_duplicate(), BKE_tracking_track_unique_name(), BLI_addtail(), MovieTrackingTrack::next, NULL, MovieTrackingTrack::prev, and tracking_clipboard.

Referenced by paste_tracks_exec().

◆ BKE_tracking_copy()

void BKE_tracking_copy ( MovieTracking *  tracking_dst,
const MovieTracking *  tracking_src,
const int  flag 
)

◆ BKE_tracking_count_selected_tracks_in_active_object()

int BKE_tracking_count_selected_tracks_in_active_object ( MovieTracking *  tracking)

◆ BKE_tracking_count_selected_tracks_in_list()

int BKE_tracking_count_selected_tracks_in_list ( const ListBase *  tracks_list)

Definition at line 639 of file tracking.c.

References LISTBASE_FOREACH, and TRACK_SELECTED.

Referenced by BKE_tracking_count_selected_tracks_in_active_object().

◆ BKE_tracking_disable_channels()

void BKE_tracking_disable_channels ( struct ImBuf *  ibuf,
bool  disable_red,
bool  disable_green,
bool  disable_blue,
bool  grayscale 
)

Zap channels from the imbuf that are disabled by the user. this can lead to better tracks sometimes. however, instead of simply zeroing the channels out, do a partial gray-scale conversion so the display is better.

Definition at line 2891 of file tracking.c.

References usdtokens::b(), usdtokens::g(), IB_RECT_INVALID, if(), r, ImBuf::rect, ImBuf::rect_float, ImBuf::userflags, x, ImBuf::x, y, and ImBuf::y.

Referenced by disable_imbuf_channels(), and postprocess_frame().

◆ BKE_tracking_distort_frame()

ImBuf* BKE_tracking_distort_frame ( MovieTracking *  tracking,
ImBuf *  ibuf,
int  calibration_width,
int  calibration_height,
float  overscan 
)

◆ BKE_tracking_distort_v2()

void BKE_tracking_distort_v2 ( MovieTracking *  tracking,
int  image_width,
int  image_height,
const float  co[2],
float  r_co[2] 
)

◆ BKE_tracking_distortion_copy()

MovieDistortion* BKE_tracking_distortion_copy ( MovieDistortion *  distortion)

◆ BKE_tracking_distortion_distort_v2()

void BKE_tracking_distortion_distort_v2 ( MovieDistortion *  distortion,
const float  co[2],
float  r_co[2] 
)

◆ BKE_tracking_distortion_exec()

ImBuf* BKE_tracking_distortion_exec ( MovieDistortion *  distortion,
MovieTracking *  tracking,
ImBuf *  ibuf,
int  calibration_width,
int  calibration_height,
float  overscan,
bool  undistort 
)

◆ BKE_tracking_distortion_free()

void BKE_tracking_distortion_free ( MovieDistortion *  distortion)

◆ BKE_tracking_distortion_new()

MovieDistortion* BKE_tracking_distortion_new ( MovieTracking *  tracking,
int  calibration_width,
int  calibration_height 
)

◆ BKE_tracking_distortion_set_threads()

void BKE_tracking_distortion_set_threads ( MovieDistortion *  distortion,
int  threads 
)

◆ BKE_tracking_distortion_undistort_v2()

void BKE_tracking_distortion_undistort_v2 ( MovieDistortion *  distortion,
const float  co[2],
float  r_co[2] 
)

◆ BKE_tracking_distortion_update()

void BKE_tracking_distortion_update ( MovieDistortion *  distortion,
MovieTracking *  tracking,
int  calibration_width,
int  calibration_height 
)

◆ BKE_tracking_dopesheet_tag_update()

void BKE_tracking_dopesheet_tag_update ( struct MovieTracking *  tracking)

◆ BKE_tracking_dopesheet_update()

void BKE_tracking_dopesheet_update ( struct MovieTracking *  tracking)

◆ BKE_tracking_find_object_for_plane_track()

MovieTrackingObject* BKE_tracking_find_object_for_plane_track ( const MovieTracking *  tracking,
const MovieTrackingPlaneTrack *  plane_track 
)

◆ BKE_tracking_find_object_for_track()

MovieTrackingObject* BKE_tracking_find_object_for_track ( const MovieTracking *  tracking,
const MovieTrackingTrack *  track 
)

◆ BKE_tracking_find_tracks_list_for_plane_track()

ListBase* BKE_tracking_find_tracks_list_for_plane_track ( MovieTracking *  tracking,
const MovieTrackingPlaneTrack *  plane_track 
)

◆ BKE_tracking_find_tracks_list_for_track()

ListBase* BKE_tracking_find_tracks_list_for_track ( MovieTracking *  tracking,
const MovieTrackingTrack *  track 
)

Definition at line 3458 of file tracking.c.

References BKE_tracking_find_object_for_track(), NULL, and MovieTracking::tracks.

◆ BKE_tracking_free()

void BKE_tracking_free ( struct MovieTracking *  tracking)

Free tracking structure, only frees structure contents (if structure is allocated in heap, it shall be handled outside).

All the pointers inside structure becomes invalid after this call.

Definition at line 150 of file tracking.c.

References BKE_tracking_distortion_free(), MovieTracking::camera, MovieTracking::dopesheet, MovieTrackingCamera::intrinsics, MovieTracking::objects, MovieTracking::plane_tracks, MovieTracking::reconstruction, tracking_dopesheet_free(), tracking_objects_free(), tracking_plane_tracks_free(), tracking_reconstruction_free(), tracking_tracks_free(), and MovieTracking::tracks.

Referenced by movie_clip_free_data().

◆ BKE_tracking_get_active_plane_tracks()

ListBase* BKE_tracking_get_active_plane_tracks ( struct MovieTracking *  tracking)

◆ BKE_tracking_get_active_reconstruction()

MovieTrackingReconstruction* BKE_tracking_get_active_reconstruction ( struct MovieTracking *  tracking)

◆ BKE_tracking_get_active_tracks()

ListBase* BKE_tracking_get_active_tracks ( struct MovieTracking *  tracking)

Get list base of active object's tracks.

Definition at line 346 of file tracking.c.

References BKE_tracking_object_get_active(), MovieTrackingObject::flag, TRACKING_OBJECT_CAMERA, and MovieTracking::tracks.

Referenced by add_marker(), autotrack_context_init_tracks_for_clip(), average_tracks_exec(), BKE_tracking_count_selected_tracks_in_active_object(), BKE_tracking_selected_tracks_in_active_object(), BKE_tracking_track_get_active(), box_select_exec(), blender::compositor::KeyingScreenOperation::build_voronoi_triangulation(), circle_select_exec(), clean_tracks_exec(), clear_solution_exec(), clear_track_path_exec(), clip_delete_track(), clip_graph_tracking_iterate(), clip_graph_tracking_values_iterate(), clip_tracking_clear_invisible_track_selection(), count_selected_bundles(), create_plane_track_tracks_exec(), createTransTrackingCurvesData(), createTransTrackingTracksData(), delete_marker_exec(), delete_track_exec(), detect_features_exec(), disable_markers_exec(), do_lasso_select_marker(), do_set_scale(), draw_tracking_tracks(), ED_clip_select_all(), hide_tracks_clear_exec(), hide_tracks_exec(), join_tracks_exec(), keyframe_set_flag(), lock_tracks_exec(), recalcData_tracking(), refine_marker_exec(), screen_ctx_selected_movieclip_tracks(), select_exec(), select_grouped_exec(), selected_tracking_boundbox(), stabilize_2d_add_exec(), stabilize_2d_remove_exec(), stabilize_2d_rotation_add_exec(), stabilize_2d_rotation_remove_exec(), stabilize_2d_rotation_select_exec(), stabilize_2d_select_exec(), track_copy_color_exec(), track_count_markers(), track_init_markers(), tracking_has_selection(), and tracking_marker_check_slide().

◆ BKE_tracking_get_camera_object_matrix()

void BKE_tracking_get_camera_object_matrix ( struct Object *  camera_object,
float  mat[4][4] 
)

Get transformation matrix for a given object which is used for parenting motion tracker reconstruction to 3D world.

Definition at line 375 of file tracking.c.

References BKE_object_where_is_calc_mat4(), BLI_assert, and NULL.

Referenced by bundle_midpoint(), camera_view3d_reconstruction(), do_set_scale(), followtrack_evaluate_using_3d_position_camera(), set_axis(), set_origin_exec(), set_plane_exec(), and snapCamera().

◆ BKE_tracking_get_pattern_imbuf()

ImBuf* BKE_tracking_get_pattern_imbuf ( ImBuf *  ibuf,
MovieTrackingTrack *  track,
MovieTrackingMarker *  marker,
bool  anchored,
bool  disable_channels 
)

◆ BKE_tracking_get_plane_imbuf()

ImBuf* BKE_tracking_get_plane_imbuf ( const ImBuf *  frame_ibuf,
const MovieTrackingPlaneMarker *  plane_marker 
)

◆ BKE_tracking_get_projection_matrix()

void BKE_tracking_get_projection_matrix ( struct MovieTracking *  tracking,
struct MovieTrackingObject *  object,
int  framenr,
int  winx,
int  winy,
float  mat[4][4] 
)

Get projection matrix for camera specified by given tracking object and frame number.

Note
frame number should be in clip space, not scene space.

Definition at line 391 of file tracking.c.

References BKE_tracking_camera_get_reconstructed(), BKE_tracking_camera_shift_get(), bottom, MovieTracking::camera, camera, copy_m4_m4(), float(), MovieTrackingCamera::focal, invert_m4_m4(), left, min_ii(), mul_m4_m4m4(), perspective_m4(), MovieTrackingCamera::pixel_aspect, right, MovieTrackingCamera::sensor_width, and top.

Referenced by calculate_reprojection_error_at_marker(), and draw_tracking_tracks().

◆ BKE_tracking_get_rna_path_for_plane_track()

void BKE_tracking_get_rna_path_for_plane_track ( const struct MovieTracking *  tracking,
const struct MovieTrackingPlaneTrack *  plane_track,
char *  rna_path,
size_t  rna_path_len 
)

◆ BKE_tracking_get_rna_path_for_track()

void BKE_tracking_get_rna_path_for_track ( const struct MovieTracking *  tracking,
const struct MovieTrackingTrack *  track,
char *  rna_path,
size_t  rna_path_len 
)

◆ BKE_tracking_get_rna_path_prefix_for_plane_track()

void BKE_tracking_get_rna_path_prefix_for_plane_track ( const struct MovieTracking *  tracking,
const struct MovieTrackingPlaneTrack *  plane_track,
char *  rna_path,
size_t  rna_path_len 
)

◆ BKE_tracking_get_rna_path_prefix_for_track()

void BKE_tracking_get_rna_path_prefix_for_track ( const struct MovieTracking *  tracking,
const struct MovieTrackingTrack *  track,
char *  rna_path,
size_t  rna_path_len 
)

◆ BKE_tracking_get_search_imbuf()

ImBuf* BKE_tracking_get_search_imbuf ( ImBuf *  ibuf,
MovieTrackingTrack *  track,
MovieTrackingMarker *  marker,
bool  anchored,
bool  disable_channels 
)

◆ BKE_tracking_marker_clamp_pattern_position()

void BKE_tracking_marker_clamp_pattern_position ( struct MovieTrackingMarker *  marker)

If the pattern area is outside of the search area its position will be modified in a way that it is within the pattern is within the search area.

If the pattern area is already within the search area nothing happens.

If the pattern area is bigger than the search area the behavior is undefined.

Search area is never modified.

Definition at line 1374 of file tracking.c.

References Freestyle::a, usdtokens::b(), BKE_tracking_marker_pattern_minmax(), MovieTrackingMarker::pattern_corners, MovieTrackingMarker::search_max, and MovieTrackingMarker::search_min.

Referenced by recalcData_tracking().

◆ BKE_tracking_marker_clamp_search_position()

void BKE_tracking_marker_clamp_search_position ( struct MovieTrackingMarker *  marker)

If the search position is such that pattern area is (partially) outside of the search area move the search area so that the pattern is within the search area.

If the search area is smaller than the pattern the behavior is undefined.

Pattern area is never modified.

Definition at line 1404 of file tracking.c.

References Freestyle::a, BKE_tracking_marker_pattern_minmax(), MovieTrackingMarker::search_max, MovieTrackingMarker::search_min, and sub_v2_v2v2().

Referenced by marker_block_handler(), recalcData_tracking(), and slide_marker_modal().

◆ BKE_tracking_marker_clamp_search_size()

void BKE_tracking_marker_clamp_search_size ( struct MovieTrackingMarker *  marker)

If the search size is such that pattern area is (partially) outside of the search area make the search area bigger so that the pattern is within the search area.

Pattern area is never modified.

Definition at line 1393 of file tracking.c.

References Freestyle::a, BKE_tracking_marker_pattern_minmax(), max_ff(), min_ff(), MovieTrackingMarker::search_max, and MovieTrackingMarker::search_min.

Referenced by marker_block_handler(), recalcData_tracking(), and slide_marker_modal().

◆ BKE_tracking_marker_delete()

void BKE_tracking_marker_delete ( MovieTrackingTrack *  track,
int  framenr 
)

◆ BKE_tracking_marker_ensure()

MovieTrackingMarker* BKE_tracking_marker_ensure ( MovieTrackingTrack *  track,
int  framenr 
)

◆ BKE_tracking_marker_get()

MovieTrackingMarker* BKE_tracking_marker_get ( struct MovieTrackingTrack *  track,
int  framenr 
)

Get marker closest to the given frame number.

If there is maker with exact frame number it returned. Otherwise, marker with highest frame number but lower than the requested frame is returned if such marker exists. Otherwise, the marker with lowest frame number greater than the requested frame number is returned.

This function has complexity of O(log number_of_markers).

Definition at line 1424 of file tracking.c.

References BLI_assert, BLI_assert_msg, clamp_i(), MovieTrackingMarker::framenr, MovieTrackingTrack::markers, MovieTrackingTrack::markersnr, and NULL.

Referenced by annotation_session_initdata(), autotrack_context_init_markers(), autotrack_is_track_trackable(), BKE_movieclip_update_scopes(), BKE_tracking_marker_ensure(), BKE_tracking_marker_get_exact(), BKE_tracking_marker_get_interpolated(), BKE_tracking_marker_get_subframe_position(), BKE_tracking_plane_track_add(), box_select_exec(), blender::compositor::KeyingScreenOperation::build_voronoi_triangulation(), circle_select_exec(), clip_draw_grease_pencil(), do_lasso_select_marker(), draw_tracking_tracks(), ED_clip_select_all(), find_nearest_track(), mask_parent_set_exec(), path_clear_all(), recalcData_tracking(), refine_marker_exec(), search_closest_marker_index(), select_grouped_exec(), selected_tracking_boundbox(), slide_marker_customdata(), blender::TEST_F(), track_count_markers(), track_mouse_area(), tracking_context_get_reference_ibuf(), tracking_get_keyframed_marker(), tracking_has_selection(), tracking_marker_check_slide(), and uiTemplateMarker().

◆ BKE_tracking_marker_get_exact()

MovieTrackingMarker* BKE_tracking_marker_get_exact ( MovieTrackingTrack *  track,
int  framenr 
)

◆ BKE_tracking_marker_get_interpolated()

bool BKE_tracking_marker_get_interpolated ( struct MovieTrackingTrack *  track,
int  framenr,
struct MovieTrackingMarker *  r_marker 
)

Get marker position, possibly interpolating gap between key-framed/tracked markers.

The result marker frame number is set to the requested frame number. Its flags are 0 if the marker is interpolated, and is set to original marker flag if there were no interpolation involved.

Returns
truth if the result is usable.

Definition at line 1505 of file tracking.c.

References BKE_tracking_marker_get(), MovieTrackingMarker::flag, float(), MovieTrackingMarker::framenr, get_usable_marker_for_interpolation(), interp_v2_v2v2(), MARKER_DISABLED, NULL, MovieTrackingMarker::pattern_corners, MovieTrackingMarker::pos, MovieTrackingMarker::search_max, and MovieTrackingMarker::search_min.

Referenced by blender::TEST_F(), and tracking_average_markers().

◆ BKE_tracking_marker_get_subframe_position()

void BKE_tracking_marker_get_subframe_position ( MovieTrackingTrack *  track,
float  framenr,
float  pos[2] 
)

◆ BKE_tracking_marker_insert()

MovieTrackingMarker* BKE_tracking_marker_insert ( MovieTrackingTrack *  track,
MovieTrackingMarker *  marker 
)

◆ BKE_tracking_marker_pattern_minmax()

void BKE_tracking_marker_pattern_minmax ( const MovieTrackingMarker *  marker,
float  min[2],
float  max[2] 
)

◆ BKE_tracking_max_distortion_delta_across_bound()

void BKE_tracking_max_distortion_delta_across_bound ( MovieTracking *  tracking,
int  image_width,
int  image_height,
rcti *  rect,
bool  undistort,
float  delta[2] 
)

◆ BKE_tracking_object_add()

MovieTrackingObject* BKE_tracking_object_add ( MovieTracking *  tracking,
const char *  name 
)

◆ BKE_tracking_object_delete()

bool BKE_tracking_object_delete ( MovieTracking *  tracking,
MovieTrackingObject *  object 
)

◆ BKE_tracking_object_get_active()

MovieTrackingObject* BKE_tracking_object_get_active ( MovieTracking *  tracking)

◆ BKE_tracking_object_get_camera()

MovieTrackingObject* BKE_tracking_object_get_camera ( MovieTracking *  tracking)

◆ BKE_tracking_object_get_named()

MovieTrackingObject* BKE_tracking_object_get_named ( MovieTracking *  tracking,
const char *  name 
)

◆ BKE_tracking_object_get_plane_tracks()

ListBase* BKE_tracking_object_get_plane_tracks ( MovieTracking *  tracking,
MovieTrackingObject *  object 
)

◆ BKE_tracking_object_get_reconstruction()

MovieTrackingReconstruction* BKE_tracking_object_get_reconstruction ( MovieTracking *  tracking,
MovieTrackingObject *  object 
)

◆ BKE_tracking_object_get_tracks()

ListBase* BKE_tracking_object_get_tracks ( MovieTracking *  tracking,
MovieTrackingObject *  object 
)

◆ BKE_tracking_object_unique_name()

void BKE_tracking_object_unique_name ( MovieTracking *  tracking,
MovieTrackingObject *  object 
)

◆ BKE_tracking_plane_marker_delete()

void BKE_tracking_plane_marker_delete ( MovieTrackingPlaneTrack *  plane_track,
int  framenr 
)

◆ BKE_tracking_plane_marker_ensure()

MovieTrackingPlaneMarker* BKE_tracking_plane_marker_ensure ( struct MovieTrackingPlaneTrack *  plane_track,
int  framenr 
)

◆ BKE_tracking_plane_marker_get()

MovieTrackingPlaneMarker* BKE_tracking_plane_marker_get ( struct MovieTrackingPlaneTrack *  plane_track,
int  framenr 
)

◆ BKE_tracking_plane_marker_get_exact()

MovieTrackingPlaneMarker* BKE_tracking_plane_marker_get_exact ( struct MovieTrackingPlaneTrack *  plane_track,
int  framenr 
)

Get a plane marker at exact given frame, if there's no marker at the frame, NULL will be returned.

Definition at line 1938 of file tracking.c.

References BKE_tracking_plane_marker_get(), MovieTrackingPlaneMarker::framenr, and NULL.

Referenced by BKE_tracking_plane_marker_insert(), cancelTransTracking(), delete_marker_exec(), keyframe_set_flag(), and track_plane_from_existing_motion().

◆ BKE_tracking_plane_marker_get_subframe_corners()

void BKE_tracking_plane_marker_get_subframe_corners ( MovieTrackingPlaneTrack *  plane_track,
float  framenr,
float  corners[4][2] 
)

◆ BKE_tracking_plane_marker_insert()

MovieTrackingPlaneMarker* BKE_tracking_plane_marker_insert ( MovieTrackingPlaneTrack *  plane_track,
MovieTrackingPlaneMarker *  plane_marker 
)

◆ BKE_tracking_plane_track_add()

MovieTrackingPlaneTrack* BKE_tracking_plane_track_add ( struct MovieTracking *  tracking,
struct ListBase *  plane_tracks_base,
struct ListBase *  tracks,
int  framenr 
)

◆ BKE_tracking_plane_track_free()

void BKE_tracking_plane_track_free ( struct MovieTrackingPlaneTrack *  plane_track)

Free specified plane track, only frees contents of a structure (if track is allocated in heap, it shall be handled outside).

All the pointers inside track becomes invalid after this call.

Definition at line 1694 of file tracking.c.

References MovieTrackingPlaneTrack::markers, MEM_freeN, and MovieTrackingPlaneTrack::point_tracks.

Referenced by BKE_tracking_plane_tracks_remove_point_track(), clip_delete_plane_track(), delete_marker_exec(), and tracking_plane_tracks_free().

◆ BKE_tracking_plane_track_get_active()

MovieTrackingPlaneTrack* BKE_tracking_plane_track_get_active ( struct MovieTracking *  tracking)

◆ BKE_tracking_plane_track_get_named()

MovieTrackingPlaneTrack* BKE_tracking_plane_track_get_named ( MovieTracking *  tracking,
MovieTrackingObject *  object,
const char *  name 
)

◆ BKE_tracking_plane_track_has_point_track()

bool BKE_tracking_plane_track_has_point_track ( MovieTrackingPlaneTrack *  plane_track,
MovieTrackingTrack *  track 
)

◆ BKE_tracking_plane_track_remove_point_track()

bool BKE_tracking_plane_track_remove_point_track ( MovieTrackingPlaneTrack *  plane_track,
MovieTrackingTrack *  track 
)

◆ BKE_tracking_plane_track_replace_point_track()

void BKE_tracking_plane_track_replace_point_track ( MovieTrackingPlaneTrack *  plane_track,
MovieTrackingTrack *  old_track,
MovieTrackingTrack *  new_track 
)

◆ BKE_tracking_plane_track_unique_name()

void BKE_tracking_plane_track_unique_name ( ListBase *  plane_tracks_base,
MovieTrackingPlaneTrack *  plane_track 
)

◆ BKE_tracking_plane_tracks_deselect_all()

void BKE_tracking_plane_tracks_deselect_all ( ListBase *  plane_tracks_base)

Definition at line 1734 of file tracking.c.

References LISTBASE_FOREACH, and SELECT.

Referenced by add_marker(), and average_tracks_exec().

◆ BKE_tracking_plane_tracks_remove_point_track()

void BKE_tracking_plane_tracks_remove_point_track ( MovieTracking *  tracking,
MovieTrackingTrack *  track 
)

◆ BKE_tracking_plane_tracks_replace_point_track()

void BKE_tracking_plane_tracks_replace_point_track ( MovieTracking *  tracking,
MovieTrackingTrack *  old_track,
MovieTrackingTrack *  new_track 
)

◆ BKE_tracking_sample_pattern()

ImBuf* BKE_tracking_sample_pattern ( int  frame_width,
int  frame_height,
ImBuf *  search_ibuf,
MovieTrackingTrack *  track,
MovieTrackingMarker *  marker,
bool  from_anchor,
bool  use_mask,
int  num_samples_x,
int  num_samples_y,
float  pos[2] 
)

◆ BKE_tracking_selected_tracks_in_active_object()

MovieTrackingTrack** BKE_tracking_selected_tracks_in_active_object ( struct MovieTracking *  tracking,
int *  r_num_tracks 
)

Get array of selected tracks from the current active object in the tracking structure. If nothing is selected then the result is nullptr and r_num_tracks is set to 0.

Definition at line 656 of file tracking.c.

References BKE_tracking_count_selected_tracks_in_active_object(), BKE_tracking_get_active_tracks(), LISTBASE_FOREACH, MEM_malloc_arrayN, NULL, and TRACK_SELECTED.

Referenced by average_tracks_exec().

◆ BKE_tracking_settings_init()

void BKE_tracking_settings_init ( struct MovieTracking *  tracking)

Initialize motion tracking settings to default values, used when new movie clip data-block is created.

Definition at line 305 of file tracking.c.

References MovieTrackingStabilization::act_rot_track, MovieTrackingStabilization::act_track, MovieTrackingStabilization::anchor_frame, BKE_tracking_object_add(), MovieTracking::camera, CAMERA_UNITS_MM, DATA_, MovieTrackingSettings::default_algorithm_flag, MovieTrackingSettings::default_minimum_correlation, MovieTrackingSettings::default_motion_model, MovieTrackingSettings::default_pattern_size, MovieTrackingSettings::default_search_size, MovieTrackingSettings::default_weight, MovieTrackingSettings::dist, MovieTracking::dopesheet, MovieTrackingStabilization::filter, MovieTrackingStabilization::flag, MovieTrackingDopesheet::flag, MovieTrackingStabilization::locinf, MovieTrackingStabilization::maxscale, MovieTrackingSettings::object_distance, MovieTrackingCamera::pixel_aspect, MovieTrackingSettings::refine_camera_intrinsics, REFINE_NO_INTRINSICS, MovieTrackingStabilization::rotinf, MovieTrackingStabilization::scale, MovieTrackingStabilization::scaleinf, MovieTrackingCamera::sensor_width, MovieTracking::settings, MovieTrackingDopesheet::sort_method, MovieTracking::stabilization, MovieTrackingStabilization::target_pos, MovieTrackingStabilization::target_rot, MovieTrackingStabilization::tot_rot_track, MovieTrackingStabilization::tot_track, TRACK_ALGORITHM_FLAG_USE_BRUTE, TRACK_MOTION_MODEL_TRANSLATION, TRACKING_DOPE_SORT_AVERAGE_ERROR, TRACKING_DOPE_SORT_INVERSE, TRACKING_FILTER_BILINEAR, TRACKING_SHOW_STAB_TRACKS, MovieTrackingCamera::units, and zero_v2().

Referenced by movie_clip_init_data().

◆ BKE_tracking_track_add()

MovieTrackingTrack* BKE_tracking_track_add ( struct MovieTracking *  tracking,
struct ListBase *  tracksbase,
float  x,
float  y,
int  framenr,
int  width,
int  height 
)

Add new track to a specified tracks base.

Coordinates are expected to be in normalized 0..1 space, frame number is expected to be in clip space.

Width and height are clip's dimension used to scale track's pattern and search regions.

Definition at line 535 of file tracking.c.

References BKE_tracking_marker_insert(), BKE_tracking_track_add_empty(), copy_v2_v2(), MovieTrackingSettings::default_pattern_size, MovieTrackingSettings::default_search_size, MovieTrackingMarker::framenr, height, negate_v2_v2(), MovieTrackingMarker::pattern_corners, MovieTrackingMarker::pos, MovieTrackingMarker::search_max, MovieTrackingMarker::search_min, MovieTracking::settings, width, x, and y.

Referenced by add_marker(), and detect_retrieve_libmv_features().

◆ BKE_tracking_track_add_empty()

MovieTrackingTrack* BKE_tracking_track_add_empty ( struct MovieTracking *  tracking,
struct ListBase *  tracks_list 
)

◆ BKE_tracking_track_deselect()

void BKE_tracking_track_deselect ( MovieTrackingTrack *  track,
int  area 
)

◆ BKE_tracking_track_duplicate()

MovieTrackingTrack* BKE_tracking_track_duplicate ( struct MovieTrackingTrack *  track)

◆ BKE_tracking_track_first_last_frame_get()

void BKE_tracking_track_first_last_frame_get ( const MovieTrackingTrack *  track,
int *  r_first_frame,
int *  r_last_frame 
)

◆ BKE_tracking_track_flag_clear()

void BKE_tracking_track_flag_clear ( struct MovieTrackingTrack *  track,
int  area,
int  flag 
)

◆ BKE_tracking_track_flag_set()

void BKE_tracking_track_flag_set ( struct MovieTrackingTrack *  track,
int  area,
int  flag 
)

Set flag for all specified track's areas.

Parameters
areawhich part of marker should be selected. see TRACK_AREA_* constants.
flagflag to be set for areas.

Definition at line 688 of file tracking.c.

References blender::compositor::area(), MovieTrackingTrack::flag, MovieTrackingTrack::pat_flag, MovieTrackingTrack::search_flag, TRACK_AREA_NONE, TRACK_AREA_PAT, TRACK_AREA_POINT, and TRACK_AREA_SEARCH.

Referenced by BKE_tracking_track_select(), box_select_exec(), circle_select_exec(), clean_tracks_exec(), do_lasso_select_marker(), stabilize_2d_rotation_select_exec(), and stabilize_2d_select_exec().

◆ BKE_tracking_track_free()

void BKE_tracking_track_free ( struct MovieTrackingTrack *  track)

Free specified track, only frees contents of a structure (if track is allocated in heap, it shall be handled outside).

All the pointers inside track becomes invalid after this call.

Definition at line 606 of file tracking.c.

References MovieTrackingTrack::markers, and MEM_freeN.

Referenced by BKE_tracking_clipboard_free(), clean_tracks_exec(), clip_delete_track(), join_tracks_exec(), blender::TEST_F(), tracking_tracks_free(), and tracks_map_free().

◆ BKE_tracking_track_get_active()

MovieTrackingTrack* BKE_tracking_track_get_active ( MovieTracking *  tracking)

◆ BKE_tracking_track_get_indexed()

MovieTrackingTrack* BKE_tracking_track_get_indexed ( MovieTracking *  tracking,
int  tracknr,
ListBase **  r_tracksbase 
)

◆ BKE_tracking_track_get_mask()

float* BKE_tracking_track_get_mask ( int  frame_width,
int  frame_height,
MovieTrackingTrack *  track,
MovieTrackingMarker *  marker 
)

◆ BKE_tracking_track_get_named()

MovieTrackingTrack* BKE_tracking_track_get_named ( MovieTracking *  tracking,
MovieTrackingObject *  object,
const char *  name 
)

◆ BKE_tracking_track_get_weight_for_marker()

float BKE_tracking_track_get_weight_for_marker ( MovieClip *  clip,
MovieTrackingTrack *  track,
MovieTrackingMarker *  marker 
)

◆ BKE_tracking_track_has_enabled_marker_at_frame()

bool BKE_tracking_track_has_enabled_marker_at_frame ( struct MovieTrackingTrack *  track,
int  framenr 
)

Check whether track has got enabled marker at specified frame.

Note
frame number should be in clip space, not scene space.

Definition at line 727 of file tracking.c.

References BKE_tracking_marker_get_exact(), MovieTrackingMarker::flag, and MARKER_DISABLED.

Referenced by reconstruct_count_tracks_on_both_keyframes().

◆ BKE_tracking_track_has_marker_at_frame()

bool BKE_tracking_track_has_marker_at_frame ( struct MovieTrackingTrack *  track,
int  framenr 
)

Check whether track has got marker at specified frame.

Note
frame number should be in clip space, not scene space.

Definition at line 722 of file tracking.c.

References BKE_tracking_marker_get_exact(), and NULL.

Referenced by tracking_marker_insert_disabled().

◆ BKE_tracking_track_path_clear()

void BKE_tracking_track_path_clear ( MovieTrackingTrack *  track,
const int  ref_frame,
const eTrackClearAction  action 
)

◆ BKE_tracking_track_select()

void BKE_tracking_track_select ( struct ListBase *  tracksbase,
struct MovieTrackingTrack *  track,
int  area,
bool  extend 
)

◆ BKE_tracking_track_unique_name()

void BKE_tracking_track_unique_name ( struct ListBase *  tracksbase,
struct MovieTrackingTrack *  track 
)

Ensure specified track has got unique name, if it's not name of specified track will be changed keeping names of all other tracks unchanged.

Definition at line 596 of file tracking.c.

References BLI_uniquename(), BLT_I18NCONTEXT_ID_MOVIECLIP, CTX_DATA_, and MovieTrackingTrack::name.

Referenced by BKE_tracking_clipboard_paste_tracks(), and BKE_tracking_track_add_empty().

◆ BKE_tracking_tracks_average()

void BKE_tracking_tracks_average ( MovieTrackingTrack *  dst_track,
MovieTrackingTrack **  src_tracks,
const int  num_src_tracks 
)

Definition at line 1026 of file tracking.c.

References tracking_average_markers(), and tracking_average_tracks().

Referenced by average_tracks_exec().

◆ BKE_tracking_tracks_deselect_all()

void BKE_tracking_tracks_deselect_all ( ListBase *  tracksbase)

◆ BKE_tracking_tracks_first_last_frame_minmax()

void BKE_tracking_tracks_first_last_frame_minmax ( struct MovieTrackingTrack **  tracks,
int  num_tracks,
int *  r_first_frame,
int *  r_last_frame 
)

Find the minimum starting frame and maximum ending frame within given set of tracks.

Definition at line 623 of file tracking.c.

References BKE_tracking_track_first_last_frame_get(), max_ii(), min_ii(), and tracks.

Referenced by tracking_average_markers().

◆ BKE_tracking_tracks_join()

void BKE_tracking_tracks_join ( MovieTracking *  tracking,
MovieTrackingTrack *  dst_track,
MovieTrackingTrack *  src_track 
)

◆ BKE_tracking_undistort_frame()

ImBuf* BKE_tracking_undistort_frame ( MovieTracking *  tracking,
ImBuf *  ibuf,
int  calibration_width,
int  calibration_height,
float  overscan 
)

◆ BKE_tracking_undistort_v2()

void BKE_tracking_undistort_v2 ( MovieTracking *  tracking,
int  image_width,
int  image_height,
const float  co[2],
float  r_co[2] 
)

◆ channels_alpha_inverse_sort()

static int channels_alpha_inverse_sort ( const void *  a,
const void *  b 
)
static

Definition at line 3063 of file tracking.c.

References Freestyle::a, usdtokens::b(), and channels_alpha_sort().

Referenced by tracking_dopesheet_channels_sort().

◆ channels_alpha_sort()

static int channels_alpha_sort ( const void *  a,
const void *  b 
)
static

◆ channels_average_error_inverse_sort()

static int channels_average_error_inverse_sort ( const void *  a,
const void *  b 
)
static

◆ channels_average_error_sort()

static int channels_average_error_sort ( const void *  a,
const void *  b 
)
static

◆ channels_end_inverse_sort()

static int channels_end_inverse_sort ( const void *  a,
const void *  b 
)
static

◆ channels_end_sort()

static int channels_end_sort ( const void *  a,
const void *  b 
)
static

◆ channels_longest_segment_inverse_sort()

static int channels_longest_segment_inverse_sort ( const void *  a,
const void *  b 
)
static

◆ channels_longest_segment_sort()

static int channels_longest_segment_sort ( const void *  a,
const void *  b 
)
static

◆ channels_start_inverse_sort()

static int channels_start_inverse_sort ( const void *  a,
const void *  b 
)
static

◆ channels_start_sort()

static int channels_start_sort ( const void *  a,
const void *  b 
)
static

◆ channels_total_track_inverse_sort()

static int channels_total_track_inverse_sort ( const void *  a,
const void *  b 
)
static

Definition at line 3072 of file tracking.c.

References Freestyle::a, usdtokens::b(), and channels_total_track_sort().

Referenced by tracking_dopesheet_channels_sort().

◆ channels_total_track_sort()

static int channels_total_track_sort ( const void *  a,
const void *  b 
)
static

◆ compare_firstlast_putting_undefined_first()

static int compare_firstlast_putting_undefined_first ( bool  inverse,
bool  a_markerless,
int  a_value,
bool  b_markerless,
int  b_value 
)
static

◆ coverage_from_count()

static int coverage_from_count ( int  count)
static

◆ disable_imbuf_channels()

static void disable_imbuf_channels ( ImBuf *  ibuf,
MovieTrackingTrack *  track,
bool  grayscale 
)
static

◆ get_usable_marker_for_interpolation()

static const MovieTrackingMarker* get_usable_marker_for_interpolation ( struct MovieTrackingTrack *  track,
const MovieTrackingMarker *  anchor_marker,
const int  direction 
)
static

◆ multiply_marker()

static void multiply_marker ( MovieTrackingMarker *  marker,
const float  multiplier 
)
static

◆ path_clear_all()

static void path_clear_all ( MovieTrackingTrack *  track,
const int  ref_frame 
)
static

◆ path_clear_remained()

static void path_clear_remained ( MovieTrackingTrack *  track,
const int  ref_frame 
)
static

◆ path_clear_up_to()

static void path_clear_up_to ( MovieTrackingTrack *  track,
const int  ref_frame 
)
static

◆ plane_marker_size_len_in_pixels()

BLI_INLINE int plane_marker_size_len_in_pixels ( const float  a[2],
const float  b[2],
const int  frame_width,
const int  frame_height 
)

Definition at line 2801 of file tracking.c.

References Freestyle::a, usdtokens::b(), ceilf, and len_v2v2().

Referenced by BKE_tracking_get_plane_imbuf().

◆ reconstructed_camera_index_get()

static int reconstructed_camera_index_get ( MovieTrackingReconstruction *  reconstruction,
int  framenr,
bool  nearest 
)
static

◆ reconstructed_camera_scale_set()

static void reconstructed_camera_scale_set ( MovieTrackingObject *  object,
float  mat[4][4] 
)
static

◆ track_mask_gpencil_layer_get()

static bGPDlayer* track_mask_gpencil_layer_get ( MovieTrackingTrack *  track)
static

◆ track_mask_gpencil_layer_rasterize()

static void track_mask_gpencil_layer_rasterize ( int  frame_width,
int  frame_height,
const float  region_min[2],
bGPDlayer *  layer,
float *  mask,
int  mask_width,
int  mask_height 
)
static

◆ track_mask_set_pixel_cb()

static void track_mask_set_pixel_cb ( int  x,
int  x_end,
int  y,
void *  user_data 
)
static

Definition at line 1148 of file tracking.c.

References data, user_data, x, and y.

Referenced by track_mask_gpencil_layer_rasterize().

◆ tracking_average_markers()

static void tracking_average_markers ( MovieTrackingTrack *  dst_track,
MovieTrackingTrack **  src_tracks,
const int  num_src_tracks 
)
static

◆ tracking_average_tracks()

static void tracking_average_tracks ( MovieTrackingTrack *  dst_track,
MovieTrackingTrack **  src_tracks,
const int  num_src_tracks 
)
static

Definition at line 1014 of file tracking.c.

References add_v2_v2(), mul_v2_fl(), MovieTrackingTrack::offset, and zero_v2().

Referenced by BKE_tracking_tracks_average().

◆ tracking_dopesheet_calc_coverage()

static void tracking_dopesheet_calc_coverage ( MovieTracking *  tracking)
static

◆ tracking_dopesheet_channels_calc()

static void tracking_dopesheet_channels_calc ( MovieTracking *  tracking)
static

◆ tracking_dopesheet_channels_segments_calc()

static void tracking_dopesheet_channels_segments_calc ( MovieTrackingDopesheetChannel *  channel)
static

◆ tracking_dopesheet_channels_sort()

static void tracking_dopesheet_channels_sort ( MovieTracking *  tracking,
int  sort_method,
bool  inverse 
)
static

◆ tracking_dopesheet_free()

static void tracking_dopesheet_free ( MovieTrackingDopesheet *  dopesheet)
static

◆ tracking_object_copy()

static void tracking_object_copy ( MovieTrackingObject *  object_dst,
const MovieTrackingObject *  object_src,
GHash *  tracks_mapping,
const int  flag 
)
static

◆ tracking_object_free()

static void tracking_object_free ( MovieTrackingObject *  object)
static

◆ tracking_objects_copy()

static void tracking_objects_copy ( ListBase *  objects_dst,
const ListBase *  objects_src,
GHash *  tracks_mapping,
const int  flag 
)
static

◆ tracking_objects_free()

static void tracking_objects_free ( ListBase *  objects)
static

Definition at line 112 of file tracking.c.

References BLI_freelistN(), LISTBASE_FOREACH, and tracking_object_free().

Referenced by BKE_tracking_free().

◆ tracking_plane_tracks_copy()

static void tracking_plane_tracks_copy ( ListBase *  plane_tracks_list_dst,
const ListBase *  plane_tracks_list_src,
GHash *  tracks_mapping,
const int  flag 
)
static

◆ tracking_plane_tracks_free()

static void tracking_plane_tracks_free ( ListBase *  plane_tracks)
static

◆ tracking_reconstruction_copy()

static void tracking_reconstruction_copy ( MovieTrackingReconstruction *  reconstruction_dst,
const MovieTrackingReconstruction *  reconstruction_src,
const int   UNUSEDflag 
)
static

Definition at line 215 of file tracking.c.

References MovieTrackingReconstruction::cameras, and MEM_dupallocN.

Referenced by BKE_tracking_copy(), and tracking_object_copy().

◆ tracking_reconstruction_free()

static void tracking_reconstruction_free ( MovieTrackingReconstruction *  reconstruction)
static

Definition at line 92 of file tracking.c.

References MEM_freeN, and reconstruction.

Referenced by BKE_tracking_free(), and tracking_object_free().

◆ tracking_stabilization_copy()

static void tracking_stabilization_copy ( MovieTrackingStabilization *  stabilization_dst,
const MovieTrackingStabilization *  stabilization_src,
const int   UNUSEDflag 
)
static

Definition at line 226 of file tracking.c.

Referenced by BKE_tracking_copy().

◆ tracking_track_get_mask_for_region()

float* tracking_track_get_mask_for_region ( int  frame_width,
int  frame_height,
const float  region_min[2],
const float  region_max[2],
MovieTrackingTrack *  track 
)

Region is in pixel space, relative to marker's center.

Definition at line 1203 of file tracking.c.

References mask(), MEM_callocN, NULL, track_mask_gpencil_layer_get(), and track_mask_gpencil_layer_rasterize().

Referenced by accessor_get_mask_for_track_callback(), and BKE_tracking_track_get_mask().

◆ tracking_tracks_copy()

static void tracking_tracks_copy ( ListBase *  tracks_dst,
const ListBase *  tracks_src,
GHash *  tracks_mapping,
const int  flag 
)
static

◆ tracking_tracks_free()

static void tracking_tracks_free ( ListBase *  tracks)
static

Variable Documentation

◆ 

struct { ... } tracking_clipboard

◆ tracks

ListBase tracks