[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [43829] trunk/blender/source/blender: Camera tracking: regression fixed after recent frame postprocessing refactor
Sergey Sharybin
sergey.vfx at gmail.com
Wed Feb 1 20:06:28 CET 2012
Revision: 43829
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=43829
Author: nazgul
Date: 2012-02-01 19:06:21 +0000 (Wed, 01 Feb 2012)
Log Message:
-----------
Camera tracking: regression fixed after recent frame postprocessing refactor
No-proxied frames using for 2D tracking used to be putting to cache which lead
to extra memory usage which shouldn't happen.
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/BKE_movieclip.h
trunk/blender/source/blender/blenkernel/intern/movieclip.c
trunk/blender/source/blender/blenkernel/intern/tracking.c
trunk/blender/source/blender/editors/space_clip/tracking_ops.c
Modified: trunk/blender/source/blender/blenkernel/BKE_movieclip.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_movieclip.h 2012-02-01 18:25:13 UTC (rev 43828)
+++ trunk/blender/source/blender/blenkernel/BKE_movieclip.h 2012-02-01 19:06:21 UTC (rev 43829)
@@ -49,7 +49,7 @@
struct ImBuf *BKE_movieclip_get_ibuf(struct MovieClip *clip, struct MovieClipUser *user);
struct ImBuf *BKE_movieclip_get_postprocessed_ibuf(struct MovieClip *clip, struct MovieClipUser *user, int postprocess_flag);
struct ImBuf *BKE_movieclip_get_stable_ibuf(struct MovieClip *clip, struct MovieClipUser *user, float loc[2], float *scale, float *angle, int postprocess_flag);
-struct ImBuf *BKE_movieclip_get_ibuf_flag(struct MovieClip *clip, struct MovieClipUser *user, int flag);
+struct ImBuf *BKE_movieclip_get_ibuf_flag(struct MovieClip *clip, struct MovieClipUser *user, int flag, int cache_flag);
void BKE_movieclip_get_size(struct MovieClip *clip, struct MovieClipUser *user, int *width, int *height);
void BKE_movieclip_aspect(struct MovieClip *clip, float *aspx, float *aspy);
int BKE_movieclip_has_frame(struct MovieClip *clip, struct MovieClipUser *user);
@@ -64,6 +64,9 @@
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);
+/* cacheing flags */
+#define MOVIECLIP_CACHE_SKIP (1<<0)
+
/* postprocessing flags */
#define MOVIECLIP_DISABLE_RED (1<<0)
#define MOVIECLIP_DISABLE_GREEN (1<<1)
Modified: trunk/blender/source/blender/blenkernel/intern/movieclip.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/movieclip.c 2012-02-01 18:25:13 UTC (rev 43828)
+++ trunk/blender/source/blender/blenkernel/intern/movieclip.c 2012-02-01 19:06:21 UTC (rev 43829)
@@ -631,7 +631,8 @@
return postproc_ibuf;
}
-static ImBuf *movieclip_get_postprocessed_ibuf(MovieClip *clip, MovieClipUser *user, int flag, int postprocess_flag)
+static ImBuf *movieclip_get_postprocessed_ibuf(MovieClip *clip, MovieClipUser *user, int flag,
+ int postprocess_flag, int cache_flag)
{
ImBuf *ibuf= NULL;
int framenr= user->framenr, need_postprocess= 0;
@@ -664,7 +665,7 @@
ibuf= movieclip_load_movie_file(clip, user, framenr, flag);
}
- if(ibuf)
+ if(ibuf && (cache_flag & MOVIECLIP_CACHE_SKIP) == 0)
put_imbuf_cache(clip, user, ibuf, flag);
}
@@ -687,17 +688,17 @@
ImBuf *BKE_movieclip_get_ibuf(MovieClip *clip, MovieClipUser *user)
{
- return BKE_movieclip_get_ibuf_flag(clip, user, clip->flag);
+ return BKE_movieclip_get_ibuf_flag(clip, user, clip->flag, 0);
}
-ImBuf *BKE_movieclip_get_ibuf_flag(MovieClip *clip, MovieClipUser *user, int flag)
+ImBuf *BKE_movieclip_get_ibuf_flag(MovieClip *clip, MovieClipUser *user, int flag, int cache_flag)
{
- return movieclip_get_postprocessed_ibuf(clip, user, flag, 0);
+ return movieclip_get_postprocessed_ibuf(clip, user, flag, 0, cache_flag);
}
ImBuf *BKE_movieclip_get_postprocessed_ibuf(MovieClip *clip, MovieClipUser *user, int postprocess_flag)
{
- return movieclip_get_postprocessed_ibuf(clip, user, clip->flag, postprocess_flag);
+ return movieclip_get_postprocessed_ibuf(clip, user, clip->flag, postprocess_flag, 0);
}
static ImBuf *get_stable_cached_frame(MovieClip *clip, MovieClipUser *user, int framenr)
@@ -1021,7 +1022,7 @@
user.render_flag= 0;
user.render_size= MCLIP_PROXY_RENDER_SIZE_FULL;
- ibuf= BKE_movieclip_get_ibuf_flag(clip, &user, clip_flag);
+ ibuf= BKE_movieclip_get_ibuf_flag(clip, &user, clip_flag, MOVIECLIP_CACHE_SKIP);
if(ibuf) {
ImBuf *tmpibuf= ibuf;
Modified: trunk/blender/source/blender/blenkernel/intern/tracking.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/tracking.c 2012-02-01 18:25:13 UTC (rev 43828)
+++ trunk/blender/source/blender/blenkernel/intern/tracking.c 2012-02-01 19:06:21 UTC (rev 43829)
@@ -1226,7 +1226,7 @@
user.framenr= framenr;
- ibuf= BKE_movieclip_get_ibuf_flag(context->clip, &user, context->clip_flag);
+ ibuf= BKE_movieclip_get_ibuf_flag(context->clip, &user, context->clip_flag, MOVIECLIP_CACHE_SKIP);
return ibuf;
}
@@ -1330,7 +1330,7 @@
if(context->backwards) context->user.framenr--;
else context->user.framenr++;
- ibuf_new= BKE_movieclip_get_ibuf_flag(context->clip, &context->user, context->clip_flag);
+ ibuf_new= BKE_movieclip_get_ibuf_flag(context->clip, &context->user, context->clip_flag, MOVIECLIP_CACHE_SKIP);
if(!ibuf_new)
return 0;
Modified: trunk/blender/source/blender/editors/space_clip/tracking_ops.c
===================================================================
--- trunk/blender/source/blender/editors/space_clip/tracking_ops.c 2012-02-01 18:25:13 UTC (rev 43828)
+++ trunk/blender/source/blender/editors/space_clip/tracking_ops.c 2012-02-01 19:06:21 UTC (rev 43829)
@@ -2757,7 +2757,7 @@
SpaceClip *sc= CTX_wm_space_clip(C);
MovieClip *clip= ED_space_clip(sc);
int clip_flag= clip->flag&MCLIP_TIMECODE_FLAGS;
- ImBuf *ibuf= BKE_movieclip_get_ibuf_flag(clip, &sc->user, clip_flag);
+ ImBuf *ibuf= BKE_movieclip_get_ibuf_flag(clip, &sc->user, clip_flag, MOVIECLIP_CACHE_SKIP);
MovieTracking *tracking= &clip->tracking;
ListBase *tracksbase= BKE_tracking_get_tracks(tracking);
MovieTrackingTrack *track= tracksbase->first;
More information about the Bf-blender-cvs
mailing list