]> git.sesse.net Git - mlt/commitdiff
More mutable properties
authorlilo_booter <lilo_booter@d19143bc-622f-0410-bfdd-b5b2a6649095>
Tue, 27 Jul 2004 12:10:35 +0000 (12:10 +0000)
committerlilo_booter <lilo_booter@d19143bc-622f-0410-bfdd-b5b2a6649095>
Tue, 27 Jul 2004 12:10:35 +0000 (12:10 +0000)
git-svn-id: https://mlt.svn.sourceforge.net/svnroot/mlt/trunk/mlt@344 d19143bc-622f-0410-bfdd-b5b2a6649095

src/modules/core/filter_watermark.c
src/modules/core/transition_composite.c

index fec4d53739888b133e6b3e61dbab0c87cc89b21f..4f1c5be35646ae376a792a9a8b1ef0b4f303d78f 100644 (file)
@@ -54,18 +54,19 @@ static int filter_get_image( mlt_frame frame, uint8_t **image, mlt_image_format
                // Create composite via the factory
                composite = mlt_factory_transition( "composite", NULL );
 
-               // If we have one
+               // Register the composite for reuse/destruction
                if ( composite != NULL )
-               {
-                       // Get the properties
-                       mlt_properties composite_properties = mlt_transition_properties( composite );
+                       mlt_properties_set_data( properties, "composite", composite, 0, ( mlt_destructor )mlt_transition_close, NULL );
+       }
 
-                       // Pass all the composite. properties on the filter down
-                       mlt_properties_pass( composite_properties, properties, "composite." );
+       // If we have one
+       if ( composite != NULL )
+       {
+               // Get the properties
+               mlt_properties composite_properties = mlt_transition_properties( composite );
 
-                       // Register the composite for reuse/destruction
-                       mlt_properties_set_data( properties, "composite", composite, 0, ( mlt_destructor )mlt_transition_close, NULL );
-               }
+               // Pass all the composite. properties on the filter down
+               mlt_properties_pass( composite_properties, properties, "composite." );
        }
 
        // Create a producer if don't have one
@@ -83,18 +84,21 @@ static int filter_get_image( mlt_frame frame, uint8_t **image, mlt_image_format
                // If we have one
                if ( producer != NULL )
                {
-                       // Get the producer properties
-                       mlt_properties producer_properties = mlt_producer_properties( producer );
+                       // Register the producer for reuse/destruction
+                       mlt_properties_set_data( properties, "producer", producer, 0, ( mlt_destructor )mlt_producer_close, NULL );
 
                        // Ensure that we loop
-                       mlt_properties_set( producer_properties, "eof", "loop" );
+                       mlt_properties_set( mlt_producer_properties( producer ), "eof", "loop" );
+               }
+       }
 
-                       // Now pass all producer. properties on the filter down
-                       mlt_properties_pass( producer_properties, properties, "producer." );
+       if ( producer != NULL )
+       {
+               // Get the producer properties
+               mlt_properties producer_properties = mlt_producer_properties( producer );
 
-                       // Register the producer for reuse/destruction
-                       mlt_properties_set_data( properties, "producer", producer, 0, ( mlt_destructor )mlt_producer_close, NULL );
-               }
+               // Now pass all producer. properties on the filter down
+               mlt_properties_pass( producer_properties, properties, "producer." );
        }
 
        // Only continue if we have both producer and composite
index 5a0db4ddb0d544b94c4bddaefbc5d9bea9d3ba06..466c7742a390605c1c5a3cdc27dd70b6811d9b90 100644 (file)
@@ -941,6 +941,15 @@ mlt_frame composite_copy_region( mlt_transition this, mlt_frame a_frame, mlt_pos
        w = result.w * width / result.nw;
        h = result.h * height / result.nh;
 
+       if ( y < 0 )
+       {
+               h = h + y;
+               y = 0;
+       }
+
+       if ( y + h > height )
+               h = height - y;
+
        x &= 0xfffffffe;
        w &= 0xfffffffe;