88 if (track->frames_limit) {
89 if (frames_limit == 0) {
90 frames_limit = track->frames_limit;
93 frames_limit =
min_ii(frames_limit,
int(track->frames_limit));
99 *r_frames_limit = frames_limit;
154 tmj->
efra = std::max(tmj->
efra, tmj->
sfra - frames_limit);
157 tmj->
efra = std::min(tmj->
efra, tmj->
sfra + frames_limit);
207 int framenr = tmj->
sfra;
211 while (framenr != tmj->
efra) {
212 if (tmj->
delay > 0) {
227 if (tmj->
delay >
float(exec_time)) {
317 if (use_job && sequence) {
321 "Tracking markers...",
330 if (tmj->
delay > 0) {
378 switch (event->
type) {
396 if (backwards && sequence) {
397 return TIP_(
"Track the selected markers backward for the entire clip");
399 if (backwards && !sequence) {
400 return TIP_(
"Track the selected markers backward by one frame");
402 if (!backwards && sequence) {
403 return TIP_(
"Track the selected markers forward for the entire clip");
405 if (!backwards && !sequence) {
406 return TIP_(
"Track the selected markers forward by one frame");
416 ot->name =
"Track Markers";
417 ot->description =
"Track selected markers";
418 ot->idname =
"CLIP_OT_track_markers";
431 RNA_def_boolean(
ot->srna,
"backwards",
false,
"Backwards",
"Do backwards tracking");
436 "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";
481 RNA_def_boolean(
ot->srna,
"backwards",
false,
"Backwards",
"Do backwards tracking");
bScreen * CTX_wm_screen(const bContext *C)
wmWindow * CTX_wm_window(const bContext *C)
Scene * CTX_data_scene(const bContext *C)
Main * CTX_data_main(const bContext *C)
SpaceClip * CTX_wm_space_clip(const bContext *C)
wmWindowManager * CTX_wm_manager(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)
struct AutoTrackContext * BKE_autotrack_context_new(struct MovieClip *clip, struct MovieClipUser *user, bool is_backwards)
void BKE_autotrack_context_finish(struct AutoTrackContext *context)
struct MovieTrackingMarker * BKE_tracking_marker_ensure(struct MovieTrackingTrack *track, int framenr)
bool BKE_autotrack_context_step(struct AutoTrackContext *context)
#define TRACK_SELECTED(track)
void BKE_autotrack_context_free(struct AutoTrackContext *context)
struct MovieTrackingMarker * BKE_tracking_marker_get(struct MovieTrackingTrack *track, int framenr)
struct MovieTrackingObject * BKE_tracking_object_get_active(const struct MovieTracking *tracking)
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)
#define LISTBASE_FOREACH(type, var, list)
MINLINE int min_ii(int a, int b)
Platform independent time functions.
void BLI_time_sleep_ms(int ms)
double BLI_time_now_seconds(void)
void DEG_id_tag_update(ID *id, unsigned int flags)
MovieClip * ED_space_clip_get_clip(const SpaceClip *sc)
int ED_space_clip_get_clip_frame_number(const SpaceClip *sc)
bool ED_space_clip_tracking_poll(bContext *C)
Read Guarded memory(de)allocation.
@ WM_JOB_TYPE_CLIP_TRACK_MARKERS
void * MEM_callocN(size_t len, const char *str)
void MEM_freeN(void *vmemh)
bool RNA_boolean_get(PointerRNA *ptr, const char *name)
PropertyRNA * RNA_def_boolean(StructOrFunctionRNA *cont_, const char *identifier, const bool default_value, const char *ui_name, const char *ui_description)
struct MovieTracking tracking
MovieTrackingSettings settings
struct MovieClipUser user
AutoTrackContext * context
void clip_tracking_clear_invisible_track_selection(SpaceClip *sc, MovieClip *clip)
static wmOperatorStatus track_markers_exec(bContext *C, wmOperator *op)
static wmOperatorStatus refine_marker_exec(bContext *C, wmOperator *op)
static void track_markers_endjob(void *tmv)
static bool track_markers_check_direction(int backwards, int curfra, int efra)
static wmOperatorStatus track_markers(bContext *C, wmOperator *op, bool use_job)
void CLIP_OT_track_markers(wmOperatorType *ot)
static void track_markers_startjob(void *tmv, wmJobWorkerStatus *worker_status)
static std::string track_markers_get_description(bContext *, wmOperatorType *, PointerRNA *ptr)
static void track_markers_updatejob(void *tmv)
static wmOperatorStatus track_markers_modal(bContext *C, wmOperator *, const wmEvent *event)
static bool track_markers_initjob(bContext *C, TrackMarkersJob *tmj, bool backwards, bool sequence)
static bool track_markers_testbreak()
void CLIP_OT_refine_markers(wmOperatorType *ot)
static wmOperatorStatus track_markers_invoke(bContext *C, wmOperator *op, const wmEvent *)
static void track_markers_freejob(void *tmv)
static int track_count_markers(SpaceClip *sc, MovieClip *clip, const int framenr)
static void track_init_markers(SpaceClip *sc, MovieClip *clip, const int framenr, int *r_frames_limit)
void WM_cursor_wait(bool val)
void WM_locked_interface_set(wmWindowManager *wm, bool lock)
void WM_main_add_notifier(uint type, void *reference)
wmEventHandler_Op * WM_event_add_modal_handler(bContext *C, wmOperator *op)
void WM_event_add_notifier(const bContext *C, uint type, void *reference)
void WM_jobs_timer(wmJob *wm_job, double time_step, uint note, uint endnote)
void WM_jobs_start(wmWindowManager *wm, wmJob *wm_job)
wmJob * WM_jobs_get(wmWindowManager *wm, wmWindow *win, const void *owner, const char *name, const eWM_JobFlag flag, const eWM_JobType job_type)
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 *customdata))