150 channel = channel->
next;
185 GHash *tracks_mapping,
193 if (track_src->markers) {
208 const ListBase *plane_tracks_list_src,
209 GHash *tracks_mapping,
216 if (plane_track_src->markers) {
223 plane_track_src->point_tracks[i]);
228 BLI_addtail(plane_tracks_list_dst, plane_track_dst);
237 *reconstruction_dst = *reconstruction_src;
238 if (reconstruction_src->
cameras) {
248 *stabilization_dst = *stabilization_src;
254 GHash *tracks_mapping,
257 *object_dst = *object_src;
267 GHash *tracks_mapping,
286 *tracking_dst = *tracking_src;
300 !
ELEM(
NULL, plane_track_src, plane_track_dst);
301 plane_track_src = plane_track_src->
next, plane_track_dst = plane_track_dst->
next) {
370 return &
object->tracks;
382 return &
object->plane_tracks;
432 float shiftx, shifty, winside = (
float)
min_ii(winx, winy);
446 pixsize = clipsta / viewfac;
448 left = -0.5f * (
float)winx + shiftx * winside;
449 bottom = -0.5f * (ycor) * (
float)winy + shifty * winside;
450 right = 0.5f * (
float)winx + shiftx * winside;
451 top = 0.5f * (ycor) * (
float)winy + shifty * winside;
481 next_track = track->
next;
553 strcpy(track->
name,
"Track");
596 const float pattern_size[2] = {half_pattern_px /
width, half_pattern_px /
height};
597 const float search_size[2] = {half_search_px /
width, half_search_px /
height};
599 memset(&marker, 0,
sizeof(marker));
653 sizeof(track->
name));
675 const int last_marker_index = track->
markersnr - 1;
684 const int num_tracks,
688 *r_first_frame = INT_MAX;
689 *r_last_frame = INT_MIN;
690 for (
int i = 0; i < num_tracks; ++i) {
692 int track_first_frame, track_last_frame;
694 *r_first_frame =
min_ii(*r_first_frame, track_first_frame);
695 *r_last_frame =
max_ii(*r_last_frame, track_last_frame);
701 int num_selected_tracks = 0;
704 ++num_selected_tracks;
707 return num_selected_tracks;
722 if (tracks_list ==
NULL) {
728 if (num_selected_tracks == 0) {
734 int source_track_index = 0;
739 source_tracks[source_track_index] = track;
740 ++source_track_index;
743 *r_num_tracks = num_selected_tracks;
745 return source_tracks;
874 marker_new = *marker;
891 int i = 0,
a = 0, b = 0, tot;
928 marker_b = &dst_track->
markers[b];
948 for (
int j = 0; j <
len; j++) {
952 fac = 1.0f / (
len - 1) * j;
960 marker_b = &dst_track->
markers[b];
1040 const int num_src_tracks)
1043 int first_frame, last_frame;
1045 src_tracks, num_src_tracks, &first_frame, &last_frame);
1046 if (last_frame < first_frame) {
1049 const int num_frames = last_frame - first_frame + 1;
1054 int *counters =
MEM_calloc_arrayN(num_frames,
sizeof(
int),
"tracks accumulator counters");
1055 for (
int frame = first_frame; frame <= last_frame; ++frame) {
1056 const int frame_index = frame - first_frame;
1057 accumulator[frame_index].
framenr = frame;
1062 for (
int track_index = 0; track_index < num_src_tracks; ++track_index) {
1064 for (
int frame = first_frame; frame <= last_frame; ++frame) {
1069 const int frame_index = frame - first_frame;
1071 ++counters[frame_index];
1076 for (
int frame = first_frame; frame <= last_frame; ++frame) {
1078 const int frame_index = frame - first_frame;
1079 if (!counters[frame_index]) {
1082 const float multiplier = 1.0f / (
float)counters[frame_index];
1097 const int num_src_tracks)
1101 for (
int track_index = 0; track_index < num_src_tracks; track_index++) {
1109 const int num_src_tracks)
1111 if (num_src_tracks == 0) {
1131 track = track->
next;
1151 if (cur == tracknr) {
1152 *r_tracksbase = tracksbase;
1159 track = track->
next;
1162 object =
object->
next;
1165 *r_tracksbase =
NULL;
1209 frame = frame->
next;
1217 layer = layer->
next;
1232 size_t index = (size_t)
y *
data->mask_width +
x;
1233 size_t index_end = (
size_t)
y *
data->mask_width + x_end;
1235 data->mask[index] = 1.0f;
1236 }
while (++index != index_end);
1241 const float region_min[2],
1251 data.mask_width = mask_width;
1252 data.mask_height = mask_height;
1260 int *mask_points, *point;
1262 "track mask rasterization points");
1263 for (
int i = 0; i < stroke->
totpoints; i++, point += 2) {
1264 point[0] = stroke_points[i].
x * frame_width - region_min[0];
1265 point[1] = stroke_points[i].
y * frame_height - region_min[1];
1272 (
const int(*)[2])mask_points,
1278 stroke = stroke->
next;
1280 frame = frame->
next;
1287 const float region_min[2],
1288 const float region_max[2],
1293 if (layer !=
NULL) {
1294 const int mask_width = region_max[0] - region_min[0];
1295 const int mask_height = region_max[1] - region_min[1];
1296 mask =
MEM_callocN(mask_width * mask_height *
sizeof(
float),
"track mask");
1298 frame_width, frame_height, region_min, layer,
mask, mask_width, mask_height);
1309 const float region_min[2] = {
1313 const float region_max[2] = {
1318 frame_width, frame_height, region_min, region_max, track);
1326 float weight = track->
weight;
1331 if (weight_fcurve) {
1394 *old_marker = *marker;
1432 while (a < track->markersnr) {
1457 float pat_min[2], pat_max[2];
1462 for (
int a = 0;
a < 2;
a++) {
1473 for (
int a = 0;
a < 2;
a++) {
1476 for (
int b = 0; b < 4; b++) {
1481 for (
int b = 0; b < 4; b++) {
1488 for (
int a = 0;
a < 2;
a++) {
1499 for (
int a = 0;
a < 2;
a++) {
1525 const int num_markers = track->
markersnr;
1527 if (num_markers == 0) {
1528 BLI_assert(!
"Detected degenerated track, should never happen.");
1532 int left_boundary = 0;
1533 int right_boundary = num_markers;
1534 while (left_boundary < right_boundary) {
1535 const int median_index = (left_boundary + right_boundary) / 2;
1538 if (marker->
framenr == framenr) {
1542 if (marker->
framenr < framenr) {
1543 left_boundary = median_index + 1;
1547 right_boundary = median_index - 1;
1551 const int closest_index =
clamp_i(right_boundary, 0, num_markers - 1);
1553 return &track->
markers[closest_index];
1560 if (marker->
framenr != framenr) {
1571 if (marker->
framenr != framenr) {
1574 marker_new = *marker;
1587 const int direction)
1589 BLI_assert(direction == -1 || direction == 1);
1594 while (current_marker >= track->
markers && current_marker <= last_marker) {
1596 return current_marker;
1598 current_marker += direction;
1609 if (closest_marker ==
NULL) {
1613 *r_marker = *closest_marker;
1618 track, closest_marker, -1);
1619 if (left_marker ==
NULL) {
1624 track, closest_marker + 1, 1);
1625 if (right_marker ==
NULL) {
1629 if (left_marker == right_marker) {
1630 *r_marker = *left_marker;
1634 const float factor = (
float)(framenr - left_marker->
framenr) /
1639 for (
int i = 0; i < 4; i++) {
1652 if (framenr == left_marker->
framenr) {
1653 r_marker->
flag = left_marker->
flag;
1655 else if (framenr == right_marker->
framenr) {
1656 r_marker->
flag = right_marker->
flag;
1681 if (marker != marker_last) {
1690 float fac = (framenr - (int)framenr) / (marker_next->
framenr - marker->
framenr);
1716 float tracks_min[2], tracks_max[2];
1717 int num_selected_tracks = 0;
1726 float pattern_min[2], pattern_max[2];
1732 num_selected_tracks++;
1736 if (num_selected_tracks < 4) {
1744 strcpy(plane_track->
name,
"Plane Track");
1750 "new plane tracks array");
1751 int track_index = 0;
1761 plane_marker.
framenr = framenr;
1762 plane_marker.
flag = 0;
1767 plane_marker.
corners[1][0] = tracks_max[0];
1768 plane_marker.
corners[1][1] = tracks_min[1];
1769 plane_marker.
corners[3][0] = tracks_min[0];
1770 plane_marker.
corners[3][1] = tracks_max[1];
1789 sizeof(plane_track->
name));
1813 if (
STREQ(plane_track->name, name)) {
1840 plane_track->flag &= ~
SELECT;
1863 sizeof(*new_point_tracks) * (plane_track->
point_tracksnr - 1),
"new point tracks array");
1865 for (
int i = 0, track_index = 0; i < plane_track->
point_tracksnr; i++) {
1867 new_point_tracks[track_index++] = plane_track->
point_tracks[i];
1928 if (old_plane_marker) {
1930 *old_plane_marker = *plane_marker;
1932 return old_plane_marker;
1950 memmove(plane_track->
markers +
a + 2,
1955 plane_track->
markers[
a + 1] = *plane_marker;
1957 return &plane_track->
markers[
a + 1];
1964 while (a < plane_track->markersnr) {
2004 if (framenr < plane_track->
markers[0].framenr) {
2005 return &plane_track->
markers[0];
2013 while (a < plane_track->markersnr && plane_track->
markers[
a].
framenr <= framenr) {
2023 return &plane_track->
markers[
a - 1];
2050 if (plane_marker->
framenr != framenr) {
2054 return plane_marker;
2063 if (plane_marker->
framenr != framenr) {
2066 plane_marker_new = *plane_marker;
2067 plane_marker_new.
framenr = framenr;
2072 return plane_marker;
2077 float corners[4][2])
2081 if (marker != marker_last) {
2084 float fac = (framenr - (int)framenr) / (marker_next->
framenr - marker->
framenr);
2085 for (
int i = 0; i < 4; i++) {
2090 for (
int i = 0; i < 4; i++) {
2096 for (
int i = 0; i < 4; i++) {
2123 object->scale = 1.0f;
2124 object->keyframe1 = 1;
2125 object->keyframe2 = 30;
2147 track =
object->tracks.first;
2153 track = track->
next;
2180 sizeof(object->
name));
2192 object =
object->
next;
2212 object =
object->
next;
2221 return &tracking->
tracks;
2224 return &
object->tracks;
2234 return &
object->plane_tracks;
2244 return &
object->reconstruction;
2260 if (framenr < cameras[0].framenr) {
2280 if (cameras[
a].framenr >= framenr) {
2284 while (
a >= 0 && a < reconstruction->camnr) {
2289 if (d > 0 && cfra > framenr) {
2298 if (d < 0 && cfra < framenr) {
2307 if (cfra == framenr) {
2331 MovieTracking *tracking,
int winx,
int winy,
float *shiftx,
float *shifty)
2392 if (cameras[
a].framenr != framenr && a < reconstruction->camnr - 1) {
2393 float t = ((
float)framenr - cameras[
a].framenr) /
2407 int calibration_width,
2408 int calibration_height)
2414 tracking, calibration_width, calibration_height, &camera_intrinsics_options);
2429 int calibration_width,
2430 int calibration_height)
2435 tracking, calibration_width, calibration_height, &camera_intrinsics_options);
2455 *new_distortion = *distortion;
2458 return new_distortion;
2464 int calibration_width,
2465 int calibration_height,
2502 (
unsigned char *)ibuf->
rect,
2507 (
unsigned char *)resibuf->
rect);
2511 (
unsigned char *)ibuf->
rect,
2516 (
unsigned char *)resibuf->
rect);
2530 float inv_focal = 1.0f / distortion->
focal;
2531 double x = (co[0] - distortion->
principal[0]) * inv_focal,
2532 y = (co[1] - distortion->
principal[1] * aspy) * inv_focal;
2545 double x = co[0],
y = co[1];
2550 r_co[1] = (
float)
y * distortion->
focal + distortion->
principal[1] * aspy;
2561 MovieTracking *tracking,
int image_width,
int image_height,
const float co[2],
float r_co[2])
2568 tracking, image_width, image_height, &camera_intrinsics_options);
2584 MovieTracking *tracking,
int image_width,
int image_height,
const float co[2],
float r_co[2])
2591 tracking, image_width, image_height, &camera_intrinsics_options);
2594 double x = co[0],
y = co[1];
2604 int calibration_width,
2605 int calibration_height,
2612 tracking, calibration_width, calibration_height);
2616 camera->
intrinsics, tracking, ibuf, calibration_width, calibration_height, overscan,
true);
2621 int calibration_width,
2622 int calibration_height,
2629 tracking, calibration_width, calibration_height);
2633 camera->
intrinsics, tracking, ibuf, calibration_width, calibration_height, overscan,
false);
2643 float pos[2], warped_pos[2];
2644 const int coord_delta = 5;
2658 delta[0] = delta[1] = -FLT_MAX;
2660 for (
int a = rect->
xmin; a <= rect->xmax + coord_delta;
a += coord_delta) {
2661 if (
a > rect->
xmax) {
2669 apply_distortion(tracking, image_width, image_height,
pos, warped_pos);
2678 apply_distortion(tracking, image_width, image_height,
pos, warped_pos);
2683 if (
a >= rect->
xmax) {
2688 for (
int a = rect->
ymin; a <= rect->ymax + coord_delta;
a += coord_delta) {
2689 if (
a > rect->
ymax) {
2697 apply_distortion(tracking, image_width, image_height,
pos, warped_pos);
2706 apply_distortion(tracking, image_width, image_height,
pos, warped_pos);
2711 if (
a >= rect->
ymax) {
2739 ImBuf *pattern_ibuf;
2740 double src_pixel_x[5], src_pixel_y[5];
2741 double warped_position_x, warped_position_y;
2744 if (num_samples_x <= 0 || num_samples_y <= 0) {
2752 frame_width, frame_height, marker, src_pixel_x, src_pixel_y);
2762 for (
int a = 0;
a < 5;
a++) {
2763 src_pixel_x[
a] += (
double)((track->
offset[0] * frame_width) -
2764 ((int)(track->
offset[0] * frame_width)));
2765 src_pixel_y[
a] += (
double)((track->
offset[1] * frame_height) -
2766 ((int)(track->
offset[1] * frame_height)));
2769 if (track->
offset[0] < 0.0f) {
2770 src_pixel_x[
a] += 1.0;
2772 if (track->
offset[1] < 0.0f) {
2773 src_pixel_y[
a] += 1.0;
2794 &warped_position_y);
2806 (
unsigned char *)pattern_ibuf->
rect,
2808 &warped_position_y);
2812 pos[0] = warped_position_x;
2813 pos[1] = warped_position_y;
2820 return pattern_ibuf;
2827 bool disable_channels)
2829 ImBuf *pattern_ibuf, *search_ibuf;
2830 float pat_min[2], pat_max[2];
2831 int num_samples_x, num_samples_y;
2835 num_samples_x = (pat_max[0] - pat_min[0]) * ibuf->
x;
2836 num_samples_y = (pat_max[1] - pat_min[1]) * ibuf->
y;
2855 pattern_ibuf =
NULL;
2858 return pattern_ibuf;
2865 bool disable_channels)
2869 float search_origin[2];
2873 x = search_origin[0];
2874 y = search_origin[1];
2884 if (
w <= 0 || h <= 0) {
2892 if (disable_channels) {
2907 ImBuf *ibuf,
bool disable_red,
bool disable_green,
bool disable_blue,
bool grayscale)
2909 if (!disable_red && !disable_green && !disable_blue && !grayscale) {
2916 float scale = (disable_red ? 0.0f : 0.2126f) + (disable_green ? 0.0f : 0.7152f) +
2917 (disable_blue ? 0.0f : 0.0722f);
2919 for (
int y = 0;
y < ibuf->
y;
y++) {
2920 for (
int x = 0;
x < ibuf->
x;
x++) {
2921 int pixel = ibuf->
x *
y +
x;
2925 float r = disable_red ? 0.0f : rrgbf[0];
2926 float g = disable_green ? 0.0f : rrgbf[1];
2927 float b = disable_blue ? 0.0f : rrgbf[2];
2930 float gray = (0.2126f *
r + 0.7152f * g + 0.0722f * b) / scale;
2932 rrgbf[0] = rrgbf[1] = rrgbf[2] = gray;
2941 char *rrgb = (
char *)ibuf->
rect + pixel * 4;
2942 char r = disable_red ? 0 : rrgb[0];
2943 char g = disable_green ? 0 : rrgb[1];
2944 char b = disable_blue ? 0 : rrgb[2];
2947 float gray = (0.2126f *
r + 0.7152f * g + 0.0722f * b) / scale;
2949 rrgb[0] = rrgb[1] = rrgb[2] = gray;
3072 while (i < track->markersnr) {
3079 while (i < track->markersnr) {
3082 if (marker->
framenr != prev_fra + 1) {
3105 "tracking channel segments");
3110 while (i < track->markersnr) {
3118 while (i < track->markersnr) {
3121 if (marker->
framenr != prev_fra + 1) {
3158 if (!show_hidden && (track->flag &
TRACK_HIDDEN) != 0) {
3167 "tracking dopesheet channel");
3168 channel->
track = track;
3244 int frames, start_frame = INT_MAX, end_frame = -INT_MAX;
3245 int *per_frame_counter;
3246 int prev_coverage, last_segment_frame;
3250 start_frame =
min_ii(start_frame, track->markers[0].framenr);
3251 end_frame =
max_ii(end_frame, track->markers[track->markersnr - 1].framenr);
3254 if (start_frame > end_frame) {
3259 frames = end_frame - start_frame + 1;
3262 per_frame_counter =
MEM_callocN(
sizeof(
int) * frames,
"per frame track counter");
3266 for (
int i = 0; i < track->markersnr; i++) {
3271 per_frame_counter[marker->
framenr - start_frame]++;
3278 last_segment_frame = start_frame;
3281 if (!per_frame_counter[0]) {
3285 for (
int i = 1; i < frames; i++) {
3289 if (i == frames - 1 && !per_frame_counter[i]) {
3293 if (coverage != prev_coverage || i == frames - 1) {
3295 int end_segment_frame = i - 1 + start_frame;
3297 if (end_segment_frame == last_segment_frame) {
3298 end_segment_frame++;
3302 "tracking coverage segment");
3303 coverage_segment->
coverage = prev_coverage;
3304 coverage_segment->
start_frame = last_segment_frame;
3305 coverage_segment->
end_frame = end_segment_frame;
3309 last_segment_frame = end_segment_frame;
3312 prev_coverage = coverage;
3325 dopesheet->
ok =
false;
3336 if (dopesheet->
ok) {
3349 dopesheet->
ok =
true;
3361 while (
object !=
NULL) {
3365 object =
object->
next;
3374 if (
object !=
NULL) {
3375 return &
object->tracks;
3377 return &tracking->
tracks;
3389 while (
object !=
NULL) {
3393 object =
object->
next;
3402 if (
object !=
NULL) {
3403 return &
object->plane_tracks;
3411 size_t rna_path_len)
3416 if (
object ==
NULL) {
3417 BLI_snprintf(rna_path, rna_path_len,
"tracking.tracks[\"%s\"]", track_name_esc);
3420 char object_name_esc[
MAX_NAME * 2];
3424 "tracking.objects[\"%s\"].tracks[\"%s\"]",
3433 size_t rna_path_len)
3436 if (
object ==
NULL) {
3437 BLI_strncpy(rna_path,
"tracking.tracks", rna_path_len);
3440 char object_name_esc[
MAX_NAME * 2];
3442 BLI_snprintf(rna_path, rna_path_len,
"tracking.objects[\"%s\"]", object_name_esc);
3449 size_t rna_path_len)
3454 if (
object ==
NULL) {
3455 BLI_snprintf(rna_path, rna_path_len,
"tracking.plane_tracks[\"%s\"]", track_name_esc);
3458 char object_name_esc[
MAX_NAME * 2];
3462 "tracking.objects[\"%s\"].plane_tracks[\"%s\"]",
3472 size_t rna_path_len)
3475 if (
object ==
NULL) {
3476 BLI_strncpy(rna_path,
"tracking.plane_tracks", rna_path_len);
3479 char object_name_esc[
MAX_NAME * 2];
3481 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 TRACK_AREA_SEARCH
#define TRACK_CLEAR_REMAINED
void BLI_bitmap_draw_2d_poly_v2i_n(const int xmin, const int ymin, const int xmax, const int ymax, const int verts[][2], const 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_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
void * BLI_ghash_lookup(GHash *gh, const void *key) 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], const float left, const float right, const float bottom, const float top, const float nearClip, const float farClip)
void mul_m4_m4m4(float R[4][4], const float A[4][4], const float B[4][4])
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])
void blend_m4_m4m4(float out[4][4], const float dst[4][4], const float src[4][4], const float srcweight)
void interp_v2_v2v2(float r[2], const float a[2], const float b[2], const float t)
MINLINE void mul_v2_fl(float r[2], float f)
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])
int BLI_strcasecmp(const char *s1, const char *s2) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
size_t size_t char size_t BLI_str_escape(char *__restrict dst, const char *__restrict src, const size_t dst_maxncpy) ATTR_NONNULL()
size_t BLI_snprintf(char *__restrict dst, size_t maxncpy, const char *__restrict format,...) ATTR_NONNULL(1
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, const size_t maxncpy) ATTR_NONNULL()
bool BLI_uniquename(struct ListBase *list, void *vlink, const char *defname, char delim, int name_offset, size_t 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.
@ TRACK_PREVIEW_GRAYSCALE
@ TRACKING_DOPE_SORT_AVERAGE_ERROR
@ TRACKING_DOPE_SORT_LONGEST
@ TRACKING_DOPE_SORT_NAME
@ TRACKING_DOPE_SORT_TOTAL
@ TRACK_ALGORITHM_FLAG_USE_BRUTE
@ TRACK_MOTION_MODEL_TRANSLATION
@ TRACKING_DOPE_SELECTED_ONLY
@ TRACKING_DOPE_SORT_INVERSE
@ TRACKING_DOPE_SHOW_HIDDEN
@ TRACKING_FILTER_BILINEAR
@ TRACKING_SHOW_STAB_TRACKS
@ TRACKING_COVERAGE_ACCEPTABLE
_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 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 right
_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 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_freeImBuf(struct ImBuf *ibuf)
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)
StructRNA RNA_MovieTrackingTrack
btMatrix3x3 inverse() const
Return the inverse of the matrix.
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
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 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
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)
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.
struct libmv_CameraIntrinsics * intrinsics
struct MovieTrackingDopesheetChannel * next
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)
void BKE_tracking_marker_clamp(MovieTrackingMarker *marker, int event)
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_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)
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 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)
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 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])
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)
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_tracks_join(MovieTracking *tracking, MovieTrackingTrack *dst_track, MovieTrackingTrack *src_track)
MovieTrackingTrack ** BKE_tracking_selected_tracks_in_active_object(MovieTracking *tracking, int *r_num_tracks)
void BKE_tracking_track_path_clear(MovieTrackingTrack *track, int ref_frame, int action)
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_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 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_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)
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])
ccl_device_inline float4 mask(const int4 &mask, const float4 &a)