X-Git-Url: http://research.m1stereo.tv/gitweb?a=blobdiff_plain;f=src%2Fmodules%2Fwestley%2Fconsumer_westley.c;h=6a9644c190173cb877cdaa82f9ddacd45a7c96e7;hb=7b0684ebe0975248af674dc5973a959d81f5f4a8;hp=15bd5259bf114f0d84a51d34cb869ea50649c6e2;hpb=9b115c18489fdc84e2198fef65e4e444f579ff24;p=melted diff --git a/src/modules/westley/consumer_westley.c b/src/modules/westley/consumer_westley.c index 15bd525..6a9644c 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; @@ -344,10 +358,10 @@ static void serialise_playlist( serialise_context context, mlt_service service, serialise_tractor( context, MLT_SERVICE( producer ), node ); context->pass --; } - 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 ); + else if ( service_s != NULL && strcmp( service_s, "blank" ) != 0 ) + serialise_service( context, MLT_SERVICE( producer ), node ); } } } @@ -385,8 +399,13 @@ 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 ( info.repeat > 1 ) + { + sprintf( temp, "%d", info.repeat ); + xmlNewProp( entry, "repeat", temp ); + } + if ( mlt_producer_is_cut( info.cut ) ) + serialise_service_filters( context, mlt_producer_service( info.cut ), entry ); } } }