87 if (track->frames_limit) {
88 if (frames_limit == 0) {
89 frames_limit = track->frames_limit;
92 frames_limit =
min_ii(frames_limit, (
int)track->frames_limit);
98 *r_frames_limit = frames_limit;
212 int framenr = tmj->
sfra;
216 while (framenr != tmj->
efra) {
217 if (tmj->
delay > 0) {
232 if (tmj->
delay > (
float)exec_time) {
322 if (use_job && sequence) {
335 if (tmj->
delay > 0) {
356 short stop = 0, do_update = 0;
357 float progress = 0.0f;
382 switch (event->
type) {
395 if (backwards && sequence) {
396 return BLI_strdup(
TIP_(
"Track the selected markers backward for the entire clip"));
398 if (backwards && !sequence) {
399 return BLI_strdup(
TIP_(
"Track the selected markers backward by one frame"));
401 if (!backwards && sequence) {
402 return BLI_strdup(
TIP_(
"Track the selected markers forward for the entire clip"));
404 if (!backwards && !sequence) {
405 return BLI_strdup(
TIP_(
"Track the selected markers forward by one frame"));
415 ot->
name =
"Track Markers";
417 ot->
idname =
"CLIP_OT_track_markers";
435 "Track marker during image sequence rather than "
466 ot->
name =
"Refine Markers";
468 "Refine selected markers positions "
469 "by running the tracker from track's reference "
471 ot->
idname =
"CLIP_OT_refine_markers";
typedef float(TangentPoint)[2]
struct Scene * CTX_data_scene(const bContext *C)
struct SpaceClip * CTX_wm_space_clip(const bContext *C)
struct wmWindowManager * CTX_wm_manager(const bContext *C)
struct bScreen * CTX_wm_screen(const bContext *C)
struct Main * CTX_data_main(const bContext *C)
struct wmWindow * CTX_wm_window(const bContext *C)
float BKE_movieclip_remap_scene_to_clip_frame(const struct MovieClip *clip, float framenr)
float BKE_movieclip_remap_clip_to_scene_frame(const struct MovieClip *clip, float framenr)
void BKE_autotrack_context_finish(struct AutoTrackContext *context)
struct ListBase * BKE_tracking_get_active_tracks(struct MovieTracking *tracking)
bool BKE_autotrack_context_step(struct AutoTrackContext *context)
struct AutoTrackContext * BKE_autotrack_context_new(struct MovieClip *clip, struct MovieClipUser *user, bool is_backwards)
#define TRACK_SELECTED(track)
struct MovieTrackingMarker * BKE_tracking_marker_ensure(struct MovieTrackingTrack *track, int framenr)
void BKE_autotrack_context_free(struct AutoTrackContext *context)
void BKE_tracking_refine_marker(struct MovieClip *clip, struct MovieTrackingTrack *track, struct MovieTrackingMarker *marker, bool backwards)
#define TRACK_VIEW_SELECTED(sc, track)
void BKE_autotrack_context_start(struct AutoTrackContext *context)
void BKE_autotrack_context_sync(struct AutoTrackContext *context)
struct MovieTrackingMarker * BKE_tracking_marker_get(struct MovieTrackingTrack *track, int framenr)
MINLINE int min_ii(int a, int b)
char * BLI_strdup(const char *str) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL() ATTR_MALLOC
void DEG_id_tag_update(struct ID *id, int flag)
@ ID_RECALC_COPY_ON_WRITE
int ED_space_clip_get_clip_frame_number(struct SpaceClip *sc)
bool ED_space_clip_tracking_poll(struct bContext *C)
struct MovieClip * ED_space_clip_get_clip(struct SpaceClip *sc)
Read Guarded memory(de)allocation.
Platform independent time functions.
@ WM_JOB_TYPE_CLIP_TRACK_MARKERS
void(* MEM_freeN)(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
bool RNA_boolean_get(PointerRNA *ptr, const char *name)
PropertyRNA * RNA_def_boolean(StructOrFunctionRNA *cont_, const char *identifier, bool default_value, const char *ui_name, const char *ui_description)
struct MovieTracking tracking
MovieTrackingSettings settings
struct MovieClipUser user
struct wmWindowManager * wm
struct AutoTrackContext * context
int(* invoke)(struct bContext *, struct wmOperator *, const struct wmEvent *) ATTR_WARN_UNUSED_RESULT
int(* modal)(struct bContext *, struct wmOperator *, const struct wmEvent *) ATTR_WARN_UNUSED_RESULT
char *(* get_description)(struct bContext *C, struct wmOperatorType *, struct PointerRNA *)
bool(* poll)(struct bContext *) ATTR_WARN_UNUSED_RESULT
int(* exec)(struct bContext *, struct wmOperator *) ATTR_WARN_UNUSED_RESULT
void PIL_sleep_ms(int ms)
double PIL_check_seconds_timer(void)
void clip_tracking_clear_invisible_track_selection(struct SpaceClip *sc, struct MovieClip *clip)
struct TrackMarkersJob TrackMarkersJob
static void track_markers_startjob(void *tmv, short *stop, short *do_update, float *progress)
static void track_markers_endjob(void *tmv)
static bool track_markers_check_direction(int backwards, int curfra, int efra)
void CLIP_OT_track_markers(wmOperatorType *ot)
static int refine_marker_exec(bContext *C, wmOperator *op)
static int track_markers_modal(bContext *C, wmOperator *UNUSED(op), const wmEvent *event)
static void track_markers_updatejob(void *tmv)
static int track_count_markers(SpaceClip *sc, MovieClip *clip, int framenr)
static bool track_markers_testbreak(void)
static int track_markers_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
static int track_markers(bContext *C, wmOperator *op, bool use_job)
static int track_markers_exec(bContext *C, wmOperator *op)
static bool track_markers_initjob(bContext *C, TrackMarkersJob *tmj, bool backwards, bool sequence)
static void track_init_markers(SpaceClip *sc, MovieClip *clip, int framenr, int *r_frames_limit)
void CLIP_OT_refine_markers(wmOperatorType *ot)
static void track_markers_freejob(void *tmv)
static char * track_markers_desc(bContext *UNUSED(C), wmOperatorType *UNUSED(op), PointerRNA *ptr)
void WM_cursor_wait(bool val)
wmEventHandler_Op * WM_event_add_modal_handler(bContext *C, wmOperator *op)
void WM_main_add_notifier(unsigned int type, void *reference)
void WM_event_add_notifier(const bContext *C, uint type, void *reference)
void WM_set_locked_interface(wmWindowManager *wm, bool lock)
void WM_jobs_start(wmWindowManager *wm, wmJob *wm_job)
void WM_jobs_callbacks(wmJob *wm_job, wm_jobs_start_callback startjob, void(*initjob)(void *), void(*update)(void *), void(*endjob)(void *))
bool WM_jobs_test(const wmWindowManager *wm, const void *owner, int job_type)
void WM_jobs_customdata_set(wmJob *wm_job, void *customdata, void(*free)(void *))
void WM_jobs_timer(wmJob *wm_job, double timestep, unsigned int note, unsigned int endnote)
wmJob * WM_jobs_get(wmWindowManager *wm, wmWindow *win, const void *owner, const char *name, int flag, int job_type)