diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2012-06-20 14:54:56 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2012-06-20 14:54:56 +0400 |
commit | 470ad6fc0e729e335718d1152e2348db159e4514 (patch) | |
tree | 60ab5ebe8ce11cc193e28d9b599da5cbdd072d65 /source/blender/blenkernel | |
parent | b07edbc6d6f3796fbf3d036582a1beec35e08a59 (diff) |
Do not check result of BKE_tracking_marker_get -- it shall always
return valid marker. If not -- let blender crash, because that means
something went really bad and silencing this isn't good idea.
Also made mask parenting to tracking data aware of clip's start frame.
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r-- | source/blender/blenkernel/BKE_movieclip.h | 4 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/mask.c | 3 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/movieclip.c | 8 |
3 files changed, 8 insertions, 7 deletions
diff --git a/source/blender/blenkernel/BKE_movieclip.h b/source/blender/blenkernel/BKE_movieclip.h index 221ae99a0ec..739b63ca174 100644 --- a/source/blender/blenkernel/BKE_movieclip.h +++ b/source/blender/blenkernel/BKE_movieclip.h @@ -63,8 +63,8 @@ void BKE_movieclip_get_cache_segments(struct MovieClip *clip, struct MovieClipUs void BKE_movieclip_build_proxy_frame(struct MovieClip *clip, int clip_flag, struct MovieDistortion *distortion, int cfra, int *build_sizes, int build_count, int undistorted); -int BKE_movieclip_remap_scene_to_clip_frame(struct MovieClip *clip, int framenr); -int BKE_movieclip_remap_clip_to_scene_frame(struct MovieClip *clip, int framenr); +float BKE_movieclip_remap_scene_to_clip_frame(struct MovieClip *clip, float framenr); +float BKE_movieclip_remap_clip_to_scene_frame(struct MovieClip *clip, float framenr); /* cacheing flags */ #define MOVIECLIP_CACHE_SKIP (1 << 0) diff --git a/source/blender/blenkernel/intern/mask.c b/source/blender/blenkernel/intern/mask.c index 48db916b4ba..c80a240f7e3 100644 --- a/source/blender/blenkernel/intern/mask.c +++ b/source/blender/blenkernel/intern/mask.c @@ -1160,12 +1160,13 @@ static int BKE_mask_evaluate_parent(MaskParent *parent, float ctime, float r_co[ if (ob) { MovieTrackingTrack *track = BKE_tracking_track_get_named(tracking, ob, parent->sub_parent); + float clip_framenr = BKE_movieclip_remap_scene_to_clip_frame(clip, ctime); MovieClipUser user = {0}; user.framenr = ctime; if (track) { - MovieTrackingMarker *marker = BKE_tracking_marker_get(track, ctime); + MovieTrackingMarker *marker = BKE_tracking_marker_get(track, clip_framenr); float marker_pos_ofs[2]; add_v2_v2v2(marker_pos_ofs, marker->pos, track->offset); BKE_mask_coord_from_movieclip(clip, &user, r_co, marker_pos_ofs); diff --git a/source/blender/blenkernel/intern/movieclip.c b/source/blender/blenkernel/intern/movieclip.c index 04edc58157b..44169cd3d6a 100644 --- a/source/blender/blenkernel/intern/movieclip.c +++ b/source/blender/blenkernel/intern/movieclip.c @@ -1270,12 +1270,12 @@ void BKE_movieclip_unlink(Main *bmain, MovieClip *clip) clip->id.us = 0; } -int BKE_movieclip_remap_scene_to_clip_frame(MovieClip *clip, int framenr) +float BKE_movieclip_remap_scene_to_clip_frame(MovieClip *clip, float framenr) { - return framenr - clip->start_frame + 1; + return framenr - (float) clip->start_frame + 1.0f; } -int BKE_movieclip_remap_clip_to_scene_frame(MovieClip *clip, int framenr) +float BKE_movieclip_remap_clip_to_scene_frame(MovieClip *clip, float framenr) { - return framenr + clip->start_frame - 1; + return framenr + (float) clip->start_frame - 1.0f; } |