116 if (scj->
wm !=
nullptr) {
129 if (error_message[0]) {
134 scj->
reports,
RPT_WARNING,
"Some data failed to reconstruct (see console for details)");
141 "Average re-projection error: %.2f px",
146 if (scene->
clip !=
nullptr) {
165 tracking->
stats =
nullptr;
182 char error_msg[256] =
"\0";
206 char error_msg[256] =
"\0";
258 switch (event->
type) {
272 ot->name =
"Solve Camera";
273 ot->description =
"Solve camera motion from tracks";
274 ot->idname =
"CLIP_OT_solve_camera";
301 reconstruction->
camnr = 0;
315 ot->name =
"Clear Solution";
316 ot->description =
"Clear all calculated data";
317 ot->idname =
"CLIP_OT_clear_solution";
ScrArea * CTX_wm_area(const bContext *C)
wmWindow * CTX_wm_window(const bContext *C)
Scene * CTX_data_scene(const bContext *C)
SpaceClip * CTX_wm_space_clip(const bContext *C)
wmWindowManager * CTX_wm_manager(const bContext *C)
void BKE_movieclip_get_size(struct MovieClip *clip, const struct MovieClipUser *user, int *r_width, int *r_height)
void BKE_reportf(ReportList *reports, eReportType type, const char *format,...) ATTR_PRINTF_FORMAT(3
void BKE_report(ReportList *reports, eReportType type, const char *message)
void BKE_tracking_reconstruction_context_free(struct MovieReconstructContext *context)
void BKE_tracking_reconstruction_solve(struct MovieReconstructContext *context, bool *stop, bool *do_update, float *progress, char *stats_message, int message_size)
bool BKE_tracking_reconstruction_finish(struct MovieReconstructContext *context, struct MovieTracking *tracking)
struct MovieTrackingObject * BKE_tracking_object_get_active(const struct MovieTracking *tracking)
void BKE_tracking_camera_to_blender(struct MovieTracking *tracking, struct Scene *scene, struct Camera *camera, int width, int height)
const char * BKE_tracking_reconstruction_error_message_get(const struct MovieReconstructContext *context)
bool BKE_tracking_reconstruction_check(struct MovieTracking *tracking, struct MovieTrackingObject *tracking_object, char *error_msg, int error_size)
struct MovieReconstructContext * BKE_tracking_reconstruction_context_new(struct MovieClip *clip, struct MovieTrackingObject *tracking_object, int keyframe1, int keyframe2, int width, int height)
#define LISTBASE_FOREACH(type, var, list)
#define STRNCPY_UTF8(dst, src)
void DEG_id_tag_update(ID *id, unsigned int flags)
Object is a sort of wrapper for general info.
MovieClip * ED_space_clip_get_clip(const SpaceClip *sc)
bool ED_space_clip_tracking_poll(bContext *C)
Read Guarded memory(de)allocation.
@ WM_JOB_TYPE_CLIP_SOLVE_CAMERA
void * MEM_callocN(size_t len, const char *str)
void MEM_freeN(void *vmemh)
struct MovieTracking tracking
MovieTrackingReconstruction reconstruction
struct MovieReconstructedCamera * cameras
MovieTrackingStats * stats
MovieReconstructContext * context
struct MovieClipUser user
struct ReportList * reports
static wmOperatorStatus solve_camera_modal(bContext *C, wmOperator *, const wmEvent *event)
static wmOperatorStatus solve_camera_exec(bContext *C, wmOperator *op)
static bool solve_camera_initjob(bContext *C, SolveCameraJob *scj, wmOperator *op, char *error_msg, int max_error)
void CLIP_OT_clear_solution(wmOperatorType *ot)
static wmOperatorStatus solve_camera_invoke(bContext *C, wmOperator *op, const wmEvent *)
static void solve_camera_startjob(void *scv, wmJobWorkerStatus *worker_status)
void CLIP_OT_solve_camera(wmOperatorType *ot)
static void solve_camera_freejob(void *scv)
static void solve_camera_updatejob(void *scv)
static wmOperatorStatus clear_solution_exec(bContext *C, wmOperator *)
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))