xml based westley serialisation
[melted] / src / framework / mlt_tractor.c
index 72f9e72..f68079a 100644 (file)
@@ -26,6 +26,7 @@
 
 #include <stdio.h>
 #include <stdlib.h>
+#include <string.h>
 
 /** Private structure.
 */
@@ -56,6 +57,8 @@ mlt_tractor mlt_tractor_init( )
                {
                        producer->get_frame = producer_get_frame;
                        mlt_properties_set( mlt_producer_properties( producer ), "resource", "<tractor>" );
+                       mlt_properties_set( mlt_producer_properties( producer ), "mlt_type", "mlt_producer" );
+                       mlt_properties_set( mlt_producer_properties( producer ), "mlt_service", "tractor" );
                }
                else
                {
@@ -135,7 +138,6 @@ static int producer_get_frame( mlt_producer parent, mlt_frame_ptr frame, int tra
                        mlt_producer target = mlt_multitrack_producer( multitrack );
                        mlt_producer_seek( target, mlt_producer_frame( parent ) );
                        mlt_producer_set_speed( target, mlt_producer_get_speed( parent ) );
-                       mlt_producer_set_in_and_out( parent, mlt_producer_get_in( target ), mlt_producer_get_out( target ) );
                }
                else
                {
@@ -158,7 +160,7 @@ static int producer_get_frame( mlt_producer parent, mlt_frame_ptr frame, int tra
                                *frame = temp;
                        }
                        else if ( ( !mlt_frame_is_test_card( temp ) || !mlt_frame_is_test_audio( temp ) ) && looking &&
-                                           mlt_producer_position( parent ) == mlt_properties_get_position( mlt_frame_properties( temp ), "position" ) )
+                                           mlt_producer_frame( parent ) == mlt_frame_get_position( temp ) )
                        {
                                *frame = temp;
                                looking = 0;
@@ -176,6 +178,8 @@ static int producer_get_frame( mlt_producer parent, mlt_frame_ptr frame, int tra
                        mlt_properties frame_properties = mlt_frame_properties( *frame );
                        char label[ 30 ];
                        sprintf( label, "tractor_%d", count );
+                       while ( mlt_properties_get_data( frame_properties, label, NULL ) != NULL )
+                               strcat( label, "+" );
                        mlt_properties_set_data( frame_properties, label, store[ count ], 0, ( mlt_destructor )mlt_frame_close, NULL );
                }