57 int height = (frame == cfra) ? 22 : 10;
58 int x = (frame - sfra) * framelen;
86 const int marker_index)
93 BLI_assert(marker_index < plane_track->markersnr);
102 const int marker_index)
117 const int marker_index)
124 BLI_assert(marker_index < plane_track->markersnr);
134 int *points, totseg,
i, a;
135 float sfra = scene->
r.
sfra, efra = scene->
r.
efra, framelen = region->
winx / (efra - sfra + 1);
161 while (a < markersnr) {
164 if (marker_framenr >=
i) {
168 if (a < markersnr - 1 &&
177 a =
min_ii(a, markersnr - 1);
203 int n = reconstruction->
camnr;
208 for (
i = sfra, a = 0;
i <= efra;
i++) {
212 if (cameras[a].framenr ==
i) {
216 if (cameras[a].framenr >
i) {
270 bool full_redraw =
false;
272 if (tracking->
stats) {
283 float fill_color[4] = {0.0f, 0.0f, 0.0f, 0.6f};
315 bool use_filter =
true;
345 x,
y, ibuf, &frame, zoomx * width / ibuf->
x, zoomy * height / ibuf->
y);
350 SpaceClip *sc,
ARegion *region,
int width,
int height,
float zoomx,
float zoomy)
375 float viewport_size[4];
431 int point_index =
count;
437 point_index += direction;
438 current_frame += direction;
449 uint position_attribute,
450 const int start_point,
451 const int num_points)
453 if (num_points == 0) {
457 for (
int i = 0;
i < num_points;
i++) {
465 uint position_attribute,
466 const int start_point,
467 const int num_points)
470 for (
int i = 0;
i < num_points;
i++) {
480 uint position_attribute,
481 const int start_point,
482 const int num_points)
484 if (num_points < 2) {
488 for (
int i = 0;
i < num_points;
i++) {
497#define MAX_STATIC_PATH 64
517 if (num_points_before == 0 && num_points_after == 0) {
521 int num_all_points = num_points_before + num_points_after;
523 if (num_points_before != 0 && num_points_after != 0) {
527 const int path_start_index =
count - num_points_before + 1;
528 const int path_center_index =
count;
579 if (path != path_static) {
583#undef MAX_STATIC_PATH
589 const float marker_pos[2],
595 bool show_search =
false;
598 px[0] = 1.0f / width / sc->
zoom;
599 px[1] = 1.0f / height / sc->
zoom;
707 const bool is_track_active,
708 const bool is_area_selected,
709 const float color[3],
710 const float selected_color[3])
713 if (is_track_active) {
716 else if (is_area_selected) {
724 if (is_track_active) {
727 else if (is_area_selected) {
742 const float marker_pos[2],
750 bool show_search =
false;
751 float col[3], scol[3];
757 px[0] = 1.0f / width / sc->
zoom;
758 px[1] = 1.0f / height / sc->
zoom;
898 for (
int i = 0;
i < 4;
i++) {
899 int next = (
i + 1) % 4;
901 len_sq =
min_ff(cur_len, len_sq);
904 return sqrtf(len_sq);
908 float x,
float y,
float dx,
float dy,
int outline,
const float px[2],
uint pos)
924 float x,
float y,
float dx,
float dy,
int outline,
const float px[2],
uint pos)
946 const float marker_pos[2],
954 float dx, dy, patdx, patdy, searchdx, searchdy;
956 float col[3], scol[3], px[2], side;
977 dx = 6.0f / width / sc->
zoom;
978 dy = 6.0f / height / sc->
zoom;
987 px[0] = 1.0f / sc->
zoom / width / sc->
scale;
988 px[1] = 1.0f / sc->
zoom / height / sc->
scale;
1005 float pat_min[2], pat_max[2];
1014 for (
int i = 0;
i < 4;
i++) {
1047 const float marker_pos[2],
1054 char str[128] = {0},
state[64] = {0};
1055 float dx = 0.0f, dy = 0.0f, fontsize,
pos[3];
1087 float pat_min[2], pat_max[2];
1094 pos[0] = (marker_pos[0] + dx) * width;
1095 pos[1] = (marker_pos[1] + dy) * height;
1101 pos[1] =
pos[1] * zoomy - fontsize;
1150 const float start_corner[2],
1151 const float end_corner[2],
1159 direction[0] *= width;
1160 direction[1] *= height;
1163 direction[0] /= width;
1164 direction[1] /= height;
1171 gl_matrix[0][0] = matrix[0][0];
1172 gl_matrix[0][1] = matrix[0][1];
1173 gl_matrix[0][2] = 0.0f;
1174 gl_matrix[0][3] = matrix[0][2];
1176 gl_matrix[1][0] = matrix[1][0];
1177 gl_matrix[1][1] = matrix[1][1];
1178 gl_matrix[1][2] = 0.0f;
1179 gl_matrix[1][3] = matrix[1][2];
1181 gl_matrix[2][0] = 0.0f;
1182 gl_matrix[2][1] = 0.0f;
1183 gl_matrix[2][2] = 1.0f;
1184 gl_matrix[2][3] = 0.0f;
1186 gl_matrix[3][0] = matrix[2][0];
1187 gl_matrix[3][1] = matrix[2][1];
1188 gl_matrix[3][2] = 0.0f;
1189 gl_matrix[3][3] = matrix[2][2];
1200 if (image ==
nullptr) {
1211 if (display_buffer) {
1212 float frame_corners[4][2] = {{0.0f, 0.0f}, {1.0f, 0.0f}, {1.0f, 1.0f}, {0.0f, 1.0f}};
1213 float perspective_matrix[3][3];
1214 float gl_matrix[4][4];
1215 bool transparent =
false;
1217 frame_corners, plane_marker->
corners, perspective_matrix);
1227 "plane_marker_image",
1231 blender::gpu::TextureFormat::UNORM_8_8_8_8,
1242 imm_format,
"pos", blender::gpu::VertAttrType::SFLOAT_32_32_32);
1244 imm_format,
"texCoord", blender::gpu::VertAttrType::SFLOAT_32_32);
1290 bool is_active_track,
1296 bool is_selected_track = (plane_track->
flag &
SELECT) != 0;
1297 const bool has_image = plane_track->
image !=
nullptr &&
1299 const bool draw_plane_quad = !has_image || plane_track->
image_opacity == 0.0f;
1301 float color[3], selected_color[3];
1303 px[0] = 1.0f / width / sc->
zoom;
1304 px[1] = 1.0f / height / sc->
zoom;
1307 if (draw_outline ==
false) {
1311 if (draw_plane_quad || is_selected_track) {
1317 float viewport_size[4];
1324 if (is_selected_track) {
1328 if (draw_plane_quad) {
1329 const bool stipple = !draw_outline && tiny;
1330 const bool thick = draw_outline && !tiny;
1358 if (!draw_outline) {
1395 if (is_selected_track) {
1405 for (
int i = 0;
i < 4;
i++) {
1433 bool is_active_track,
1438 sc, scene, plane_track, plane_marker, is_active_track,
false, width, height);
1445 bool is_active_track,
1454 draw_plane_marker(sc, scene, plane_track, plane_marker, is_active_track, width, height);
1474 float *marker_pos =
nullptr, *fp, *active_pos =
nullptr, cur_pos[2];
1497 sc, scene, plane_track, framenr, plane_track == active_plane_track, width, height);
1532 if (track == active_track) {
1582 const int act = track == active_track;
1606 draw_marker_areas(sc, active_track, marker, cur_pos, width, height, 1, 1, position);
1612 float pos[4], vec[4], mat[4][4], aspy;
1633 pos[0] = (
pos[0] / (
pos[3] * 2.0f) + 0.5f) * width;
1634 pos[1] = (
pos[1] / (
pos[3] * 2.0f) + 0.5f) * height * aspy;
1638 if (npos[0] >= 0.0f && npos[1] >= 0.0f && npos[0] <= width && npos[1] <= height * aspy) {
1639 vec[0] = (marker->
pos[0] + track->offset[0]) * width;
1640 vec[1] = (marker->
pos[1] + track->offset[1]) * height * aspy;
1654 immVertex2f(position, npos[0] / width, npos[1] / (height * aspy));
1677 const int act = track == active_track;
1681 draw_marker_texts(sc, track, marker, cur_pos, act, width, height, zoomx, zoomy);
1707 float tpos[2], grid[11][11][2];
1711 float dx =
float(width) / n, dy =
float(height) / n * aspy;
1712 float offsx = 0.0f, offsy = 0.0f;
1737 float val[4][2], idx[4][2];
1740 for (
int a = 0; a < 4; a++) {
1749 for (
int i = 0;
i <= n;
i++) {
1750 for (
int j = 0; j <= n; j++) {
1751 if (
i == 0 || j == 0 ||
i == n || j == n) {
1752 const float pos[2] = {dx * j, dy *
i};
1755 for (
int a = 0; a < 4; a++) {
1759 ok = tpos[a % 2] < val[a][a % 2];
1762 ok = tpos[a % 2] > val[a][a % 2];
1777 for (
int a = 0; a < 4; a++) {
1778 const float pos[2] = {idx[a][0] * dx, idx[a][1] * dy};
1785 dx = (
max[0] -
min[0]) / n;
1786 dy = (
max[1] -
min[1]) / n;
1788 for (
int i = 0;
i <= n;
i++) {
1789 for (
int j = 0; j <= n; j++) {
1790 const float pos[2] = {
min[0] + dx * j,
min[1] + dy *
i};
1794 grid[
i][j][0] /= width;
1795 grid[
i][j][1] /= height * aspy;
1801 for (
int i = 0;
i <= n;
i++) {
1804 for (
int j = 0; j <= n; j++) {
1811 for (
int j = 0; j <= n; j++) {
1814 for (
int i = 0;
i <= n;
i++) {
1833 layer = layer->
next;
1849 float pos[2], npos[2], dpos[2],
len;
1853 pos[1] = (stroke->
points[
i].
y + offsy) * height * aspy;
1855 npos[0] = (stroke->
points[
i + 1].
x + offsx) * width;
1856 npos[1] = (stroke->
points[
i + 1].
y + offsy) * height * aspy;
1872 for (
int j = 0; j <= steps; j++) {
1874 immVertex2f(position, tpos[0] / width, tpos[1] / (height * aspy));
1889 stroke = stroke->
next;
1892 frame = frame->
next;
1895 layer = layer->
next;
1908 ImBuf *ibuf =
nullptr;
1922 float translation[2];
1924 float smat[4][4], ismat[4][4];
1930 if (ibuf !=
nullptr && width != ibuf->
x) {
1941 smat[0][0] = 1.0f / width;
1942 smat[1][1] = 1.0f / height;
1967 if (width && height) {
2003 if (is_track_source) {
void ED_draw_imbuf_ctx(const bContext *C, ImBuf *ibuf, float x, float y, bool use_filter, float zoom_x, float zoom_y)
Scene * CTX_data_scene(const bContext *C)
SpaceClip * CTX_wm_space_clip(const bContext *C)
ImBuf * BKE_image_acquire_ibuf(Image *ima, ImageUser *iuser, void **r_lock)
void BKE_image_release_ibuf(Image *ima, ImBuf *ibuf, void *lock)
bool BKE_image_has_ibuf(Image *ima, ImageUser *iuser)
void BKE_movieclip_get_cache_segments(struct MovieClip *clip, const struct MovieClipUser *user, int *r_totseg, int **r_points)
void BKE_tracking_stabilization_data_to_mat4(int width, int height, float aspect, float translation[2], float scale, float angle, float mat[4][4])
struct MovieTrackingMarker * BKE_tracking_marker_get(struct MovieTrackingTrack *track, int framenr)
struct MovieTrackingObject * BKE_tracking_object_get_active(const struct MovieTracking *tracking)
struct MovieTrackingMarker * BKE_tracking_marker_get_exact(struct MovieTrackingTrack *track, int framenr)
void BKE_tracking_distort_v2(struct MovieTracking *tracking, int image_width, int image_height, const float co[2], float r_co[2])
#define TRACK_VIEW_SELECTED(sc, track)
void BKE_tracking_marker_pattern_minmax(const struct MovieTrackingMarker *marker, float min[2], float max[2])
struct MovieTrackingPlaneMarker * BKE_tracking_plane_marker_get(struct MovieTrackingPlaneTrack *plane_track, int framenr)
void BKE_tracking_get_projection_matrix(struct MovieTracking *tracking, struct MovieTrackingObject *tracking_object, int framenr, int winx, int winy, float mat[4][4])
void BKE_tracking_undistort_v2(struct MovieTracking *tracking, int image_width, int image_height, const float co[2], float r_co[2])
void BKE_tracking_homography_between_two_quads(float reference_corners[4][2], float corners[4][2], float H[3][3])
void BLF_size(int fontid, float size)
void BLF_draw(int fontid, const char *str, size_t str_len, ResultBLF *r_info=nullptr) ATTR_NONNULL(2)
int BLF_height_max(int fontid) ATTR_WARN_UNUSED_RESULT
void BLF_color4ubv(int fontid, const unsigned char rgba[4])
void BLF_position(int fontid, float x, float y, float z)
#define LISTBASE_FOREACH(type, var, list)
MINLINE int min_ii(int a, int b)
MINLINE float min_ff(float a, float b)
int isect_point_quad_v2(const float p[2], const float v1[2], const float v2[2], const float v3[2], const float v4[2])
void mul_v4_m4v4(float r[4], const float mat[4][4], const float v[4])
void mul_m4_v3(const float M[4][4], float r[3])
#define mul_m4_series(...)
bool invert_m4_m4(float inverse[4][4], const float mat[4][4])
void unit_m4(float m[4][4])
MINLINE float len_squared_v2(const float v[2]) ATTR_WARN_UNUSED_RESULT
MINLINE float len_squared_v2v2(const float a[2], const float b[2]) ATTR_WARN_UNUSED_RESULT
MINLINE void sub_v2_v2(float r[2], const float a[2])
MINLINE float len_v2v2(const float v1[2], const float v2[2]) ATTR_WARN_UNUSED_RESULT
MINLINE void mul_v2_fl(float r[2], float f)
MINLINE void copy_v2_v2(float r[2], const float a[2])
MINLINE void copy_v3_v3(float r[3], const float a[3])
void minmax_v2v2_v2(float min[2], float max[2], const float vec[2])
MINLINE void add_v2_v2(float r[2], const float a[2])
MINLINE void add_v2_v2v2(float r[2], const float a[2], const float b[2])
MINLINE void sub_v2_v2v2(float r[2], const float a[2], const float b[2])
MINLINE void zero_v2(float r[2])
MINLINE float normalize_v2(float n[2])
MINLINE void mul_v3_v3fl(float r[3], const float a[3], float f)
MINLINE void mul_v2_v2fl(float r[2], const float a[2], float f)
void BLI_rctf_init(struct rctf *rect, float xmin, float xmax, float ymin, float ymax)
#define SNPRINTF_UTF8(dst, format,...)
#define STRNCPY_UTF8(dst, src)
#define INIT_MINMAX2(min, max)
#define UNUSED_VARS_NDEBUG(...)
@ MCLIP_PROXY_RENDER_UNDISTORT
@ MCLIP_PROXY_RENDER_SIZE_100
@ MCLIP_PROXY_RENDER_SIZE_FULL
@ TRACKING_2D_STABILIZATION
MovieClip * ED_space_clip_get_clip(const SpaceClip *sc)
void ED_space_clip_get_size(const SpaceClip *sc, int *r_width, int *r_height)
void ED_space_clip_get_zoom(const SpaceClip *sc, const ARegion *region, float *r_zoomx, float *r_zoomy)
int ED_space_clip_get_clip_frame_number(const SpaceClip *sc)
void ED_clip_point_undistorted_pos(const SpaceClip *sc, const float co[2], float r_co[2])
ImBuf * ED_space_clip_get_buffer(const SpaceClip *sc)
ImBuf * ED_space_clip_get_stable_buffer(const SpaceClip *sc, float loc[2], float *scale, float *angle)
void ED_mask_draw_frames(Mask *mask, ARegion *region, int cfra, int sfra, int efra)
void ED_region_info_draw(ARegion *region, const char *text, const float fill_color[4], bool full_redraw)
void ED_region_cache_draw_cached_segments(ARegion *region, int num_segments, const int *points, int sfra, int efra)
void ED_region_cache_draw_background(ARegion *region)
void ED_region_cache_draw_curfra_label(int framenr, float x, float y)
void ED_region_grid_draw(ARegion *region, float zoomx, float zoomy, float x0, float y0)
void ED_region_image_metadata_draw(int x, int y, const ImBuf *ibuf, const rctf *frame, float zoomx, float zoomy)
void GPU_matrix_translate_2fv(const float vec[2])
void GPU_matrix_scale_2f(float x, float y)
#define GPU_matrix_mul(x)
void GPU_matrix_translate_2f(float x, float y)
@ GPU_SHADER_3D_LINE_DASHED_UNIFORM_COLOR
@ GPU_SHADER_3D_UNIFORM_COLOR
@ GPU_SHADER_3D_POINT_UNIFORM_COLOR
@ GPU_SHADER_3D_IMAGE_COLOR
void GPU_line_width(float width)
void GPU_logic_op_xor_set(bool enable)
void GPU_blend(GPUBlend blend)
void GPU_point_size(float size)
void GPU_viewport_size_get_f(float coords[4])
void GPU_texture_unbind(blender::gpu::Texture *texture)
@ GPU_TEXTURE_USAGE_SHADER_READ
blender::gpu::Texture * GPU_texture_create_2d(const char *name, int width, int height, int mip_len, blender::gpu::TextureFormat format, eGPUTextureUsage usage, const float *data)
void GPU_texture_filter_mode(blender::gpu::Texture *texture, bool use_filter)
void GPU_texture_free(blender::gpu::Texture *texture)
void GPU_texture_update(blender::gpu::Texture *texture, eGPUDataFormat data_format, const void *data)
unsigned char * IMB_display_buffer_acquire(ImBuf *ibuf, const ColorManagedViewSettings *view_settings, const ColorManagedDisplaySettings *display_settings, void **cache_handle)
void IMB_display_buffer_release(void *cache_handle)
void IMB_freeImBuf(ImBuf *ibuf)
Read Guarded memory(de)allocation.
void UI_GetThemeColor3fv(int colorid, float col[3])
@ TH_PATH_KEYFRAME_BEFORE
void UI_GetThemeColor4fv(int colorid, float col[4])
void UI_GetThemeColorShade4fv(int colorid, int offset, float col[4])
void UI_GetThemeColorShade4ubv(int colorid, int offset, unsigned char col[4])
void UI_FontThemeColor(int fontid, int colorid)
void UI_view2d_view_to_region_fl(const View2D *v2d, float x, float y, float *r_region_x, float *r_region_y) ATTR_NONNULL()
void UI_view2d_view_to_region(const View2D *v2d, float x, float y, int *r_region_x, int *r_region_y) ATTR_NONNULL()
void ED_annotation_draw_2dimage(const bContext *C)
void ED_annotation_draw_view2d(const bContext *C, bool onlyv2d)
static bool generic_track_is_marker_enabled(const MovieTrackingTrack *track, const MovieTrackingPlaneTrack *plane_track, const int marker_index)
static bool generic_track_is_marker_keyframed(const MovieTrackingTrack *track, const MovieTrackingPlaneTrack *plane_track, const int marker_index)
void clip_draw_cache_and_notes(const bContext *C, SpaceClip *sc, ARegion *region)
static void draw_movieclip_notes(SpaceClip *sc, ARegion *region)
static void draw_marker_slide_zones(SpaceClip *sc, const MovieTrackingTrack *track, const MovieTrackingMarker *marker, const float marker_pos[2], int outline, int sel, int act, int width, int height, uint pos)
static void draw_marker_outline(SpaceClip *sc, const MovieTrackingTrack *track, const MovieTrackingMarker *marker, const float marker_pos[2], int width, int height, uint position)
static void draw_movieclip_cache(SpaceClip *sc, ARegion *region, MovieClip *clip, Scene *scene)
@ PATH_POINT_FLAG_KEYFRAME
static void draw_marker_texts(SpaceClip *sc, const MovieTrackingTrack *track, const MovieTrackingMarker *marker, const float marker_pos[2], int act, int width, int height, float zoomx, float zoomy)
static void draw_movieclip_muted(ARegion *region, int width, int height, float zoomx, float zoomy)
static void draw_track_path_points(const TrackPathPoint *path, uint position_attribute, const int start_point, const int num_points)
static void draw_plane_marker(SpaceClip *sc, Scene *scene, MovieTrackingPlaneTrack *plane_track, MovieTrackingPlaneMarker *plane_marker, bool is_active_track, int width, int height)
static void getArrowEndPoint(const int width, const int height, const float zoom, const float start_corner[2], const float end_corner[2], float end_point[2])
static void draw_marker_areas(SpaceClip *sc, const MovieTrackingTrack *track, const MovieTrackingMarker *marker, const float marker_pos[2], int width, int height, int act, int sel, const uint shdr_pos)
static void draw_marker_slide_triangle(float x, float y, float dx, float dy, int outline, const float px[2], uint pos)
static float get_shortest_pattern_side(const MovieTrackingMarker *marker)
static void draw_track_path_keyframe_points(const TrackPathPoint *path, uint position_attribute, const int start_point, const int num_points)
void clip_draw_main(const bContext *C, SpaceClip *sc, ARegion *region)
static int track_to_path_segment(SpaceClip *sc, MovieTrackingTrack *track, int direction, TrackPathPoint *path)
static void set_draw_marker_area_color(const MovieTrackingTrack *track, const MovieTrackingMarker *marker, const bool is_track_active, const bool is_area_selected, const float color[3], const float selected_color[3])
static void draw_plane_marker_ex(SpaceClip *sc, Scene *scene, MovieTrackingPlaneTrack *plane_track, MovieTrackingPlaneMarker *plane_marker, bool is_active_track, bool draw_outline, int width, int height)
static void draw_plane_track(SpaceClip *sc, Scene *scene, MovieTrackingPlaneTrack *plane_track, int framenr, bool is_active_track, int width, int height)
static void marker_to_path_point(SpaceClip *sc, const MovieTrackingTrack *track, const MovieTrackingMarker *marker, TrackPathPoint *point)
static void plane_track_colors(bool is_active, float r_color[3], float r_selected_color[3])
static void draw_distortion(SpaceClip *sc, ARegion *region, MovieClip *clip, int width, int height, float zoomx, float zoomy)
static void draw_track_path(SpaceClip *sc, MovieClip *, MovieTrackingTrack *track)
static void draw_tracking_tracks(SpaceClip *sc, Scene *scene, ARegion *region, MovieClip *clip, int width, int height, float zoomx, float zoomy)
static int generic_track_get_marker_framenr(const MovieTrackingTrack *track, const MovieTrackingPlaneTrack *plane_track, const int marker_index)
static void draw_keyframe(int frame, int cfra, int sfra, float framelen, int width, uint pos)
static void draw_movieclip_buffer(const bContext *C, SpaceClip *sc, ARegion *region, ImBuf *ibuf, int width, int height, float zoomx, float zoomy)
void clip_draw_grease_pencil(bContext *C, int onlyv2d)
static void draw_stabilization_border(SpaceClip *sc, ARegion *region, int width, int height, float zoomx, float zoomy)
static void draw_marker_slide_square(float x, float y, float dx, float dy, int outline, const float px[2], uint pos)
static void draw_track_path_lines(const TrackPathPoint *path, uint position_attribute, const int start_point, const int num_points)
static void homogeneous_2d_to_gl_matrix(float matrix[3][3], float gl_matrix[4][4])
static void draw_plane_marker_image(Scene *scene, MovieTrackingPlaneTrack *plane_track, MovieTrackingPlaneMarker *plane_marker)
static void track_colors(const MovieTrackingTrack *track, int act, float r_col[3], float r_scol[3])
static int generic_track_get_markersnr(const MovieTrackingTrack *track, const MovieTrackingPlaneTrack *plane_track)
static void draw_plane_marker_outline(SpaceClip *sc, Scene *scene, MovieTrackingPlaneTrack *plane_track, MovieTrackingPlaneMarker *plane_marker, int width, int height)
BLI_INLINE bool ED_space_clip_marker_is_visible(const SpaceClip *space_clip, const MovieTrackingObject *tracking_object, const MovieTrackingTrack *track, const MovieTrackingMarker *marker)
TEX_TEMPLATE DataVec texture(T, FltCoord, float=0.0f) RET
void * MEM_calloc_arrayN(size_t len, size_t size, const char *str)
void MEM_freeN(void *vmemh)
VecBase< float, 4 > float4
VecBase< float, 3 > float3
struct MovieTracking tracking
float pattern_corners[4][2]
MovieTrackingPlaneTrack * active_plane_track
MovieTrackingReconstruction reconstruction
MovieTrackingTrack * active_track
MovieTrackingPlaneMarker * markers
struct MovieReconstructedCamera * cameras
MovieTrackingMarker * markers
MovieTrackingStats * stats
MovieTrackingStabilization stabilization
MovieTrackingCamera camera
ColorManagedViewSettings view_settings
ColorManagedDisplaySettings display_settings
struct SpaceClipOverlay overlay
struct MovieClipUser user