}
}
-static inline void serialise_producer_filters( serialise_context context, mlt_service service, xmlNode *node )
+static inline void serialise_service_filters( serialise_context context, mlt_service service, xmlNode *node )
{
int i;
xmlNode *p;
{
// Get a new id - if already allocated, do nothing
char *id = westley_get_id( context, mlt_filter_service( filter ), westley_filter );
- if ( id == NULL )
- continue;
-
- p = xmlNewChild( node, NULL, "filter", NULL );
- xmlNewProp( p, "id", id );
- serialise_properties( properties, p );
+ if ( id != NULL )
+ {
+ p = xmlNewChild( node, NULL, "filter", NULL );
+ xmlNewProp( p, "id", id );
+ serialise_properties( properties, p );
+ serialise_service_filters( context, mlt_filter_service( filter ), p );
+ }
}
}
}
// Set the id
xmlNewProp( child, "id", id );
serialise_properties( properties, child );
- serialise_producer_filters( context, service, child );
+ serialise_service_filters( context, service, child );
// Add producer to the map
mlt_properties_set_int( context->hide_map, id, mlt_properties_get_int( properties, "hide" ) );
if ( hide )
xmlNewProp( track, "hide", hide == 1 ? "video" : ( hide == 2 ? "audio" : "both" ) );
}
+ serialise_service_filters( context, service, child );
}
}
}
}
}
+
+ serialise_service_filters( context, service, child );
}
else if ( strcmp( (const char*) node->name, "tractor" ) != 0 )
{
// Recurse on connected producer
serialise_service( context, mlt_service_producer( service ), child );
+ serialise_service_filters( context, service, child );
}
}
xmlNewProp( child, "out", mlt_properties_get( properties, "out" ) );
serialise_properties( properties, child );
+ serialise_service_filters( context, service, child );
}
}
xmlNewProp( child, "out", mlt_properties_get( properties, "out" ) );
serialise_properties( properties, child );
+ serialise_service_filters( context, service, child );
}
}
mlt_consumer_stop( this );
+ mlt_consumer_stopped( this );
+
return 0;
}