// Create the transition
transition = mlt_factory_transition( "region", NULL );
- // Pass all properties down
- mlt_properties_pass( mlt_transition_properties( transition ), properties, "" );
-
// Register with the filter
mlt_properties_set_data( properties, "_transition", transition, 0, ( mlt_destructor )mlt_transition_close, NULL );
}
+ // Pass all properties down
+ mlt_properties_pass( mlt_transition_properties( transition ), properties, "" );
+
// Process the frame
return mlt_transition_process( transition, frame, NULL );
}
// Get the image from the a frame
mlt_frame_get_image( a_frame, image, format, width, height, 1 );
+ // Get the properties from the transition
+ mlt_properties properties = mlt_transition_properties( this );
+
if ( b_frame != NULL )
{
// Get the properties of the a frame
// Get the properties of the b frame
mlt_properties b_props = mlt_frame_properties( b_frame );
- // Get the properties from the transition
- mlt_properties properties = mlt_transition_properties( this );
-
// Structures for geometry
struct geometry_s result;
}
}
+ // Force geometries to be recalculated
+ mlt_properties_set_data( properties, "geometries", NULL, 0, NULL, NULL );
+
return 0;
}
mlt_properties_set_data( properties, "composite", composite, 0, ( mlt_destructor )mlt_transition_close, NULL );
}
}
+ else
+ {
+ // Pass all current properties down
+ mlt_properties composite_properties = mlt_transition_properties( composite );
+ mlt_properties_pass( composite_properties, properties, "composite." );
+ }
// Create filters
if ( filter == NULL )
}
}
}
+ else
+ {
+ // Pass all properties down
+ mlt_filter temp = NULL;
+
+ // Loop Variable
+ int i = 0;
+
+ // Number of filters found
+ int count = 0;
+
+ // Loop for all properties
+ for ( i = 0; i < mlt_properties_count( properties ); i ++ )
+ {
+ // Get the name of this property
+ char *name = mlt_properties_get_name( properties, i );
+
+ // If the name does not contain a . and matches filter
+ if ( strchr( name, '.' ) == NULL && !strncmp( name, "filter", 6 ) )
+ {
+ // Strings to hold the id and pass down key
+ char id[ 256 ];
+ char key[ 256 ];
+
+ // Construct id and key
+ sprintf( id, "_filter_%d", count );
+ sprintf( key, "%s.", name );
+
+ // Get the filter
+ temp = mlt_properties_get_data( properties, id, NULL );
+
+ if ( temp != NULL )
+ {
+ mlt_properties_pass( mlt_filter_properties( temp ), properties, key );
+ count ++;
+ }
+ }
+ }
+ }
// Get the image
error = mlt_frame_get_image( frame, image, format, width, height, 1 );