Revision: 48552
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=48552
Author:   nazgul
Date:     2012-07-03 16:23:15 +0000 (Tue, 03 Jul 2012)
Log Message:
-----------
Tomato: skip cache for Movieclip input node only when rendering

Modified Paths:
--------------
    
branches/soc-2011-tomato/source/blender/compositor/nodes/COM_MovieClipNode.cpp
    
branches/soc-2011-tomato/source/blender/compositor/operations/COM_MovieClipOperation.cpp
    
branches/soc-2011-tomato/source/blender/compositor/operations/COM_MovieClipOperation.h

Modified: 
branches/soc-2011-tomato/source/blender/compositor/nodes/COM_MovieClipNode.cpp
===================================================================
--- 
branches/soc-2011-tomato/source/blender/compositor/nodes/COM_MovieClipNode.cpp  
    2012-07-03 16:18:39 UTC (rev 48551)
+++ 
branches/soc-2011-tomato/source/blender/compositor/nodes/COM_MovieClipNode.cpp  
    2012-07-03 16:23:15 UTC (rev 48552)
@@ -81,6 +81,7 @@
        operation->setMovieClip(movieClip);
        operation->setMovieClipUser(movieClipUser);
        operation->setFramenumber(context->getFramenumber());
+       operation->setCacheFrame(!context->isRendering());
        graph->addOperation(operation);
 
        MovieTrackingStabilization *stab = &movieClip->tracking.stabilization;

Modified: 
branches/soc-2011-tomato/source/blender/compositor/operations/COM_MovieClipOperation.cpp
===================================================================
--- 
branches/soc-2011-tomato/source/blender/compositor/operations/COM_MovieClipOperation.cpp
    2012-07-03 16:18:39 UTC (rev 48551)
+++ 
branches/soc-2011-tomato/source/blender/compositor/operations/COM_MovieClipOperation.cpp
    2012-07-03 16:23:15 UTC (rev 48552)
@@ -48,9 +48,16 @@
        if (this->m_movieClip) {
                BKE_movieclip_user_set_frame(this->m_movieClipUser, 
this->m_framenumber);
                ImBuf *ibuf;
-               int flag = this->m_movieClip->flag & MCLIP_TIMECODE_FLAGS;
 
-               ibuf = BKE_movieclip_get_ibuf_flag(this->m_movieClip, 
this->m_movieClipUser, flag, MOVIECLIP_CACHE_SKIP);
+               if (this->m_cacheFrame) {
+                       ibuf = BKE_movieclip_get_ibuf(this->m_movieClip, 
this->m_movieClipUser);
+               }
+               else {
+                       int flag = this->m_movieClip->flag & 
MCLIP_TIMECODE_FLAGS;
+
+                       ibuf = BKE_movieclip_get_ibuf_flag(this->m_movieClip, 
this->m_movieClipUser, flag, MOVIECLIP_CACHE_SKIP);
+               }
+
                if (ibuf) {
                        this->m_movieClipBuffer = ibuf;
                        if (ibuf->rect_float == NULL || ibuf->userflags & 
IB_RECT_INVALID) {

Modified: 
branches/soc-2011-tomato/source/blender/compositor/operations/COM_MovieClipOperation.h
===================================================================
--- 
branches/soc-2011-tomato/source/blender/compositor/operations/COM_MovieClipOperation.h
      2012-07-03 16:18:39 UTC (rev 48551)
+++ 
branches/soc-2011-tomato/source/blender/compositor/operations/COM_MovieClipOperation.h
      2012-07-03 16:23:15 UTC (rev 48552)
@@ -43,6 +43,7 @@
        int m_movieClipheight;
        int m_movieClipwidth;
        int m_framenumber;
+       bool m_cacheFrame;
        
        /**
         * Determine the output resolution. The resolution is retrieved from 
the Renderer
@@ -56,6 +57,7 @@
        void deinitExecution();
        void setMovieClip(MovieClip *image) { this->m_movieClip = image; }
        void setMovieClipUser(MovieClipUser *imageuser) { this->m_movieClipUser 
= imageuser; }
+       void setCacheFrame(bool value) { this->m_cacheFrame = value; }
 
        void setFramenumber(int framenumber) { this->m_framenumber = 
framenumber; }
        void executePixel(float *color, float x, float y, PixelSampler sampler, 
MemoryBuffer * inputBuffers[]);

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to