X-Git-Url: http://research.m1stereo.tv/gitweb?a=blobdiff_plain;f=src%2Fmodules%2Fwestley%2Fconsumer_westley.c;h=cc02e9933e77290b2a2d44e0df98614f8cc0fcff;hb=363d095af9149cc181e92a35d2e34e583d061747;hp=c90d584d81ee1fd7cbe8e1aa9593da5eda0b1a56;hpb=870a1069dd7a1b33623f3284c089b9be2dfb4491;p=melted diff --git a/src/modules/westley/consumer_westley.c b/src/modules/westley/consumer_westley.c index c90d584..cc02e99 100644 --- a/src/modules/westley/consumer_westley.c +++ b/src/modules/westley/consumer_westley.c @@ -188,7 +188,7 @@ static inline void serialise_properties( mlt_properties properties, xmlNode *nod } } -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; @@ -202,12 +202,13 @@ static inline void serialise_producer_filters( serialise_context context, mlt_se { // 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 ); + } } } } @@ -229,7 +230,7 @@ static void serialise_producer( serialise_context context, mlt_service service, // 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" ) ); @@ -280,6 +281,7 @@ static void serialise_multitrack( serialise_context context, mlt_service service if ( hide ) xmlNewProp( track, "hide", hide == 1 ? "video" : ( hide == 2 ? "audio" : "both" ) ); } + serialise_service_filters( context, service, child ); } } @@ -349,6 +351,8 @@ static void serialise_playlist( serialise_context context, mlt_service service, } } } + + serialise_service_filters( context, service, child ); } else if ( strcmp( (const char*) node->name, "tractor" ) != 0 ) { @@ -383,6 +387,7 @@ static void serialise_tractor( serialise_context context, mlt_service service, x // Recurse on connected producer serialise_service( context, mlt_service_producer( service ), child ); + serialise_service_filters( context, service, child ); } } @@ -409,6 +414,7 @@ static void serialise_filter( serialise_context context, mlt_service service, xm xmlNewProp( child, "out", mlt_properties_get( properties, "out" ) ); serialise_properties( properties, child ); + serialise_service_filters( context, service, child ); } } @@ -435,6 +441,7 @@ static void serialise_transition( serialise_context context, mlt_service service xmlNewProp( child, "out", mlt_properties_get( properties, "out" ) ); serialise_properties( properties, child ); + serialise_service_filters( context, service, child ); } } @@ -560,6 +567,8 @@ static int consumer_start( mlt_consumer this ) mlt_consumer_stop( this ); + mlt_consumer_stopped( this ); + return 0; }