X-Git-Url: http://research.m1stereo.tv/gitweb?a=blobdiff_plain;f=src%2Fmodules%2Fwestley%2Fconsumer_westley.c;h=5b432082cf53a7169454711a874ab83f8539afa0;hb=b917ae819659606f59b3ae761d06ab2095ade658;hp=fe8d3758af228d9ff10f50583a03325699f14beb;hpb=519393231e6ab626f19bd01d4622d1c3759fcc93;p=melted diff --git a/src/modules/westley/consumer_westley.c b/src/modules/westley/consumer_westley.c index fe8d375..5b43208 100644 --- a/src/modules/westley/consumer_westley.c +++ b/src/modules/westley/consumer_westley.c @@ -236,12 +236,13 @@ static inline void serialise_service_filters( serialise_context context, mlt_ser static void serialise_producer( serialise_context context, mlt_service service, xmlNode *node ) { xmlNode *child = node; - mlt_properties properties = mlt_service_properties( service ); + mlt_service parent = MLT_SERVICE( mlt_producer_cut_parent( MLT_PRODUCER( service ) ) ); if ( context->pass == 0 ) { + mlt_properties properties = mlt_service_properties( parent ); // Get a new id - if already allocated, do nothing - char *id = westley_get_id( context, service, westley_producer ); + char *id = westley_get_id( context, parent, westley_producer ); if ( id == NULL ) return; @@ -259,9 +260,11 @@ static void serialise_producer( serialise_context context, mlt_service service, } else { - // Get a new id - if already allocated, do nothing - char *id = westley_get_id( context, service, westley_existing ); - xmlNewProp( node, "producer", id ); + char *id = westley_get_id( context, parent, westley_existing ); + mlt_properties properties = mlt_service_properties( service ); + xmlNewProp( node, "parent", id ); + xmlNewProp( node, "in", mlt_properties_get( properties, "in" ) ); + xmlNewProp( node, "out", mlt_properties_get( properties, "out" ) ); } } @@ -288,9 +291,17 @@ static void serialise_multitrack( serialise_context context, mlt_service service xmlNode *track = xmlNewChild( node, NULL, "track", NULL ); int hide = 0; mlt_producer producer = mlt_multitrack_track( MLT_MULTITRACK( service ), i ); + mlt_properties properties = mlt_producer_properties( producer ); + + mlt_service parent = MLT_SERVICE( mlt_producer_cut_parent( producer ) ); - char *id = westley_get_id( context, MLT_SERVICE( producer ), westley_existing ); + char *id = westley_get_id( context, MLT_SERVICE( parent ), westley_existing ); xmlNewProp( track, "producer", id ); + if ( mlt_properties_get_int( properties, "cut" ) == 1 ) + { + xmlNewProp( track, "in", mlt_properties_get( properties, "in" ) ); + xmlNewProp( track, "out", mlt_properties_get( properties, "out" ) ); + } hide = mlt_properties_get_int( context->hide_map, id ); if ( hide ) @@ -374,8 +385,8 @@ static void serialise_playlist( serialise_context context, mlt_service service, xmlNewProp( entry, "in", temp ); sprintf( temp, "%d", info.frame_out ); xmlNewProp( entry, "out", temp ); - if ( mlt_producer_is_cut( info.producer ) ) - serialise_service_filters( context, mlt_producer_service( info.producer ), entry ); + if ( mlt_producer_is_cut( info.cut ) ) + serialise_service_filters( context, mlt_producer_service( info.cut ), entry ); } } }