Blender V5.0
tracking_private.h
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2011 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
11
12#pragma once
13
14#include "DNA_ID.h"
15#include "DNA_movieclip_types.h"
16
17#include "BLI_threads.h"
18
19struct GHash;
20struct MovieTracking;
22
24
25/*********************** Tracks map *************************/
26
27typedef struct TracksMap {
29
32
33 struct GHash *hash;
34
35 int ptr;
36
37 /* Spin lock is used to sync context during tracking. */
40
41struct TracksMap *tracks_map_new(const char *object_name, int num_tracks);
42int tracks_map_get_size(struct TracksMap *map);
43void tracks_map_insert(struct TracksMap *map, struct MovieTrackingTrack *track);
44void tracks_map_free(struct TracksMap *map);
45void tracks_map_merge(struct TracksMap *map, struct MovieTracking *tracking);
46
47/*********************** Space transformation functions *************************/
48
50 int frame_height,
51 const struct MovieTrackingMarker *marker,
52 float frame_pixel[2]);
53
61 int frame_height,
62 const struct MovieTrackingMarker *marker,
63 double search_pixel_x[5],
64 double search_pixel_y[5]);
65
70 int frame_height,
71 struct MovieTrackingMarker *marker,
72 const double search_pixel_x[5],
73 const double search_pixel_y[5]);
74
86void tracking_principal_point_normalized_to_pixel(const float principal_point_normalized[2],
87 int frame_width,
88 int frame_height,
89 float r_principal_point_pixel[2]);
90void tracking_principal_point_pixel_to_normalized(const float principal_point_pixel[2],
91 int frame_width,
92 int frame_height,
93 float r_principal_point_normalized[2]);
94
95/*********************** General purpose utility functions *************************/
96
107 const struct MovieTrackingMarker *ref_marker,
108 bool before,
109 bool overwrite);
110
115 struct MovieTracking *tracking,
116 int calibration_width,
117 int calibration_height,
118 struct libmv_CameraIntrinsicsOptions *camera_intrinsics_options);
119
121 struct MovieTracking *tracking,
122 const struct libmv_CameraIntrinsicsOptions *camera_intrinsics_options);
123
125
130 float *mask,
131 bool is_backwards,
133
138 int current_frame,
139 bool backwards);
140
141/*********************** Masking *************************/
142
146float *tracking_track_get_mask_for_region(const int frame_width,
147 const int frame_height,
148 const float region_min[2],
149 const float region_max[2],
150 const MovieTrackingTrack *track);
151
152/*********************** Frame Accessor *************************/
153
155
156#define MAX_ACCESSOR_CLIP 64
157typedef struct TrackingImageAccessor {
160
161 /* Array of tracks which are being tracked.
162 * Points to actual track from the `MovieClip` (or multiple of them).
163 * This accessor owns the array, but not the tracks themselves. */
166
170
179 int num_clips,
181 int num_tracks);
pthread_spinlock_t SpinLock
ID and Library types, which are fundamental for SDNA.
#define MAX_NAME
Definition DNA_defs.h:50
CCL_NAMESPACE_BEGIN struct Options options
struct libmv_FrameAccessor libmv_FrameAccessor
ccl_device_inline float2 mask(const MaskType mask, const float2 a)
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
ListBase tracks
Definition tracking.cc:71
void tracking_trackingCameraFromIntrinscisOptions(struct MovieTracking *tracking, const struct libmv_CameraIntrinsicsOptions *camera_intrinsics_options)
int tracks_map_get_size(struct TracksMap *map)
struct MovieTrackingMarker * tracking_get_keyframed_marker(struct MovieTrackingTrack *track, int current_frame, bool backwards)
void tracking_marker_insert_disabled(struct MovieTrackingTrack *track, const struct MovieTrackingMarker *ref_marker, bool before, bool overwrite)
void tracks_map_free(struct TracksMap *map)
void tracks_map_insert(struct TracksMap *map, struct MovieTrackingTrack *track)
void tracks_map_merge(struct TracksMap *map, struct MovieTracking *tracking)
#define MAX_ACCESSOR_CLIP
void tracking_configure_tracker(const MovieTrackingTrack *track, float *mask, bool is_backwards, struct libmv_TrackRegionOptions *options)
TrackingImageAccessor * tracking_image_accessor_new(MovieClip *clips[MAX_ACCESSOR_CLIP], int num_clips, MovieTrackingTrack **tracks, int num_tracks)
void tracking_principal_point_normalized_to_pixel(const float principal_point_normalized[2], int frame_width, int frame_height, float r_principal_point_pixel[2])
float * tracking_track_get_mask_for_region(const int frame_width, const int frame_height, const float region_min[2], const float region_max[2], const MovieTrackingTrack *track)
Definition tracking.cc:1136
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)
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_principal_point_pixel_to_normalized(const float principal_point_pixel[2], int frame_width, int frame_height, float r_principal_point_normalized[2])
void tracking_get_search_origin_frame_pixel(int frame_width, int frame_height, const struct MovieTrackingMarker *marker, float frame_pixel[2])
struct TracksMap * tracks_map_new(const char *object_name, int num_tracks)
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])