From dcec48366f9349da4bab349a2945bdd8cca18b81 Mon Sep 17 00:00:00 2001 From: lilo_booter Date: Sat, 25 Sep 2004 16:56:00 +0000 Subject: [PATCH] Fix for serialising multiple overlapping mixes git-svn-id: https://mlt.svn.sourceforge.net/svnroot/mlt/trunk/mlt@448 d19143bc-622f-0410-bfdd-b5b2a6649095 --- src/modules/westley/consumer_westley.c | 22 +++++++++++++++++----- 1 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/modules/westley/consumer_westley.c b/src/modules/westley/consumer_westley.c index 5b43208..286d0ea 100644 --- a/src/modules/westley/consumer_westley.c +++ b/src/modules/westley/consumer_westley.c @@ -268,6 +268,8 @@ static void serialise_producer( serialise_context context, mlt_service service, } } +static void serialise_tractor( serialise_context context, mlt_service service, xmlNode *node ); + static void serialise_multitrack( serialise_context context, mlt_service service, xmlNode *node ) { int i; @@ -276,7 +278,21 @@ static void serialise_multitrack( serialise_context context, mlt_service service { // Iterate over the tracks to collect the producers for ( i = 0; i < mlt_multitrack_count( MLT_MULTITRACK( service ) ); i++ ) - serialise_service( context, MLT_SERVICE( mlt_multitrack_track( MLT_MULTITRACK( service ), i ) ), node ); + { + mlt_producer producer = mlt_producer_cut_parent( mlt_multitrack_track( MLT_MULTITRACK( service ), i ) ); + char *resource_s = mlt_properties_get( mlt_producer_properties( producer ), "resource" ); + if ( resource_s != NULL && !strcmp( resource_s, "" ) ) + { + serialise_tractor( context, MLT_SERVICE( producer ), node ); + context->pass ++; + serialise_tractor( context, MLT_SERVICE( producer ), node ); + context->pass --; + } + else + { + serialise_service( context, MLT_SERVICE( producer ), node ); + } + } } else { @@ -311,8 +327,6 @@ static void serialise_multitrack( serialise_context context, mlt_service service } } -static void serialise_tractor( serialise_context context, mlt_service service, xmlNode *node ); - static void serialise_playlist( serialise_context context, mlt_service service, xmlNode *node ) { int i; @@ -346,8 +360,6 @@ static void serialise_playlist( serialise_context context, mlt_service service, } else if ( service_s != NULL && strcmp( service_s, "blank" ) != 0 ) serialise_service( context, MLT_SERVICE( producer ), node ); - else if ( resource_s != NULL && !strcmp( resource_s, "" ) ) - serialise_playlist( context, MLT_SERVICE( producer ), node ); } } } -- 1.7.4.4