46 #include "RNA_prototypes.h"
137 channel = channel->
next;
167 GHash *tracks_mapping,
175 if (track_src->markers) {
190 const ListBase *plane_tracks_list_src,
191 GHash *tracks_mapping,
198 if (plane_track_src->markers) {
205 plane_track_src->point_tracks[i]);
210 BLI_addtail(plane_tracks_list_dst, plane_track_dst);
219 *reconstruction_dst = *reconstruction_src;
220 if (reconstruction_src->
cameras) {
230 *stabilization_dst = *stabilization_src;
236 GHash *tracks_mapping,
239 *object_dst = *object_src;
249 GHash *tracks_mapping,
267 *tracking_dst = *tracking_src;
281 !
ELEM(
NULL, plane_track_src, plane_track_dst);
282 plane_track_src = plane_track_src->
next, plane_track_dst = plane_track_dst->
next) {
351 return &
object->tracks;
362 return &
object->plane_tracks;
403 float shiftx, shifty, winside = (
float)
min_ii(winx, winy);
417 pixsize = clipsta / viewfac;
419 left = -0.5f * (
float)winx + shiftx * winside;
420 bottom = -0.5f * (ycor) * (
float)winy + shifty * winside;
421 right = 0.5f * (
float)winx + shiftx * winside;
422 top = 0.5f * (ycor) * (
float)winy + shifty * winside;
453 next_track = track->
next;
516 strcpy(track->
name,
"Track");
551 const float pattern_size[2] = {half_pattern_px /
width, half_pattern_px /
height};
552 const float search_size[2] = {half_search_px /
width, half_search_px /
height};
554 memset(&marker, 0,
sizeof(marker));
603 sizeof(track->
name));
618 const int last_marker_index = track->
markersnr - 1;
624 const int num_tracks,
628 *r_first_frame = INT_MAX;
629 *r_last_frame = INT_MIN;
630 for (
int i = 0; i < num_tracks; ++i) {
632 int track_first_frame, track_last_frame;
634 *r_first_frame =
min_ii(*r_first_frame, track_first_frame);
635 *r_last_frame =
max_ii(*r_last_frame, track_last_frame);
641 int num_selected_tracks = 0;
644 ++num_selected_tracks;
647 return num_selected_tracks;
662 if (tracks_list ==
NULL) {
668 if (num_selected_tracks == 0) {
674 int source_track_index = 0;
679 source_tracks[source_track_index] = track;
680 ++source_track_index;
683 *r_num_tracks = num_selected_tracks;
685 return source_tracks;
777 marker_new = *marker;
810 int i = 0,
a = 0,
b = 0, tot;
867 for (
int j = 0; j <
len; j++) {
871 fac = 1.0f / (
len - 1) * j;
959 const int num_src_tracks)
962 int first_frame, last_frame;
964 src_tracks, num_src_tracks, &first_frame, &last_frame);
965 if (last_frame < first_frame) {
968 const int num_frames = last_frame - first_frame + 1;
973 int *counters =
MEM_calloc_arrayN(num_frames,
sizeof(
int),
"tracks accumulator counters");
974 for (
int frame = first_frame; frame <= last_frame; ++frame) {
975 const int frame_index = frame - first_frame;
976 accumulator[frame_index].
framenr = frame;
981 for (
int track_index = 0; track_index < num_src_tracks; ++track_index) {
983 for (
int frame = first_frame; frame <= last_frame; ++frame) {
988 const int frame_index = frame - first_frame;
990 ++counters[frame_index];
995 for (
int frame = first_frame; frame <= last_frame; ++frame) {
997 const int frame_index = frame - first_frame;
998 if (!counters[frame_index]) {
1001 const float multiplier = 1.0f / (
float)counters[frame_index];
1016 const int num_src_tracks)
1020 for (
int track_index = 0; track_index < num_src_tracks; track_index++) {
1028 const int num_src_tracks)
1030 if (num_src_tracks == 0) {
1050 track = track->
next;
1070 if (cur == tracknr) {
1071 *r_tracksbase = tracksbase;
1078 track = track->
next;
1081 object =
object->
next;
1084 *r_tracksbase =
NULL;
1128 frame = frame->
next;
1136 layer = layer->
next;
1151 size_t index = (size_t)
y *
data->mask_width +
x;
1152 size_t index_end = (
size_t)
y *
data->mask_width + x_end;
1154 data->mask[index] = 1.0f;
1155 }
while (++index != index_end);
1160 const float region_min[2],
1170 data.mask_width = mask_width;
1171 data.mask_height = mask_height;
1179 int *mask_points, *
point;
1181 "track mask rasterization points");
1183 point[0] = stroke_points[i].
x * frame_width - region_min[0];
1184 point[1] = stroke_points[i].
y * frame_height - region_min[1];
1191 (
const int(*)[2])mask_points,
1197 stroke = stroke->
next;
1199 frame = frame->
next;
1205 const float region_min[2],
1206 const float region_max[2],
1211 if (layer !=
NULL) {
1212 const int mask_width = region_max[0] - region_min[0];
1213 const int mask_height = region_max[1] - region_min[1];
1214 mask =
MEM_callocN(mask_width * mask_height *
sizeof(
float),
"track mask");
1216 frame_width, frame_height, region_min, layer,
mask, mask_width, mask_height);
1227 const float region_min[2] = {
1231 const float region_max[2] = {
1236 frame_width, frame_height, region_min, region_max, track);
1244 float weight = track->
weight;
1247 &clip->
id, track, &RNA_MovieTrackingTrack,
"weight", 0,
NULL);
1249 if (weight_fcurve) {
1313 *old_marker = *marker;
1351 while (a < track->markersnr) {
1376 float pat_min[2], pat_max[2];
1379 for (
int a = 0;
a < 2;
a++) {
1381 for (
int b = 0;
b < 4;
b++) {
1386 for (
int b = 0;
b < 4;
b++) {
1395 float pat_min[2], pat_max[2];
1398 for (
int a = 0;
a < 2;
a++) {
1406 float pat_min[2], pat_max[2];
1412 for (
int a = 0;
a < 2;
a++) {
1426 const int num_markers = track->
markersnr;
1428 if (num_markers == 0) {
1429 BLI_assert_msg(0,
"Detected degenerated track, should never happen.");
1433 int left_boundary = 0;
1434 int right_boundary = num_markers;
1435 while (left_boundary < right_boundary) {
1436 const int median_index = (left_boundary + right_boundary) / 2;
1439 if (marker->
framenr == framenr) {
1443 if (marker->
framenr < framenr) {
1444 left_boundary = median_index + 1;
1448 right_boundary = median_index - 1;
1452 const int closest_index =
clamp_i(right_boundary, 0, num_markers - 1);
1454 return &track->
markers[closest_index];
1461 if (marker->
framenr != framenr) {
1472 if (marker->
framenr != framenr) {
1475 marker_new = *marker;
1488 const int direction)
1495 while (current_marker >= track->
markers && current_marker <= last_marker) {
1497 return current_marker;
1499 current_marker += direction;
1510 if (closest_marker ==
NULL) {
1514 *r_marker = *closest_marker;
1519 track, closest_marker, -1);
1520 if (left_marker ==
NULL) {
1525 track, closest_marker + 1, 1);
1526 if (right_marker ==
NULL) {
1530 if (left_marker == right_marker) {
1531 *r_marker = *left_marker;
1535 const float factor = (
float)(framenr - left_marker->
framenr) /
1540 for (
int i = 0; i < 4; i++) {
1553 if (framenr == left_marker->
framenr) {
1554 r_marker->
flag = left_marker->
flag;
1556 else if (framenr == right_marker->
framenr) {
1557 r_marker->
flag = right_marker->
flag;
1582 if (marker != marker_last) {
1591 float fac = (framenr - (int)framenr) / (marker_next->
framenr - marker->
framenr);
1618 float tracks_min[2], tracks_max[2];
1619 int num_selected_tracks = 0;
1628 float pattern_min[2], pattern_max[2];
1634 num_selected_tracks++;
1638 if (num_selected_tracks < 4) {
1646 strcpy(plane_track->
name,
"Plane Track");
1652 "new plane tracks array");
1653 int track_index = 0;
1663 plane_marker.
framenr = framenr;
1664 plane_marker.
flag = 0;
1669 plane_marker.
corners[1][0] = tracks_max[0];
1670 plane_marker.
corners[1][1] = tracks_min[1];
1671 plane_marker.
corners[3][0] = tracks_min[0];
1672 plane_marker.
corners[3][1] = tracks_max[1];
1691 sizeof(plane_track->
name));
1710 if (
STREQ(plane_track->name, name)) {
1737 plane_track->flag &= ~
SELECT;
1760 sizeof(*new_point_tracks) * (plane_track->
point_tracksnr - 1),
"new point tracks array");
1762 for (
int i = 0, track_index = 0; i < plane_track->
point_tracksnr; i++) {
1764 new_point_tracks[track_index++] = plane_track->
point_tracks[i];
1827 if (old_plane_marker) {
1829 *old_plane_marker = *plane_marker;
1831 return old_plane_marker;
1849 memmove(plane_track->
markers +
a + 2,
1854 plane_track->
markers[
a + 1] = *plane_marker;
1856 return &plane_track->
markers[
a + 1];
1863 while (a < plane_track->markersnr) {
1900 if (framenr < plane_track->
markers[0].framenr) {
1901 return &plane_track->
markers[0];
1909 while (a < plane_track->markersnr && plane_track->
markers[
a].
framenr <= framenr) {
1919 return &plane_track->
markers[
a - 1];
1943 if (plane_marker->
framenr != framenr) {
1947 return plane_marker;
1955 if (plane_marker->
framenr != framenr) {
1958 plane_marker_new = *plane_marker;
1959 plane_marker_new.
framenr = framenr;
1964 return plane_marker;
1969 float corners[4][2])
1973 if (marker != marker_last) {
1976 float fac = (framenr - (int)framenr) / (marker_next->
framenr - marker->
framenr);
1977 for (
int i = 0; i < 4; i++) {
1982 for (
int i = 0; i < 4; i++) {
1988 for (
int i = 0; i < 4; i++) {
2017 object->scale = 1.0f;
2018 object->keyframe1 = 1;
2019 object->keyframe2 = 30;
2041 track =
object->tracks.first;
2047 track = track->
next;
2074 sizeof(object->
name));
2086 object =
object->
next;
2106 object =
object->
next;
2115 return &tracking->
tracks;
2118 return &
object->tracks;
2128 return &
object->plane_tracks;
2138 return &
object->reconstruction;
2156 if (framenr < cameras[0].framenr) {
2176 if (cameras[
a].framenr >= framenr) {
2180 while (
a >= 0 && a < reconstruction->camnr) {
2185 if (d > 0 && cfra > framenr) {
2194 if (d < 0 && cfra < framenr) {
2203 if (cfra == framenr) {
2226 MovieTracking *tracking,
int winx,
int winy,
float *shiftx,
float *shifty)
2287 if (cameras[
a].framenr != framenr && a < reconstruction->camnr - 1) {
2288 float t = ((
float)framenr - cameras[
a].framenr) /
2304 int calibration_width,
2305 int calibration_height)
2311 tracking, calibration_width, calibration_height, &camera_intrinsics_options);
2326 int calibration_width,
2327 int calibration_height)
2332 tracking, calibration_width, calibration_height, &camera_intrinsics_options);
2352 *new_distortion = *distortion;
2355 return new_distortion;
2361 int calibration_width,
2362 int calibration_height,
2399 (
unsigned char *)ibuf->
rect,
2404 (
unsigned char *)resibuf->
rect);
2408 (
unsigned char *)ibuf->
rect,
2413 (
unsigned char *)resibuf->
rect);
2427 float inv_focal = 1.0f / distortion->
focal;
2428 double x = (co[0] - distortion->
principal[0]) * inv_focal,
2429 y = (co[1] - distortion->
principal[1] * aspy) * inv_focal;
2442 double x = co[0],
y = co[1];
2447 r_co[1] = (
float)
y * distortion->
focal + distortion->
principal[1] * aspy;
2458 MovieTracking *tracking,
int image_width,
int image_height,
const float co[2],
float r_co[2])
2465 tracking, image_width, image_height, &camera_intrinsics_options);
2481 MovieTracking *tracking,
int image_width,
int image_height,
const float co[2],
float r_co[2])
2488 tracking, image_width, image_height, &camera_intrinsics_options);
2491 double x = co[0],
y = co[1];
2496 r_co[1] = (
float)
y *
camera->focal +
camera->principal[1] * aspy;
2501 int calibration_width,
2502 int calibration_height,
2509 tracking, calibration_width, calibration_height);
2513 camera->intrinsics, tracking, ibuf, calibration_width, calibration_height, overscan,
true);
2518 int calibration_width,
2519 int calibration_height,
2526 tracking, calibration_width, calibration_height);
2530 camera->intrinsics, tracking, ibuf, calibration_width, calibration_height, overscan,
false);
2540 float pos[2], warped_pos[2];
2541 const int coord_delta = 5;
2555 delta[0] = delta[1] = -FLT_MAX;
2557 for (
int a = rect->
xmin; a <= rect->xmax + coord_delta;
a += coord_delta) {
2558 if (
a > rect->
xmax) {
2566 apply_distortion(tracking, image_width, image_height,
pos, warped_pos);
2575 apply_distortion(tracking, image_width, image_height,
pos, warped_pos);
2580 if (
a >= rect->
xmax) {
2585 for (
int a = rect->
ymin; a <= rect->ymax + coord_delta;
a += coord_delta) {
2586 if (
a > rect->
ymax) {
2594 apply_distortion(tracking, image_width, image_height,
pos, warped_pos);
2603 apply_distortion(tracking, image_width, image_height,
pos, warped_pos);
2608 if (
a >= rect->
ymax) {
2638 ImBuf *pattern_ibuf;
2639 double src_pixel_x[5], src_pixel_y[5];
2640 double warped_position_x, warped_position_y;
2643 if (num_samples_x <= 0 || num_samples_y <= 0) {
2651 frame_width, frame_height, marker, src_pixel_x, src_pixel_y);
2661 for (
int a = 0;
a < 5;
a++) {
2662 src_pixel_x[
a] += (
double)((track->
offset[0] * frame_width) -
2663 ((int)(track->
offset[0] * frame_width)));
2664 src_pixel_y[
a] += (
double)((track->
offset[1] * frame_height) -
2665 ((int)(track->
offset[1] * frame_height)));
2668 if (track->
offset[0] < 0.0f) {
2669 src_pixel_x[
a] += 1.0;
2671 if (track->
offset[1] < 0.0f) {
2672 src_pixel_y[
a] += 1.0;
2693 &warped_position_y);
2705 (
unsigned char *)pattern_ibuf->
rect,
2707 &warped_position_y);
2711 pos[0] = warped_position_x;
2712 pos[1] = warped_position_y;
2719 return pattern_ibuf;
2726 bool disable_channels)
2728 ImBuf *pattern_ibuf, *search_ibuf;
2729 float pat_min[2], pat_max[2];
2730 int num_samples_x, num_samples_y;
2734 num_samples_x = (pat_max[0] - pat_min[0]) * ibuf->
x;
2735 num_samples_y = (pat_max[1] - pat_min[1]) * ibuf->
y;
2754 pattern_ibuf =
NULL;
2757 return pattern_ibuf;
2764 bool disable_channels)
2768 float search_origin[2];
2772 x = search_origin[0];
2773 y = search_origin[1];
2783 if (
w <= 0 || h <= 0) {
2791 if (disable_channels) {
2803 const int frame_width,
2804 const int frame_height)
2806 const float a_px[2] = {
a[0] * frame_width,
a[1] * frame_height};
2807 const float b_px[2] = {
b[0] * frame_width,
b[1] * frame_height};
2819 const int frame_width = frame_ibuf->
x;
2820 const int frame_height = frame_ibuf->
y;
2824 corners[0], corners[3], frame_width, frame_height);
2826 corners[1], corners[2], frame_width, frame_height);
2830 corners[3], corners[2], frame_width, frame_height);
2832 corners[0], corners[1], frame_width, frame_height);
2835 const int num_samples_x =
max_ii(top_side_len_px, bottom_side_len_px);
2836 const int num_samples_y =
max_ii(left_side_len_px, right_side_len_px);
2843 const double src_pixel_x[4] = {corners[0][0] * frame_width,
2844 corners[1][0] * frame_width,
2845 corners[2][0] * frame_width,
2846 corners[3][0] * frame_width};
2847 const double src_pixel_y[4] = {corners[0][1] * frame_height,
2848 corners[1][1] * frame_height,
2849 corners[2][1] * frame_height,
2850 corners[3][1] * frame_height};
2853 double warped_position_x, warped_position_y;
2868 &warped_position_y);
2880 (
unsigned char *)plane_ibuf->
rect,
2882 &warped_position_y);
2892 ImBuf *ibuf,
bool disable_red,
bool disable_green,
bool disable_blue,
bool grayscale)
2894 if (!disable_red && !disable_green && !disable_blue && !grayscale) {
2901 float scale = (disable_red ? 0.0f : 0.2126f) + (disable_green ? 0.0f : 0.7152f) +
2902 (disable_blue ? 0.0f : 0.0722f);
2904 for (
int y = 0;
y < ibuf->
y;
y++) {
2905 for (
int x = 0;
x < ibuf->
x;
x++) {
2906 int pixel = ibuf->
x *
y +
x;
2910 float r = disable_red ? 0.0f : rrgbf[0];
2911 float g = disable_green ? 0.0f : rrgbf[1];
2912 float b = disable_blue ? 0.0f : rrgbf[2];
2915 float gray = (0.2126f *
r + 0.7152f *
g + 0.0722f *
b) / scale;
2917 rrgbf[0] = rrgbf[1] = rrgbf[2] = gray;
2926 char *rrgb = (
char *)ibuf->
rect + pixel * 4;
2927 char r = disable_red ? 0 : rrgb[0];
2928 char g = disable_green ? 0 : rrgb[1];
2929 char b = disable_blue ? 0 : rrgb[2];
2932 float gray = (0.2126f *
r + 0.7152f *
g + 0.0722f *
b) / scale;
2934 rrgb[0] = rrgb[1] = rrgb[2] = gray;
3009 bool inverse,
bool a_markerless,
int a_value,
bool b_markerless,
int b_value)
3011 if (a_markerless && b_markerless) {
3027 if (a_value < b_value) {
3033 if (a_value > b_value) {
3131 bool first_not_disabled_marker_framenr_set;
3146 first_not_disabled_marker_framenr_set =
false;
3147 while (i < track->markersnr) {
3154 while (i < track->markersnr) {
3157 if (marker->
framenr != prev_fra + 1) {
3164 if (!first_not_disabled_marker_framenr_set) {
3166 first_not_disabled_marker_framenr_set =
true;
3186 "tracking channel segments");
3191 while (i < track->markersnr) {
3199 while (i < track->markersnr) {
3202 if (marker->
framenr != prev_fra + 1) {
3239 if (!show_hidden && (track->flag &
TRACK_HIDDEN) != 0) {
3248 "tracking dopesheet channel");
3249 channel->
track = track;
3337 int frames, start_frame = INT_MAX, end_frame = -INT_MAX;
3338 int *per_frame_counter;
3339 int prev_coverage, last_segment_frame;
3343 start_frame =
min_ii(start_frame, track->markers[0].framenr);
3344 end_frame =
max_ii(end_frame, track->markers[track->markersnr - 1].framenr);
3347 if (start_frame > end_frame) {
3352 frames = end_frame - start_frame + 1;
3355 per_frame_counter =
MEM_callocN(
sizeof(
int) * frames,
"per frame track counter");
3359 for (
int i = 0; i < track->markersnr; i++) {
3364 per_frame_counter[marker->
framenr - start_frame]++;
3371 last_segment_frame = start_frame;
3374 if (!per_frame_counter[0]) {
3378 for (
int i = 1; i < frames; i++) {
3382 if (i == frames - 1 && !per_frame_counter[i]) {
3386 if (coverage != prev_coverage || i == frames - 1) {
3388 int end_segment_frame = i - 1 + start_frame;
3390 if (end_segment_frame == last_segment_frame) {
3391 end_segment_frame++;
3395 "tracking coverage segment");
3396 coverage_segment->
coverage = prev_coverage;
3397 coverage_segment->
start_frame = last_segment_frame;
3398 coverage_segment->
end_frame = end_segment_frame;
3402 last_segment_frame = end_segment_frame;
3405 prev_coverage = coverage;
3415 dopesheet->
ok =
false;
3425 if (dopesheet->
ok) {
3438 dopesheet->
ok =
true;
3449 while (
object !=
NULL) {
3453 object =
object->
next;
3462 if (
object !=
NULL) {
3463 return &
object->tracks;
3465 return &tracking->
tracks;
3476 while (
object !=
NULL) {
3480 object =
object->
next;
3489 if (
object !=
NULL) {
3490 return &
object->plane_tracks;
3498 size_t rna_path_len)
3503 if (
object ==
NULL) {
3504 BLI_snprintf(rna_path, rna_path_len,
"tracking.tracks[\"%s\"]", track_name_esc);
3507 char object_name_esc[
MAX_NAME * 2];
3511 "tracking.objects[\"%s\"].tracks[\"%s\"]",
3520 size_t rna_path_len)
3523 if (
object ==
NULL) {
3524 BLI_strncpy(rna_path,
"tracking.tracks", rna_path_len);
3527 char object_name_esc[
MAX_NAME * 2];
3529 BLI_snprintf(rna_path, rna_path_len,
"tracking.objects[\"%s\"]", object_name_esc);
3536 size_t rna_path_len)
3541 if (
object ==
NULL) {
3542 BLI_snprintf(rna_path, rna_path_len,
"tracking.plane_tracks[\"%s\"]", track_name_esc);
3545 char object_name_esc[
MAX_NAME * 2];
3549 "tracking.objects[\"%s\"].plane_tracks[\"%s\"]",
3559 size_t rna_path_len)
3562 if (
object ==
NULL) {
3563 BLI_strncpy(rna_path,
"tracking.plane_tracks", rna_path_len);
3566 char object_name_esc[
MAX_NAME * 2];
3568 BLI_snprintf(rna_path, rna_path_len,
"tracking.objects[\"%s\"].plane_tracks", object_name_esc);
typedef float(TangentPoint)[2]
float evaluate_fcurve(struct FCurve *fcu, float evaltime)
struct FCurve * id_data_find_fcurve(ID *id, void *data, struct StructRNA *type, const char *prop_name, int index, bool *r_driven)
@ LIB_ID_CREATE_NO_USER_REFCOUNT
void id_us_plus(struct ID *id)
float BKE_movieclip_remap_clip_to_scene_frame(const struct MovieClip *clip, float framenr)
General operations, lookup, etc. for blender objects.
void BKE_object_where_is_calc_mat4(struct Object *ob, float r_obmat[4][4])
#define TRACK_SELECTED(track)
#define BLI_assert_msg(a, msg)
void BLI_bitmap_draw_2d_poly_v2i_n(int xmin, int ymin, int xmax, int ymax, const int verts[][2], int verts_len, void(*callback)(int x, int x_end, int y, void *), void *user_data)
void BLI_ghash_clear(GHash *gh, GHashKeyFreeFP keyfreefp, GHashValFreeFP valfreefp)
void * BLI_ghash_lookup(const GHash *gh, const void *key) ATTR_WARN_UNUSED_RESULT
void BLI_ghash_insert(GHash *gh, void *key, void *val)
void BLI_ghash_free(GHash *gh, GHashKeyFreeFP keyfreefp, GHashValFreeFP valfreefp)
GHash * BLI_ghash_ptr_new(const char *info) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
BLI_INLINE bool BLI_listbase_is_empty(const struct ListBase *lb)
#define LISTBASE_FOREACH(type, var, list)
void BLI_freelinkN(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
#define LISTBASE_FOREACH_MUTABLE(type, var, list)
BLI_INLINE void BLI_listbase_clear(struct ListBase *lb)
void void BLI_freelistN(struct ListBase *listbase) ATTR_NONNULL(1)
void void BLI_listbase_sort(struct ListBase *listbase, int(*cmp)(const void *, const void *)) ATTR_NONNULL(1
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
int BLI_findindex(const struct ListBase *listbase, const void *vlink) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void * BLI_findlink(const struct ListBase *listbase, int number) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
int BLI_listbase_count(const struct ListBase *listbase) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
MINLINE float max_ff(float a, float b)
MINLINE int min_ii(int a, int b)
MINLINE float min_ff(float a, float b)
MINLINE int max_ii(int a, int b)
MINLINE int clamp_i(int value, int min, int max)
void perspective_m4(float mat[4][4], float left, float right, float bottom, float top, float nearClip, float farClip)
void mul_m4_m4m4(float R[4][4], const float A[4][4], const float B[4][4])
void blend_m4_m4m4(float out[4][4], const float dst[4][4], const float src[4][4], float srcweight)
void unit_m4(float m[4][4])
bool invert_m4_m4(float R[4][4], const float A[4][4])
void scale_m4_fl(float R[4][4], float scale)
void copy_m4_m4(float m1[4][4], const float m2[4][4])
MINLINE void mul_v2_fl(float r[2], float f)
void interp_v2_v2v2(float r[2], const float a[2], const float b[2], float t)
MINLINE void copy_v2_v2(float r[2], const float a[2])
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 negate_v2_v2(float r[2], const float a[2])
bool is_finite_v2(const float a[2]) ATTR_WARN_UNUSED_RESULT
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 len_v2v2(const float a[2], const float b[2]) ATTR_WARN_UNUSED_RESULT
int BLI_strcasecmp(const char *s1, const char *s2) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, size_t maxncpy) ATTR_NONNULL()
size_t BLI_snprintf(char *__restrict dst, size_t maxncpy, const char *__restrict format,...) ATTR_NONNULL(1
size_t size_t char size_t BLI_str_escape(char *__restrict dst, const char *__restrict src, size_t dst_maxncpy) ATTR_NONNULL()
bool BLI_uniquename(struct ListBase *list, void *vlink, const char *defname, char delim, int name_offset, size_t name_len)
#define INIT_MINMAX2(min, max)
#define CTX_DATA_(context, msgid)
#define BLT_I18NCONTEXT_ID_MOVIECLIP
typedef double(DMatrix)[4][4]
Object is a sort of wrapper for general info.
@ TRACKING_SHOW_STAB_TRACKS
@ TRACKING_FILTER_BILINEAR
@ TRACK_ALGORITHM_FLAG_USE_BRUTE
@ TRACK_PREVIEW_GRAYSCALE
@ TRACKING_COVERAGE_ACCEPTABLE
@ TRACKING_DOPE_SELECTED_ONLY
@ TRACKING_DOPE_SORT_INVERSE
@ TRACKING_DOPE_SHOW_HIDDEN
@ TRACK_MOTION_MODEL_TRANSLATION
@ TRACKING_DOPE_SORT_START
@ TRACKING_DOPE_SORT_AVERAGE_ERROR
@ TRACKING_DOPE_SORT_LONGEST
@ TRACKING_DOPE_SORT_NAME
@ TRACKING_DOPE_SORT_TOTAL
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble w _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat w _GL_VOID_RET _GL_VOID GLint GLint GLint w _GL_VOID_RET _GL_VOID GLshort GLshort GLshort w _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble y2 _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat y2 _GL_VOID_RET _GL_VOID GLint GLint GLint y2 _GL_VOID_RET _GL_VOID GLshort GLshort GLshort y2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLuint *buffer _GL_VOID_RET _GL_VOID GLdouble t _GL_VOID_RET _GL_VOID GLfloat t _GL_VOID_RET _GL_VOID GLint t _GL_VOID_RET _GL_VOID GLshort t _GL_VOID_RET _GL_VOID GLdouble GLdouble r _GL_VOID_RET _GL_VOID GLfloat GLfloat r _GL_VOID_RET _GL_VOID GLint GLint r _GL_VOID_RET _GL_VOID GLshort GLshort r _GL_VOID_RET _GL_VOID GLdouble GLdouble r
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei height
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint y
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble right
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei width
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble top
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble w _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat w _GL_VOID_RET _GL_VOID GLint GLint GLint w _GL_VOID_RET _GL_VOID GLshort GLshort GLshort w _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble y2 _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat y2 _GL_VOID_RET _GL_VOID GLint GLint GLint y2 _GL_VOID_RET _GL_VOID GLshort GLshort GLshort y2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLuint *buffer _GL_VOID_RET _GL_VOID GLdouble t _GL_VOID_RET _GL_VOID GLfloat t _GL_VOID_RET _GL_VOID GLint t _GL_VOID_RET _GL_VOID GLshort t _GL_VOID_RET _GL_VOID GLdouble t
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble bottom
struct ImBuf * IMB_allocImBuf(unsigned int x, unsigned int y, unsigned char planes, unsigned int flags)
struct ImBuf * IMB_dupImBuf(const struct ImBuf *ibuf1)
void imb_freerectImBuf(struct ImBuf *ibuf)
void IMB_rectcpy(struct ImBuf *dbuf, const struct ImBuf *sbuf, int destx, int desty, int srcx, int srcy, int width, int height)
Contains defines and structs used throughout the imbuf module.
Read Guarded memory(de)allocation.
#define MEM_reallocN(vmemh, len)
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud Retrieve the edges of an object as it appears to Cycles topology will always appear triangulated Convert a blackbody temperature to an RGB value Normal Generate a perturbed normal from an RGB normal map image Typically used for faking highly detailed surfaces Generate an OSL shader from a file or text data block Image Sample an image file as a texture Sky Generate a procedural sky texture Noise Generate fractal Perlin noise Wave Generate procedural bands or rings with noise Voronoi Generate Worley noise based on the distance to random points Typically used to generate textures such as or biological cells Brick Generate a procedural texture producing bricks Texture Retrieve multiple types of texture coordinates nTypically used as inputs for texture nodes Vector Convert a point
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud Retrieve the edges of an object as it appears to Cycles topology will always appear triangulated Convert a blackbody temperature to an RGB value Normal Generate a perturbed normal from an RGB normal map image Typically used for faking highly detailed surfaces Generate an OSL shader from a file or text data block Image Sample an image file as a texture Sky Generate a procedural sky texture Noise Generate fractal Perlin noise Wave Generate procedural bands or rings with noise Voronoi Generate Worley noise based on the distance to random points Typically used to generate textures such as or biological cells Brick Generate a procedural texture producing bricks Texture Retrieve multiple types of texture coordinates nTypically used as inputs for texture nodes Vector Convert a or normal between camera
btMatrix3x3 inverse() const
Return the inverse of the matrix.
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
SyclQueue void void size_t num_bytes void
void IMB_freeImBuf(ImBuf *UNUSED(ibuf))
const vector< Marker > & markers
void libmv_cameraIntrinsicsUndistortFloat(const libmv_CameraIntrinsics *libmv_intrinsics, const float *source_image, int width, int height, float overscan, int channels, float *destination_image)
void libmv_cameraIntrinsicsDestroy(libmv_CameraIntrinsics *libmv_intrinsics)
void libmv_cameraIntrinsicsUndistortByte(const libmv_CameraIntrinsics *libmv_intrinsics, const unsigned char *source_image, int width, int height, float overscan, int channels, unsigned char *destination_image)
void libmv_cameraIntrinsicsDistortByte(const struct libmv_CameraIntrinsics *libmv_intrinsics, const unsigned char *source_image, int width, int height, float overscan, int channels, unsigned char *destination_image)
void libmv_cameraIntrinsicsApply(const struct libmv_CameraIntrinsics *libmv_intrinsics, double x, double y, double *x1, double *y1)
libmv_CameraIntrinsics * libmv_cameraIntrinsicsNew(const libmv_CameraIntrinsicsOptions *libmv_camera_intrinsics_options)
void libmv_cameraIntrinsicsDistortFloat(const libmv_CameraIntrinsics *libmv_intrinsics, float *source_image, int width, int height, float overscan, int channels, float *destination_image)
void libmv_cameraIntrinsicsSetThreads(libmv_CameraIntrinsics *libmv_intrinsics, int threads)
void libmv_cameraIntrinsicsUpdate(const libmv_CameraIntrinsicsOptions *libmv_camera_intrinsics_options, libmv_CameraIntrinsics *libmv_intrinsics)
void libmv_cameraIntrinsicsInvert(const struct libmv_CameraIntrinsics *libmv_intrinsics, double x, double y, double *x1, double *y1)
libmv_CameraIntrinsics * libmv_cameraIntrinsicsCopy(const libmv_CameraIntrinsics *libmv_intrinsics)
struct libmv_CameraIntrinsics libmv_CameraIntrinsics
void libmv_samplePlanarPatchFloat(const float *image, int width, int height, int channels, const double *xs, const double *ys, int num_samples_x, int num_samples_y, const float *mask, float *patch, double *warped_position_x, double *warped_position_y)
void libmv_samplePlanarPatchByte(const unsigned char *image, int width, int height, int channels, const double *xs, const double *ys, int num_samples_x, int num_samples_y, const float *mask, unsigned char *patch, double *warped_position_x, double *warped_position_y)
const ProjectiveReconstruction & reconstruction
void *(* MEM_malloc_arrayN)(size_t len, size_t size, const char *str)
void(* MEM_freeN)(void *vmemh)
void *(* MEM_dupallocN)(const void *vmemh)
void *(* MEM_calloc_arrayN)(size_t len, size_t size, const char *str)
void *(* MEM_callocN)(size_t len, const char *str)
void *(* MEM_mallocN)(size_t len, const char *str)
ccl_device_inline float4 mask(const int4 &mask, const float4 &a)
Segment< FEdge *, Vec3r > segment
static void area(int d1, int d2, int e1, int e2, float weights[2])
ListBase threads
list of all thread for every CPUDevice in cpudevices a thread exists.
static const pxr::TfToken out("out", pxr::TfToken::Immortal)
static const pxr::TfToken b("b", pxr::TfToken::Immortal)
static const pxr::TfToken g("g", pxr::TfToken::Immortal)
struct ColorSpace * rect_colorspace
struct ColorSpace * float_colorspace
struct libmv_CameraIntrinsics * intrinsics
int last_not_disabled_marker_framenr
struct MovieTrackingDopesheetChannel * next
int first_not_disabled_marker_framenr
MovieTrackingTrack * track
ListBase coverage_segments
float pattern_corners[4][2]
MovieTrackingReconstruction reconstruction
struct MovieTrackingObject * next
struct MovieTrackingPlaneTrack * next
MovieTrackingTrack ** point_tracks
MovieTrackingPlaneMarker * markers
struct MovieReconstructedCamera * cameras
short default_frames_limit
int refine_camera_intrinsics
short default_motion_model
float default_minimum_correlation
short default_algorithm_flag
short default_pattern_size
short default_pattern_match
short default_search_size
float minimum_correlation
MovieTrackingMarker * markers
struct MovieTrackingTrack * next
struct MovieTrackingTrack * prev
MovieTrackingReconstruction reconstruction
MovieTrackingPlaneTrack * act_plane_track
MovieTrackingDopesheet dopesheet
MovieTrackingStats * stats
MovieTrackingTrack * act_track
MovieTrackingStabilization stabilization
MovieTrackingCamera camera
MovieTrackingSettings settings
int BKE_tracking_count_selected_tracks_in_list(const ListBase *tracks_list)
static void tracking_dopesheet_calc_coverage(MovieTracking *tracking)
static void tracking_tracks_free(ListBase *tracks)
void BKE_tracking_distortion_undistort_v2(MovieDistortion *distortion, const float co[2], float r_co[2])
MovieTrackingReconstruction * BKE_tracking_get_active_reconstruction(MovieTracking *tracking)
MovieTrackingObject * BKE_tracking_object_get_named(MovieTracking *tracking, const char *name)
float BKE_tracking_track_get_weight_for_marker(MovieClip *clip, MovieTrackingTrack *track, MovieTrackingMarker *marker)
static void tracking_object_free(MovieTrackingObject *object)
ListBase * BKE_tracking_object_get_tracks(MovieTracking *tracking, MovieTrackingObject *object)
void BKE_tracking_plane_marker_get_subframe_corners(MovieTrackingPlaneTrack *plane_track, float framenr, float corners[4][2])
static const MovieTrackingMarker * get_usable_marker_for_interpolation(struct MovieTrackingTrack *track, const MovieTrackingMarker *anchor_marker, const int direction)
void BKE_tracking_track_deselect(MovieTrackingTrack *track, int area)
ImBuf * BKE_tracking_distortion_exec(MovieDistortion *distortion, MovieTracking *tracking, ImBuf *ibuf, int calibration_width, int calibration_height, float overscan, bool undistort)
static void tracking_plane_tracks_free(ListBase *plane_tracks)
void BKE_tracking_distortion_free(MovieDistortion *distortion)
static void reconstructed_camera_scale_set(MovieTrackingObject *object, float mat[4][4])
int BKE_tracking_count_selected_tracks_in_active_object(MovieTracking *tracking)
MovieTrackingTrack * BKE_tracking_track_get_indexed(MovieTracking *tracking, int tracknr, ListBase **r_tracksbase)
void BKE_tracking_track_first_last_frame_get(const MovieTrackingTrack *track, int *r_first_frame, int *r_last_frame)
MovieTrackingTrack * BKE_tracking_track_get_active(MovieTracking *tracking)
ImBuf * BKE_tracking_get_pattern_imbuf(ImBuf *ibuf, MovieTrackingTrack *track, MovieTrackingMarker *marker, bool anchored, bool disable_channels)
void BKE_tracking_settings_init(MovieTracking *tracking)
void BKE_tracking_marker_pattern_minmax(const MovieTrackingMarker *marker, float min[2], float max[2])
void BKE_tracking_marker_clamp_pattern_position(MovieTrackingMarker *marker)
void BKE_tracking_track_select(ListBase *tracksbase, MovieTrackingTrack *track, int area, bool extend)
void BKE_tracking_camera_to_blender(MovieTracking *tracking, Scene *scene, Camera *camera, int width, int height)
void BKE_tracking_disable_channels(ImBuf *ibuf, bool disable_red, bool disable_green, bool disable_blue, bool grayscale)
void BKE_tracking_get_projection_matrix(MovieTracking *tracking, MovieTrackingObject *object, int framenr, int winx, int winy, float mat[4][4])
static void tracking_plane_tracks_copy(ListBase *plane_tracks_list_dst, const ListBase *plane_tracks_list_src, GHash *tracks_mapping, const int flag)
static int channels_alpha_inverse_sort(const void *a, const void *b)
ListBase * BKE_tracking_find_tracks_list_for_plane_track(MovieTracking *tracking, const MovieTrackingPlaneTrack *plane_track)
static void tracking_objects_free(ListBase *objects)
static int channels_average_error_sort(const void *a, const void *b)
MovieTrackingObject * BKE_tracking_object_get_active(MovieTracking *tracking)
MovieTrackingPlaneMarker * BKE_tracking_plane_marker_get_exact(MovieTrackingPlaneTrack *plane_track, int framenr)
void BKE_tracking_track_flag_set(MovieTrackingTrack *track, int area, int flag)
static struct @103 tracking_clipboard
ListBase * BKE_tracking_find_tracks_list_for_track(MovieTracking *tracking, const MovieTrackingTrack *track)
MovieTrackingPlaneTrack * BKE_tracking_plane_track_get_active(struct MovieTracking *tracking)
static void multiply_marker(MovieTrackingMarker *marker, const float multiplier)
void BKE_tracking_track_path_clear(MovieTrackingTrack *track, const int ref_frame, const eTrackClearAction action)
static void disable_imbuf_channels(ImBuf *ibuf, MovieTrackingTrack *track, bool grayscale)
static void tracking_dopesheet_channels_sort(MovieTracking *tracking, int sort_method, bool inverse)
MovieTrackingPlaneMarker * BKE_tracking_plane_marker_get(MovieTrackingPlaneTrack *plane_track, int framenr)
static void path_clear_all(MovieTrackingTrack *track, const int ref_frame)
static int channels_end_inverse_sort(const void *a, const void *b)
static int channels_total_track_sort(const void *a, const void *b)
void BKE_tracking_get_rna_path_for_track(const struct MovieTracking *tracking, const struct MovieTrackingTrack *track, char *rna_path, size_t rna_path_len)
static void path_clear_remained(MovieTrackingTrack *track, const int ref_frame)
MovieTrackingPlaneMarker * BKE_tracking_plane_marker_ensure(MovieTrackingPlaneTrack *plane_track, int framenr)
bool BKE_tracking_plane_track_has_point_track(MovieTrackingPlaneTrack *plane_track, MovieTrackingTrack *track)
static void path_clear_up_to(MovieTrackingTrack *track, const int ref_frame)
static void tracking_average_markers(MovieTrackingTrack *dst_track, MovieTrackingTrack **src_tracks, const int num_src_tracks)
static void accumulate_marker(MovieTrackingMarker *dst_marker, const MovieTrackingMarker *src_marker)
void BKE_tracking_marker_get_subframe_position(MovieTrackingTrack *track, float framenr, float pos[2])
static int channels_start_sort(const void *a, const void *b)
void BKE_tracking_track_free(MovieTrackingTrack *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)
static void tracking_tracks_copy(ListBase *tracks_dst, const ListBase *tracks_src, GHash *tracks_mapping, const int flag)
void BKE_tracking_free(MovieTracking *tracking)
void BKE_tracking_track_unique_name(ListBase *tracksbase, MovieTrackingTrack *track)
void BKE_tracking_clipboard_free(void)
void BKE_tracking_plane_track_unique_name(ListBase *plane_tracks_base, MovieTrackingPlaneTrack *plane_track)
struct MovieDistortion MovieDistortion
float * BKE_tracking_track_get_mask(int frame_width, int frame_height, MovieTrackingTrack *track, MovieTrackingMarker *marker)
bool BKE_tracking_track_has_enabled_marker_at_frame(MovieTrackingTrack *track, int framenr)
void BKE_tracking_undistort_v2(MovieTracking *tracking, int image_width, int image_height, const float co[2], float r_co[2])
void BKE_tracking_plane_tracks_replace_point_track(MovieTracking *tracking, MovieTrackingTrack *old_track, MovieTrackingTrack *new_track)
static void tracking_dopesheet_channels_calc(MovieTracking *tracking)
ImBuf * BKE_tracking_get_search_imbuf(ImBuf *ibuf, MovieTrackingTrack *track, MovieTrackingMarker *marker, bool anchored, bool disable_channels)
void BKE_tracking_tracks_average(MovieTrackingTrack *dst_track, MovieTrackingTrack **src_tracks, const int num_src_tracks)
bool BKE_tracking_object_delete(MovieTracking *tracking, MovieTrackingObject *object)
static bGPDlayer * track_mask_gpencil_layer_get(MovieTrackingTrack *track)
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)
MovieTrackingObject * BKE_tracking_object_get_camera(MovieTracking *tracking)
ImBuf * BKE_tracking_undistort_frame(MovieTracking *tracking, ImBuf *ibuf, int calibration_width, int calibration_height, float overscan)
bool BKE_tracking_marker_get_interpolated(struct MovieTrackingTrack *track, const int framenr, struct MovieTrackingMarker *r_marker)
MovieTrackingPlaneTrack * BKE_tracking_plane_track_add(MovieTracking *tracking, ListBase *plane_tracks_base, ListBase *tracks, int framenr)
MovieTrackingObject * BKE_tracking_object_add(MovieTracking *tracking, const char *name)
void BKE_tracking_plane_track_replace_point_track(MovieTrackingPlaneTrack *plane_track, MovieTrackingTrack *old_track, MovieTrackingTrack *new_track)
static void tracking_dopesheet_free(MovieTrackingDopesheet *dopesheet)
void BKE_tracking_distort_v2(MovieTracking *tracking, int image_width, int image_height, const float co[2], float r_co[2])
MovieTrackingPlaneTrack * BKE_tracking_plane_track_get_named(MovieTracking *tracking, MovieTrackingObject *object, const char *name)
static int channels_end_sort(const void *a, const void *b)
MovieTrackingTrack * BKE_tracking_track_get_named(MovieTracking *tracking, MovieTrackingObject *object, const char *name)
MovieTrackingMarker * BKE_tracking_marker_get_exact(MovieTrackingTrack *track, int framenr)
static void tracking_objects_copy(ListBase *objects_dst, const ListBase *objects_src, GHash *tracks_mapping, const int flag)
void BKE_tracking_marker_clamp_search_size(MovieTrackingMarker *marker)
void BKE_tracking_tracks_join(MovieTracking *tracking, MovieTrackingTrack *dst_track, MovieTrackingTrack *src_track)
MovieTrackingTrack ** BKE_tracking_selected_tracks_in_active_object(MovieTracking *tracking, int *r_num_tracks)
static int channels_longest_segment_sort(const void *a, const void *b)
struct TrackMaskSetPixelData TrackMaskSetPixelData
static void tracking_reconstruction_free(MovieTrackingReconstruction *reconstruction)
void BKE_tracking_get_camera_object_matrix(Object *camera_object, float mat[4][4])
static void tracking_dopesheet_channels_segments_calc(MovieTrackingDopesheetChannel *channel)
MovieTrackingMarker * BKE_tracking_marker_ensure(MovieTrackingTrack *track, int framenr)
static void tracking_reconstruction_copy(MovieTrackingReconstruction *reconstruction_dst, const MovieTrackingReconstruction *reconstruction_src, const int UNUSED(flag))
void BKE_tracking_camera_shift_get(MovieTracking *tracking, int winx, int winy, float *shiftx, float *shifty)
static void tracking_average_tracks(MovieTrackingTrack *dst_track, MovieTrackingTrack **src_tracks, const int num_src_tracks)
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)
ListBase * BKE_tracking_get_active_tracks(MovieTracking *tracking)
bool BKE_tracking_plane_track_remove_point_track(MovieTrackingPlaneTrack *plane_track, MovieTrackingTrack *track)
static int channels_alpha_sort(const void *a, const void *b)
void BKE_tracking_object_unique_name(MovieTracking *tracking, MovieTrackingObject *object)
ImBuf * BKE_tracking_get_plane_imbuf(const ImBuf *frame_ibuf, const MovieTrackingPlaneMarker *plane_marker)
ImBuf * BKE_tracking_distort_frame(MovieTracking *tracking, ImBuf *ibuf, int calibration_width, int calibration_height, float overscan)
void BKE_tracking_distortion_distort_v2(MovieDistortion *distortion, const float co[2], float r_co[2])
ListBase * BKE_tracking_object_get_plane_tracks(MovieTracking *tracking, MovieTrackingObject *object)
static void track_mask_set_pixel_cb(int x, int x_end, int y, void *user_data)
MovieTrackingTrack * BKE_tracking_track_duplicate(MovieTrackingTrack *track)
bool BKE_tracking_track_has_marker_at_frame(MovieTrackingTrack *track, int framenr)
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_track_flag_clear(MovieTrackingTrack *track, int area, int flag)
void BKE_tracking_tracks_deselect_all(ListBase *tracksbase)
static int compare_firstlast_putting_undefined_first(bool inverse, bool a_markerless, int a_value, bool b_markerless, int b_value)
static void tracking_object_copy(MovieTrackingObject *object_dst, const MovieTrackingObject *object_src, GHash *tracks_mapping, const int flag)
MovieTrackingObject * BKE_tracking_find_object_for_plane_track(const MovieTracking *tracking, const MovieTrackingPlaneTrack *plane_track)
void BKE_tracking_distortion_update(MovieDistortion *distortion, MovieTracking *tracking, int calibration_width, int calibration_height)
MovieTrackingReconstruction * BKE_tracking_object_get_reconstruction(MovieTracking *tracking, MovieTrackingObject *object)
MovieReconstructedCamera * BKE_tracking_camera_get_reconstructed(MovieTracking *tracking, MovieTrackingObject *object, int framenr)
MovieDistortion * BKE_tracking_distortion_new(MovieTracking *tracking, int calibration_width, int calibration_height)
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)
bool BKE_tracking_clipboard_has_tracks(void)
MovieTrackingMarker * BKE_tracking_marker_insert(MovieTrackingTrack *track, MovieTrackingMarker *marker)
static int reconstructed_camera_index_get(MovieTrackingReconstruction *reconstruction, int framenr, bool nearest)
static int coverage_from_count(int count)
void BKE_tracking_distortion_set_threads(MovieDistortion *distortion, int threads)
void BKE_tracking_marker_delete(MovieTrackingTrack *track, int framenr)
void BKE_tracking_marker_clamp_search_position(MovieTrackingMarker *marker)
static int channels_start_inverse_sort(const void *a, const void *b)
void BKE_tracking_camera_get_reconstructed_interpolate(MovieTracking *tracking, MovieTrackingObject *object, float framenr, float mat[4][4])
MovieTrackingObject * BKE_tracking_find_object_for_track(const MovieTracking *tracking, const MovieTrackingTrack *track)
static int channels_longest_segment_inverse_sort(const void *a, const void *b)
MovieDistortion * BKE_tracking_distortion_copy(MovieDistortion *distortion)
MovieTrackingTrack * BKE_tracking_track_add_empty(MovieTracking *tracking, ListBase *tracks_list)
ListBase * BKE_tracking_get_active_plane_tracks(MovieTracking *tracking)
void BKE_tracking_max_distortion_delta_across_bound(MovieTracking *tracking, int image_width, int image_height, rcti *rect, bool undistort, float delta[2])
void BKE_tracking_tracks_first_last_frame_minmax(MovieTrackingTrack **tracks, const int num_tracks, int *r_first_frame, int *r_last_frame)
MovieTrackingMarker * BKE_tracking_marker_get(MovieTrackingTrack *track, int framenr)
static void tracking_stabilization_copy(MovieTrackingStabilization *stabilization_dst, const MovieTrackingStabilization *stabilization_src, const int UNUSED(flag))
void BKE_tracking_plane_marker_delete(MovieTrackingPlaneTrack *plane_track, int framenr)
void BKE_tracking_copy(MovieTracking *tracking_dst, const MovieTracking *tracking_src, const int flag)
void BKE_tracking_dopesheet_update(MovieTracking *tracking)
void BKE_tracking_clipboard_paste_tracks(MovieTracking *tracking, MovieTrackingObject *object)
void BKE_tracking_plane_tracks_remove_point_track(MovieTracking *tracking, MovieTrackingTrack *track)
void BKE_tracking_plane_tracks_deselect_all(ListBase *plane_tracks_base)
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])
void BKE_tracking_clipboard_copy_tracks(MovieTracking *tracking, MovieTrackingObject *object)
void BKE_tracking_plane_track_free(MovieTrackingPlaneTrack *plane_track)
static int channels_average_error_inverse_sort(const void *a, const void *b)
MovieTrackingTrack * BKE_tracking_track_add(MovieTracking *tracking, ListBase *tracksbase, float x, float y, int framenr, int width, int height)
MovieTrackingPlaneMarker * BKE_tracking_plane_marker_insert(MovieTrackingPlaneTrack *plane_track, MovieTrackingPlaneMarker *plane_marker)
void BKE_tracking_dopesheet_tag_update(MovieTracking *tracking)
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)
static int channels_total_track_inverse_sort(const void *a, const void *b)
void tracking_marker_insert_disabled(MovieTrackingTrack *track, const MovieTrackingMarker *ref_marker, bool before, bool overwrite)
void tracking_cameraIntrinscisOptionsFromTracking(MovieTracking *tracking, int calibration_width, int calibration_height, libmv_CameraIntrinsicsOptions *camera_intrinsics_options)
void tracking_get_marker_coords_for_tracking(int frame_width, int frame_height, const MovieTrackingMarker *marker, double search_pixel_x[5], double search_pixel_y[5])
void tracking_get_search_origin_frame_pixel(int frame_width, int frame_height, const MovieTrackingMarker *marker, float frame_pixel[2])