More fixes for timecode usage with BKE_movieclip_get_ibuf_flag
authorSergey Sharybin <sergey.vfx@gmail.com>
Tue, 27 Dec 2011 11:09:06 +0000 (11:09 +0000)
committerSergey Sharybin <sergey.vfx@gmail.com>
Tue, 27 Dec 2011 11:09:06 +0000 (11:09 +0000)
source/blender/blenkernel/BKE_movieclip.h
source/blender/blenkernel/intern/movieclip.c
source/blender/blenkernel/intern/tracking.c
source/blender/editors/space_clip/clip_ops.c
source/blender/editors/space_clip/tracking_ops.c
source/blender/makesdna/DNA_movieclip_types.h

index 4d16df8afa39a897b27ee6e3a41a648872137c0c..b41f038941de40e1fcc984e664974e52b2c48057 100644 (file)
@@ -60,7 +60,7 @@ void BKE_movieclip_update_scopes(struct MovieClip *clip, struct MovieClipUser *u
 
 void BKE_movieclip_get_cache_segments(struct MovieClip *clip, struct MovieClipUser *user, int *totseg_r, int **points_r);
 
-void BKE_movieclip_build_proxy_frame(struct MovieClip *clip, struct MovieDistortion *distortion,
+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);
 
 #define TRACK_CLEAR_UPTO               0
index 7b2cfd46d337e0152619aca49b2f7fc050ccb93e..10c060e0aabbb4f880ed9cfa22092f87bdcb16b3 100644 (file)
@@ -918,15 +918,17 @@ static void movieclip_build_proxy_ibuf(MovieClip *clip, ImBuf *ibuf, int cfra, i
        IMB_freeImBuf(scaleibuf);
 }
 
-void BKE_movieclip_build_proxy_frame(MovieClip *clip, struct MovieDistortion *distortion,
+void BKE_movieclip_build_proxy_frame(MovieClip *clip, int clip_flag, struct MovieDistortion *distortion,
                        int cfra, int *build_sizes, int build_count, int undistorted)
 {
        ImBuf *ibuf;
        MovieClipUser user;
 
        user.framenr= cfra;
+       user.render_flag= 0;
+       user.render_size= MCLIP_PROXY_RENDER_SIZE_FULL;
 
-       ibuf= BKE_movieclip_get_ibuf_flag(clip, &user, 0);
+       ibuf= BKE_movieclip_get_ibuf_flag(clip, &user, clip_flag);
 
        if(ibuf) {
                ImBuf *tmpibuf= ibuf;
index e3a9fdd9b7ff8973ba1b7c6e8ce0c0417b461fe0..1a0007c5bfe3b94668c3593da8e5e2c09f6f1c2f 100644 (file)
@@ -840,7 +840,7 @@ MovieTrackingContext *BKE_tracking_context_new(MovieClip *clip, MovieClipUser *u
         * - MCLIP_USE_PROXY_CUSTOM_DIR is needed because proxy/timecode files might
         *   be stored in a different location
         * ignore all the rest pssible flags for now */
-       context->clip_flag= clip->flag & (MCLIP_USE_PROXY|MCLIP_USE_PROXY_CUSTOM_DIR);
+       context->clip_flag= clip->flag&MCLIP_TIMECODE_FLAGS;
 
        context->user= *user;
        context->user.render_size= 0;
index 34726732a177fae94a3965699ee4f7d7314d68e7..fe0b58ddda9e3588b5a6c340378ff0810766086d 100644 (file)
@@ -827,6 +827,7 @@ typedef struct ProxyBuildJob {
        Scene *scene;
        struct Main *main;
        MovieClip *clip;
+       int clip_flag;
 } ProxyJob;
 
 static void proxy_freejob(void *pjv)
@@ -877,10 +878,10 @@ static void proxy_startjob(void *pjv, short *stop, short *do_update, float *prog
 
        for(cfra= sfra; cfra<=efra; cfra++) {
                if(clip->source != MCLIP_SRC_MOVIE)
-                       BKE_movieclip_build_proxy_frame(clip, NULL, cfra, build_sizes, build_count, 0);
+                       BKE_movieclip_build_proxy_frame(clip, pj->clip_flag, NULL, cfra, build_sizes, build_count, 0);
 
                if(undistort)
-                       BKE_movieclip_build_proxy_frame(clip, distortion, cfra, build_sizes, build_count, 1);
+                       BKE_movieclip_build_proxy_frame(clip, pj->clip_flag, distortion, cfra, build_sizes, build_count, 1);
 
                if(*stop || G.afbreek)
                        break;
@@ -911,6 +912,7 @@ static int clip_rebuild_proxy_exec(bContext *C, wmOperator *UNUSED(op))
        pj->scene= scene;
        pj->main= CTX_data_main(C);
        pj->clip= clip;
+       pj->clip_flag= clip->flag&MCLIP_TIMECODE_FLAGS;
 
        WM_jobs_customdata(steve, pj, proxy_freejob);
        WM_jobs_timer(steve, 0.2, NC_MOVIECLIP|ND_DISPLAY, 0);
index 8a11c8815274a9ee8ca5ce82dafd8f6fb864376f..d911e68236b09b4bd9b99de06db2ccb476554c0c 100644 (file)
@@ -2406,7 +2406,8 @@ static int detect_features_exec(bContext *C, wmOperator *op)
 {
        SpaceClip *sc= CTX_wm_space_clip(C);
        MovieClip *clip= ED_space_clip(sc);
-       ImBuf *ibuf= BKE_movieclip_get_ibuf_flag(clip, &sc->user, 0);
+       int clip_flag= clip->flag&MCLIP_TIMECODE_FLAGS;
+       ImBuf *ibuf= BKE_movieclip_get_ibuf_flag(clip, &sc->user, clip_flag);
        MovieTrackingTrack *track= clip->tracking.tracks.first;
        int placement= RNA_enum_get(op->ptr, "placement");
        int margin= RNA_int_get(op->ptr, "margin");
index fc21f26fa32bce4980eadc4d525a2f1cdf26ef61..1a065741121177a034d6ca0d2edd14d6ae31400c 100644 (file)
@@ -113,6 +113,8 @@ typedef struct MovieClipScopes {
 #define MCLIP_USE_PROXY                                        (1<<0)
 #define MCLIP_USE_PROXY_CUSTOM_DIR             (1<<1)
 
+#define MCLIP_TIMECODE_FLAGS                   (MCLIP_USE_PROXY|MCLIP_USE_PROXY_CUSTOM_DIR)
+
 /* MovieClip->render_size */
 #define MCLIP_PROXY_RENDER_SIZE_FULL   0
 #define MCLIP_PROXY_RENDER_SIZE_25             1