Blender  V3.3
tracking_private.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later
2  * Copyright 2011 Blender Foundation. All rights reserved. */
3 
11 #pragma once
12 
13 #include "BLI_threads.h"
14 
15 #ifdef __cplusplus
16 extern "C" {
17 #endif
18 
19 struct GHash;
20 struct MovieTracking;
21 struct MovieTrackingMarker;
22 
24 
25 /*********************** Tracks map *************************/
26 
27 typedef struct TracksMap {
29  bool is_camera;
30 
33 
34  char *customdata;
36 
37  struct GHash *hash;
38 
39  int ptr;
40 
41  /* Spin lock is used to sync context during tracking. */
44 
45 struct TracksMap *tracks_map_new(const char *object_name,
46  bool is_camera,
47  int num_tracks,
48  int customdata_size);
49 int tracks_map_get_size(struct TracksMap *map);
51  int index,
52  struct MovieTrackingTrack **track,
53  void **customdata);
54 void tracks_map_insert(struct TracksMap *map, struct MovieTrackingTrack *track, void *customdata);
55 void tracks_map_free(struct TracksMap *map, void (*customdata_free)(void *customdata));
56 void tracks_map_merge(struct TracksMap *map, struct MovieTracking *tracking);
57 
58 /*********************** Space transformation functions *************************/
59 
61  int frame_height,
62  const struct MovieTrackingMarker *marker,
63  float frame_pixel[2]);
64 
72  int frame_height,
73  const struct MovieTrackingMarker *marker,
74  double search_pixel_x[5],
75  double search_pixel_y[5]);
76 
80 void tracking_set_marker_coords_from_tracking(int frame_width,
81  int frame_height,
82  struct MovieTrackingMarker *marker,
83  const double search_pixel_x[5],
84  const double search_pixel_y[5]);
85 
86 /*********************** General purpose utility functions *************************/
87 
98  const struct MovieTrackingMarker *ref_marker,
99  bool before,
100  bool overwrite);
101 
106  struct MovieTracking *tracking,
107  int calibration_width,
108  int calibration_height,
109  struct libmv_CameraIntrinsicsOptions *camera_intrinsics_options);
110 
112  struct MovieTracking *tracking,
113  const struct libmv_CameraIntrinsicsOptions *camera_intrinsics_options);
114 
116 
121  float *mask,
122  bool is_backwards,
124 
129  int current_frame,
130  bool backwards);
131 
132 /*********************** Masking *************************/
133 
137 float *tracking_track_get_mask_for_region(int frame_width,
138  int frame_height,
139  const float region_min[2],
140  const float region_max[2],
141  MovieTrackingTrack *track);
142 
143 /*********************** Frame Accessor *************************/
144 
145 struct libmv_FrameAccessor;
146 
147 #define MAX_ACCESSOR_CLIP 64
148 typedef struct TrackingImageAccessor {
151 
152  /* Array of tracks which are being tracked.
153  * Points to actual track from the `MovieClip` (or multiple of them).
154  * This accessor owns the array, but not the tracks themselves. */
157 
161 
170  int num_clips,
172  int num_tracks);
174 
175 #ifdef __cplusplus
176 }
177 #endif
pthread_spinlock_t SpinLock
Definition: BLI_threads.h:110
#define MAX_NAME
Definition: DNA_defs.h:48
CCL_NAMESPACE_BEGIN struct Options options
struct libmv_FrameAccessor libmv_FrameAccessor
ccl_device_inline float4 mask(const int4 &mask, const float4 &a)
Definition: math_float4.h:513
SocketIndexByIdentifierMap * map
struct MovieTrackingTrack ** tracks
struct MovieClip * clips[MAX_ACCESSOR_CLIP]
struct libmv_FrameAccessor * libmv_accessor
char object_name[MAX_NAME]
struct GHash * hash
MovieTrackingTrack * tracks
SpinLock spin_lock
char * customdata
ListBase tracks
Definition: tracking.c:60
void tracking_trackingCameraFromIntrinscisOptions(struct MovieTracking *tracking, const struct libmv_CameraIntrinsicsOptions *camera_intrinsics_options)
struct MovieTrackingMarker * tracking_get_keyframed_marker(struct MovieTrackingTrack *track, int current_frame, bool backwards)
struct TracksMap TracksMap
int tracks_map_get_size(struct TracksMap *map)
Definition: tracking_util.c:77
void tracking_marker_insert_disabled(struct MovieTrackingTrack *track, const struct MovieTrackingMarker *ref_marker, bool before, bool overwrite)
struct TrackingImageAccessor TrackingImageAccessor
void tracks_map_merge(struct TracksMap *map, struct MovieTracking *tracking)
#define MAX_ACCESSOR_CLIP
void tracks_map_insert(struct TracksMap *map, struct MovieTrackingTrack *track, void *customdata)
Definition: tracking_util.c:94
void tracking_configure_tracker(const MovieTrackingTrack *track, float *mask, bool is_backwards, struct libmv_TrackRegionOptions *options)
void tracks_map_free(struct TracksMap *map, void(*customdata_free)(void *customdata))
TrackingImageAccessor * tracking_image_accessor_new(MovieClip *clips[MAX_ACCESSOR_CLIP], int num_clips, MovieTrackingTrack **tracks, int num_tracks)
struct TracksMap * tracks_map_new(const char *object_name, bool is_camera, int num_tracks, int customdata_size)
Definition: tracking_util.c:51
void tracking_image_accessor_destroy(TrackingImageAccessor *accessor)
void tracking_cameraIntrinscisOptionsFromTracking(struct MovieTracking *tracking, int calibration_width, int calibration_height, struct libmv_CameraIntrinsicsOptions *camera_intrinsics_options)
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)
Definition: tracking.c:1203
void tracks_map_get_indexed_element(struct TracksMap *map, int index, struct MovieTrackingTrack **track, void **customdata)
Definition: tracking_util.c:82
void tracking_set_marker_coords_from_tracking(int frame_width, int frame_height, struct MovieTrackingMarker *marker, const double search_pixel_x[5], const double search_pixel_y[5])
void tracking_get_search_origin_frame_pixel(int frame_width, int frame_height, const struct MovieTrackingMarker *marker, float frame_pixel[2])
void tracking_get_marker_coords_for_tracking(int frame_width, int frame_height, const struct MovieTrackingMarker *marker, double search_pixel_x[5], double search_pixel_y[5])