mlt_transition_type,
mlt_consumer_type,
mlt_field_type,
- mlt_service_type,
+ mlt_services_type,
mlt_dummy_filter_type,
mlt_dummy_transition_type,
mlt_dummy_producer_type,
if ( multitrack != NULL )
{
- // Set the track on the multitrack
-
// Set producer i/o if specified
- if ( mlt_properties_get( track_props, "in" ) != NULL &&
+ if ( mlt_properties_get( track_props, "in" ) != NULL ||
mlt_properties_get( track_props, "out" ) != NULL )
{
+ if ( mlt_properties_get( track_props, "out" ) == NULL )
+ mlt_properties_set_position( track_props, "out", mlt_properties_get_position( track_props, "length" ) - 1 );
mlt_producer cut = mlt_producer_cut( MLT_PRODUCER( producer ),
mlt_properties_get_position( track_props, "in" ),
mlt_properties_get_position( track_props, "out" ) );
if ( parent_type == mlt_tractor_type )
{
mlt_field field = mlt_tractor_field( MLT_TRACTOR( parent ) );
+ if ( mlt_properties_get_int( properties, "a_track" ) == mlt_properties_get_int( properties, "b_track" ) )
+ mlt_properties_set_int( properties, "b_track", mlt_properties_get_int( properties, "a_track" ) + 1 );
mlt_field_plant_transition( field, MLT_TRANSITION( effect ),
mlt_properties_get_int( properties, "a_track" ),
mlt_properties_get_int( properties, "b_track" ) );
// Assign the title
mlt_properties_set( properties, "title", title );
+ // Optimise for overlapping producers
+ mlt_producer_optimise( MLT_PRODUCER( service ) );
+
// Handle deep copies
if ( getenv( "MLT_WESTLEY_DEEP" ) == NULL )
{
else
{
// Allow the project to be edited
+ mlt_properties_set( properties, "_westley", "was here" );
mlt_properties_set_int( properties, "_mlt_service_hidden", 1 );
}
}