]> git.sesse.net Git - mlt/commitdiff
bugfix transition processing hidden track
authorddennedy <ddennedy@d19143bc-622f-0410-bfdd-b5b2a6649095>
Fri, 1 Jun 2007 08:16:13 +0000 (08:16 +0000)
committerddennedy <ddennedy@d19143bc-622f-0410-bfdd-b5b2a6649095>
Fri, 1 Jun 2007 08:16:13 +0000 (08:16 +0000)
git-svn-id: https://mlt.svn.sourceforge.net/svnroot/mlt/trunk/mlt@974 d19143bc-622f-0410-bfdd-b5b2a6649095

src/framework/mlt_transition.c

index 18e747dd0c2d7a7f8802aaff7df832d5fdeb6f89..047a9e94fb921a6b0ac08cd938a57984e322486d 100644 (file)
@@ -275,18 +275,20 @@ static int transition_get_frame( mlt_service service, mlt_frame_ptr frame, int i
                        mlt_frame b_frame_ptr = this->frames[ !reverse_order ? b_frame : a_frame ];
                        int a_hide = mlt_properties_get_int( MLT_FRAME_PROPERTIES( a_frame_ptr ), "hide" );
                        int b_hide = mlt_properties_get_int( MLT_FRAME_PROPERTIES( b_frame_ptr ), "hide" );
-
-                       // Process the transition
-                       *frame = mlt_transition_process( this, a_frame_ptr, b_frame_ptr );
-
-                       // We need to ensure that the tractor doesn't consider this frame for output
-                       if ( *frame == a_frame_ptr )
-                               b_hide |= type;
-                       else
-                               a_hide |= type;
-
-                       mlt_properties_set_int( MLT_FRAME_PROPERTIES( a_frame_ptr ), "hide", a_hide );
-                       mlt_properties_set_int( MLT_FRAME_PROPERTIES( b_frame_ptr ), "hide", b_hide );
+                       if ( !( a_hide & type ) && !( b_hide & type ) )
+                       {
+                               // Process the transition
+                               *frame = mlt_transition_process( this, a_frame_ptr, b_frame_ptr );
+       
+                               // We need to ensure that the tractor doesn't consider this frame for output
+                               if ( *frame == a_frame_ptr )
+                                       b_hide |= type;
+                               else
+                                       a_hide |= type;
+       
+                               mlt_properties_set_int( MLT_FRAME_PROPERTIES( a_frame_ptr ), "hide", a_hide );
+                               mlt_properties_set_int( MLT_FRAME_PROPERTIES( b_frame_ptr ), "hide", b_hide );
+                       }
                }
        }